Dreamlands : rapport de test :)

Bonjour,

J’ai testé ce matin le jeu dreamlands, et bien que le jeu soit très intéressant, je n’ai pas pu m’empêcher de relever un certain nombre de points susceptibles d’être améliorés.
Alors les voilà. Cela peut toujours servir. Ce n’est pas pour rabaisser le gros travail que tu as fourni, JB, attention, hein :slight_smile:
Je vous ai déjà dit que je suis perfectionniste doublé d’un inspecteur des travaux finis ? Vous allez le remarquer tout de suite :slight_smile:

Mon avis ici est celui d’un joeur assez inexpérimenté, et ma connaissance d’inform se limite aux 196 premières pages du manuel du débutant inform. Soyez donc indulgents si je dis des grosses bêtises.

Attention, si vous n’avez pas joué à ce jeu, ne lisez pas ce qui suit car cela pourrait vous révéler pas mal de choses sur le jeu et en gâcher le plaisir.

*** 1 ***

Le message standard « Yog Sothoth Le Voyageur
Dimensionnel soit damné : impossible d’aller dans cette direction. » ne devrait pas être affiché là, à mon avis. Un return true à mettre à la place d’un return false ? J’ai rencontré ce genre de choses aussi dans filaments à divers endroits.

Je remplacerais le code suivant :

par (non testé) :

*** 2 ***

Là je chipote clairement, mais c’est toujours sympa quand il y a une réponse prévue pour ce genre d’action qui ne sert à rien :slight_smile:

*** 3 ***

D’après la description suite au coup de feu, on peut raisonnablement supposer que la porte n’est plus aussi figée qu’avant.

*** 4 ***

Je ne sais pas si c’est faisable facilement, mais si « tout prendre » fonctionnait ce serait un plus. Si quelqu’un connaît la solution je suis preneur, pour le jour où j’écrirai une IF.

*** 5 ***

Là j’avais déjà pris les bris de verre mais leur description dit toujours qu’ils sont par terre.

*** 6 ***

L’orthographe clef est « comprise », mais pas clé. Dans le cercle des gros geeks disparus, j’avais eu le même problème mais inversé : clé était connu mais pas clef :slight_smile:

*** 7 ***

Ben, du presbytère voyons :slight_smile:

*** 8 ***

On chipote, on chipote… Mais comme j’ai pu le lire sur une liste de diffusion anglophone (qui n’a rien à voir avec l’IF), « devil is in the details ».

*** 9 ***

Là, c’est un cas typique du problème avec le mot « toilet » dans Captain Fate (manuel du débutant inform), et l’utilisation de l’extension pname.h serait un réel plus, afin de pouvoir dire que sorcier est facultatif dans le nom de la prison, mais qu’il ne l’est pas pour le sorcier démoniaque.

*** 10 ***

Alors ÇA, c’est le principal problème que je rencontre dans les jeux de JB que j’ai pu commencer à tester : filaments, la mort pour seul destin, et celui-ci.
On veut regarder des trucs qui n’existent pas, et l’interpréteur veut absolument comprendre qu’on regarde dans tel ou tel objet contenant. C’est très troublant comme réaction.

*** 11 ***

Là je chipote encore : elle n’est pas vraiment vide puisqu’on est dedans. Bon, d’accord, je n’ai rien dit :slight_smile:

*** 12 ***

Toujours du chipotage.

*** 13 ***
Si on brule les manuscrits AVANT de sentir le flacon, comme je l’ai fait malheureusement, on arrive dans la cage avec juste le pistolet et le briquet… Et on est bloqué sans aucun indice sur ce qui pourrait nous tirer de là.

*** 14 ***
On peut finir l’histoire sans jeter le briquet allumé dans le goudron. Les deux cages s’enfonceront quand même dans le « brasier ».

*** 15 ***

Je chipote encore…

Bon, voilà, c’est tout :slight_smile:
Je compte sur vous pour ne pas me louper non plus lorsque je ferai une IF :wink:

Merci pour ce rapport d’erreur qui concerne aussi la bibliothèque en français.

J’ai noté les points 2, 4, 8, et peut-être 11, car ils sont susceptibles d’être résolus au niveau de la bibliothèque.

Cordialement,

– JL

Ah oui, pour le point 11 j’ai oublié de préciser que répondre « d’obsidienne » ne fonctionne pas, et ça ça concerne peut-être la bibliothèque.

je ne suis pas l’auteur mais je vais répondre un peu vu que j’ai déjà été confronté à ce genre de situation.
De plus il faut quand même voir les conditions dans lesquelles cela a été fait, on avait donné une date de rendu finale, qui a été décalée plusieurs fois, et je crois aussi que c’était la période où JB s’était cassé le poignet. En plus pour ce type de jeu (concours), je serais tenté de dire que si le jeu est vite fait et spontané, ce n’en est que mieux (lorsque j’y ai joué, je n’ai pas fait forcément attention à tout cela)
En tout cas c’est bien que tu prennes le temps de faire des commentaires détaillés, cela profite à tout le monde.

Dimensionnel soit damné : impossible d’aller dans cette
direction." ne devrait pas être affiché là, à mon avis. Un return
true à mettre à la place d’un return false ? J’ai rencontré ce

je crois que tu as raison. JB va pouvoir faire chauffer l’éditeur de texte en cette fin de semaine :slight_smile:

*** 2 ***
crier
Je ne comprends pas cette phrase.

hurler
Je ne comprends pas cette phrase.
Là je chipote clairement, mais c’est toujours sympa quand il y a
une réponse prévue pour ce genre d’action qui ne sert à rien :slight_smile:

je suis d’accord avec toi. En plus ce genre de chose peut se faire relativement facilement en ajoutant une sorte de bibliothèque de verbes courants. Ce n’est pas grand chose, mais cela permet d’offrir plus d’immersion pour pas cher.
C’est ce que je reprochais à un système de jeu comme Quest (qui a aussi le désavantage de ne fonctionner que sous windows, et de mal s’émuler avec wine (visualbasic oblige), qui n’incluait pas dans sa bibliothèque de base tous les verbes de bases que l’on retrouve dans les autres systèmes. Il est assez mal vu à cause de cela, mais sinon il offrait des idées intéressantes, en plus on peut utiliser le langage de façon interprété, il n’y a pas besoin de compilation.

*** 3 ***
D’après la description suite au coup de feu, on peut
raisonnablement supposer que la porte n’est plus aussi figée
qu’avant.

ça, c’est le genre de chose vraiment ch*** à coder (ça va pour une chose, mais chaque objet est susceptible d’avoir ce genre de défaut) et qui ne se voit pas forcément si cela est bien fait, mais qui se voit si on tape les « mauvaises » commandes.

*** 4 ***
tout prendre
Je ne connais pas ce verbe.
Je ne sais pas si c’est faisable facilement, mais si « tout prendre »
fonctionnait ce serait un plus. Si quelqu’un connaît la solution je
suis preneur, pour le jour où j’écrirai une IF.

il doit être possible de faire cela plus proprement, mais pour ma part je verrais quelque chose dans le genre, en créant le verbe « tout » (à tester) :

[code][ToutSub;
!(là je ne sais pas trop quoi mettre, mais je pense que l’on n’a rien à indiquer de plus puisque cela va être interprété comme « take »)
];

Verb ‹ tout ›
* ‹ prendre › → take ;
(et éventuellement faire les variantes tout regarder etc.) [/code]

d’un autre côté est-ce que c’est possible d’implémenter toutes les façons d’écrire, et est-ce que c’est une bonne idée de le faire ? C’est encore à voir, car dans les faits on considère que toutes les commandes doivent commencer par un verbe. Si on commence à faire des variantes, on n’en sort plus. Mais c’est vrai que la question mérite d’être posée, cela me rappelle la discussion que l’on avait eu à propos de l’utilisation de l’infinitif (que certains voient comme un impératif dans les jeux en anglais), ou du présent, de la première personne, de la 3ème, voire de la deuxième…

Car si je veux pouvoir écrire :

« je prends tout »
« prends tout »
« joueur, va tout prendre »
« il prend tout »
« tu prends tout »
« je veux tout prendre »
« je veux prendre tout »

comment on fait ? Mais je m’éloigne du sujet :slight_smile:

*** 9 ***
l’extension pname.h serait un réel plus, afin de pouvoir dire que
sorcier est facultatif dans le nom de la prison, mais qu’il ne l’est
pas pour le sorcier démoniaque.

je ne connaissais pas, cela a l’air super :slight_smile: je vais tester rapidement.

*** 11 ***
Là je chipote encore : elle n’est pas vraiment vide puisqu’on est
dedans. Bon, d’accord, je n’ai rien dit :slight_smile:

je ne sais pas si cela est possible de considérer le joueur comme un objet qui est contenu dans un autre. Enfin si, mais à quel prix ? Quand on voit ce que coûte une heure de codage… :wink:

*** 12 ***

regarder tour
regarder ouverture
Cette tour démoniaque n’est qu’un long escalier en colimacon
descendant sans fin sans aucune fenêtre. Chacune
/…/
Au pied de cette tour, une ouverture monumentale donne sur
une vallée plongée dans la nuit.

Toujours du chipotage.

pour ce genre de chose, en fait cela ne me dérange pas du tout de le rencontrer dans un jeu. Tu verras lorsque tu coderas :slight_smile:
Si tu peux économiser la création d’un objet, c’est pas plus mal :slight_smile:

En plus au moins on est fixé, et on sait que c’est juste du décors et que l’on en a rien a attendre de particulier (ou en tout cas avec ce mot précis d’ouverture).

Je préfère cela 1000 fois à une description détaillée d’un environnement, et lorsque l’on veut voir le détail on a : « vous ne pouvez voir cela » / « cela n’existe pas » etc. Il n’y a rien de mieux pour casser l’ambiance.
Sinon il y a aussi le vicieux qui va implémenter chaque objet et pourra faire croire qu’ils ont une utilité pour le jeu, mais en fait non :slight_smile:

voici un exemple de ce que j’écris généralement si je fais une description détaillée d’un lieu :

Object Tour "tour" with name 'tour' 'temple' 'centre' 'feu' 'flammes' 'sacré' 'contreforts' 'batisse' , description "Le temple est ceinturé par quatre tours et quatres contreforts qui viennent s'ajouter pour en renforcer la structure. C'est une belle bâtisse carrée et rassurante à regarder, mais vous êtes de plus en plus impatient d'y entrer maintenant. Une tour supplémentaire vient au dessus de ce temple, et renferme le feu sacré.", found_in place place2 place3, has scenery;

ainsi (si je n’ai rien oublié, peut être « structure », le singulier de contreforts et flammes), j’espère ne pas trop décevoir le joueur qui va tester les mots qui ressortent de la description.

Une autre possibilité, et d’ailleurs on devrait l’indiquer dans la collection d’objets de que l’on a commencée sur ifwiki, c’est de coder ce genre de chose, qui permet de n’avoir qu’un seul objet à manipuler, et de donner diverses descriptions selon ce que l’on regarde :

Object ObjPort "objets divers" with number 0, parse_name [ i ; self.number = 0; while (true) { switch (NextWord()) { 'alentours', 'alentour', 'extérieur', 'village', 'port' : self.number = 0; i++; 'paysage', 'environnement', 'région' : self.number = 1; i++; 'montages', 'collines', 'montagne' : self.number = 2; i++; 'forets', 'arbres', 'foret', 'forêt' : self.number = 3; i++; 'femmes', 'hommes', 'monde', 'gens' : self.number = 4; i++; default: return (i); } } ], description [; Look, Examine, Search: switch (self.number) { 0: << Look >>; 1: "La région est un peu humide, mais fraîche en cette saison. La mousson n'est pas encore à son point le plus intense. Des forêts immenses entourent la ville, et des montagnes lointaines bordent celles-ci."; 2: "Les montagnes sont de la couleur des fleurs de lilas, et leurs formes arrondies ajoutent à la douceur des teintes de l'atmosphère."; 3: "Vous ne voyez qu'une partie de la forêt en restant dans la ville, même si celle-ci se trouve dans une sorte de dépression."; 4: "Leur vie grouille un peu partout dans le port, pour le commerce, le retour de la pêche et les simples curieux. Vous comprenez à peine leur langue dans ce vacarme."; } default: "Le décor de l'aventure."; ], name 'description' 'du' 'port', found_in Port, has pluralname scenery;

Il est également possible dans un autre contexte d’ajouter des verbes supplémentaire pour faire comprendre au joueur qu’il ne peut pas manipuler ces choses du décor

Je compte sur vous pour ne pas me louper non plus
lorsque je ferai une IF :wink:

ne t’inquiète pas, on sera impitoyable, encore plus méchants que les gens sur linuxfr :slight_smile:

Merci pour ce retour d’infos, je reviens vers vous rapidement, dès que je peux me libèrer.

A très bientôt

JB

Hello,

Merci pour ces remarques.

Concernant Dreamlands, ce jeu a été écrit en 15 jours, a raison d’environ 1 heure par jour. Je ne compte pas les moments dans le métro où je codais dans ma tête…

J’ai reçu beaucoup de remarques sur dreamlands sur ma boite mail, principalement parce que beaucoup de gens avaient envie d’y jouer et étaient déçus de petits trucs qui cassaient tout, ne serait-ce que le mot « sultanT » écrit à la première ligne du jeu…(oua la honte)

Remarque 1 : oui, effectivement, ou plutôt un return 2; Il doit s’agit d’un reliquat d’un code plus complexe puis abandonné… (je suis trés satisfait que tu t’exerces sur mon code source, ca montre que je le donne pas pour rien !)

Remarque 2 : oui, pourquoi pas, il faudrait en parler au sieur JL qui est le maître des bibliothèques. Généralement, je personnalise les messages, mais je ne rajoute pas de verbe, sauf pour l’aventure et là je le fais dans le code source du jeu proprement dit. En général, je rajoute systèmatiquement un verbe xyzzy.

Remarque 3 : effectivement. J’ai eu un email d’un autre joueur qui m’avait montré les dizaines d’options possibles : aller vers la porte, passer porte, pousser porte, tirer porte, ouvrir la poignée…etc…qui ne fonctionaient pas alors que cela devrait. Je pense que c’est l’absence totale de béta test et le fait que je me tape le ventre avec satisfaction dès lors que le jeu est finissable avec une soluce « au verbe exact » qui font que mes jeux sont si peu ouverts.

Remarque 4 : aha, il faut en parler à nos amis codeurs, pas à moi !

Remarque 5 : Mmm…mouais, chipotage. Dans Half Life 2 y a aussi des bugs, hein !

Remarque 6 : en fait, (ce n’est plus le cas depuis que je suis sous Glulx), je code les jeux en Inform avec les délicieux @'e, et ca passait mal dans les alias d’object, donc je pense que je l’ai sciemment évité.

Remarque 7 : effectivement, incroyable mais vrai, j’ai découvert il y a quelques semaines seulement la directive can’t_go : mes jeux vont désormais être beaucoup moins ambigus en termes de navigation !

Remarque 8 : Voir avec mister JL ou mister Eric ou mister Adrien

Remarque 9 : Mmm…effectivement, toutefois Eric te le dira, a chaque fois que tu utilises une nouvelle extension, tu rajoutes 10 jours à l’achevement de ton projet…(donc petit calcul mental : Eric rajoutant 1 nouvelle extension de bibliothéque tous les 8 jours, quand aura t il fini son jeu ?)

Remarque 10 : c’est la faute à la Cabale des codeurs inform, moi y en a être un pauv’ tit écriveur de jeux, moi y en a pas coder les entrailles du parseur !

Remarque 11 : voir remarque 10.

Remarque 12 : franchement, je l’ai fait exprès. Oui oui monsieur, regardez dans le code source, j’ai mis la MEME DESCRIPTION pour ces deux objets. Pourquoi ? PARCE QUE J’AVAIS LA FLEMME.

Remarque 13 : Et oué, pas de bol.

Remarque 14 : Ah, au temps pour moi.

Remarque 15 : Et bien quoi ? Comme disait le proverbe gobelin « porte qui ne se pousse, peut être se tire »…

Je suis navré mais je ne compte pas le corriger. Néanmoins le travail que tu as fourni était productif, puisque JL va se remettre au boulot, hé hé, et que tu as pu trouver des solutions dans le code source même.

Bon, le prochain sera tip-top nickel, promis :wink: d’ailleurs, ca fait 9 mois que je suis dessus…

Et d’ailleurs roulement de tambour voilà le début :

attracteurs-etranges.com/ekphrasis.blb

Bon je suis dispo si vous êtes bloqué mais le jeu est pas hyper dur. Le jeu est déjà trés long sous cette forme. Si vous êtes bloqué dans un labyrinthe végétal, c’est que vous êtes arrivé au bout de la démo, je suis en train de vous faire un chtit labyrinthe, hin hin hin

Par contre pour Ekphrasis toutes les remarques sont FORTEMENT attendues et feront l’objet d’une correction systèmatique.

JB

pour l’histoire du squelette, je n’arrive pas à voir dans le code publié sur son site où se trouve "Vous n’osez parcourir en détail l’immense squelette. " (peut être que cela a été modifié depuis)

Quoi qu’il en soit, je vois dans le code qu’il utilise le squelette à la fois comme objet que l’on voit de loin, et comme objet qui peut en contenir d’autres ainsi que le joueur (attribut « enterable »). Je crois qu’il n’y a rien de mal à cela, mais je pense que cela peut faire de la confusion vis à vis de l’interpréteur.
Il faudrait tester mais j’ai l’impression que le mélange de "
transparent open container enterable" arrive à produire cela si le joueur se trouve dedans (à vérifier).

Pour en revenir à Ekphrasis, j’avais une question et une remarque. La question, c’est que j’ai téléchargé hier la version en développement, et au démarrage je suis au Louvre, cela ne me semble pas normal non ?
La remarque c’est que je trouve ennuyeux d’avoir les 2 premières images en trop grand format, on est obligé d’avoir déjà un écran haute résolution min 1024x768 (je suis certain que ton jeu fera fureur sur les pockets pc :slight_smile: ), et qu’ensuite si la condition 1 est remplie, il faut mettre le jeu en plein écran. Et pour la seconde image, je crois que cela serait plus beau d’avoir la partie en texte (présentée comme le reste du jeu par exemple), justement en vrai texte et non pas en image. Enfin, c’est un avis personnel.

Quoi ? Otto/Eric tu n’aimes pas l’esthétique anti-aliasing ? :slight_smile:

Bon c’est vrai que la compression des images y fait pour beaucoup j’essairai de les rendre plus nets !

Je tiens à préciser que les écrans grand format feront l’objet d’un remaniement pour qu’ils soient typographiquement magnifiques, et notemment grâce à ce cher format Opentype, les textes seront enrichis en moultes ligatures !
Quoi tout le monde s’en fout ?
Hé les mecs, ya pas que le code dans la vie.

Bon ok j’arrête je vais me faire accuser de flood.
Bisous les garçons !

bonsoir,

oui, justement c’est vrai que pour le texte, on voit aussi l’effet compression jpg, c’est un peu gênant. Mais c’est vraiment la taille 1024 qui me dérange. Et je trouve que c’est à l’interpréteur d’afficher tout les textes, si on en a un bon, on peut avoir quelque chose de beau. Apparemment Gargoyle ( ghostscript.com/~tor/software/ga … nshot.html ) gère aussi quelques ligatures, mais je n’ai pas vu cela sur les jeux que j’ai. Son petit frère (du même auteur), est Cugel sous macosx.

Si ça peut aider, dans la mort pour seul destin il y a le même problème: pendant les trois premiers tours :

Puis à partir du quatrième tour :

Et si ça se trouve quelqu’un de motivé (moi peut-être, je ne sais pas vraiment) prendra le temps de corriger les bugs, puisque tu n’es pas motivé pour le faire (j’ai bien compris que ton plaisir c’est de raconter des histoires, pas de coder) :slight_smile:

Il me semble que JL (ou quelqu’un d’autre) conseillait de ne pas mettre d’accent dans la propriété « name », donc un ‹ cle › devrait suffire.

Héhé ! Moi je connais (merci le guide du débutant inform) :slight_smile:

Pour ma part, à moins que l’un de vous ne m’en dissuade, je compte utiliser systématiquement cette extension pour donner un peu de plus de flexibilité.

Je comprends tout à fait. C’est cependant frustrant pour le joueur inexpérimenté : « j’ai voulu concentrer mon attention sur l’ouverture et j’ai à nouveau la description de tout le décor ».
Je changerai peut-être mon avis sur la question après ma première IF, quand j’aurai passé des heures sur ce genre de détails.

Tout à fait. Un message « vous ne pouvez pas tirer cet objet » serait clair, mais là on nous dit « c’est fixé sur place » alors que c’est faux puisqu’on peut le pousser. C’est peut-être un message à reformuler dans la bibliothèque française pour éviter les contresens ?

Bon, va falloir que je teste ekphrasis, moi.

Si ça peut aider, dans la mort pour seul destin il y a le même
problème: pendant les trois premiers tours :

ah, effectivement, je crois que je viens de comprendre, cela devait venir de l’ancienne bibliothèque inform (6/10, on est à la 6/11), car il y avait une différence entre « x » (raccourci pour examiner) et « regarder », si j’en crois un ancien fichier qui me reste lorsque c’était impossible à accomplir dans l’ancienne bibliothèque « regarder zfsdfz » demandait « pouvez-vous préciser ? » alors que « x zfsdfsd » disait « vous ne pouvez voir une telle chose ».
Dorénavant les 2 semblent se comporter presque pareil sauf que « regarder » tout seul fait regarder la pièce où on est, et « x » choisit l’objet dans la pièce, et s’il y en a plus que 1, il demande « pouvez-vous préciser ». Bon c’est pas très clair comme truc (moi même je m’y perds), mais si on recompile le jeu de JB (la mort pour seul destin) avec le nouvelle bibliothèque (en retirant de son code 2 verbes qui sont maintenant dans la nouvelle bibliothèque), ce problème que tu soulèves à juste titre n’apparaît plus. Je n’avais jamais remarqué parce que je tape toujours « x » pour regarder.

conseillait de ne pas mettre d’accent dans la propriété « name »
donc un ‹ cle › devrait suffire.

exact. C’est plus rapide en plus :slight_smile: Je l’ai découvert aussi assez récemment, avant j’utilisais toutes les possibilités :slight_smile:

Tout à fait. Un message « vous ne pouvez pas tirer cet objet »
serait clair, mais là on nous dit « c’est fixé sur place » alors que
c’est faux puisqu’on peut le pousser. C’est peut-être un
message à reformuler dans la bibliothèque française pour éviter
les contresens ?

je pense aussi. Peut-être que cela serait à améliorer dans la prochaine version de la bibliothèque, pour éviter ce genre d’ambiguité.
Apparemment le code considère les 2 verbes au même niveau (le codage est le même)

Pull,Push,Turn: switch (n) { 1: "C'est fixé sur place."; 2: "Vous en êtes incapable."; 3: "Rien d'évident ne se produit."; 4: "Cela serait moins que courtois.";

si j’ai bien compris, les divers résultats proviennent des attributs, par exemple essayer de pousser un objet qui a l’attribut « animate » donne sans doute « Cela serait moins que courtois », car « C’est fixé sur place » serait inapproprié.

Par contre à la décharge de la bibliothèque, j’ai vu que ce levier avait l’attribut « static », et j’imagine que c’est justement cela qui génère le « C’est fixé sur place ». Rassure toi JB, on ne dissèque pas ton code pour te railler, en plus c’est certainement mieux codé que ce que je fais moi-même, mais c’est intéressant de mieux comprendre les mécanismes d’inform. Peut-être que cette erreur devrait générer une alerte du compilateur, genre « attention, vous utilisez le verbe « push » avec l’attribut static… »

je viens d’ailleurs de tester de recompiler en retirant le static, et à la place on a le « Rien d’évident ne se produit », ce qui est moins ambigu.