Inform

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

Modérateurs: Stormi, Otto Grimwald

Inform

Messagepar SIM54 le Sam Jan 05, 2008 9:23 am

Depuis que je suis arrivé sur le forum, j'ai réaliser pas mal de jeu, mais la plupart de ne marche pas sous windows, ce qui est embêtant, vous m'avez souvent incitez à me mettre à l'Inform ou à un langage de ce genre donc j'aimerais me mettre à l'Inform. Et si après avoir appris l'Inform je reprogramais quelque un des mes anciens jeux en Inform, quelles serait les choses à revoir ?
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Inform

Messagepar Otto Grimwald le Sam Jan 05, 2008 10:28 am

Pour débuter avec Inform tu peux déjà télécharger cela :
http://ifiction.free.fr/index.php?id=kit
J'ai inclus tout ce qu'il fallait sous mac os x, si tu as un powerpc. Sinon si tu as un intel il te faudra recompiler les sources d'inform qui sont également incluses dans cette archive.

Un fois que c'est décompressé, renomme makefile en makefile.old (ou retire ce fichier), et renomme makefile.macppc en makefile. Ensuite en tapant dans une console "make z5", cela devrait permettre de compiler la première aventure, que tu peux modifier en éditant exemple.inf
Toutes les autres instructions sont sur la page http://ifiction.free.fr/index.php?id=kit et sur le reste du site de toute façon.

Attention, je ne l'ai pas encore précisé dans ces pages, le fichier source exemple.inf doit être encodé en iso8859-15 ou iso8859-1, car en unicode utf8 (encodage de base sous mac os x) cela ne compilera pas. Si tu veux utiliser textedit (de base sous mac os x) pour ouvrir le fichier exemple.inf, il faut préciser l'encodage windows latin1, sinon dans les autres éditeurs de base on doit pouvoir modifier l'encodage ensuite. (subethaedit permet la coloration syntaxique inform, mais au pire des cas si tu choisis C ou C++, cela colore la plupart des trucs)

Dans le cas improbable où la commande "make" ne serait pas reconnue, c'est qu'il te manque des éléments du kit de développement Apple (mais ça m'étonnerais si tu codes déjà en c et c++ avec ton ordinateur), au pire des cas si on ne veut pas les installer, il suffit de coller dans la console ce texte :
Code: Tout sélectionner
./outils_macosx/inform630_macosxPPC  -v5 \
   +include_path=./,./lib \
   +Language_name=French \
   '$$MAX_VERBS=180'  '$$MAX_ACTIONS=250' '$$MAX_DICT_ENTRIES=1500' \
   exemple -e


Pour apprendre inform 6, tu peux déjà étudier les exemples ici :
http://ifiction.free.fr/fichiers/exemple.html

Quand aux jeux, si tu veux tu peux essayer d'améliorer ton jeu spoutnik (en rajoutant des énigmes et des puzzles), le code source est là :
http://ifiction.free.fr/jeux/spoutnik.inf


n'hésite pas à demander si tu as d'autres questions.

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

Re: Inform

Messagepar JL le Dim Jan 06, 2008 3:23 pm

Inform n'est vraiment pratique que pour les fictions interactives, pas pour le morpion ou les jeux de simulation stratégique. Ceci dit cela peut t'aider à comprendre ce qu'est une fiction interactive : si ça se programme facilement en Inform, alors c'est une fiction interactive.

Pour tout ce qui n'est pas une fiction interactive, je te conseille d'essayer Python qui me semble adapté aux jeux que tu as publiés jusqu'à présent. Par exemple ce que tu écrirais en C++ de cette manière :
Code: Tout sélectionner
  if ( strcmp(word,"prendre clé")==0 || strcmp(word,"prendre la clé")==0)
       {
           if ( E1 == 1 )
          {
              cout << "Vous prenez la clé \n";
             E1 += 2;
          }
          else
          {
               cout << "Il n'y a pas de clé \n";
          }
       }

... s'écrirait en Python de cette manière :
Code: Tout sélectionner
if word == "prendre clé" or word == "prendre la clé":
    if E1 == 1:
        print "Vous prenez la clé"
        E1 += 2
    else:
        print "Il n'y a pas de clé"

... ou encore :
Code: Tout sélectionner
if word in ["prendre clé", "prendre la clé"]:
    if E1 == 1:
        print "Vous prenez la clé"
        E1 += 2
    else:
        print "Il n'y a pas de clé"

Principal inconvénient de Python : une fois que tu connais ce langage tu n'as pratiquement plus besoin d'en connaître d'autre, car tu peux très rapidement écrire tous tes programmes avec (sauf les très rares applications qui requièrent vraiment de la vitesse, mais Python s'interface avec le langage C de toute manière, et de nombreux jeux d'action peuvent être réalisés en Python ; pour les fictions interactives (pas pour le morpion ou les jeux de stratégie), Inform reste un bon choix cependant).
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Re: Inform

Messagepar StephaneF le Lun Jan 07, 2008 11:59 am

Excusez mes questions naïves mais alors dans l'absolu, c'est plutôt Python ou Inform, le plus simple pour un débutant complet ? :)
Avatar de l’utilisateur
StephaneF
Grand Ancien
 
Messages: 545
Inscription: Jeu Déc 27, 2007 3:53 pm
Localisation: Moselle

Re: Inform

Messagepar JL le Lun Jan 07, 2008 1:12 pm

Azathoth a écrit:Excusez mes questions naïves mais alors dans l'absolu, c'est plutôt Python ou Inform, le plus simple pour un débutant complet ? :)

Dans l'absolu, Python est le langage le plus simple, surtout pour un débutant complet.

Mais je suppose que la question ne porte plus sur ce qui convient à SIM54 en particulier, mais à un débutant complet en écriture de fictions interactives et souhaitant écrire une fiction interactive.

Dans ce cas, Inform (6, ou peut-être 7) est le plus conseillé des deux. A ce jour, Python est très rarement utilisé pour de la fiction interactive.

Mais il faut tenir compte de l'objectif.
Si le but est de se concentrer sur l'écriture d'une histoire, sans trop se préoccuper de technique, Inform ou Adrift (ou Livrant ; bref, un système spécialisé) me semblent conseillés car ce sont des solutions éprouvées, et faciles à publier auprès des joueurs habituels.
Si le but est de comprendre le fonctionnement interne d'un jeu d'aventure, sans avoir à gérer la complexité un peu artificielle d'un système comme Inform, le plus simple est d'écrire ce jeu en Python (ou Java, ou même C ou C++ ; bref, votre langage préféré habituel). Car un jeu d'aventure n'est pas si complexe à programmer que cela. Le résultat en Python sera un peu plus difficile à publier, mais ce n'est pas le principal objectif dans ce cas.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Re: Inform

Messagepar Adrien le Lun Jan 07, 2008 3:01 pm

Est-ce qu'un jeu python ne serait pas au contraire plus simple à publier si l'on passe par py2exe pour en faire un exécutable classique??
C'est une vraie question, je ne m'en suis jamais servi.
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: Inform

Messagepar Otto Grimwald le Lun Jan 07, 2008 7:36 pm

pourquoi cela ? Pour "lieux communs" on a fait un exécutable qui permet de lancer directement l'interpréteur, n'est-ce pas suffisant (cela s'appelle Lieux Communs.exe, avec une belle icône, et cela démarre le jeu juste en cliquant dessus) ? Avec py2exe, on pourrait arriver au même point, cela ne serait ni mieux, ni moins bien dans le cas d'un jeu java.

Avec zmpp on a un accès direct au jeu depuis un navigateur internet, avec zag on peut lancer également directement le jeu en java, bref, je ne vois pas ce qui manque à ce niveau.

Ce que j'apprécie justement beaucoup avec le zcode (et glulx), c'est que c'est indépendant de la plateforme utilisée : le jeu fonctionne pareil sous macintosh, windows, téléphone portable, pocket pc, linux, freebsd, beOS, atari, amiga, java, nintendo ds :) ...

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

Re: Inform

Messagepar Adrien le Mar Jan 08, 2008 10:42 am

Je suis d'accord qu'on n'y gagnerait presque rien, mais je pose la question pour mieux comprendre ce que veux dire JL dans sa dernière phrase:
"Le résultat en Python sera un peu plus difficile à publier, mais ce n'est pas le principal objectif dans ce cas."
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: Inform

Messagepar JL le Mar Jan 08, 2008 5:19 pm

Je suis d'accord qu'on n'y gagnerait presque rien, mais je pose la question pour mieux comprendre ce que veux dire JL dans sa dernière phrase:
"Le résultat en Python sera un peu plus difficile à publier, mais ce n'est pas le principal objectif dans ce cas."

Je voulais dire que le résultat en Python sera un peu plus difficile à publier auprès des joueurs habitués aux fictions interactives. Même si beaucoup d'habitués savent installer Python ou Java sur leur machine, ou même compiler un fichier en C (pas simple sous Windows où aucun compilateur par défaut n'est installé), lire un fichier z5 ne leur demandera aucun effort.
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm

Re: Inform

Messagepar Iria le Mar Fév 12, 2008 9:35 am

JL a écrit:
Code: Tout sélectionner
  if ( strcmp(word,"prendre clé")==0 || strcmp(word,"prendre la clé")==0)
       {
           if ( E1 == 1 )
          {
              cout << "Vous prenez la clé \n";
             E1 += 2;
          }
          else
          {
               cout << "Il n'y a pas de clé \n";
          }
       }



Ton code est un affreux mélange de C et de C++. Le C++ supporte tout à fait la comparaison par opérateur : if ( word == "prendre clé" ) comme le python.

Ceci dit, pour aller dans le sens du python, Python et LUA sont unanimement reconnu et utilisé dans les jeux vidéos pour la partie de l'implémentation du scénario.

Exemple : Dans Ultima Online, la partie règle de jeu et quête est codé en python. Dans civilisation IV, les règles du jeu sont en Python, ...

Je le conseillerai également pour une IF nécéssitant des besoins autres que ceux fournix par Inform, mais utilisé comme langage de script du jeu, au dessus d'un moteur en C/C++.
Iria
Sorcier du culte
 
Messages: 12
Inscription: Mer Fév 06, 2008 4:08 pm

Re: Inform

Messagepar JL le Sam Fév 16, 2008 1:47 am

Effectivement, cela rend Python et C++ plus proches dans cet exemple.
Le code provient de ce sujet : viewtopic.php?f=2&t=550
A propos du moteur en C++, dans le cas d'une IF je me demande si cela en vaudrait la peine, en tout cas pour du texte, étant donné que les performances importent peu, alors que cela demanderait beaucoup plus de travail.

[Edit: "Game scripting in Python": http://www.gamasutra.com/features/20020 ... on_pfv.htm ]
JL
Grand Ancien
 
Messages: 287
Inscription: Mer Aoû 25, 2004 9:13 pm


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron