bizarre, c’est quoi qui ne fonctionne pas ? Peux-tu avoir le fichier z8 généré ? C’est l’applet java ? Il faut avoir java 1.5, car c’est zmpp qui est derrière. Je pourrais essayer de voir si on peut avoir la même chose avec zplet.
J’ai essayé de faire qque chose en php, mais c’était plus rapide d’utiliser inspiration pad ( rpginspiration.com/ ) pour le faire. On utilise des tables pour générer du code aléatoire, et c’est converti en code inform 7 (inform 7 car c’est le plus pratique dans ce cas là, il n’y a pas besoin de beaucoup de code pour ajouter un objet). Ensuite, c’est converti en fichier zmachine, et lu par zmpp.
c’est encore très succinct, mais je vais essayer d’ajouter des fonctionnalités au fur et à mesure. Je vais sans doute développer une version anglaise en premier, car c’est beaucoup plus facile s’il n’y a pas les genres à gérer.
encore plus bizarre. Attention, il faut bien indiquer le port de 8008 après le serveur, sinon cela ne passera pas. En ce moment je peux me connecter sans problème depuis mon travail…
oui, certes.
En tout cas je viens de tester depuis un compte shell aux usa, et cela fonctionne également. Es-tu derrière un pare feu ou qque chose de spécial ? Je ne vois pas ce que cela peut être, car le serveur est bien actif pourtant.
A noter qu’avec internet explorer, on peut se connecter sur la page, mais il indique une erreur après la génération de la page, pourtant les fichiers sont correctement créés.
Si je clique sur Générer cela donne une page blanche dans le cadre. Mais en cliquant tout de suite sur jouer ça marche (sans doute le résultat d’une précédente génération ?).
En tout cas ce sujet me tourmente régulièrement. Pas simple du tout voire pratiquement impossible au-delà d’un certain stade, mais passionnant.
ça c’est normal. Je n’arrive pas à lui faire afficher qque chose de mieux qu’une page blanche, mais c’est le résultat attendu pour le moment. En cliquant sur jouer on a le résultat de cette génération. Il suffit de regarder la source, ou de recommencer la génération pour voir afficher une nouvelle « aventure » (enfin, pas encore aventure, mais presque…)
Couplé au script de combat de Graham Nelson (voir « the relique of… »), cela devrait permettre de faire un genre de IF « roguelike ».
D’un autre côté, il doit être possible de créer également ce genre de données aléatoire en Inform7, mais en ce cas cela ne reste pas persistant d’une aventure à l’autre. Quoi qu’il en soit le but c’est plutôt de donner un squelette de départ pour ajouter du code par la suite.
En fait dans Nethack chaque nouveau monstre pose des problèmes particuliers (ex: l’oeil qui paralyse et vous laisse sans défense face à des monstres supplémentaires), et résoudre ces problèmes constitue un puzzle à résoudre. Les monstres apparaissent d’une manière assez prévisible, mais les objets qui vont aider à les vaincre pourront être absents d’une partie sur l’autre. Il faudra alors vaincre le monstre d’une autre manière, ou le fuir. Bref c’est vraiment une manière de combiner puzzles et rejouabilité.
Sinon en Inform 6 l’un de mes projets (le plus irréaliste) consiste à ne jamais présenter deux fois les mêmes énigmes (même s’il peut s’agir du même univers), ainsi qu’à imposer une mort permanente pour augmenter la tension et favoriser la rejouabilité. Pour cela, désactiver Undo et Save et les remplacer par un seul autosave. De plus, noter sur un fichier une trace des parties précédentes pour éviter les redites et donner à l’univers un côté « univers persistant ».
Le DM parle de ces sauvegardes sur fichier :
L’exercice 137 fait furieusement penser à Nethack.
La seule chose qui m’inquiète un peu (pour la mort permanente), c’est cette phrase dans rogue.z5 : « The game save and restore stuff seems to work okay. My only regret is that I can’t delete the save game file after it’s been loaded. ». Je vais faire quelques tests.
Résultat d’un essai de @save effectué avec WinFrotz et DOSFrotz : lorsqu’un fichier est sauvegardé sur le disque, cela n’est jamais fait discrètement : l’interpréteur demande toujours où le fichier doit être sauvegardé (WinFrotz propose le bureau !) et sous quel nom, même si celui indiqué par le programme est proposé par défaut. S’il s’agit d’un fichier existant, l’interpréteur demande la confirmation de l’écrasement. DOSFrotz considère que la réponse à cette question est « non » par défaut. Bref ce n’est pas chouette, sans être totalement catastrophique. (et ce n’est qu’un minuscule problème technique lié à la Z-machine (bien que presque bloquant) à côté des difficultés de ce type de programme). Bref je sais déjà que si j’utilise Inform le résultat ne sera pas très fini, à moins de compiler une version sur mesure de l’interpréteur.
JLP, je m’éloigne un peu du sujet, mais par rapport à ton projet de mort permanente, je t’invite, si tu ne l’a pas déjà fait, à jouer à schrapnel d’Adam Cadre.
Dans ce jeu en effet on rencontre des morts instantannées obligatoires, par exemple, des chiens féroces au début qui mangent le joueur.
Lorsqu’on recommence la partie, les chiens sont repus du joueur précédent et on peut avancer, et ainsi de suite.
Concept étonnant quand on le découvre, et le petit coté auto-référentiel (il se passe devant la maison blanche de Zork), l’histoire de paradoxes temporels et la petite animation de fin en font un jeu très bon.
Sinon, JB, évite de mettre des spoilers lorsque tu conseilles un jeu. Les deux exemples que tu cites sont pratiquement les deux principales « surprises » du jeu.
non, des énigmes, pas encore. Mais des lieux et des objets générés aléatoirement. Je l’ai remis en ligne pour le moment, en attendant de pouvoir le mettre sur un ordinateur toujours allumé. Maintenant cela sera plus facile parce qu’il existe un binaire natif pour linux, plus besoin de l’émulateur, aussi je vais le passer à la dernière version d’inform et essayer de l’améliorer un peu.
Pour le moment j’ai toujours un problème de cache qui fait que même si cela génère une nouvelle histoire, l’affichage dans l’applet est toujours le même.
note : je suis en train de travailler dessus en ce moment, alors cela ne fonctionne plus du tout actuellement