Langages (inform 6 et Mac OS X)

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Sam Jan 10, 2009 3:56 pm

Re,

J'ai plusieurs problèmes lorsque je code en Inform :
- Lorsque je programme un objet, celui-ci peut-être pris dans le jeu, mais lorsque on le jette ou le pose il arrive parfois qu'il se replace tout seul ce qui provoque des problèmes lorsqu'il s'agit d'un trésor.
- Il me semblerait logique que lorsque on est dans le noir on ne puisse pas regarder un objet, pourtant cela est possible, c'est peut-être normal ?
- Il y a un problème avec le score, je peut récupérer un trésor, ce qui fait gagner des points, le poser dans une salle particulière, ce qui fait regagner un petit peu, mais je peut également le prendre, le reprendre et le reposer dans la même pièce et cela fait toujours gagner des points.
- Parfois quand j'emploie pluralname il met l'objet au pluriel, même si cela est juste pour donner des synonymes.
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar JB le Sam Jan 10, 2009 5:06 pm

Hello,

en réponse à tes questions :

1) pour ta premiere question, pourrais tu etre plus précis ? Normalement si l'objet n'est pas scenery, si tu le prends et le place dans une autre piece, il place dans la room où tu t'en sépares.

2) Petit conseil pratique : ce n'est que mon humble avis, mais n'utilise pas la gestion du noir / éclairage par défaut dans Inform. C'est un casse-tête pas possible (pour ne pas citer une autre partie du corps) et c'est peu élégant. Si tu as une pièce noire, je te conseille de faire un attribut noir que tu ajoutes à ta piece. Selon sa valeur (par exemple 1 ou 0) tu as des descriptions différentes. Tu peux lui ajouter un attribut each_turn qui checke si tu es en possession d'une torche allumée par exemple. Idem pour les objets dans la pièce. Si ce sont des objets transportables, ajoute pour la description éclairée le cas où ils ne sont plus dans la piece noire.

3) Facile. Tu ajoutes une variable sur ton trésor, par exemple "pris 0". Si tu le prends, ca se transforme en pris 1 et tu gagnes des points. Si tu le reprends et que pris est déjà égal à 1, pas de points supplémentaires.

4) Pluralname détermine le genre de ta description par défaut. Si par exemple ton objet par défaut est "corbeille de fruits" et qu'un synonyme est "cerises" ce n'est pas la peine de lui mettre un pluralname, car lors des traitements par défaut l'expression utilisée sera toujours corbeille de fruits. Par exemple :

> attaquer cerises
Ce ne serait pas sympa pour la corbeille de fruits.

JB
Avatar de l’utilisateur
JB
Grand Ancien
 
Messages: 510
Inscription: Mar Aoû 24, 2004 11:00 am
Localisation: Paris

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Sam Jan 10, 2009 6:24 pm

C'est pas très clair pour moi vu que je débute, tu pourrait me montrer avec un peu de code, stp ?
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Otto Grimwald le Sam Jan 10, 2009 7:55 pm

N'oublie pas que tu as beaucoup de jeux dont le code est disponible à cet endroit :
http://svnweb.tuxfamily.org/listing.php ... h=%2F&sc=0
Tu peux explorer le code depuis cet endroit, et même télécharger l'ensemble ici:
http://svnweb.tuxfamily.org/dl.php?repn ... =0&isdir=1

C'est aussi en étudiant le code des autres (même s'il n'est pas toujours parfait), que l'on comprends les mécanismes d'inform.

Pour le 1/, je crois savoir, tu as dû utiliser la construction "found_in chambre", mais cela est fait pour placer un objet qui n'a pas a être déplacé par le joueur. Cela existe pour placer un objet en de multiple endroits à la fois, par exemple le soleil dans tous les endroits qui sont à l'extérieur, avec cette construction par ex: found_in [; return (location ofclass Village);] ,

Pour un objet "normal" et manipulable, utilise la construction :

Object Torche "torche" temple1

Pour le 2/, je n'ai jamais trop utilisé les pièces sombres alors je ne saurais pas quoi dire. Mais je viens de tester et pourtant dans la pièce que j'ai créée, si on entre dedans on ne peut rien voir, et si je veux regarder les objets dans mon inventaire, j'ai un message disant également que je ne peux rien voir. Je pense qu'il doit y avoir un problème dans ton code. Peux-tu le copier ici, ou alors si c'est trop gros, sur ce site : http://pastebin.com/ et nous envoyer l'adresse ?

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

Re: Langages (inform 6 et Mac OS X)

Messagepar Akien le Sam Jan 10, 2009 8:59 pm

SIM54 a écrit:C'est pas très clair pour moi vu que je débute, tu pourrait me montrer avec un peu de code, stp ?


3) Pour ajouter une variable sur la saisie d'un objet, il suffit de définir une nouvelle propriété et d'intercepter l'action Take :
Code: Tout sélectionner
Object  objet1 "objet 1"
    with name 'objet1',
           pris 0,
           before [;
              Take:
                  self.pris = 1;
                  score = score + 1;
                  rfalse;
           ];

Sinon je crois que tu peux utiliser l'attribut scored pour un lieu (première visite) ou un objet (première saisie), je crois. Je ne l'ai jamais essayé mais ça doit simplifier pas mal de choses.

4) Je ne pense pas qu'il y ait besoin de code pour cela, l'exemple de JB parle bien, mais bon ça ne coûte rien :
Code: Tout sélectionner
Object  corbeille "corbeille de fruits"
   with name 'corbeille' 'fruit' 'fruits' 'panier' 'cerises',
          description "Une corbeille de fruit contenant des cerises.",
   has  female;

Si tu ajoutes aussi l'attribut pluralname, ça va s'appliquer au short_name (corbeille de fruits) de l'objet, on va donc te parler de "des corbeille de fruits". Si le joueur veut interagir avec les cerises, il pourra le faire, mais c'est de "une corbeille de fruits" que les retours lui parleront.
Avatar de l’utilisateur
Akien
Grand Ancien
 
Messages: 298
Inscription: Mer Mai 09, 2007 1:31 pm
Localisation: En Allemagne, en France ou au Danemark, ça dépend

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Lun Jan 26, 2009 7:02 pm

Je viens de créer un monstre qui un peu comme dans aventure apparaît de manière aléatoire. Le seule problème est qu'au bout, même de longues minutes, monstre n'apparaît pas. Si je donne le code, ce sera pas marrant pour le concours ^^
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Akien le Lun Jan 26, 2009 10:33 pm

Bah comment traduis-tu le facteur aléatoire ?
Avatar de l’utilisateur
Akien
Grand Ancien
 
Messages: 298
Inscription: Mer Mai 09, 2007 1:31 pm
Localisation: En Allemagne, en France ou au Danemark, ça dépend

Re: Langages (inform 6 et Mac OS X)

Messagepar Otto Grimwald le Lun Jan 26, 2009 11:35 pm

Oh, que vois-je ici sur ce fichier ? Un monstre qui apparaît au bout de quelques tours de jeu ! Quelle bonne opportunité pour étudier le code et s'en inspirer :
http://svn.tuxfamily.org/viewvc.cgi/inf ... nf?view=co

Donc concrètement il te faudra rajouter à ton monstre un time_left, time_out qui décrit ce qui se passe quand le compteur arrive à la fin, et on lance le tout avec StartTimer(monstre, 29); ! 29 tours avant l'arrivée du monstre

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

Re: Langages (inform 6 et Mac OS X)

Messagepar Akien le Mar Jan 27, 2009 6:29 pm

Je crois qu'il veut un facteur aléatoire pour l'apparition du monstre.
(J'ai tendance à faire l'anglicisme hasard -> hazard -> danger, enfin bon, je te laisse faire ce que tu veux :p).

Pour cela je ferais par exemple, si le monstre doit apparaître dans un lieu particulier, un code de ce style :

Code: Tout sélectionner
Object  lieu "lieu"
  with  description "Le lieu où vous vous trouvez.",
          each_turn [n;
            n = random(20);
            if (n == 1) {
              move monstre to location;
              "Un gros monstre pas beau surgit de derrière un rocher.";
            }
          ],
  has   light;
Avatar de l’utilisateur
Akien
Grand Ancien
 
Messages: 298
Inscription: Mer Mai 09, 2007 1:31 pm
Localisation: En Allemagne, en France ou au Danemark, ça dépend

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Ven Jan 30, 2009 2:56 pm

Merci pour vos informations, et le codes sources très utiles !

Une dernière question (j'espère ne pas flooder) : pour le moment, le jeu que je réalise en Inform ce limite essentiellement à du déplacement (je n'ai pas encore mis en place toutes les énigmes et les trésors, bien que plusieurs puzzles soient en place, j'ai placé aussi des interactions (des choses dans le décor que l'on peut regarder et des objets que je dirait "inutile" car n'aidant pas à l'histoire mais meublant l'univers) mais pourtant je le trouve trop facile, la carte ne me semble pas difficile à tracer, et me semble aussi facile à traverser. Cela vient probablement du fait que j'en suis le créateur. Je pense que si je rajoute des salles, des objets, complexifie la carte, cela devrait aller. Alors, voilà en fait ma vraie question : Est-ce que parfois vous avez la même impression ?
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Otto Grimwald le Dim Fév 08, 2009 7:35 pm

désolé, on avait pas répondu à cela, et pourtant c'est une question intéressante.

J'ai eu cette impression également en créant des jeux. Très (trop) souvent même. Ce n'est pas évident de réaliser des énigmes correctes, et une histoire cohérente.

Tu pourras trouver des conseils de création ici (en anglais) : How to Write a Great Game : http://inky.org/if/great-games.html
C'est assez court à lire.

Il y a également un chapitre sur le manuel d'inform 6 consacré à la création de jeu : The Craft of Adventure
http://www.inform-fiction.org/manual/html/ch8.html (JB l'avait déjà cité)

Souvent, les jeux amateurs se focalisent sur les lieux, mais pas sur les scènes : le jeu a un espace, mais pas de temps (ou très peu). En effet, de par la conception des systèmes de création, il n'est pas évident (mais pas impossible évidemment) d'avoir des lieux qui changent en fonction des scènes : si a un moment le temps évolue et des événements surviennent qui modifient les lieux, il est nécessaire de recoder presque entièrement ce lieu. Donc soit on fait évoluer le joueur dans des lieux sans possibilité de revenir (en lui faisant découvrir de nouveaux lieux, un peu comme dans ekphrasis), soit on arrive à faire des descriptions différentes en fonction du déroulement du temps.

Je pense également qu'un jeu comme "Varkana" http://www.ifwiki.org/index.php/Varkana , qui a terminé 6ème à l'ifcomp de 2007, a pu séduire justement parce qu'il mélange bien une exploration intéressante des lieux, et une progression constante dans les scènes de l'aventure, si bien que même si on revient dans le même lieu, c'est souvent dans un nouveau contexte, et on sent qu'une histoire est en train de se dérouler.

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

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Dim Fév 08, 2009 8:27 pm

Merci. En effet, parfois j'ai l'impression que le jeu est un peu à l'état d'ébauche. Enfin bon, le travail avance et les énigmes viennent au fur et à mesure. Par contre pour les combats j'ai voulu éviter le problème visible régulièrement : les morts, un peu, imprévus car dépendant du hasard. J'ai finalement décidait des armes un peu partout dans le jeu, forçant ainsi le joueur à explorer la carte, pour qu'en suite le joueur utilise l'arme adéquate au bon moment, débloquant ainsi le passage.
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Lun Fév 09, 2009 9:17 am

Re,

Je voudrais savoir quelque chose. Dans la plupart des FI, on peut dire par exemple "entrer dans la tunnel" ou "entrer par l'ouverture". Est-ce que cela est vraiment utile. Pour ma part, j'ai placé dans mon jeu beaucoup de petites choses du genres des ouvertures, des trous, des fissures, etc... Mais je me demande si cela est gènant pour le joueur de ne pas pouvoir taper "passer par la fissure", par exemple. J'ai considéré que ces éléments appartenaient au décor, et que par conséquent, l'interaction avec eux devait être limité au minimum. Dites-moi s'il faut que je modifie mon code ou pas.
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Stormi le Lun Fév 09, 2009 10:49 am

La réponse est selon la qualité de l'expérience que tu veux donner à tes joueurs.

Si je devais répondre pour mes propres jeux, ainsi que d'après mes goûts de joueur, je dirais : c'est indispensable (et pas compliqué à faire, il suffit de gérer l'action "Enter" dans le before des objets concernés, ou de les coder comme si c'étaient des portes (voir le chapitre sur les portes dans le manuel inform)).

Dans le cadre de la labellisation selon le label de qualité technique Mimesis, c'est effectivement quelque chose qu'on exige : tout ce que le joueur peut vouloir faire (dans la limite du raisonnable) doit être compris et au moins envoyer un message de refus cohérent.

De mon avis personnel, c'est dans ce genre de détails que l'on trouve la différence entre un simple bon jeu, et un *grand* jeu.

Si tu veux faire l'économie de ce genre de détail (ce que je n'encouragerais pas), alors il devient indispensable que les messages d'erreur soients très très clairs pour le joueur.

Si je tape "entrer dans la taverne" et qu'il me dit "vous ne pouvez pas y entrer", mais que si je tape "sud" ça me fait entrer dans la caverne, en tant que joueur comment dois-je le comprendre ? Je suis forcément un peu frustré... Sauf si l'auteur m'a fait bien comprendre dès le début que je ne dois pas attendre que de telles formulations soient comprises. Mais dans ce cas, je risque, toujours en tant que joueur, de considérer le jeu comme un jeu "de seconde zone".
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Mar Fév 10, 2009 6:18 pm

Je crois avoir réussi, enfin je pense, :

Object fissure "fissure"
with name "fissure",
description "Une fissure très étroite.",
door_dir
[; return d_to;
],
describe
[; if ( self has locked ) "^La fissure est bien trop étroite. Tentez votre chance dans la maison.";
],
found_in salle1,
has static door locked female scenery;

Est-ce que cela est bon ? Y a-t-il un problème, ou une incohérence, dans le code ?
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Stormi le Mar Fév 10, 2009 6:20 pm

À première vue cela semble bien. Mais seul le beta-test de ton jeu par un joueur impitoyable permettra d'en être sûr :P
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Mar Fév 10, 2009 7:01 pm

Mon jeu est vraiment une bêta, pas trop d'énigmes, pas trop de descriptions. D'ailleurs je l'ai fait testé par un joueur qui est sur le forum. Alors à la limite je veux bien, mais donner un avis sera difficile vu que le jeu est en constante modification, je ne sais pas trop. En plus il est pour le concours.
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Akien le Mar Fév 10, 2009 8:27 pm

Ce qu'il voulait dire c'est qu'on peut pas te dire ainsi si c'est bon. Il faut faire des tests, et le mieux c'est de les faire toi même pour commencer.
Rien qu'à regarder ton code je vois déjà pas mal de réponses incohérentes que je vais récupérer en jouant :

> déverrouiller la fissure
Veuillez préciser l'objet à utiliser pour déverrouiller cela.

> verrouiller la fissure
C'est déjà verrouillé.

And so on...
Avatar de l’utilisateur
Akien
Grand Ancien
 
Messages: 298
Inscription: Mer Mai 09, 2007 1:31 pm
Localisation: En Allemagne, en France ou au Danemark, ça dépend

Re: Langages (inform 6 et Mac OS X)

Messagepar SIM54 le Mar Fév 10, 2009 8:50 pm

Je retire locked (je viens de faire le test).
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Langages (inform 6 et Mac OS X)

Messagepar Otto Grimwald le Mar Fév 10, 2009 10:40 pm

sinon par rapport à ta question initiale, je pense qu'il est très important de coder correctement un objet si par exemple celui-ci est censé te conduire dans un nouveau lieu, comme disait Stormi : si on tape "entrer dans le trou" et que inform répond "vous ne pouvez entrer ici", et en tapant "bas" ou "nord" cela dit "vous passez par le trou pour arriver ensuite dans la caverne merveilleuse", cela est incohérent.

Si tu rajoutes une fissure dans le décor, et qu'il n'est pas prévu de peut passer dedans dans l'histoire, bien entendu si inform dit son message de base "vous ne pouvez entrer ici" (ou apparenté), là par contre ce n'est pas un problème. Néanmoins, si la réponse peut être un peu plus personnalisé, en indiquant une petite aide au joueur (comme ton "La fissure est bien trop étroite. Tentez votre chance dans la maison"), cela peut être un plus selon ce que l'on veut exprimer dans le jeu.

Pour en revenir aux lieux, le problème (si on peut dire) d'inform, c'est qu'un lieu est un lieu, mais il n'existe pas en dehors de ce status. Si tu codes un lieu "cabane" qui est au nord, ou "out_to" de la prairie, quand tu es dans la prairie, tu ne pourras pas dire automatiquement "entrer dans la cabane" (inform ne connaîtra pas l'objet cabane, seulement le lieu), ce qui ajoute une incohérence avec le texte de l'histoire. Aussi, il faudra créer un objet "cabane" (mais qui n'aura pas le même nom de référence que la cabane-lieu sinon àa coince) généralement non visible, non manipulable, qui captera l'action "entrer" du joueur, et le déplacera dans le lieu cabane.

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

PrécédenteSuivante

Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron