Langages (inform 6 et Mac OS X)

Bonjour,

je voudrais m’y mettre… à l’Inform ou au Z-code. Mais où télécharger les liens, les tutorials, etc… ?

Merci d’avance

PS: Ils sont gratuits ou pas ?

Oui, c’est gratuit.

Il y a des articles sur le site internet ainsi qu’un kit de démarrage : ifiction.free.fr/index.php?id=articles

Et bien sûr nous sommes disponibles pour répondre aux questions !

J’ai finalement pris Livrant, mais existe-il un tutorial ?

non, il n’y a pas grand chose à ce niveau, à part les quelques exemples sur notre site (on dirait que le site officiel n’est plus disponible).
C’est un projet qui était intéressant, mais vu qu’il n’est plus en développement, cela me semble moins pertinent de l’utiliser. C’est dommage car il y avait un potentiel.

Pour Inform 6, il y a beaucoup d’excellents tutoriels.

Déjà en anglais : inform-fiction.org/manual/about_ibg.html

  • le manuel complet pour référence.

Ensuite, on a réalisé ce petit exemple simple, amplement commenté, qui présente les bases de la programmation en Inform 6 :

ifiction.free.fr/fichiers/exemple.html

Il existe également Inform 7, mais vu que tu es plus intéressé par le langage C, Inform 6 te semblera plus proche à ce niveau.

Enfin, juste pour préciser, tu parles de zcode et inform. Inform c’est le langage, tandis que zcode c’est le résultat de la compilation de code en inform.

Merci.

Par contre je ne trouve aucun lien pour télécharger Inform6.

Tu as tout cela ici : inform-fiction.org/software/current.html

Le compilateur pour mac os x :
ifarchive.plover.net/if-archive/ … osx.tar.gz

les indispensables bibliothèques :
ifarchive.plover.net/if-archive/ … ary611.zip

Et si tu préfères compiler le compilateur toi-même, il y a les sources, en C !
ifarchive.plover.net/if-archive/ … 1.1.tar.gz

(je crois que les sources sont quand même incluses dans le kit)

Bonjour,

Pendant que je continue en C, j’ai un peu commencé à me mettre à l’Inform. Mais voilà j’ai des questions :

  • Comment créer un personnage ( un monstre par exemple ) qui pourrait débarquer à l’improviste pour bloquer le joueur et ou l’engager dans un combat ?
  • Comment faites-vous pour réaliser un « plan » je veux dire que si le jeu se déroule dans une maison il y a une cuisine, des chambres, un salon, etc… les salles s’assemblent de manière logique ( je vois mal une cuisine et une chambre à coté ) ?
  • Comment réalise-t-on un objet ? ( une lampe, une épée, etc… )
  • Comment fait-on pour réaliser un objet comme une porte ou une trappe ?

Voilà ! Merci d’avance pour vos réponses et le temps que vous prendrait pour y répondre !

L’Inform est un langage où tu as moins de cambouis sur les mains à la fin du jeu que pour le C !

La base, ce sont les objets. De façon paradoxale, tout est objet dans le monde que tu crées, vrai objet, personnage, monstre, porte, salle !

Je te donne des exemples d’objets, tu comprendras mieux comment ça se structure :

Object salledutresor "Salle du trésor"
    with description "Vous êtes dans la salle du trésor !",
         s_to donjon1,
has ;

Object monstre "monstre" salledutresor
     with name 'monstre' 'bete' 'feroce',
          description "C'est un gros monstre hideux qui veut vous attaquer !",
has animate ;

Object trappe "trappe" salledutresor
    with name 'trappe' 'cachee',
        description "C'est une trappe secrète",
has scenery ;

Que font ces lignes de code ? C’est simple : on a un objet « salledutresor », qui est la salle du trésor, qui est une salle dans laquelle le joueur peut rentrer (par exemple on le parachute là lors de l’initialisation), et si il va au sud, il ira dans la salle « donjon1 ». On a un objet « trappe », qui est positionné dans « salledutresor » (dans l’ordre pour la première ligne : "Object nomdelobjetdansleprogramme « nomdelobjettelqu’ilapparaitradanslejeu » lieudelobjet) ; le joueur peut interagir avec en s’y référant comme « trappe » ou « trappe cachée » ou « cachée » ; s’il tape « regarder la trappe » le jeu renvoiera « C’est une trappe secrète » ; enfin le scenery est un attribut qui en gros empêche le joueur de prendre la trappe. Enfin il y a un monstre, dans la salledutresor aussi, qui est un « monstre » ou un « monstre feroce » ou « bete feroce » (même « monstre bete ») pour le joueur ; l’attribut animate permet quant à lui d’avoir pour les réponses automatiques du jeu des réponses qui cadreront mieux avec quelque chose de vivant (au lieu de « Vous ne pouvez pas parler à ça. », le jeu renverra « Il ne veut pas vous parler »)

Voilà, en gros c’est ça ! Si tu as des questions tu peux toujours les poser, mais on ne peut pas non plus tout t’apprendre et il va falloir que tu trouves aussi un peu par toi-même ! Les astuces (j’ai commencé comme ça) c’est de regarder des codes sources déjà existants (par exemple ceux des jeux de JB, ou des miens - c’est pour ça que je les met en ligne !), et si tu sais lire l’anglais, il y a l’Inform Beginner’s Guide (à cette adresse : http://www.inform-fiction.org/manual/download_ibg.html) qui permet de connaître pas mal de trucs sur l’Inform !

Jolie cette page, avec quoi tu l’as faite ?

Pour la lampe, le seul truc spécial à noter c’est qu’elle à besoin d’un attribut spécial :

object lampe "lampe" with name "lampe" "torche", !sur cette ligne tu places les synonymes de ton objet description "Une lampe torche électrique. Elle est allumée.", !La description de l'objet has female light; ! l'attribut light spécifie que l'objet emet de la lumière. Si tu te ballades dans un lieu sombre avec elle, tu pourras voir la description du lieu.

Epée, rien de spécial :

object epee "epee" with name "epee", description "Une épée avec une garde en or.", has female;

Pour les portes et les trappes, c’est un peu plus compliqué :

Supposons que tu as une cuisine au nord d’un salon. Dans la cuisine , tu as une propriété s_to Salon et dans l’objet salon une prop n_to Cuisine. Pour ajouter une porte tu modifies les deux propriétés en les pointant vers l’objet porte, genre s_to Porte.

L’objet porte se présente comme ceci (d’après jlpo.free.fr/exemples.php#3)

Object -> porte_banale "porte banale" with description "C'est une porte, voilà tout.", name 'porte' 'banale', when_closed "La porte est fermée.", when_open "La porte est ouverte.", door_to [; if (self in piece1) return piece2; return piece1; ], door_dir [; if (self in piece1) return direction1_to; return direction2_to; ], with_key cle, found_in piece1 piece2, has female static door openable lockable locked;

Note : les attributs permettent de faire en sorte que la porte soit fermée quand le joueur arrive, ou bien encore de verrouiller la porte à l’aide d’une clé…

Pour finir, le site de JL possède pas mal d’exemples : jlpo.free.fr/

Voilà voilà :laughing:

J’ai déjà codé un partie de ma carte dont j’avais eu l’idée et je dois avouer que l’Inform… ça ma plait ! Fini les 2000 lignes de codes avec le C pour pas grand chose, ou encore l’obligation de coder chaque action, enfin la liberté ! ( Là j’exagère un peu bcp ^^ ).

Grand merci ! Franchement au début je douté maintenant je suis totalement convaincu !

Par contre on fait comment pour compiler un programme ( en Inform ) sur mac ?

Bonne question… as-tu le compilateur mac ? (ifarchive.plover.net/if-archive/ … osx.tar.gz)

Pour la compilation, pour moi ce n’est pas plus compliqué que de compiler en C. Je ne sais pas si les macs possèdent un système de ligne de commande… En tout cas, sous windows et linux, c’est la méthode utilisée. Sur la ligne de commande, il est de plus nécessaire d’indiquer le répertoire contenant les bibliothèques…

Sim54, pour compiler sous mac os x, je pense qu’il te faut juste récupérer le kit dont il est question plus haut, de te mettre dans le dossier principal avec les sources du jeu, de modifier le fichier exemple.inf, et de taper cette commande :

inform +Language_name=French exemple +include_path=.\,.\lib -v5 -~S exemple.z5

où « inform » sera le nom (à adapter peut-être) de la commande d’inform pour Mac que tu auras installé plus haut ou compilé toi-même. Les bibliothèques nécessaires pour compiler le jeu se trouvent dans les sous dossiers « lib » etc, aussi le chemin indiqué par +include_path sera suffisant.

Le mieux sera peut-être d’effacer le makefile actuel et de renommer le makefile.macppc inclus dans le kit en makefile, et de l’adapter (nom du programme inform etc). Désolé, il y a pas mal de choses à faire avant que cela soit opérationnel, mais une fois en place cela sera plus facile bien sûr.

Par contre je viens de voir que j’avais placé un binaire pour mac ppc dans le dossier mac du kit inform, aussi si une fois les fichiers de ce kit extraits, tu tapes :

(la première fois)

rm makefile
mv makefile.macppc makefile
make z5

ensuite :

make z5

cela devrait suffire pour compiler le jeu en zcode (lisible par spatterlight ou zoom sous mac os x)

Pour la question de yoruk concernant la coloration syntaxique, je crois que j’avais utilisé un site internet qui avait été présenté sur RAIF pour nettoyer et afficher le code inform, mais je n’ai plus l’adresse ici.

La voix de la raison a parlé ! :wink:

Je galère un peu, j’ai bien le exemple.inf et l’exécutable en exemple.z5. J’ai donc modifié le fichier exemple.inf pour commencer mon jeu mais j’arrive pas à compiler. J’ai donc bien le compilateur inform630 ainsi que makefile mais franchement je n’arrive pas à comprendre la suite. Je rentre dans le mode console je vais dans le répértoire bureau puis dans le repértoire inform6_kit_debutant ensuite je tape le reste il me répond quelque chose et puis rien pas le moindre exécutable. C’est peut etre moi, mais je ne trouve pas ça toujours très clair…

Essaye de nous poster le résultat de tes différentes commandes afin que l’on puisse cibler le problème…

Bon voilà les étapes que je suis :

  1. Je télécharger le kit
  2. Je modifie le fichier exemple.inf ( mais je rajoute quoi dans le code, notamment pour le compilateur ? )
  3. Je tape dans la console rm makefile puis mv makefile.macppc makefile puis make z5
    4; Il me répond un truc assez bizzare qui se termine par « exemple -e ».

Le fichier produit en Z-code reste le même. Voilà où j’en suis

Hmmm… As-tu tenté de compiler sans modifier le fichier d’exemple ? Si tu pouvais poster ce que te réponds le compilateur…

(Détail pour les autres : les nouvelles bibliothèques fonctionnent-elles correctement avec le fichier d’exemple ? Si je me souviens bien, je crois me souvenir avoir eu des problèmes pour recompiler Aventure… :confused: )

#chmod u+x outils_macosx/inform630_macosxPPC &&
./outils_macosx/inform630_macosxPPC -v5
+include_path=./,./lib
+Language_name=French
‹ $$MAX_VERBS=180 › ‹ $$MAX_ACTIONS=250 › ‹ $$MAX_DICT_ENTRIES=1500 ›
exemple -e

Voilà la réponse du compilateur.

cela me semble pas trop mal parti. Si tu effaces le fichier exemple.z5, et qu’après avoir tapé « make z5 » tu obtiens bien un nouveau fichier exemple.z5, c’est que cela a fonctionné. Pour te rendre compte si tes modifications ont fonctionnées, tu peux changer une des descriptionns (par exemple celle de la salle1) et voir si elle apparait bien dans le fichier z5.

Quoi qu’il en soit le compilateur inform ne pourra pas généré d’exécutable, les fichiers z5, comme pour un programme java, ne sont pas exécutables mais nécessitent un interpréteur.

attention, l’encodage de ton éditeur de texte doit être réglé sur iso8859, pas sur utf8.