Bibliothèque (French.h) : pistes d'amélioration

toutes tes suggestions semblent intéressantes, mais je n’ai pas les compétences techniques pour voir si cela ne pose pas de problème ailleurs. Je ne connais pas non plus toute l’historique de la traduction française d’inform, et ne sais pas si ce que tu proposes de remplacer vient de la version anglaise (et en ce cas je préfère ne pas trop y bidouiller), ou vient de l’adaptation qui a été faite en français. Je préfère être certain du coup, et surtout garder une compatibilité maximale avec inform 7.

Par contre il est tout à fait possible de surcharger les définitions actuelles dans une nouvelle bibliothèque que l’on pourra ajouter aux 2 premières, aussi je te propose de travailler dans ce sens et de nous proposer une bibliothèque additionnelle qui nous permettra de tester facilement tes améliorations, sans avoir à hacker la version actuelle.

J’ajouterai également que je ne souhaite pas spécialement que l’on modifie la syntaxe des commandes à passer aux personnages non joueurs, par rapport à ce qui se fait en anglais, même si l’idée est bonne. Qui a vraiment besoin de donner 4 ordres d’un coup, surtout que c’est d’ailleurs possible de le faire actuellement avec des virgules, pas besoin de rajouter un « et ».

J’ai commencé à regarder de nouveau la comparaison entre la version I6 et I7 des bibliothèques anglais, j’ai l’impression que celles-ci n’ont plus évolué, et que la différence se situe uniquement dans les directives de préprocesseur, si bien qu’il me semble raisonnable de pouvoir envisager de ne faire qu’une seule version de travail. Je vais m’en occuper ce soir. Je changerai donc le nom FrenchN11.h vers French.h et FrenchGN11.h vers FrenchG.h

Le top serait de pouvoir également avoir dans le même fichier les variations de temps (passé, présent) et de personne (1ère personne singulier, troisième etc) mais on va procéder par étape.

j’ai commencé à le faire dans ce sens, et j’ai fait un premier commit tout à l’heure. Il va manquer des raccourcis de base dans cette version (genre i et inv pour inventaire), c’est normal, je corrigerai bientôt, mais merci de ne pas y toucher pour le moment.

Excellent, j’ai hâte de voir le résultat de cette fusion.

voilà, je pense que c’est fini, tout semble fonctionner, à la fois pour des compilations de jeux I6 que de jeux I7.
Il me reste à continuer à définir les verbes avec la syntaxe I7, ce qui est un gros travail, en priorité je dois le faire pour « parler » car cela casse certaines parties dans mes anciens jeux :slight_smile:
En attendant, je vais sans doute faire des ifdef…

Super !

Une chose : on avait constaté que l’ordre des arguments pour l’'action Answer est inversée entre I6 et I7. Ainsi il faudrait sûrement un IFDEF pour que pour I7 les « answer » soient remplacés par des « answer reverse » et inversement.

oui exact, je ne savais plus trop où c’était, j’ai donc retrouvé cela dans le fichier que m’a envoyé Lempika.

La nouvelle version de dev se trouve ici mais je ne suis pas certain que l’installeur pour windows fonctionne pour le moment :

download.tuxfamily.org/informfr/ … FR-dev.zip

Il n’était pas nécessaire de tout dupliquer, seules les lignes suivantes étaient concernées, pour autant que je le sache :

Pour I6

Verb 'repondre' 'dire' 'crier' 'hurler'
[...]
        * creature topic                                -> Answer reverse  ! dis-lui bonjour
        * 'à'/'a'/'au'/'aux' creature topic             -> Answer reverse  ! dire a toto bonjour
        * topic '->'/'à'/'a'/'au'/'aux' creature        -> Answer;         ! dire bonjour à toto

Pour I7

Verb 'repondre' 'dire' 'crier' 'hurler'
[...]
        * creature topic                                -> Answer  ! dis-lui bonjour
        * 'à'/'a'/'au'/'aux' creature topic             -> Answer  ! dire a toto bonjour
        * topic '->'/'à'/'a'/'au'/'aux' creature        -> Answer reverse ;         ! dire bonjour à toto

Par ailleurs, qu’apporte la définition « simple » des verbes pour parler (uniquement pour I7 si j’ai bien compris le code) ? Ne peut-on pas plutôt la proposer à part dans une extension ?

non c’est normal, il y a 3 blocs : 1 pour i6, 1 pour i7 avec tes modifs (mais cela sera supprimé ensuite car intégré dans le code I7), et un bloc que je peux appeler dans mes anciens jeux pour avoir l’ancienne version du verbe parler, en attendant de voir si tout est compatible ( cela sera sans doute supprimé à terme, c’est le but en tout cas). J’ai laissé les blocs entier car c’est plus simple ainsi, de toute façon il ne devra en rester qu’un à la fin, juste pour I6.

En tout cas à première vue je vois deux bugs pour « Answer » pour I7, un dans la version « avancée » et un dans la version « simple », si notre analyse selon laquelle noun et second sont inversés pour Answer dans la version de I6 utilisée par I7.

Je connais mal I7 donc ma question peut être bête, mais quel est l’intérêt de définir les verbes dans le code I7 ? Cela apporte-t-il des possibilités nouvelles qui contrebalanceraient le côté négatif d’une duplication de définitions ?

ah oui exact, je me suis emmêlé les pinceaux quand j’ai recopié cela à midi. Quel boulet je fais :blush:
C’est corrigé, je vais commiter cela tout à l’heure.

Au niveau de ta question, je comprends tout à fait tes interrogations, et au début je pensais que l’on pouvait s’en passer. Effectivement, on peut se contenter de cela, mais par la suite il ne sera pas possible de modifier la scruture d’un tel verbe dans le corps d’un jeu.

Ce qui est pas mal avec inform 7, c’est qu’il est facile de redéfinir des verbes, et si au début je trouvais cela compliqué, finalement je trouve cela bien dans le contexte.

Par exemple si le joueur est un loup :

[code]Understand the command « shout » as something new. [redéfinition de la commande de base]

Shouting is an action applying to nothing. [défini si cela s’utilise seul, comme ici, ou avec des compléments. Ici j’ai créé un nouveau verbe.]
Understand « shout » or « crier » or « hurler » or « grogner » or « aboyer » as shouting. [définition des synonymes]

Carry out shouting: [ce qui se passe lorsque le verbe est tapé par le joueur]
say « Un hurlement sinistre s[']élève de votre gorge. »;
if the player is carrying something, say « Vous laissez tomber ce que vous avez avec vous. »;
now every thing carried by the player is in the location;[/code]

Seulement, si la définition du verbe n’est pas déjà Inform7tisée au préalable, comme montré plus bas, et que le mot existe dans les def. I6, il se produit des effets de bords et des conflits, concrètement des bugs : lorsque l’appel du verbe en particulier se fera, il sera remplacé par un autre verbe (ex : crier compris comme attaquer ou prendre)

exemple de définition, que j’adapterai au français, dans le fichier « standard rules » de Graham Nelson :

[code]Understand « answer [text] to [someone] » as answering it that (with nouns reversed).
Understand the commands « say », « shout » and « speak » as « answer ».

Understand « tell [someone] about [text] » as telling it about.
[/code]

Ah oui c’est très génant ça. C’est un problème connu ? Cela va toujours rester ainsi dans I7 ?

ce n’est pas à proprement parler un vrai bug, vu que tous les verbes anglais sont déjà « inform7tisés » dans la définition « Standard Rules », cela n’affecte personne, sauf ceux ayant des bibliothèques dans d’autres langues : les Espagnols (qui ont déjà tout redéfini de leur côté), et les Français (un peu plus à la traîne, mais cela avance…)

On devrait pouvoir le faire, visiblement cette version serait plus stable que la 2.2 comme tu le soulignais.
De mon côté, tous mes anciens jeux on l’air de continuer à compiler, j’avais juste un problème avec le verbe parler vu que je l’avais beaucoup modifié, et je compte proposer quelque chose corrigeant cela, en tout cas dans l’état actuel cela fonctionne toujours en ajoutant une variable utilisant l’ancienne version de parler.
En tout cas en utilisant la fonction de « replay », je peux arriver à la fin de tous ces jeux.

Ensuite, lorsque la 2.3 sera finalisée et marquée, on pourra peut-être regarder du côté de certaines améliorations proposées par auraes ?

Il y a un bogue dans French.h de la SVN.
Dans LanguageLm: Enter:
6: print « ( »; if (x1 has supporter) print "descendant "; else print « sortant « ; print (the) x1; print « )^ »; say__p = 0; return;
/* Ce n’est pas < (the)x1 > mais < (DeDuDes)x1 >
/ Descendant, sortant de l’armoire mais pas sortant l’armoire.
/
-------------------------------------------------------
Pourquoi :
< aller dans armoire > /* Si je suis sur le lit
« (sortant du lit)
Vous allez dans l’armoire. »
Et pas :
< aller dans armoire > /* Si je suis sur le lit
« Vous sortez du lit. Vous allez dans l’armoire. »
Dans le même style:
" Il y a une armoire (qui est ouverte). »
pourquoi pas:
" Il y’a une armoire (ouverte) "
ou mieux:
" Il y a une armoire ouverte. »
/-------------------------------------------------------
Puisque j’y suis, dans le même LanguageLm: Enter:
2: print "Vous ne pouvez pas ";
switch (verb_word) {
‹ entrer ›: « y entrer. »;
‹ asseoir ›: « vous y asseoir. »;
‹ allonger ›: « vous y allonger. »;
‹ coucher ›: « vous y coucher. »;
default: « y aller. »; ! plutôt que « y entrer. » !
!
}
Il manque, en toute logique, ‹ monter › et ‹ rentrer ›.
/*-------------------------------------------------------
Si j’ai une armoire fermée:
< Regarder sur armoire >
« Vous ne pouvez voir à l’intérieur, puisque l’armoire est fermée. » ?!!!
La Grammaire supporte < regarder sur > mais ne le gère pas. D’ailleurs l’armoire ne peut être de type Container et Supporter.

Il n’y aurait pas un problème avec Answer dans la SVN.
Pour Inform 6 ou 7, le verbe est définie comme ceci dans la version anglaise:
/--------------------------------------------------------------------
Verb ‹ answer › ‹ say › ‹ shout › ‹ speak ›
* topic ‹ to › creature → Answer;
/–
[ AnswerSub;
if (second ~= 0 && RunLife(second,##Answer) ~= 0) rfalse;
L__M(##Answer, 1, noun);
];
/–
Answer,Ask: « There is no reply. »;
/
--------------------------------------------------------------------
Le verbe est bien de type Topic to Creature. Le Reverse ne s’applique qu’au cas inverse.
Topic Creature → Answer
Creature Topic → Anwer Reverse
et non pas
Topic Creature → Answer Reverse
Creature Topic → Anwer
Que ce soit Inform 6 ou 7. Non?!

Cela serait bien auraes si tu pouvais indenter un peu plus tes textes, et utiliser les fonctions de code pour le surligner, car déjà que je ne maîtrise pas le code inform pour toi, cela reste assez confus si toutes les remarques arrivent d’un seul bloc. Par exemple pour le « pourquoi » à propos de

j’ai mis un peu de temps à comprendre si tu nous démontrais ce que tu avais écrit plus haut, ou si tu posais une question.

Pour le answer reverse et compagnie, j’ai mis tel que stormi l’avais implémenté pour la première fois ici :
svn.tuxfamily.org/viewvc.cgi/inf … iew=markup

Vérifie ici pour la version courante, le zip sur le site n’est pas forcément à jour :

svn.tuxfamily.org/viewvc.cgi/inf … r&view=log

En tout cas, entre I6 et I7, c’est l’inverse pour l’utilisation du « reverse » avec le verbe answer.

Pour le (DeDuDes), bien vu, je le corrige.

Pour le

Effectivement c’est plus élégant. Je n’ai pas trop d’avis si on doit le changer ou pas, il faudrait que l’on tombe d’accord avec tous ceux qui participent. Tu peux t’inscrire sur le rapport de bug ici :

informfr.tuxfamily.org/flyspray/

et on en discute. Moi je serais plutôt pour retirer ces parenthèses, à voir si cela ne modifie pas la perception que l’on peut avoir du jeu, en diminuant la visibilité du fait que cela soit ouvert ou fermé. Cela serait plus littéraire ainsi.

Pour le

il y a quand même « y aller » qui est mis par défaut. Si le joueur tape « rentrer dans l’arbre », cela répondra : « Vous ne pouvez pas y aller. », ce qui est une réponse encore correcte. Malgré tout, j’ajoute « monter » dans la liste, mais pas « remonter », « rentrer ».

Pour le « regarder sur », il existe dans inform un LookUnder mais pas un moyen de regarde au dessus. C’est dommage, mais c’est comme ça. Il n’y a pas non plus de « supporter » qui est « container », ce qui n’est pas logique par exemple pour une caisse en bois qui pourrait contenir quelque chose dedans, et au dessus.

Lorsque vous ajoutez des raccourcis pour des verbes, il faut penser à compléter LanguageVerb du fichier French.h.
Il manque v// l// a// et !// ?// et q// mais il n’y est pas non plus dans la version anglaise. Il faudrait, en théorie, ajouter les verbes supérieurs à neufs caractères. Sinon ils sont affichés tronqués dans les messages.

j’ ai seulement compris que vous essayez de "verrouill "… <<

ok c’est corrigé là aussi, merci. J’ai ajouté les abbréviations, et juste verrouiller pour le moment. Je n’arrive pas à taper une phrase donnant une réponse « je n’ai compris que verrouill ». Avec x et « x objet dans » cela mettait bien « je n’ai compris que x… », mais avec « verrouiller objet dans » cela dit seulement « je ne comprends pas cette phrase ».
Quoi qu’il en soit on pourra ajouter d’autres verbes par la suite.

Auraes, si tu peux pouvoir travailler sur une branche de ces bibliothèques pour que l’on teste tous plus facilement, après avoir figé la version 2.3 tu devrais pouvoir accès au svn et faire des commits. Mais pour cela il te faudra créer un compte sur tuxfamily.org/

J’ai apporté deux modifications à la future version 2.3 :

  • Correction du message par défaut pour Drink : l’action demande toujours un objet, le message « Il n’y a rien de buvable ici » n’était donc pas adapté et souvent faux. Remplacé par « Ceci n’a rien de buvable »
  • Lorsqu’on tente de « goûter » un animate, on a maintenant le message « Cela ne serait pas très convenable. » plutôt que « Vous ne remarquez rien de particulier » qui suggère qu’on l’a effectivement goûté.