Le Traité de Babel pour les jeux francophones

Le Treaty of Babel est un système d’indexation de données relatives aux jeux textuels. Le site : babel.ifarchive.org/
Ce format, similaire à ce que l’on a pour l’ISBN des livres, est dans le standard XML. Il est commun pour tous les systèmes comme Inform, Tads, Hugo, Alan etc.

Je viens de commencer d’indexer des jeux francophones modernes selon ce modèle. Bon, je n’en ai fait que 3 pour le moment, mais j’ai passé du temps à trouver comment réutiliser cela pour nous. Déjà, cela pourra peut-être servir pour le logiciel développé par Yoruk, car tous les champs sont bien balisés. Ensuite, cela pourra fournir des éléments additionnels pour notre site. À terme, cela pourrait peut-être permettre également d’avoir une base commune pour tous les sites de référencement d’information : ifdb, ifwiki etc.
Pour le moment, sur notre site cela fournit des éléments redondants avec ce que l’on a déjà, malgré tout, on va voir comment améliorer cela.

Exemple pratique :

ifiction.free.fr/index.php?id=jeu&j=001 autant procéder par ordre)

Le fichier contenant les données « babel » pour Filaments se trouve ici :

ifiction.free.fr/jeux/filaments/filaments.xml

ce qui donne :

<?xml version="1.0" encoding="UTF-8"?> <ifindex version="1.0" xmlns="http://babel.ifarchive.org/protocol/iFiction/"> <story> <identification> <ifid>ZCODE-1-030301-4389</ifid> <format>zcode</format> <bafn>2044</bafn> </identification> <bibliographic> <title>Filaments</title> <author>JB</author> <headline>Les aventures de Margot à Paris et ailleurs...</headline> <genre>Adventure</genre> <firstpublished>2003</firstpublished> <description>Allez Margot, va falloir se lever. Je crois que ce coup-ci tu vas pas y couper : mmm y a de la lumière, du bruit en bas, je crois bien que c'est parti pour l'avant dernier jour d'école de l'année.<br/><br/>(Vous vous levez rapidement et vous enfilez le jean de la veille).<br/><br/>Chambre de Margot<br/>Pas vraiment la chambre de petite fille modèle. C'est une petite pièce carrée dont le parquet est recouvert de vêtements sales. D'autres vetements semblent vouloir s'échapper d'une penderie en chaos. Un rai de lumière s'échappant de la latte cassée du store vient illuminer l'Autel : une chaine hi-fi surmontée d'une montagne de CDs. Sur les murs, une mosaique de posters recouvrent la tapisserie en faux crépis blanc.<br/><br/>Ouaip, pas vraiment une chambre de petite fille, bien qu'aucun gars n'y ait jamais mis les pieds.<br/><br/>Vous pouvez voir votre sac (qui est fermé), une chaine hi-fi et des vêtements.</description> <language>fr</language> <group>Inform</group> </bibliographic> </story> </ifindex>

L’IFID on le trouve en bidouillant dans le binaire du jeu, et à partir de la date de sortie, de la version (release) etc.
Pour les jeux en Inform 7, le fichier xml est automatiquement généré par Inform. On peut espérer qu’ils sortent également des outils pour Inform 6, peut-être même que c’est déjà plus ou moins opérationnel : babel.ifarchive.org/program.html

(edit : en fait il y a ce programme qui permet de récupérer l’IFID et d’autres meta-informations : babel.ifarchive.org/downloads/babel_win32.zip)

Mais il manque encore des choses qui me semblent utiles et qui ne sont pas dans leur standard, comme :

  • référence ifwiki et ifdb (pourquoi faire baf’s guide et pas les autres ?)
  • traducteur, si nécessaire
  • permettre des mots clés (tags) pour décrire ce qu’il y a dans le jeu : one-room game, foret, ville etc
  • difficulté (relative) du jeu
  • temps de jeu (jeu court, moyen ou long), avec par exemple jeu court = 2-15 minutes, jeu moyen 15min- 1 heure, jeu long = + qu’une heure.
    Ces 2 derniers critères peuvent sembler anecdotiques et subjectifs, mais dans babel ils ont quand même inclus le ifwiki.org/index.php/Cruelty_scale qui est également plutôt subjectif.

Pour moi, il est techniquement possible de programmer un petit logiciel qui lirait le fichier XML proposé et qui génererait du code que je collerais dans l’application « lanceur » avant de tout compiler. Après pour les champs supplémentaires, on peut le rajouter à la main… pour une dizaine de jeux c’est encore réalisable… :slight_smile:

Je suis en train de voir ce que l’on peut faire avec babel…

En fait je vais proposer bientôt sur RAIF les divers aménagements pour qu’ils les intègrent officiellement à Babel, ou au moins certains, ou au moins qu’ils proposent une balise supplémentaire en dehors de et permettant de rajouter des champs selon les besoins, sans que cela casse leur balisage actuel. Sinon, on les rajoutera quand même.

N’est-il pas possible pour ton logiciel de lire par exemple un ensemble de sous-dossiers, et de récupérer directement les informations des fichiers xml, permettant ainsi de rajouter des jeux sans tout recompiler, sachant le fichier xml aura toujours le même nom que le dossier dans lequel il se trouve ?

Lire un ensemble de sous-dossiers : euhhh pas facile, à moins de lui fournir la liste des répertoires, celle-ci pouvant être créee avec une commande DOS genre DIR

Lire les infos d’un fichier XML : faisable, mais ça prendra du temps.

Actuellement, le programme est composé de :

-une feuille principale qui contient le code général (boutons, radios, …) ,

-un module qui contient les infos sur les jeux : (exemple)

[code]Case 5
'Jeu 5
Nom = « Filaments »
Ifid = « ZCODE-1-030301-4389 »
DateJeu = « 2003 »
Auteur = « JB »
Description = « Allez Margot, va falloir se lever. Je crois que ce coup-ci tu vas pas y couper : mmm y a de la lumière, du bruit en bas, je crois bien que c’est parti pour l’avant dernier jour d’école de l’année.

(Vous vous levez rapidement et vous enfilez le jean de la veille).

Chambre de Margot
Pas vraiment la chambre de petite fille modèle. C’est une petite pièce carrée dont le parquet est recouvert de vêtements sales. D’autres vetements semblent vouloir s’échapper d’une penderie en chaos. Un rai de lumière s’échappant de la latte cassée du store vient illuminer l’Autel : une chaine hi-fi surmontée d’une montagne de CDs. Sur les murs, une mosaique de posters recouvrent la tapisserie en faux crépis blanc.

Ouaip, pas vraiment une chambre de petite fille, bien qu’aucun gars n’y ait jamais mis les pieds.

Vous pouvez voir votre sac (qui est fermé), une chaine hi-fi et des vêtements. »
Fichier = « Filaments.z8 »
Licence = « libre »
Language = « zcode »
Langue = « français »
Genre = « aventure »
Temps = « long »

[/code]

Et ce module peut être réalisé automatiquement par une sorte de « bot » qui lirait une succession de fichiers XML et en extrairait les infos…

On recompile le programme principal et le tour est joué… :slight_smile:

EDIT : Nouvelle version disponible sur le service de téléchargement !

T’aurais d’autres exemples de fichiers XML ? Avec babel j’ai juste réussi à extraire l’IFID… Et tu as réussi à faire tourner l’application ?

j’ai commencé à mettre d’autres fichiers xml ici : ifiction.free.fr/jeux/

Ils se trouvent dans les sous-dossiers (mlpdtode, lavoir etc), c’est vraiment en travaux pour le moment (tous les fichiers ne sont pas encore là, et lorsque j’aurais tout fini, je purgerai le dossier pour n’avoir que des sous-dossiers bien classés et non plus des fichiers en vracs dedans)

Je pense que le logiciel babel sur le site ne peut extraire que l’ifid et pas, et pour les métadonnées elles ne seront visibles que si elles sont entrées dans le jeu. Pourtant pour certains jeux, babel -meta jeu.z5, et cela ne m’a rien donné. Un bug ? Normalement cela s’utilise depuis la ligne de commande dos.

Sinon cela serait bien que ton prg puisse afficher l’image associée aux jeux :slight_smile:

OK merci pour les XMLs. J’ai commencé à programmer un bot qui les lit et qui crée automatiquement le module du lançeur à partir des fichiers XMLs.

L’affichage des images, rien de plus facile. Les grosses images ont toutes la même taille ? Je pense peut-être mettre les miniatures… a voir

très bien tout cela.
Pour les images j’essaye d’avoir environ 250x250 sauf si je ne peux pas faire autrement. Pour les miniatures 75x75 mais c’est vraiment rikiki. Le traité de Babel recommande 120x120 pour les miniatures, ce qui est une bonne moyenne, on pourrait s’en tenir à cette taille (je pourrais les générer pour toi si nécessaire).

A quoi correspond « 2044 » dans le fichier XML ?

Cela correspond à la référence de ce site, qui fut un des premiers à lister tous les jeux de fiction interactive : wurb.com/if/game/2044

Mais vu qu’il est moins complet que ifwiki par exemple (même si pas mal pour tous les vieux jeux), c’est pour cela que j’ai proposé d’inclure également le lien ifwiki ainsi que ifdb.

J’ai toujours un problème de codage ! :frowning: Les fichiers XLM du site sont en UTF8 et VB lit uniquement le normal (l’ascii). Quelqu’un aurait-il une solution simple ou une petite app qui pourrait faire la conversion ?

c’est étrange car normalement l’utf8 (unicode) devrait au moins avoir des fonctions reconnues dans vb. J’ai trouvé cela sur internet je ne sais pas si c’est efficace :

codyx.org/snippet_ainsi-vers … sa_54.aspx
docvb.free.fr/forum/thread.php?id=294

J’ai appris que windows utilisait un unicode, mais d’un autre genre (utf8 est sous mac os x et linux, et dans de plus en plus d’application internet ou de sites, genre wikipedia etc)

Sinon je peux normalement facilement convertir ces fichiers d’utf8 vers un autre format, j’essayerai de faire cela à midi si tu veux.

Houlà ça se complique… :slight_smile:

Je vais attendre de voir le nouveau type de codage que tu proposes avant de me lancer dans ces sources…

Le bot fonctionne assez bien :
J’ai juste à mettre tout les fichiers XMLs dans un même répertoire, puis à changer le codage (en les ouvrant avec un éditeur de texte msdos puis en les enregistrant) et enfin de lancer le bot qui va tout lire :

[code]Public Nom As String
Public Ifid As String
Public DateJeu As String
Public Licence As String
Public Language As String
Public Langue As String
Public Genre As String
Public Temps As String
Public Auteur As String
Public Description As String
Public Fichier As String
Public HeadLine As String

Public NombreDeJeux As Integer

'LISTE DES JEUX

Sub Liste(num As Integer)

Select Case num

Case 1 'Jeu n°1
Nom = « Aventure »
Ifid = « ZCODE-0-000531-5062 »
DateJeu = « 2001 »
Language = « zcode »
Langue = « français »
Genre = « Adventure »
HeadLine = « La traduction »
Auteur = « William Crowther and Don »
Description = « http://ifiction.free.fr »

Case 2 'Jeu n°2
Nom = « CIA »
Ifid = « ZCODE-1-961218-29EB »
DateJeu = « 1996 »
Language = « zcode »
Langue = « français »
Genre = « Espionnage »
HeadLine = « La mission : retrouver un rubis »
Auteur = « Hug »
Description = « Votre mission est de retrouver un rubis qui est utilisé dans une partie d »

Case 3 ‹ Jeu n°3
Nom = « Les espions ne meurent jamais »
Ifid = « ZCODE-1-070417-4C3D »
DateJeu = « 2007 »
Language = « zcode »
Langue = « français »
Genre = « Comedy »
HeadLine = « Enfin vous l’av »
Auteur = « Hugo Labrande »
Description = "Alors… 44 46 48 50 52…
Voilà c’est là .
 ›‹ Méchants magazine ›’ page 54. Un dossier entier consacré entiè"

Case 4 'Jeu n°4
Nom = « Filaments »
Ifid = « ZCODE-1-030301-4389 »
DateJeu = « 2003 »
Language = « zcode »
Langue = « français »
Genre = « Adventure »
HeadLine = « Les aventures de Margot à Paris et ailleurs… »
Auteur = « JB »
Description = "Allez Margot va falloir se lever. Je crois que ce coup-ci tu vas pas y couper : mmm y a "

Case 5 'Jeu n°5
Nom = « Interra: l’Autre Monde »
Ifid = « ZCODE-1-070726-976E »
DateJeu = « 2007 »
Language = « zcode »
Langue = « français »
Genre = « Comedy »
HeadLine = « Un voyage mystique »
Auteur = « Benjamin Roux »
Description = « Après une longue journ »

Case 6 'Jeu n°6
Nom = « Lavoir »
Ifid = « GLULX-3-071110-49E2EB93 »
DateJeu = « 2007 »
Language = « glulx »
Langue = « français »
Genre = « Comedy »
HeadLine = « Cette balade rafraîchissante vous permettra de découvrir un coin pittoresque de France. »
Auteur = « Benjamin Roux »
Description = « Vous êtes sur une rou »

Case 7 'Jeu n°7
Nom = « La femme qui ne supportait pas les ordinateurs »
Ifid = « ZCODE-1-080103-A994 »
DateJeu = « 2008 »
Language = « zcode »
Langue = « français »
Genre = « Comedy »
HeadLine = « Le premier roman interactif grand public marrant. »
Auteur = "Jeu original Apple II par Froggy Software (code : Jean-Louis "
Description = « Ah ! Ca devait arriver ! A force de se creuse le cabochon pour trouver de no »

Case 8 'Jeu n°8
Nom = « La Mort pour Seul Destin »
Ifid = « ZCODE-1-040921-327F »
DateJeu = « 2004 »
Language = « zcode »
Langue = « français »
Genre = « Adventure »
HeadLine = « Une aventure type jeu de rôle dans une jungle fantastique… »
Auteur = « JB »
Description = « http://ifiction.free.fr »

Case 9 'Jeu n°9
Nom = « Même les pommes de terre ont des yeux »
Ifid = « ZCODE-1-070625-7957 »
DateJeu = « 2007 »
Language = « zcode »
Langue = « français »
Genre = « Comedy »
HeadLine = « Débarrassez ce pays du dictateur ! »
Auteur = « Jeu original Apple II par Froggy »
Description = « Explicassione :
Caramba ! Oune dictator a desituato the gouvernement ! »

Case 10 'Jeu n°10
Nom = « Vindaloo »
Ifid = « ZCODE-1-021001-B948 »
DateJeu = « 2002 »
Language = « zcode »
Langue = « français »
Genre = « Comedy »
HeadLine = « Arrivez-vous à réaliser la recette du fameux vindaloo ? »
Auteur = "Jeu original par Adam G. "
Description = « Vous vous réveillez dans votre lit et décidez qu’aujourd’hui vous vous sentez prêt à faire votre fameux curry vindaloo. Vous en salivez d’avance. »
End Select
End Sub
[/code]

Et voilà un module tout près ! Par contre, j’ai un autre problème interne à VB, au niveau des virgules… je suis en train de voir comment faire. :slight_smile:

les fichiers convertis sont ici :
ifiction.free.fr/fichiers/ifictionxml.zip

Le petit script pour générer tout cela :

# nettoyage des vieux fichiers

rm -fr /tmp/ifictiondata/xml
rm -fr /tmp/ifictiondata/img
rm -fr /tmp/ifictiondata.zip

# création des dossiers temporaires
mkdir -p /tmp/ifictiondata/xml
mkdir -p /tmp/ifictiondata/img

# copie des données xml dans les dossiers temp
cp `find ./ -depth -maxdepth 3  -name '*.xml'` /tmp/ifictiondata/xml

# copie des images dans les dossiers temp (on ne recherche que dans les dossiers des jeux)
cp `find ./jeux -depth -maxdepth 3  -name '*.jpg'` /tmp/ifictiondata/img
cp `find ./concours2005 -depth -maxdepth 3  -name '*.jpg'` /tmp/ifictiondata/img
cp `find ./concours2006 -depth -maxdepth 3  -name '*.jpg'` /tmp/ifictiondata/img
cp `find ./concours2007 -depth -maxdepth 3  -name '*.jpg'` /tmp/ifictiondata/img

# déplacement dans le dossier temporaire des fichiers xml
cd /tmp/ifictiondata/xml
rm -fr /tmp/ifictiondata/xml/news.xml

# pour chaque image, on modifie l'entête xml, on convertit en iso-8859 ainsi que les fins de ligne en dos
for ii in *.xml
   do
     sed -i -e "s/encoding=\"UTF-8\"/encoding=\"ISO-8859-15\"/g" $ii
     unix2dos -a $ii
     iconv -f UTF-8 -t ISO-8859-15 "$ii" -o "$ii.txt"
  done
rm -fr /tmp/ifictiondata/xml/*.xml

# déplacement dans le dossier temporaire des fichiers img
cd /tmp/ifictiondata/img
# suppression des vignettes pour le site (inutiles ici, trop petites)
rm -fr /tmp/ifictiondata/img/*_tb.jpg
# pour chaque image, on retaille en 120 x 120, et on ajoute une bordure blanche si l'image n'est pas carré
for A in *.jpg
   do 
       convert $A -geometry '120x120>' -bordercolor white -border 50 -gravity center -crop 120x120+0+0 tb_$A 
       rm $A
   done

# archivage pour publication sur le site
cd /tmp
zip -r /tmp/ifictiondata.zip ifictiondata

Au risque de passer pour un ********, le nouveau codage proposé ne corrige pas le problème… :frowning: (T’as pas « Windows -1252 » ? ou un truc similaire ?)

Et un autre truc qui ne m’arrange pas, c’est quand les descriptions sont sur plusieurs lignes comme pour « la femme qui ne supportait pas les ordinateurs ». bon j’ai juste besoin de recoller les 2 lignes…

Et au niveau des images, je prends donc la taille spécifiée plus haut ?

EDIT : une version assez correcte est sortie !
http://ifiction.free.fr/telechargement/incoming/yoyo.exe Donnez moi vos avis ! Il y a 2 images…

l’encodage me semble bon. Si j’ouvre ce fichier avec « note-pad », le bloc note de windows, les caractères sont bien lu correctement. Par contre il manque les retours à la ligne, ce que je devrais pouvoir adapter.

Les descriptions sur plusieurs lignes ne devraient pas être là, c’est une erreur de ma part, que je vais corriger. Les
sont là pour les faire à l’affichage justement. S’il y en a d’autre, il faut me le dire que je les retire.

Pour les images, de la même manière je vais faire un pack les présentant en 120x120, comme cela cela sera standardisé.

Je viens de tester l’application (avec wine), pour la bannière elle s’affiche correctement, pour les images elles semblent manquer de couleurs mais je pense que sous windows cela passe correctement.

Cela semble très bien, par contre il n’est pas encore possible de lancer les jeux, ou alors il faut mettre les interpréteurs dans le même dossier ?

Quelques remarques :

  • L’ascenseur pour les jeux disponibles se trouve en bas et non pas sur le côté. Pas très pratique pour changer le jeu (on n’a pas forcément idée qu’il y a d’autres jeux en dessous).
  • Pour les retours à la ligne, signalés par
    dans la description, n’est-il pas possible de les avoir de même dans la fenêtre ?
    Parce que là on a par exemple : « janvier février 2006MaisonVous vous trouvez dans une grande pièce avec des murs en pierre. »

Et tout car c’est bien engagé :wink:

Oui il y a juste ça qui me pose problème. Après je ne sais pas s’il s’agit d’un problème d’encodage…

Il y a aussi « 

 » dans la description de « temple de feu ». Pour les
, il y en a dans quasiment tout les fichiers :confused: .

Ok. Pour les images, je vais tout inclure dans l’exécutable. ca me simplifie la vie au niveau programmation et évite d’avoir plein de fichiers images qui trainent.

Pas encore programmé :slight_smile: . Si on pourrait dès maintenant se mettre d’accord sur les interpréteurs à inclure… WinFrotz, Gargoyle, Glulxe ? (Mais après il faudra expliquer qu’on ne peut pas lancer Lavoir sous winfrotz et CIA sous glulxe…)

Je vais corriger. (EDIT: Bon apparemment c’est impossible, je vais réorganiser la fenêtre pour afficher totalement la liste)

Ahh ça aurait été bien mais VB ne gère pas un système de ce genre, comme « ^ » avec inform.

Il faudrait aussi se mettre d’accord sur les jeux à inclure ? Et si un graphiste pourrait me faire une îcone…

voilà, c’est corrigé. Le fichier se trouve ici désormais :
ifiction.free.fr/fichiers/ifictiondata.zip

Les retours à la ligne n’ont pas à voir avec l’encodage, c’est juste une différence entre dos et unix. Tout devrait bien s’ouvrir maintenant, j’espère. Il y a aussi les images en 120x120. J’ai corrigé le script plus haut pour générer cela automatiquement. Pour les
je peux en faire qque chose à l’export, au pire les remplacer par une espace, mais c’es dommage.

Il doit rester quelques fichiers parasites (j’ai quand même retiré, à regret, la photo de Raquel W. à moitié nue utilisée comme source pour l’image de Brrr! :wink: ), mais globalement il y a déjà une bonne partie des jeux (manque les speedif et quelques rares jeux encore)

Pour l’interpréteur, c’est peut-être plus simple finalement s’il n’y a pas de choix et cela n’est qu’avec gargoyle non ? Il faudrait que cela ne s’ouvre qu’avec glulxe et frotz, (et pas git qui bugge). Il faudrait également pouvoir inclure les quelques jeux adrift, et livrant, pour être exaustif, mais on verra cela après peut-être ?

Oui c’est bon !

Oui… je vais voir si de mon coté je peux faire qq chose pour les retours à la ligne…

Ahh elle y est pourtant :slight_smile: . L’image de CIA est toute blanche, est-ce normal ?

Allons-nous inclure tout les jeux glulx ? L’archive risque de peser lourd avec LC, Ekphrasis et Lavoir…

ca serait encore plus simple…

Après il faut que les auteurs concernés soient d’accord…

EDIT : il y a des liens morts sur les pages de Brrr et Divine Bonace…

Je met le projet en suspends pour quelques temps (genre 3 semaines) pour cause d’études… hé oui vive la rentrée. D’ici là on pourrait se mettre d’accord sur les jeux à inclure…

Ya t’il des pistes pour les journaux ?