[I6] Extension "FrenchGAugmented"

Espace libre pour faire connaître vos dernières réalisations ou les événements concernant la communauté (concours, jeux individuels, etc.)

Modérateurs: Stormi, Otto Grimwald

[I6] Extension "FrenchGAugmented"

Messagepar Mule hollandaise le Sam Sep 20, 2014 6:42 am

J'ai créé une extension Inform 6 qui rajoute des trucs par rapport à FrenchG.h :
  • un verbe "utiliser" qui essaie l'action la plus logique au regard des propriétés de l'objet
  • des formulations "tout prendre", "tout poser", etc. pour "prendre tout", "poser tout", etc.
  • quelques nouvelles formulations et variantes, la plupart inspirées de ExpertGrammar.h de Emily Short, mais certaines autres nouvelles ("quitter un vêtement")
  • quelques distinctions pour des verbes qui peuvent avoir plusieurs sens
Je compte m'en servir dans mes jeux par la suite, alors si vous avez des remarques ou des idées, n'hésitez pas :)
Mule hollandaise
Grand Ancien
 
Messages: 1126
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I6] Extension "FrenchGAugmented"

Messagepar auraes le Sam Sep 20, 2014 7:13 am

Je regarde ça aujourd'hui... Grrr... et l'UTF-8 alors !? Bon... je regarderai quand même...
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Extension "FrenchGAugmented"

Messagepar auraes le Sam Sep 20, 2014 11:20 am

J'ai regardé ToutPoserSub. Il y'a un petit problème quand il n'y a rien à poser :
>tout poser
(poser tout)

>

Pourquoi ne pas passer le tout derrière le verbe à la saisie comme un pronom ?

Tu utilises abondamment les attributs dans la grammaire, mais un simple worn à la place d'un held dans la grammaire 6/11 & 6/12 (take 'off' worn) posait problème !
http://www.intfiction.org/forum/viewtopic.php?f=7&t=15730&start=100#p79784

L'usage d'Extend pour Verb peut aussi poser problème. L'ordre des lignes de grammaire pour un verbe n'est pas anodin; cela peut changer le comportement et la réaction du programme surtout pour les phrases incomplètes :
Code: Tout sélectionner
Verb 'ask'
    * creature 'about' topic                    -> Ask
    * creature 'for' noun                       -> AskFor
    * creature 'to' topic                       -> AskTo
    * 'that' creature topic                     -> AskTo;
>ask george
What do you want to ask george for?

>
Code: Tout sélectionner
>Verb 'ask'
    * creature 'about' topic                    -> Ask
    * creature 'to' topic                       -> AskTo
    * creature 'for' noun                       -> AskFor
    * 'that' creature topic                     -> AskTo;
>ask george
There is no reply.

>
Je n'ai fait qu'intervertir la deuxième et la troisième ligne. Toucher à la grammaire semble très délicat !

Il me semble qu'il y a une erreur, tu étends l'usage d'un meta verbe :
Code: Tout sélectionner
[ isMeta; meta = true; return GPR_PREPOSITION; ];

Extend 'quitter' first
  * isMeta      -> Quit
  * held      -> Disrobe;
Extend only 'quitter' replace !? Cela retire 'quitter' du meta verbe Quit, et crée un nouveau verbe ? (Pas testé, je ne suis pas familier de ces usages.)

Dans Extend 'vider' first, puisqu’il y a poche au singulier, il manque peut-être : 'ma'/'sa'

Utiliser ou Actionner !? Pas évident... mais ouvrir ou vider relèvent peut-être plus de l'action que de l'utilisation...
(J'avais passé un peu de temps, pour un parser minimaliste, à « étudier » le comportement de certains jeux Sierra, LucasArts et Delphine Software.)

Code: Tout sélectionner
Verb 'désactiver'
* noun            -> SwitchOff;
Tu as mis un accent à 'désactiver'.

Tu as tendance à surcharger un peu en accolades, else et return true/false souvent inutiles (je suis souvent obligé de ré-indenté pour essayer de comprendre le code) :
Code: Tout sélectionner
[ ApprocherSub ;
  if (noun == nothing) {"Précisez de quoi vous voulez vous approcher.";}
  else {"Vous n'avez pas vraiment besoin d'être plus près.";}
];

[ ApprocherSub;
   if (noun == nothing)
      "Précisez de quoi vous voulez vous approcher.";
   "Vous n'avez pas vraiment besoin d'être plus près.";
];

[ ToutPrendreDansSub i j;
  if (noun==0) {return false;}
  else {
   print "(prendre tout dans ", (the) noun, ")^";
   i = child(noun);
   while (i ~= nothing) {
     j = sibling(i);
     print (name) i; print " : "; <Take i>;
     i = j;
   }
  }
];

Est-ce que le paramètre de retour à un sens ?

[ ToutPrendreDansSub i j;
   if (noun==0) return;
   print "(prendre tout dans ", (the) noun, ")^";
   i = child(noun);
   while (i ~= nothing) {
      j = sibling(i);
      print (name) i, " : ";
      <Take i>;
      i = j;
   }
];


Code: Tout sélectionner
[ ToutPrendreSub i j;
   [..]
   if (i hasnt concealed && i ~= selfobj) {
Frotz in 6/12 :
TAKE ALL has been modified such that scenery or animate objects will not be taken.
In parserm.h :
Code: Tout sélectionner
if (action_to_be == ##Take or ##Remove && (j has animate or scenery or static || parent(j) == actor))
   flag = 0;
Tu testes l'attribut concealed dans ToutPrendreSub mais pas dans ToutPrendreDansSub. Idem pour ToutPoserSub etc. (DROP ALL ne pose pas les objets avec l'attribut concealed; ce qui est étrange puisque l'objet et bien visible dans l'inventaire !)

Code: Tout sélectionner
Verb 'approcher' 'rapprocher'
*            -> Approcher
* 'vous'      -> Approcher
* 'vous' noun   -> Approcher;
* 'vous' 'de'/'d^'/'du'/'des' noun -> Approcher;

Conclusion approximative et éphémère :
La « Stormisation » de la grammaire et du code en général[e], ne me semble vraiment pas une bonne idée; il y a bien assez de problèmes avec les bibliothèques standards pour en rajouter...
Dernière édition par auraes le Dim Sep 21, 2014 6:05 pm, édité 2 fois.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Extension "FrenchGAugmented"

Messagepar Stormi le Dim Sep 21, 2014 12:55 pm

C'est une insulte stormisation maintenant ?
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1207
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: [I6] Extension "FrenchGAugmented"

Messagepar Otto Grimwald le Dim Sep 21, 2014 5:13 pm

auraes a écrit:La « Stormisation » de la grammaire et du code en générale


quitte à stormiser... on écrit : « en général ».

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

Re: [I6] Extension "FrenchGAugmented"

Messagepar Mule hollandaise le Dim Sep 21, 2014 11:15 pm

auraes a écrit:J'ai regardé ToutPoserSub. Il y'a un petit problème quand il n'y a rien à poser :
>tout poser
(poser tout)

>

Pourquoi ne pas passer le tout derrière le verbe à la saisie comme un pronom ?

Bonne idée ! C'est plus bien simple comme ça. Merci !

auraes a écrit:Tu utilises abondamment les attributs dans la grammaire, mais un simple worn à la place d'un held dans la grammaire 6/11 & 6/12 (take 'off' worn) posait problème !
http://www.intfiction.org/forum/viewtopic.php?f=7&t=15730&start=100#p79784

Tu remarqueras que j'ai bien mis "held" dans la grammaire de "quitter'. Du coup je vois pas où est le problème dans ce que j'ai écrit.

auraes a écrit:L'usage d'Extend pour Verb peut aussi poser problème. L'ordre des lignes de grammaire pour un verbe n'est pas anodin; cela peut changer le comportement et la réaction du programme surtout pour les phrases incomplètes :

C'est pour ça que j'utilise "replace" pour la plupart des trucs, à part "vider poche". Dans ce cas le 'first' est sans doute pas approprié : si jamais y'a un objet "les poches de la personne qu'on est en train de pickpocketer", ou si on a un sac plastique avec synonyme "poche" (pour les gens du Sud), ça risque de créer des problèmes ; supprimé, donc.

auraes a écrit:Il me semble qu'il y a une erreur, tu étends l'usage d'un meta verbe :

En effet, j'étends l'usage d'un meta verbe en lui donnant un sens non meta dans certains cas. http://www.firthworks.com/roger/informfaq/vv.html

auraes a écrit:Dans Extend 'vider' first, puisqu’il y a poche au singulier, il manque peut-être : 'ma'/'sa'

Exact, merci.

auraes a écrit:Utiliser ou Actionner !? Pas évident... mais ouvrir ou vider relèvent peut-être plus de l'action que de l'utilisation...
(J'avais passé un peu de temps, pour un parser minimaliste, à « étudier » le comportement de certains jeux Sierra, LucasArts et Delphine Software.)

Cette extension est aussi faite pour aider les joueurs qui ne connaissent pas forcément la syntaxe. C'est peut-être pas toujours correct mais mieux vaut rattraper des formulations bancales et en profiter pour leur faire voir les bonnes formulations plutôt que dire "je ne comprends pas".

auraes a écrit:Tu as mis un accent à 'désactiver'.

Corrigé, merci.

auraes a écrit:Tu as tendance à surcharger un peu en accolades, else et return true/false souvent inutiles (je suis souvent obligé de ré-indenté pour essayer de comprendre le code)

Chacun son style... c'est plus clair pour moi comme ça.

auraes a écrit:Est-ce que le paramètre de retour à un sens ?

Je suis pas super à l'aise avec "return;" tout seul, je préfère quand on dit si "ça a marché ou non". Ca change rien, fondamentalement, à part dire "tout est OK dans ce cas" au programmeur. Mais dans ce cas-là, le test noun==0 est inutile parce que le parser va essayer de compléter, du coup je l'ai changé (dans ViderPoches).

auraes a écrit:
Code: Tout sélectionner
Verb 'approcher' 'rapprocher'
*            -> Approcher
* 'vous'      -> Approcher
* 'vous' noun   -> Approcher;
* 'vous' 'de'/'d^'/'du'/'des' noun -> Approcher;

Ah oui, merci !

auraes a écrit:Conclusion approximative et éphémère :
La « Stormisation » de la grammaire et du code en général[e], ne me semble vraiment pas une bonne idée; il y a bien assez de problèmes avec les bibliothèques standards pour en rajouter...

Absolument pas d'accord, et je vois pas pourquoi tu dis ça ? (et surtout le rapport avec mon code ?)
Si par 'stormisation' tu veux dire "rajouter des verbes et des formulations équivalentes et des distinctions de cas", alors on a des philosophies complètement différentes : ça fait peut-être un code plus chargé, mais ça ajoute un peu plus de cohérence dans le système et ça aide un joueur novice à faire ses premiers pas. Vu le nombre de joueurs qui jouent à des fictions interactives, ça me paraît essentiel de travailler à créer des systèmes et des jeux qui prennent des joueurs potentiels par la main et qui minimisent les choix de conception qui peuvent paraître comme arbitraires ou incohérents, parce que ça fait fuir les gens qui veulent juste jouer à un jeu marrant ou lire une histoire sympa.
Mule hollandaise
Grand Ancien
 
Messages: 1126
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I6] Extension "FrenchGAugmented"

Messagepar auraes le Lun Sep 22, 2014 6:25 am

Mule hollandaise a écrit:Tu remarqueras que j'ai bien mis "held" dans la grammaire de "quitter'. Du coup je vois pas où est le problème dans ce que j'ai écrit.
C'était un exemple, je ne sais pas si le problème est spécifique à worn.
Mule hollandaise a écrit:En effet, j'étends l'usage d'un meta verbe en lui donnant un sens non meta dans certains cas. http://www.firthworks.com/roger/informfaq/vv.html
Non. Roger Firth n’étend pas un meta verbe, il crée un verbe (nom meta) dont l'une des acceptions peut être transformée en meta; le contraire de ce que tu fais et dis.
Tu continues avec ViderPochesSub et ViderPochesDansSub à poser et à insérer en multi des objets qui peuvent avoir l'attribut concealed, ce que ne font pas les bibliothèques.
Mule hollandaise a écrit:a ajoute un peu plus de cohérence dans le système
Mule hollandaise a écrit:Chacun son style... c'est plus clair pour moi comme ça.
Ah bon !? Restons-en là alors.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: [I6] Extension "FrenchGAugmented"

Messagepar Mule hollandaise le Dim Oct 05, 2014 4:12 am

Pour "vider poches", j'ai réécrit la routine pour que ça soit un synonyme de "poser tout", comme ça on fait ce que la bibliothèque décide de faire. Et je vois pas vraiment d'autres synonymes à rajouter, donc je crois que j'en ai fini :)
Mule hollandaise
Grand Ancien
 
Messages: 1126
Inscription: Mar Aoû 29, 2006 10:57 pm


Retourner vers Annonces

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron