script pour jouer à nos jeux automatiquement sous linux

bonsoir,

j’ai réalisé un petit script pour linux qui permet de télécharger automatiquement un de nos jeux (à choisir dans une liste), si besoin un interpréteur, et d’y jouer.

L’interface (en mode texte) est très basique, mais ce script fait cela :

  • création d’un dossier ~/.ifictionfr où seront stockés les jeux
  • si gargoyle est présent, cela propose de l’utiliser dans le futur
  • sinon si frotz n’est pas présent, cela le télécharge et le copie dans le dossier de jeux
  • liste les jeux et propose de taper le code (3 chiffres) pour y jouer, voire de taper un mot du jeu (ex : filaments) (n’est pas implémenté pour tous les jeux)
  • exécution de frotz dans un nouveau terminal

À améliorer :

  • Du fait de l’utilisation de l’encodage isomachinchose dans le zcode, et que mon système est en utf8, je n’ai pas trouvé comment passer la console actuelle en isomachinchose. D’autre part, je ne sais pas ce que donne ce script sur un système non utf8 (à eventuellement tester…)
  • j’aimerais bien faire un mode « jouer à un jeu au hasard », mais je ne me suis pas encore penché sur la question

Cela se trouve ici dans son état actuel :
ifiction.free.fr/fichiers/ifictionfr.sh

C’est sympa, je viens de tester et ça fonctionne bien sur ma Mandriva 2008.1

Il faudrait juste préciser que le paquetage xterm doit être installé (éventuellement détecter son absence dans le script).

La police d’affichage dans xterm n’est pas très belle, mais c’est peut-être lié à sa configuration par défaut sur mon système.

[Edit] Ce serait pas mal une petite interface graphique pour linux qui reprenne ces fonctionnalités et des idées du projet de Yoruk un de ces jours. Et après on part à l’assaut des principales distributions pour intégration dans les dépôts :slight_smile:

Suggestion d’amélioration : vérifier que le jeu n’a pas subi de mises à jour sur le site, sinon proposer la mise à jour. Attention : bien préciser que la mise à jour rend obsolètes tous les fichiers de sauvegarde du jeu en question.

en fait j’aimerais bien que l’on puisse se passer d’xterm. Je pense que les polices d’affichage xterm sont toujours +/- moches et non antialiasées, surtout si on doit tabler sur des polices déjà installées partout. Pour se passer d’xterm, il faudrait trouver comment passer le terminal en iso8859, avec export LANG=fr_FR@euro ou autre, cela ne change rien.
Je vais essayer d’améliorer le truc pour inclure zoom ou gargoyle en plus de frotz.

Pour vérifier une mise à jour du jeu sur le site, je ne sais pas si c’est possible sans retélécharger le fichier à chaque fois, mais je peux proposer d’effacer certains jeux pour forcer une éventuellement mise à jour.

Pour vérifier les mises à jour ça supposerait par exemple d’avoir un md5sum du fichier sur le serveur, d’en faire un en local lors du téléchargement d’un fichier, et de comparer les deux. Ça me semble assez simple à réaliser.

exact. Je me demande si à terme cela ne serait d’ailleurs pas plus simple de mettre tous les fichiers de jeux dans le même dossier sur le site internet, ce qui permettrait d’automatiser cela plus facilement…

j’ai fait une mise à jour. Grâce à quelqu’un sur linuxfr, j’ai pu trouver que luit faisait la conversion unicode iso8859, et maintenant cela s’ouvre dans le terminal en cours.
De plus cela permet maintenant de choisir un jeu au hasard, et j’ai commencé à sauvegarder le md5 pour les jeux téléchargés. Cela ne permet pas encore de récupérer celui des jeux en ligne, mais pour cela je pense regrouper tous nos jeux au même endroit, comme évoqué plus haut, et faire un petit menu d’options en plus.

Ça ne risque pas de causer des problèmes avec les liens déjà présents sur l’IFWiki et sur IFDB, toute cette affaire, j’espère ? :frowning:

oui tu as raison, cela serait un problème.

Peut-être que je peux copier tous les jeux et faire leur mise à jour future au même endroit dans un même dossier, tout en gardant l’ancien, et on pourra mettre à jour ifwiki et ifdb au fur et à mesure, tout en sachant qu’aux anciens liens il y aura toujours un jeu, mais qui pourrait être un peu plus vieux (je pourrais également les mettre à jour si nécessaire), et on s’arrangera pour que la migration se fasse en douceur…
À terme je souhaiterais également que la structure du site puisse se trouver sur le svn.

Concrètement, qu’apporterait la migration des jeux vers un seul et même répertoire ? Il n’est pas très difficile de parcourir une liste de fichiers même dans des répertoires différents. Par ailleurs cela risque d’empêcher la mise à jour de certains jeux via ifiction.free.fr/telechargement/, à moins de développer une interface spécifique pour permettre aux auteurs de faire leurs mises à jour.

(L’idée d’une telle interface est peut-être une bonne idée d’ailleurs car la création du md5sum pourrait se faire au moment de l’upload du fichier, ce qui simplifie les choses)

le problème d’avoir des fichiers de jeux répartis un peu partout, c’est que c’est plus compliqué pour aller faire les mises à jour par ftp, d’un autre côté il faudrait que je regarde avec lftp comment utiliser la fonction de synchronisation.

Petite correction sur la première ligne c’est #/!bin/bash qu’il faudrait mettre car le /bin/sh par défaut de certains systèmes ne comprend pas tout le script (problème rencontré sur ubuntu avec la commande ‹ function ›)

oui bonne remarque. Je me demande d’ailleurs pourquoi sur les autres systèmes cela a fonctionné correctement parce que cela aurait dû appeler /bin/sh comme environnement…

J’ai expérimenté le même problème sur pcbsd, mais depuis cette correction suggérée par ton message, cela fonctionne bien également pour peu que l’on ai frotz d’installé, ou la couche de compatibilité linux.

J’ai fait une petit correction également pour l’eeepc, car luit n’est pas installé dessus.

Sur mandriva c’est bien simple, /bin/sh est un lien symbolique vers /bin/bash :slight_smile:

ah exact, c’est pareil sous archlinux :slight_smile:
bien vu, j’avais pas du tout pensé à cela.

Pour la suite, cela serait pas mal un menu en surbrillance pour sélectionner les jeux, mais cela sort du cadre de ce simple script. Ensuite, on peut utiliser zoom qui permet de gérer un dossier avec des jeux à sélectionner dedans.

petite mise à jour (encore à développer et améliorer) :

  • permet de jouer à un jeu passé en argument avec frotz et les options qui vont bien
  • permet de jouer à un jeu sur une url distante par exemple
./ifictionfr.sh http://www.ifarchive.org/if-archive/games/zcode/ConanKillEverything.z5

rien de magique là dedans, cela télécharge juste le fichier avec wget, le copie dans le dossier temporaire et lance le jeu. Si c’est en zblorb, avec nfrotz, sinon avec frotz (nfrotz ne semble pas supporter les accents fr)

Reste encore à nettoyer et commenter tout ça…

nouvelle mise à jour :

  • utilise maintenant « dialog » (ou Xdialog avec gtk) pour choisir un jeu avec un menu à sélectionner. Dans le cas où dialog ne serait pas présent, utilise le menu textuel simple.

  • encore pas mal buggé :slight_smile: La fonction de jeu aléatoire ne fonctionne plus avec ce menu, je ne vois pas pourquoi (cela cherche à télécharger un fichier n’existant pas sur le serveur)

  • permet d’ajouter des variables dans un fichier de configuration utilisateur, pour choisir les programmes par défaut préférés (ce n’est que le début pour le moment, les options devraient peut-être permettre de relire cela et de les modifier)