JeuWeb - Crée ton jeu par navigateur
Menu action sous forme d'un champ texte - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Gameplay, gamedesign (https://jeuweb.org/forumdisplay.php?fid=48)
+--- Sujet : Menu action sous forme d'un champ texte (/showthread.php?tid=3568)

Pages : 1 2


Menu action sous forme d'un champ texte - sulu_03 - 20-01-2009

Dans le cadre de mon jeu, j'ai eu l'idée (surement pas le premier) de permettre au joueur de réaliser des actions au moyen de commende tapé dans un input.

C'est un jeu de bateau, et donc les actions tournent autour de cet univers...

Concrètement ça veut dire que si on tape

"Hector Plantu monte dans le concombre des mers"

a requète qui fera embarquer le capitaine Hector Plantu dans le bateau le Concombre des Mers...

La prise en compte des fautes d'orthographe ou des conjugaison n'est qu'une histoire de bases de donnée, pour ce qui est des verbes en tout cas...
Ainsi, les commandes suivantes donnent le même résultat actuellement et pour peu qu'il n'y ait pas de doublon.

"hector embarquer sur concombre"
"plantu embarque dans le concombre des mers"
"hector monter sur le concombre des mers"

Donc ca donne quelque chose d'assez souple au niveau de la syntaxe, pour peu qu'on ait des noms originaux.
L'idée n'est pas de prendre la tête au joueur pour apprendre le langage, mais que ca soit assez souple.

Le gros avantage que je vois c'est que pour ajouter une fonctionnalité, il suffit de le dire au joueur, et le champ texte ne bouge pas d'un poil.


Peut être qu'a force de taper du code je deviens fou et que je fais une interface affreusement rébarbative !

Qu'en pensez vous ?
Est ce que ca vous ferai chier de devoir taper des commandes comme ca ?
(Sachant que ce genre de commande ne sera pas faite toutes les 5 minutes)


RE: Menu action sous forme d'un champ texte - Seren - 20-01-2009

C'est le fonctionnement de base des "fictions interactives", qui sont des jeux d'aventure en mode texte.

http://ifiction.free.fr/

Quand c'est bien implémenté et complet, c'est vraiment très agréable comme type d'interface (enfin de mon point de vue). On a l'impression que la machine nous obéit au doigt et à l'oeil. Par contre c'est assez dur et long de développer un système complet. Et quand c'est "raté", ça peut être frustrant.

Genre:
"ramasser pomme"
--> je ne comprends pas cette commande
ou
--> il n'y a pas de pomme ici.
alors qu'on en voit une.

Si tu te lances là-dedans, je te conseille de te renseigner sur la fiction interactive, de jouer à quelques parties pour comprendre le système, et ensuite d'étudier/récupérer le code de l'analyseur syntaxique.

Les grands systèmes sont inform (version 6 et 7) et Tads (version 2 et 3).

Pour le système inform 6 il y a une librairie pour la version française sur le site que je t'ai indiqué, tu peux te mettre en relation avec les utilisateurs du forums, ils seront accueillants.


RE: Menu action sous forme d'un champ texte - My Hotel - 20-01-2009

Honnêtement, je préfère effectuer mes actions en cliquant sur des boutons et autres liens que en tapant des commandes, même si ce système peut être utiliser pour certaines commandes rares pour alléger l'interface, auquel cas je suis pour.

Cela dépend donc du degré d'utilisation que tu en fais, le mieux étant de proposer les 2 interface (commandes texte, ou interface classique) sachant que ça fait plus de boulot!

Bonne chance en tout cas, c'est original


RE: Menu action sous forme d'un champ texte - sulu_03 - 20-01-2009

Merci pour les références !

Pour ce qui est des possibilités d'erreurs, oui, je sens que ça va être long a développer.

Pour l'instant, j'ai une base de verbe qui corresponde a des actions possibles.
(pour l'instant monter et descendre)
Je cherche les mots avant qui forment le sujet, et les mots après qui forment le complément. J'ignore les mots de liaison et les petits mots qui ont trop de chances de correspondre à trois choses en même temps...

Je vais chercher des infos sur fictions interactives.


RE: Menu action sous forme d'un champ texte - Seren - 21-01-2009

A vrai dire j'ai pensé à un moment à utiliser un système similaire, mais c'est quand même assez long à développer.

Surtout que le système doit être assez intelligent pour "comprendre" la requête et répondre assez bien et il y a souvent beaucoup de cas particuliers.

En général, le parser répond après une commandes.
Q: prendre une balle
R: Vous prenez une balle

Q: prendre 2 balles
R: Vous prenez deux balles

Pour bien faire (mais on peut en partie contourner en faisant des réponses toutes faites), il faut savoir gérer la conjugaison, la grammaire, etc.. pour pouvoir comprendre le maximum de commande et faire des réponses bien formées.

Et quelque part ça peut dérouter un peu l'utilisateur. Mais a priori si tu as un parser qui fonctionne bien, rien ne t'empêches de mettre des liens cliquables qui font directement appel à la même mécanique derrière pour contenter tout le monde.


RE: Menu action sous forme d'un champ texte - sulu_03 - 21-01-2009

Oui j'ai déjà eu le problème du genre du sujet (dans mon cas un individu qui monte dans un bateau).
Je pense que la solution des parenthèses (e) est la solution de facilité que je vais retenir, en tout cas pour l'instant.


RE: Menu action sous forme d'un champ texte - Seren - 21-01-2009

Je peux te donner quelques pistes sur le principe de fonctionnement de Tads3 qui n'existe qu'en anglais. A un moment j'ai essayé de regarder comment le traduire en français, et niveau grammaire/conjugaison le français est plus complexe que l'anglais, ce qui fait que j'ai abandonné.

Mais en gros, c'est un système qui est codé en objet, avec héritage multiple.

Par exemple pour résoudre les problèmes de genre et de nombres, chaque "objet" au sens programmation à un attribut "isFemale" et "isPlural".

Ensuite lorsque tu reconstitues une réponse, tu te sers de ses infos pour accorder comme il faut.

Par exemple, avec isFemale = vraie et isPlural = vraie :
-> ramasser rations de survie
-> ration de survie ramassées.

Sinon pour te simplifier la vie et en général en français, les commandes commencent toujours par le verbe.

Par exemple:
--> embarquer hector sur bateau

Et tu définis quelque part, qu'avec le verbe embarquer.

Une phrase se contruit comme
[embarquer] (objet) [sur] (objet)

Quand tu reçois une commande quelconque:
1. tu découpes tout les mots séparé par un espace et tu les stockes dans un tableau.
2. tu enlèves tous les articles "le, les, un,.." etc, sauf si un article cardinal ("trois", "quatre")
3. tu identifies le verbe qui est toujours en début de tableau, tu vérifies que tu le connais.
4. tu vérifies si la phrase respecte bien la structure de phrase associée au verbe. Par exemple, embarquer X sur Y. Pour certains verbes il peut y avoir plusieurs construction valable. Par exemple, "se coucher" et "se coucher sur".
5. Ensuite tu essayes d'identifier X et Y. Tu vérifies que X est bien un objet "embarquable" et qu'on peut bien embarquer sur Y.

Et si tout est bon tu executes la commande et tu renvois un message comme quoi c'est fait Smile.

Un des problèmes en français c'est avec les adjectifs. En anglais, ils sont toujours avant le "nom". Donc c'est facile de trouver où est le nom dans une phrase, il est souvent à la fin.

--> take the big blue ball.

contre en français

--> prendre la grosse balle bleue.

En base de donné, pour chaque objet, il va avoir un nom, un identifiant, une description, etc... et surtout un champ avec les mots-clés que tu peux utiliser pour désigner l'objet.

Par exemple, pour un bateau, dans le champ des mots-clés tu peux mettre "bateau", "navire", "concombre mer" comme ça tu accepteras les commandes "monter sur bateau", "monter sur navire", "monter sur concombre de mer".

Si, la requête sur "bateau" te renvoit deux réponses parce qu'il y a deux bateaux présents, à ce moment là il faut lever l'ambiguïté et retourner une alternative à l'utilisateur.
--> Voulez-vous monter sur l'Invincible ou le Conquérant ?


RE: Menu action sous forme d'un champ texte - keke - 21-01-2009

Coucou,

Au lieu d'utiliser des parenthèses (qui va dénaturer tes phrases), essaye de mettre des couleurs. Je pense que ça serait plus joli :

(Michel) est dans (le bateau)

Michel est dans le bateau

De plus, peut-être qu'avec la possibilité de complétion de phrase, ça pourrait faire quelque chose d'intuitif ?
tu tapes :
M
le système sugère Michel, Musique, le Muse, ...
tu sélectionnes Michel (ou tu le tapes, au choix)
Michel m
le système suggère mange, monte sur, masque, matte, se mastù$*^, se mutile
tu sélectionnes monte (ou tu le tapes, au choix)
Michel monte sur le
le système suggère des éléments 'montable' commençant par "le" : cheval, le chemin, le bateau, le petit chien ...

etc. La complétion existe sur Google si tu souhaites t'en inspirer. Je pense qu'un système en AJax serait suffisant pour faire ce type d'inspiration, bien que techniquement, je ne sache pas le faire ^^.

Par ailleurs, je pense pas qu'il faille trop mettre l'accent sur les règles orthographique strictes ... mais si tu voulais vraiment t'investir là dedans, essaye de comprendre les problématiques (et les solutions amenées surtout) des logiciels de traduction.
En effet, l'othographe, la grammaire, la syntaxe sont des éléments régies par l'académie française pour la France, mais qui n'a pas la même autorité au Québec, en belgique et dans les autres pays francophones (et même dans les DOM-TOM) ... Ensuite, tu découvriras que certaines langues sont effectivement plus simple que le français, et d'autres incomparablement plus compliqués. Analyser ces autres langues permet de mieux comprendre les mécanismes de notre langue ... La raison du "sujet-verbe-complément", la raison des conjugaisons et des adverbes de temps, du pluriel, de toutes les exceptions qui confirment la règle, etc.

Kéké
Pour l'anecdote :
- en france on considère 0, 1 et plus ... dans d'autres langues on considère 0, 1, 2 et plus... la notion de 2 n'est pas liée à la notion de plusieurs ...
- en français, tout a un genre (masculin ou féminin). En anglais, on distingue 3 genres (masculin, féminin et indéfini)
- dans certaines langues, les notions temporelles n'existent que grâce à leurs complément de temps : hier, je mange du poisson. Pourquoi s'embête-t-on avec les conjugaisons/déclinaison dans les pays aux langues d'origines grecque ou Latine ?
- la notion de mot le plus long en allemand n'a aucune consistance ... les compléments peuvent s'ajouter indéfiniment à la fin d'un nom : la niche du chien est bleu => chien_niche_bleu (je connais pas l'allemand, enfin, je l'ai oublié ^^)
***


RE: Menu action sous forme d'un champ texte - sulu_03 - 21-01-2009

Ouais glouglouglou :p


RE: Menu action sous forme d'un champ texte - wild-D - 21-01-2009

comme le dis seren; normalement y a pas de sujet (vu que c'est soi-même; on évite d'avoir à cmmencer toute ces phrase par je, pour passer direct au verbe) (ce serait franchement bizarre de parler de soi à la 3e personne ^^)

par contre je plussoie les suggestions de keke coloration et complétion auto :good:

parce que dans mon souvenir (outre le pb de ma maitrise approximative de l'anglais); c'était surtout les "pertes de temps" lié aux tentatives d'interactions avec des objets non interactifs qui étaient des plus horripilantes.
surtout quand au lieu de te dire que ce n'était pas un objet interactif, le système utilisait des formulation plus subtile... ça donnait parfois des truc ridicule, genre: "J: cueillir fleur" -> "R: fleur est trop lourde pour être transportée" -_-'