Installeurs en .exe

J’y réfléchissais depuis un moment, mais vu que plusieurs nouveaux avaient l’air intéressés par la fiction interactive sur Twitch (et que mes deux derniers jeux passent pas sur Parchment…), j’ai créé des .exe pour mes jeux. Ca veut dire que plus besoin de télécharger un interpréteur, on clique et c’est bon ; apparemment c’était un gros débat il y a quelques années sur intfiction.org, et les gens ont pas l’air d’aimer parce que y’a toute une philosophie derrière l’interpréteur, mais il me semble que c’est le meilleur moyen (avec Parchment) pour que des gens se lancent dans le bain tout de suite.

Si ça vous intéresse, donc : la méthode que j’ai suivie est ici :

  • Créer un dossier spécial
  • Y créer un sous-dossier où vous mettez l’interpréteur
  • Y mettre le jeu, et éventuellement une icône (par exemple, ça)
  • Créer un fichier texte contenant le code suivant (remplacer « curses » par votre jeu et « WindowsFrotz » par le nom du dossier où y’a votre terp) et le mettre dans le même dossier
  • Installer NSIS, le lancer et cliquer sur « compiler un script », puis ouvrez le fichier script, et voilà !

Le script c’est :
[spoiler]; NULLsoft Scriptable Install System
; use this to bundle an interpreter and an IF game
;
; based on:
; « make a REBOL Script executable »
; provided by digicamsoft.com
; downloaded from nsis.sourceforge.net/How_to_turn … t_into_EXE
;
; crudely adapted for IF purposes by StJohnLimbo

; Name of the installer (don’t really care here because of silent below)
Name « Curses »

; Don’t want a window, just unpack files and execute
SilentInstall silent

; Set a name for the resulting executable
OutFile « Curses.exe »

; Set an icon (optional)
Icon « IF.ico »

; The stuff to install
Section «  »
; Set output path to a temporary directory.
InitPluginsDir
SetOutPath $PLUGINSDIR

; put the required files here
File /r WindowsFrotz ; add the interpreter directory and its contents recursively
File « curses.z5 » ; IF game file

; Execute and wait for the session to end
ExecWait ‹ « $PLUGINSDIR\WindowsFrotz\Frotz.exe » « $PLUGINSDIR\curses.z5 » ›

; Set working directory to something else
; If it’s not set, $PLUGINSDIR will not be deleted
SetOutPath $TEMP
SectionEnd[/spoiler]

Ca crée un .exe, et quand le joueur le lance ça ‹ décompresse › tout ça dans le répertoire temporaire et ça le nettoie quand on quitte le jeu. Bref, c’est transparent pour le joueur, pratique :slight_smile:

Pour linux j’ai rien trouvé, mais il me semble de toute façon que les gens qui sont sur linux seront plus enclins à télécharger un paquet pour ouvrir les fichiers .z5 :wink:

Je valide le concept, c’est bien d’avoir une solution « clés en main » pour les nouveaux venus de la fiction interactive.
Tant que tu donnes toujours la possibilité de télécharger le binaire .z5 ou .z8 (voire le code source pour les plus tarés d’entre nous), les puristes peuvent toujours utiliser l’interpréteur de leur choix (il y a eu un peu de travail sur Gargoyle récemment par ailleurs, mais pas de nouvelle release en vue).

Pour les linuxiens j’ai toujours l’idée d’écrire un utilitaire dans le même style que le défunt DJL, mais spécialisé pour les fictions interactives. Un outil qui dans l’absolu n’aurait qu’à se connecter à un site ayant un format de métadonnées connu pour en extraire les noms de jeux, liens de téléchargements, images, etc. et qui laisserait bien sûr choisir son interpréteur préféré, pourvu qu’il soit installé sur le système.

Le jour où je m’y mettrais vraiment, j’essaierai de garder à l’esprit la compatibilité multi-plateformes en utilisant un langage de style Python ou Lua, et une interface en Qt5 :slight_smile:

je trouve que le plus simple reste de renommer gargoyle.exe en le_nom_du_jeu.exe avec à côté le fichier zcode ou glulx, et quand on clique sur le .exe ça ouvre le jeu qui a le même nom que l’exécutable. Et puis je ne veux pas polémiquer, mais avec la multiplication des OS (android, iOS, mac os x, linux, windows), windows est de moins en moins majoritaire, et parchment me semble une solution élégante pour faire jouer rapidement des joueurs qui n’ont pas envie de s’embêter à installer un interpréteur.

Pour le script sous Linux, j’avais fait ça il y a quelques années, mais c’est uniquement en console et c’est largement améliorable :

https://forum.fiction-interactive.fr/t/script-pour-jouer-a-nos-jeux-automatiquement-sous-linux/425/1

(ça va chercher les jeux sur notre site, et les sauvegardes dans un répertoire ~/.ifictionfr/)

note : hlabrande.fr/if/ les liens sont tous cassés (sauf pour jouer avec parchment)

Ah mince, j’ai tout cassé hier soir ^^ C’est corrigé, merci !

Je suis d’accord pour Parchment, mais vu que les effets de temps ne sont pas supportés ça rend mes jeux injouables… (pour l’instant)
Je sais pas si les gens les utiliseront, mais au moins y’aura cette option :slight_smile:

Question bête mais j’ai pas tout suivi, on peut faire un jeu en Parchment quand on est au format Glulx et non pas Z-code ?

Et quand on a un jeu fait en 6G60 ?

oui, tout ça c’est possible, par contre comme ça utilise un interpréteur javascript ça sera sensiblement plus lent qu’avec gargoyle. Et ça téléchargera le jeu complet à chaque fois. En limitation, ça ne prendra pas en compte les images et les sons, juste le fichier jeu.

Glulx est maintenant géré, je pense depuis 6G60 (mais sinon on peut bidouiller pour le faire, juste ça ne sera pas automatique), il suffit de rajouter « release along with an interpreter ».

Retour d’expérience… Créer un exécutable, c’est bien, sauf que les antivirus (notamment Windows Defender, celui de Windows) paniquent en disant qu’ils n’ont jamais vu cet exécutable (normal, y’a que 3 personnes dans le monde qui l’ont déjà lancé) et que donc ça doit être un virus. Après avoir testé sur plusieurs Windows qui ne sont pas les miens, j’en arrive à la conclusion que c’est une fausse bonne idée parce que Windows lancera des alertes sur votre programme (et y’a pas mieux pour refroidir un joueur je parie).

Donc j’ai mis des .zip avec WinFrotz renommé avec le même nom que le .z5, comme ça cliquer sur l’exécutable lance automatiquement le jeu (c’est une feature de WinFrotz, comme Gargoyle - j’ai préféré WinFrotz à Gargoyle parce que ce dernier est trop gros). Sauf que l’exécutable c’est WinFrotz, que les antivirus connaissent, alors pas de souci. Ca devrait marcher !

On peut se contenter de mettre uniquement l’exécutable de WinFrotz dans l’archive ? Je veux dire, pas besoin de fichiers annexes ? (DLL, fichiers d’aide ou de configuration…?)

Oups pardon c’était pas clair - non, je crois qu’il faut absolument les DLL et le fichier de config. Plus, par exemple « WinFrotz.exe » renommé en « espions.exe » + le fichier ‹ espions.z5 ›.

Ok !

Il me semble toutefois me souvenir d’une vielle version d’un winfrotz ou équivalent n’étant constitué que d’un seul exécutable autonome, mais il est, en plus d’être un peu agé, surement incompatible avec la technique du renommage.