générateur d'aventures aléatoires

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

générateur d'aventures aléatoires

Messagepar Otto Grimwald le Ven Fév 16, 2007 2:03 pm

je suis en train de développer un petit générateur d'aventures en inform aléatoires. C'est vraiment au tout début mais vous pouvez aller voir :

http://esclinux.no-ip.org:8008/autoinfo ... nform.html

(ne sera pas toujours en ligne : "image" signifie que le serveur n'est pas en ligne et que l'image ne s'affiche pas donc)

statut : Image
Dernière édition par Otto Grimwald le Dim Juil 15, 2007 12:28 pm, édité 3 fois.

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar Adrien le Ven Fév 16, 2007 3:03 pm

Là ça ne marche pas mais l'idée est très interessante!

C'est quoi le principe?
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Messagepar Otto Grimwald le Ven Fév 16, 2007 3:20 pm

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 ( http://www.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.

On peut voir le code automatique ici :

http://esclinux.no-ip.org:8008/autoinfo ... nform7.ipt

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.
Dernière édition par Otto Grimwald le Ven Fév 16, 2007 3:31 pm, édité 2 fois.
Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar Adrien le Ven Fév 16, 2007 3:24 pm

Délai d'attente dépassé

Le serveur à l'adresse esclinux.no-ip.org met trop de temps à répondre.
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Messagepar Otto Grimwald le Ven Fév 16, 2007 3:30 pm

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...
Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar Adrien le Ven Fév 16, 2007 5:12 pm

Ben je clique sur ton lien, donc le port est supposé être ok.
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Messagepar Otto Grimwald le Ven Fév 16, 2007 5:53 pm

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.
Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar JL le Sam Fév 17, 2007 11:43 am

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.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Messagepar Otto Grimwald le Sam Fév 17, 2007 12:42 pm

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 ?)


ç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.

J'aimerais pouvoir ajouter également un générateur de contes :
http://esclinux.no-ip.org:8008/autoinform/conte.ipt (là aussi, c'est dans le début du développement)
Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar JL le Sam Fév 17, 2007 4:31 pm

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 :
▲ The Z-machine can also load and save “auxiliary files” to or from the host machine. These should have names adhering to the “8 + 3” convention, that is, one to eight alphanumeric characters optionally followed by a full stop and one to three further alphanumeric characters. Where no such extension is given, it is assumed to be .AUX. Designers are asked to avoid using the extensions .INF, .H, .SAV or .Z5 or similar, to prevent confusion. Note that auxiliary files from different games may be sharing a common directory on the host machine, so that a filename should be as distinctive as possible. The two opcodes are:

@save buffer length filename -> R

Saves the byte array buffer (of size length) to a file, whose (default) name is given in the filename (a string array). Afterwards, R holds true on success, false on failure.

@restore buffer length filename -> R

Loads in the byte array buffer (of size length) from a file, whose (default) name is given in the filename (a string array). Afterwards, R holds the number of bytes successfully read.

• EXERCISE 136
How might this assist a “role-playing game campaign” with several scenarios, each implemented as a separate Inform game but sharing a player-character who takes objects and experience from one scenario to the next?

• EXERCISE 137
Design catacombs in which the ghosts of former, dead players from previous games linger.


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.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Messagepar JL le Sam Fév 17, 2007 6:34 pm

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.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Messagepar JB le Sam Fév 17, 2007 8:46 pm

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.

JB
Avatar de l’utilisateur
JB
Grand Ancien
 
Messages: 510
Inscription: Mar Aoû 24, 2004 11:00 am
Localisation: Paris

Messagepar Otto Grimwald le Sam Fév 17, 2007 9:10 pm

vraiment étonnant que l'on puisse faire tout cela dans inform !
Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Messagepar JL le Dim Fév 18, 2007 10:47 pm

Intéressant en effet.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Messagepar JL le Sam Mar 03, 2007 10:33 pm

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.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Messagepar JB le Dim Mar 04, 2007 7:52 pm

Désolé...
Avatar de l’utilisateur
JB
Grand Ancien
 
Messages: 510
Inscription: Mar Aoû 24, 2004 11:00 am
Localisation: Paris

Re: générateur d'aventures aléatoires

Messagepar Yoruk le Mer Juin 18, 2008 6:46 pm

Otto, tu pourrais m'en dire plus sur ce système de génération d'aventures aléatoires ?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Re: générateur d'aventures aléatoires

Messagepar Otto Grimwald le Mer Juin 18, 2008 11:17 pm

oui, cela utilisait inspiration pad et inform 7. Il faudrait que j'essaye de le remettre en ligne...
c'était très limité quand même.

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: générateur d'aventures aléatoires

Messagepar Yoruk le Jeu Juin 19, 2008 11:46 am

Mais qu'y avait-il d'aléatoire au juste ? Des lieux, énigmes....

Si tu peux me faire parvenir un exemple de source....
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Re: générateur d'aventures aléatoires

Messagepar Otto Grimwald le Jeu Juin 19, 2008 12:28 pm

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

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Suivante

Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités