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

Autres modifications apportées (n’hésitez pas à réagir si certaines vous semblent discutables):

  • message misc 49 : « Pouvez-vous préciser le nom de l’objet à utiliser ?^ » changé en « Pouvez-vous préciser l’objet concerné par cette action, ou à utiliser ?^ » (en effet le message est utilisé par exemple si on tape « boire » seul, mais aussi si on fait « creuser terrier », ou même « attaquer » seul. Il faut donc un message qui corresponde pour tout). En anglais c’est plus simple ils font « what do you want to BIDULE » ou « what do you to want to BIDULE the MACHIN with » ?
  • action « Rub » (frotter) : différenciation entre l’action selon qu’elle est sur un animate ou un objet, et passage du message au futur pour ce dernier (vous n’arriverez à rien comme ça) pour éviter de suggérer que l’action a réussi.
  • Modification du verbe « chercher » qui était équivalent à « fouiller » dans la pratique. Comme on peut vouloir utiliser le verbe chercher un peu différemment (exemple : chercher des puces dans le chien) et que chercher est un verbe pas assez terre à terre (un peu comme « trouver » ou « résoudre »), je il renvoit maintenant VagueSearch qui dit « utilisez plutôt ‹ fouiller › »
  • amélioration de la grammaire du verbe « grimper/escalader/gravir » avec ajout des prépositions suivantes en plus de ‹ sur › : à, a, au, aux, par (exemple : grimper aux arbres, grimper à l’échelle. La préposition par n’est pas indispensable mais ne fait pas de mal au cas où on pourrait la rencontrer)
  • modification de la grammaire du verbe « fouiller » pour qu’on puisse « fouiller dans » quelque chose

Je rajoute un problème du moment sur la lib :

  • le verbe secouer veut absolument qu’on tienne un objet à la main. C’est frustrant pour le joueur mais pratique pour l’auteur qui n’a pas à se soucier trop fort de si un objet est secouable ou non. En anglais c’est le verbe « wave » qui veut dire agiter sauf erreur de ma part, secouer est une extension qui va trop loin du sens de cette action. En gros on peut dire que l’action agiter existe bien, et en général on agite ce qu’on tient, mais secouer qui est plus large n’est pas géré. On peut envisager de simplement retirer le synonyme secouer de agiter sinon il faut une solution plus globale.

Deux ou trois petites remarques (mais je ne connais presque pas la programmation en Inform ni ses libraries, alors je suis peut-être à côté de la plaque) :

Mais y aurait-il moyen de traduire séparément « what do you want to BIDULE » par « Pouvez-vous préciser l’objet concerné par cette action ? » et « what do you to want to BIDULE the MACHIN with » par « Pouvez-vous préciser l’objet à utiliser ? » Ça me paraîtrait nettement plus clair et moins lourd, mais peut-être qu’il y a un problème qui m’échappe…

Y a-t-il réellement des cas où le verbe français « chercher » est un synonyme de « fouiller » ? Je ne sais pas, mais ça me paraît être une mauvaise traduction de l’anglais « to search », qui veut dire « fouiller » mais pas « chercher », à ma connaissance. Si c’est le cas, on pourrait carrément enlever « chercher ».

L’équivalent anglais de « chercher » serait peut-être « to look for » ou « to search for » ; s’il y a un de ces verbes dans la library anglaise, ou même s’il y a « to find » (parfois utilisé, dans des jeux comme ceux de Level 9, pour retrouver un objet où qu’il soit), ils pourraient être traduits par « chercher », eux.

En tout cas, la solution de dire « utilisez plutôt fouiller » ne me plaît pas beaucoup ! Ce n’est pas du tout souhaitable que le parser comprenne ce que le joueur veut dire mais refuse de le faire en disant qu’il faut taper autre chose…

Ah, c’est donc là la cause de ce problème récurrent ! Et je suppose qu’il n’y a pas le verbe « to shake » dans la library en anglais, qui correspondrait mieux à l’action de secouer un arbre, par exemple ?

Quoi qu’il en soit, je ne sais pas ce qui est le moins mauvais : laisser « secouer » avec ses problèmes, ou le retirer et causer du « guess-the-verb » dans les cas où ça irait très bien (une bouteille, par exemple)…

Ou alors, on pourrait peut-être faire une action « wave » et une action « shake », mais je suppose que ça ferait encore d’autres complications…

Au contraire, pour moi si le parser comprend 50% de l’intention du joueur et qu’en plus il sait que la syntaxe est mauvaise, il ne doit pas se priver de l’en informer. C’est uniquement si 100% de l’intention du joueur était comprise que ça n’aurait aucun sens.

C’est une solution qui est certes insatisfaisante, mais j’ai du mal à trouver mieux. Le problème de chercher c’est que le verbe n’est ni 100% mauvais ni 100% bon, dans le sens où on peut utiliser chercher dans des sens équivalents à fouiller, et mais aussi avec des sens autres (‹ chercher › seul, 'chercher l’aiguille")

Les alternatives que je vois :

  • supprimer le verbe chercher, mais un joueur qui tapera « chercher dans la caisse » (équivalent de fouiller), « chercher parmi les détritus », « chercher sous le lit » (ça me fait penser que fouiller sous le lit non plus n’est pas reconnu et pourrait être équivalent à regarder sous le lit) sera laissé avec un « Je ne connais pas ce verbe. » Or le sens de fouiller étant très proche il risque de décider que fouiller ne sera pas reconnu non plus par cohérence.
  • gérer les formes de chercher qui sont équivalentes à « fouiller » ou à d’autres verbes (« regarder sous »), mais que faire des autres et comment faire comprendre que certaines formes sont reconnues mais d’autres ne le sont pas ?

L’attitude la moins équivoque m’a semblé de renvoyer le joueur vers la commande fouiller, en estimant par ailleurs qu’il ne rencontrera le message que zéro ou 1 fois au cours d’un jeu (zéro s’il trouve spontanément fouiller plus logique, ou qu’il ne pense pas à fouiller, 1 sinon).

Je n’avais pas pensé à cette solution, mais en y regardant de plus près je ne suis pas sûr qu’on puisse savoir au moment où on affiche le message si on est dans un cas ou dans l’autre. Pour le parseur on est toujours dans le même cas : dans le cas d’une commande incomplète à qui il manque un noun alors que la commande complète a été lue.
Il y a une autre solution, mais j’y vois déjà des problèmes, c’est de répéter la commande : « Précisez : boire QUOI ? », « Précisez : creuser le terrier avec QUOI ? » mais la qualité du message dépend beaucoup de la définition des verbes, et on a un problème avec les actions sur le joueur (se coucher) :

C’est très clair, mais pas toujours très français (pour grimper on peut corriger en séparant la grammaire de grimper de celle d’escalader, mais c’est pas mal de travail et un risque d’introduire des bugs).

  • pour misc 49, ça me va.
  • action « Rub » (frotter) : idem
  • Pour chercher, le seul synonyme de fouiller, c’est en fait « chercher dans / sur / dessous quelque chose » etc. « Chercher quelque chose » c’est différent, car on ne veut pas regarder dans ce qque chose que l’on aurait déjà (comme avec chercher dans / sur etc), mais trouver ce quelque chose, et ce concept n’est pas pris en compte dans inform.
    Si quelqu’un tape « chercher boite » en ayant à l’esprit: fouiller la boîte, il fait une faute de français. Si c’est possible, cela pourrait être remplacé par : (Vous fouillez l’objet) + résultat de l’action (en renvoyant vers search.)

Verb 'chercher' * 'dans' noun -> Search; ! éventuellement prévoir sur, dessous, à l'intérieur de etc... * noun -> SearchModifié; ! avec message pour préciser que le parseur a compris cela comme une fouille en fait * topic -> VagueSearch;

le vaguesearch pourrait être dans le genre : « à supposer que cela existe, vous ne pouvez l’obtenir ainsi, il vous faut plutôt fouiller ce qui contiendrait cela, ou aller dans la pièce où cela se trouve. ». Ou plus directement : « Vous ne pouvez pas simplement rechercher un objet avec ce verbe. ». Mais il y a toujours le risque d’induire le joueur en erreur en lui faisant croire que l’objet qu’il a imaginé existe vraiment etc.

  • verbe « grimper/escalader/gravir » : oui cela semble logique

  • secouer : peut-être à retirer. Wave c’est vraiment différent de secouer. Ce verbe me semble pourtant utile, mais vu qu’il n’existe pas dans inform, cela serait encore une déviance par rapport à l’anglais. À noter dans inform 7 ils ont retiré encore plus de verbes. Je ne sais pas personnellement ce qui serait le mieux, je ne suis pas contre rajouter un « shake » d’ailleurs.

  • la construction de type :

cela a le mérite d’être clair, cela ne me déplait pas, même si c’est un peu sec.

Secouer pose un peu le même problème que chercher d’ailleurs : on peut légitimement vouloir « secouer » un orangina qu’on a dans les mains, et devant un refus en déduire qu’on ne pourra pas non plus l’agiter.

Pour le verbe chercher, la solution d’Otto peut convenir, mais à condition d’avoir des messages d’une extrême clarté pour écarter toute ambiguïté, et de gérer les erreurs que peut faire le joueur (chercher aiguille au lieu de chercher dans botte de foin par exemple). Sinon la solution d’un message pointant vers le verbe fouiller à n’importe quelle utilisation de « chercher » n’est pas belle mais elle est sans ambiguïté, et j’ai tendance à privilégier ce dernier critère.

justement, cela sera à l’auteur d’implémenter le verbe « secouer » s’il ajoute un orangina dans son jeu, au lieu d’utiliser « wave ».
D’ailleurs wave a été retiré d’inform 7, vu son peu d’intérêt.

Pour « chercher objet », on peut préciser : « vous ne pouvez interagir qu’avec les objets visibles ou à portée de main ». (ou une phrase mieux tournée, dans ce genre).
Sinon on peut aussi ajouter la commande de déboggage « purloin » (qui permet d’aller chercher des objets où qu’ils se trouvent dans le jeu).

Otto, il y a une modification que je ne comprends pas dans French.h :
Ancienne version :

Constant QUIT1__WD = "q//"; Constant QUIT2__WD = 'quitter';
Version actuelle :

Constant QUIT1__WD = 'quit'; !*! "q//" ? Constant QUIT2__WD = 'quitter';

Le changement fait que quand le jeu demande « Voulez-vous RECOMMENCER, CHARGER une partie sauvegardée, obtenir le score détaillé pour cette partie (FULLSCORE) ou quitter (QUITTER) ? », il est impossible de répondre « q » comme on le pouvait avant, en revanche « quit » est reconnu.

Est-il possible de revenir à l’ancien comportement ?

oui bien sûr.

J’avais eu pas mal de problème avec I7 qui posait problème du fait de certaines duplications de verbes. Je présume que c’est pour cette raison que j’avais modifié cela (mais je n’en ai pas souvenir), sans forcément avoir conscience des dommages collatéraux. Les 2 codes étant maintenant bien séparés, tu peux donc corriger tout ce qui te semblera nécessaire.

D’accord.

On en avait déjà parlé mais j’ai déjà oublié, peux-tu nous rappeler le lien qui existe entre la lib pour I7 et celle pour I6 ? La première utilise-t-elle la seconde, ou est-ce que c’est maintenant totalement indépendant ?

les 2 codes sont parfaitement indépendants depuis la dernière version d’inform 7, qui peut utiliser maintenant une unique extension de langue !

Ça veut dire qu’on peut retirer tout le code ajouté entre #ifndef dans French.h et FrenchG.h pour inform 7 ?

oui par exemple.

Ou était-ce peut-être plutôt parce que, dans tes jeux, tu as parfois utilisé « q » comme abréviation de « questionner », au lieu de « quitter » ?

Je ne pense pas car la modification ici n’était que dans le contexte de la question posée lorsqu’on a fini une partie (gagnée ou perdue), il n’y avait probablement pas d’interférence.

La version 2.3 est diffusée, mais il reste encore des améliorations à apporter donc je continue au fur et à mesure des besoins et des idées.

Suggestion : ajouter « gratter » en synonyme de « frotter » : pour ou contre ?

Voici le commentaire des dernières modifications sur la bibliothèque. Remarques bienvenues, comme d’habitude :

[inform6-fr] Améliorations diverses:

  • verbe consulter, action Consult : on pouvait consulter tout et n’importe quoi (et n’importe qui) sur tous les sujets, avec toujours le même message : « Vous ne trouvez rien d’intéressant dans… » Ça pouvait vite tourner au cocasse. Maintenant consulter un personnage renvoit l’action Ask, et devient donc synonyme d’interroger pour les personnages (sauf si on le consulte en tentant de le lire mais là on a un message qui dit qu’il n’est pas consultable de cette manière), et pour les objets le message est un peu plus clair : « Vous ne découvrez rien. Soit (l’objet) n’est pas consultable ainsi, soit vous tentez de consulter sur le mauvais sujet. ». Effet de bord, j’ai dû créer une action VagueConsult si on tape juste « consulter objet », sans précision, qui dit « Précisez sur quel sujet vous souhaitez consulter (l’objet ou la personne) ».
  • « sauter dans », qui n’était pas reconnu, envoie maintenant l’action Enter
  • « fouiller sous », qui n’était pas reconnu, est maintenant équivalent à « regarder sous » : action LookUnder
  • « tirer un objet dans une direction », qui n’était pas reconnu, est maintenant équivalent à « pousser un objet dans une direction », avec l’action PushDir. L’idée étant que l’important est la direction et pas tant le fait qu’on tire ou qu’on pousse, et PullDir n’existe pas comme action.

cela me semble bien.
Pour « gratter », pas trop d’avis, mais pourquoi pas.

Tiens, ça me fait penser que j’avais été bloqué un moment vers le début d’Ekphrasis parce que j’avais essayé « examiner derrière  » (en fait, plutôt « x derrière  ») au lieu de « regarder derrière  », et que ça ne marchait donc pas… Bon, d’accord, « examiner derrière  » n’est pas très correct ; je devais être influencé par le fait que « x  » et « r  » sont interchangeables. Néanmoins (juste pour le cas où d’autres personnes auraient le même problème que moi), cela causerait-il des problèmes particuliers si on ajoutait « examiner derrière  » et « x derrière  » comme synonymes de « regarder derrière  », et la même chose pour « examiner sous  » ?

Pourquoi pas pour rendre « examiner derrière » équivalent à « regarder derrière ». Et pourquoi pas aussi « fouiller derrière ». Il reste un problème plus large avec ce verbe, c’est que par défaut ça renvoyait Turn dans la lib anglophone, et à cause de tous les problèmes que ça posait on avait choisi (à tort ou à raison) que l’action serait plutôt Search, mais ça veut dire qu’on ne peut pas avoir une réponse différente entre « fouiller objet » et « regarder derrière objet » (sauf modification des verbes par l’auteur pour ses besoins précis), alors qu’on peut en avoir une différente pour « regarder sous objet » (LookUnder).
Peut-être même que LookUnder serait plus approprié pour cette action ? (y a-t-il souvent des objets pour lesquels on veut à la fois regarder derrière et regarder dessous ?)

L’autre alternative est la création d’une nouvelle action, mais ça fait une action de plus à gérer par les auteurs, donc une contrainte supplémentaire.