Commencement d'un Projet Inform 6

Bonjour a tous,

J’ai commencé il y a quelques temps un petit projet personnel, son but étant d’ameliorer les possibilités d’Inform 6. Inform 6 est un bon langage de programmation pour créer des romans interactifs, mais, malheureusement, il est très mal conçu pour créer des mondes virtuels textuel avancé doté d’une vie propre. La liste non exhaustive des problème de ce dernier est :

  • Limitation des déplacements des joueurs selon des vagues notions (frustrante) d’Est/Ouest/Nord/Sud.
  • Impossibilité de réaliser une I.A avancé pour les NPC, de les adjoindres un emploi du temps, difficulté d’introduire un système de discussion avec eux.
  • Limitation des choix physiques du joueur selon ce que l’auteur a pensé ou non.

A ces problèmes sommes toute triviaux, Inform 6 possède aussi d’autre difonctions, notamment au niveau de sa gestion des Objets (informatique). La notion de classe est assez mal devellopé, et la plupart des fonctions des langages objets récents (ou moins récents) ne sont pas implémenté. Ceci rend difficile la factorisation du code et incidemment, limite quelque peu les possibilités de l’auteur.

C’est en ayant ces difficultés d’Inform 6 en esprit que j’ai décidé d’écrire un petite extension pour ce dernier. Cette extension est actuellement divisé en deux projets distinct en code :

  • La constitution d’une database d’objets et d’intéractions pour suppléer a l’auteur. Ainsi, une fenêtre auquel on adjoint le mot-clé « destructible » peut être détruit en morceau, et on peut récuperer un de ces morceaux pour en faire une arme, un miroir, ou quoi que ce soit d’autre. Une barre de fer est en métal fer, peut-être utilisé comme arme, peut être fondus si on a les objets necessaires, être tordus en forme de ressort, etc. Cette database pourra être réutilisé par n’importe-qui, même si elle est d’abord conçu pour moi.
  • L’implémentation dans Inform d’un système de coordonnée accessoire (non obligatoire) (x;y;z). Ces coordonnée pourront avoir une origine soit fixe, généralement là où le joueur commence la partie, soit mouvante, généralement l’entrée de la salle, et être facilement interchangé d’un système a l’autre. Ce système permettra (et permet déjà :wink: ) de s’affranchir du système Nord/Sud/Est/Ouest par des commandes plus humaines : Aller a droite, a gauche, devant la porte, derrière la table, etc, et de préciser facilement où se trouve les objets par rapport au joueur par un simple « Regarder autour de soit ». De plus, ils permettent quantité d’interaction nouvelle et interessante.

Ces deux projets sont pour l’instant au tout début du code, quoique le système de coordonné est utilisable, et on pour buts finaux de permettre la constitution d’un sorte de M.U.D solo textuel. Ce n’est pas quelque chose de sérieux (pas encore), et je n’ai nul intention de pêter plus haut que mon cul, mais juste de m’amuser un peu en faisant quelque chose d’interessant pour la communauté :slight_smile: .

Merci,
ThesmallgamerS

Ps : Ce qui serait aussi interessant a ajouter, c’est un système d’emplois du temps pour les NPC. Malheureusement, cette partie d’Inform m’est par trop inconnus pour faire quoi que ce soit.

très intéressant !

J’espère que tu arriveras au bout de ce projet. Veux-tu un accès au svn de informfr.tuxfamily.org/ pour mettre en ligne tes fichiers et éventuellement inaugurer un travail collaboratif ?

Je pense que tu as déjà vu ce qui existe ici, mais je reposte le lien au cas où :
inform-fiction.org/extensions/index.html

sinon il existe également une bibliothèque de remplacement pour celles d’Inform, cela gère différentes choses d’une autre manière que celles livrées avec Inform :

homepage.ntlworld.com/elvwood/In … mmary.html

même si cela ne te servira sans doute pas tel quel, cela peut te donner des idées au niveau de ce qu’il est possible de modifier / hacker dans inform.

J’ai un peu survolé la bibliothéque platypus, et effectivement, même si certaines idées sont bonne (notamment pour les NPC), il n’y a rien d’utilisable tout de suite. Mon système de coordonnée est bien moins lowlevel que son système dirs(), et change beaucoup plus de chose que le sien. Avec le mien, il est possible de savoir si un objet est prêt d’un autre, de poser celui-ci prêt d’un autre, etc… Enfin bref :wink:

Pas mal d’extensions icitte, je connaissais déjà, mais toute en Anglais. Cela pourra toujours me servir d’inspiration.

Plus tard, quand le projet sera présentable. Pour l’instant, les gros hacks doivent être concaténer dans la même extension.

Merci,

Projet prometteur!!
Tiens nous au courant de ton avancement, ça ne peut qu’avoir du bon!

on a eu une discussion à ce sujet ici :
linuxfr.org/comments/871745.html#871745

ainsi que sur la tribune de linuxfr en direct :slight_smile:

Ah oui, ThesmallgamerS avait indiqué venir de là-bas.
Est-ce que par hasard il s’agirait de la personne qui a participé au 1er speedIF francophone? :slight_smile:

non, c’était encore quelqu’un d’autre :slight_smile:

Eh bien, bienvenue, ThesmallgamerS ! :smiley:

Bonne chance pour ton projet ! En tout cas, voilà un nouveau venu ambitieux. :wink:

C’est effectivement un super projet ! L’idée d’un MUD qui se jouerait tout seul est pas mal ! :slight_smile:

Mais d’expérience, extraordinairement difficile a créer :". Je tente de modifier en profondeur Inform pour voir si cela est possible de le coder dans ce langage. S’il s’avère que cela ne l’est pas - on fera ce qu’on pourra en C.

Je pense que c’est faisable avec inform, à voir si c’est facile. Qu’en pensent les pros d’inform ?

Intéressant ! cela m’a mis la puce à l’oreille sur l’utilisation des coordonnées qui me semblaient a priori plutôt incompatibles avec des descriptions textuelles (notamment pour arriver à quelque chose d’élégant).

Partir d’Inform pour cela est un gros défi a priori, mais qui sait… Sinon, cela me fait penser à Python Universe Builder qui n’est pas forcément très abouti mais semble conçu dès le départ comme un MUD éventuellement solo, avec toute la souplesse de Python pour l’expérimentateur intrépide.

– Jean-Luc

PS Bienvenue à toi !
[/quote]

Merci :wink:

En fait, beaucoup de MUD ont un principe de Moteur/Donnée séparé. Le moteur compilé s’occupe des interactions et est codé en C/C++/python/Cobol/Assembleur Vax, tandis que les données, soit les pièces, les objets, les persos sont stockés sous formes de texte/XML. C’est cette architutecture qui permet le plus de possibilité et même de modifier on-demand l’univers.

Ce n’est pas l’architecture d’Inform.

sur les quelques moteurs de muds que j’avais testés (circlemud, pennmush et autres je crois), il me semblait que la plupart de la création de l’univers se faisait en se logguant dans le monde en root ou en « magicien » et en créant les objets avec des commandes tordues. Je n’ai pas trop aimé le système, même si à terme cela peut être intéressant pour faire de petits ajustements, rajouter des rideaux dans une pièce etc :slight_smile:
Mais si vous en connaissez d’autres avec un système plus rationnel, je suis preneur.

J’ai testé aussi Circlemud, et j’ai créé des zones, de l’équipement et des mobs rien qu’avec des fichiers textes.
Il y a une doc prévue à cet effet qui reprend toute la syntaxe, qui est assez simple.