Demande d'infos sur Ink + inform

@CrocMiam Je vois sur ta page itch que tu as bidouillé une version d’inform qui intègre ink et ses liens hypertextes à cliquer.

Comme j’ai laissé tomber d’intégrer des liens hypertexte dans inform 6L38 après avoir tout essayé des différentes extensions et hacks, je suis sur le point de me tourner plutôt vers Adventuron pour mélanger le parser et les liens cliquables.
Avant d’abandonner inform je me demandais donc si cette version d’Inkform est utilisable, ou si c’est juste un bout de prototype ?

S’il y a d’autres personnes dans la même situation/recherche que moi n’hésitez pas à me faire part de vos résultats de parser + liens hypertextes (en version française)

C’est juste un bout de prototype, pas de souci pour partager le code si tu veux.
Cela dit, ça utilise les liens hypertextes d’inform, donc c’est la preuve que ça marche :slight_smile:
C’était quoi tes problèmes avec les liens ?

Toutes les extensions Hyperlinks que j’ai installées font planter l’app inform7 sur mon Ubuntu au moment où se présente le choix hyperlink (avant, la FI fonctionne normalement). J’ai vraiment tout essayé, la façon conseillée ici, et les autres extensions plus anciennes : Gavin Lambert, Eric Temple et celle d’Emily short.

J’ai passé des heures sur des forums pour trouver les bonnes deépendances à installer pour chacune et j’ai fait des tests séparément pour ne pas tout mélanger. Toujours le même plantage, l’appli Inform se ferme quand un choix hyperlink devrait être présenté.

Ça ne fonctionne même pas dans les versions + récentes et sans les patches pour le français…

Tu utilises quelle extension et tu es sur quel OS toi ?

Je suis sur Mac.
Pour les liens hypertextes, pas d’extension spécifique, c’est fait à la main. J’utilise juste Glk Events by Dannii Willis mais c’est pas spécifiquement pour les liens, c’est pour le système d’events (par lequel passe les liens).

ça donne quoi ça chez toi :

"links" by Florian Cargoët (in French)
 
Include Glk Events by Dannii Willis. [ Pour exposer les évènements Glk au niveau I7. ]

Release along with an interpreter.
  
Part 1 - Hyperlinks

[ Pour avoir la syntaxe "[link 1]ciel[/link]" ]
To say link (N - number) -- beginning say_link -- running on: (-
	if (glk_gestalt(gestalt_Hyperlinks, 0)) glk_set_hyperlink({N});
-).

To say /link -- ending say_link -- running on: (-
	if (glk_gestalt(gestalt_Hyperlinks, 0)) glk_set_hyperlink(0);
-).

[ On réagit à un lien cliqué ]
A glulx input handling rule for a hyperlink-event:
	let index be glk event value 1;
	say "Lien cliqué = [index]."; 
	process hyperlink events;
 
[ Pour réclamer le traitement des hyperliens. ] 
To process hyperlink events: (-
	if (glk_gestalt(gestalt_Hyperlinks, 0)) {
		glk_request_hyperlink_event(gg_mainwin);
		glk_select(gg_event);
	}
-).

[ On lancement le traitement des hyperliens au début et il doit être relancé après chaque clic sur un lien, ce qui est fait plus haut. ] 
When play begins:
	process hyperlink events;

Part 2 - Le jeu

La Démo is a room. "La seule chose à faire ici est de SAUTER pour tester les hyperliens."
  
Instead of jumping:
	say "Jusqu'où voulez-vous sauter ? Jusqu'au [link 1]ciel[/link] ou jusqu'à la [link 2]lune[/link] ?";
1 « J'aime »

En dépendances, j’ai :

  • Version 2/200807 of Glk Events by Dannii Willis
  • qui dépend lui-même de Version 1/160919 of Glulx Definitions by Dannii Willis

Glk Events.i7x (2,2 Ko)
Glulx Definitions.i7x (7,1 Ko)

1 « J'aime »

Merci pour le code et les extensions ! je regarderai tout ça demain et je te dis si ça fonctionne :slightly_smiling_face:

Alors c’est très bizarre.
Avec ton code et les 2 extensions je n’obtiens rien dans l’interpréteur de l’IDE inform7. Page vide, et pas d’erreurs de compilation.

Quand j’exporte en html, et que j’ouvre le fichier play.html, j’ai la page standard d’inform avec la colonne de gauche qui contient les infos, mais l’histoire est vide. J’appuie sur des touches, rien ne se passe. En voulant ouvrir la console du navigateur pour voir ce que le DOM contenait, j’ai découvert qu’appuyer sur F12 faisait tout apparaître : la bannière et la description de la room, avec l’invite de commande (cachée jusque-là aussi).

C’est déjà très étrange.
Et quand je tape jump les liens apparaissent, mais en les cliquant je n’ai qu’un message d’erreur, voir screenshot:

(Je précise je suis en version 6L38 et je n’ai inclus aucune autre extension, la source qui produit ce résultat ne contient que ton code.)

OK, j’ai la même chose en fait, j’ai du changer un truc avant de te l’envoyer et j’ai pas du retester. Je te tiens au courant.

Bon, le souci c’est que j’essaie de print du texte alors qu’inform est déjà en train d’attendre un input, ce qui est interdit.

En général, les extensions qui gèrent des hyperliens, c’est pour remplacer la commande de l’utilisateur, ce qui ne demande pas de print.
Mais de toute façon, la plupart utilise le code de remplacement de commande fourni par Glulx Entry Points… sauf qu’il ne marche plus depuis pas mal d’années.

Sauf l’extension « Inline hyperlinks » de Gavin Lambert qui a réécrit tout ça.
Et en plus, il a une extension « Glk Input Suspending » qui permet de suspend/resume l’attente de l’input ce qui autorise le print.

Je t’invite donc à tester :

  • Inline Hyperlinks by Gavin Lambert (j’utilise la Version 2/200930) qui dépend de :
    • Hyperlink Extension Registry by Gavin Lambert (j’ai la Version 1/200930)
    • Hyperlinks by Gavin Lambert (Version 1/200807)
    • Glk Input Suspending by Gavin Lambert (Version 1/200930)
    • Glk Events by Dannii Willis (Version 2/200807)
    • Glulx Definitions by Dannii Willis(Version 1/160919)
    • Text Capture by Eric Eve (Version 8)

Tu auras un conflit avec le français : la syntaxe [link]release[as]jump[end link] clash avec le verbe avoir « tu as ».
On peut contourner en définissant un autre mot que « as », par exemple « alias » :

To say alias -- continuing say_link -- running on:
	stop capturing text;
	if the hyperlinked text is empty, now the hyperlinked text is the substituted form of "[captured text]";
	start capturing text.

Chez moi, les exemples fournis par l’extension marchent bien.

Ok, merci de me répondre.
Je dois garder ton code pour que ça fonctionne ?
(Edit: en rajoutant bien sûr Include Inline Hyperlinks by Gavin Lambert.)
Parce que Inline hyperlinks de Gavin Lambert je l’avais déjà essayé sans succès, avec les dépendances réclamées par le compilateur. Je vais retenter avec ta liste complète d"extension dans les versions que tu as toi pour être sûr.
Et tu es bien en 6L38 comme moi ?

Oui 6L38.
Je vais t’envoyer un projet complet avec toutes les extensions embarquées dans le .materials.

OK… merci beaucoup !
J’avais déjà toutes les mêmes extensions/dépendances que toi en fait. Je reteste un peu avec les exemples officiels pour me remettre dans le bain (j’avais laissé tombé il y a 2 mois)

links.zip (35,3 Ko)

Ah, il manque le Skein.skein dans ton zip … ?
L’IDE refuse d’ouvrir links.inform parce qu’il n’y a pas de Skein.skein

Rha shit, je voulais limiter le zip en ne mettant pas tout. Chez moi, il le recrée automatiquement, j’ai pensé que c’était safe.

C’est mieux ?
links.zip (35,8 Ko)

Eh non, maintenant l’IDE ne se plaint plus mais il ne s’ouvre pas du tout avec ce projet, la fenêtre disparaît après avoir validé l’emplacement links.inform

J’utilise la version flatpak de l’IDE, c’est la seule qui fonctionne sur ma version d’Ubuntu (encore à jour).

J’ai continué les tests de mon côté et l’IDE plante dans tous les cas avec l’extension inline hyperlinks quand j’essaie d’interpréter une histoire contenant des [link].
Par contre je peux compiler un fichier html et lire le début de l’histoire dans un navigateur. Mais si j’utilise l’extension Basic Screen Effects d’Emily short, les passages contenants une balise [link] disparaissent. Pour les voir je dois compiler sans inclure Basic Screen effects, ouvrir play.html dans le navigateur, et là ça marche, les liens apparaissent. Comme ça j’arrive à définir ce que je veux leur faire faire (mais ça ne marche toujours pas dans l’interpréteur de l’IDE qui plante)

Même si je décidais d’avancer en compilant à chaque fois pour vérifier, ce qui est très chiant, je n’arriverais pas à réaliser ce que je voudrais, sans l’extension Basic Screen Effects (clear screen, wait for any key, etc…)
Donc je ne suis pas loin d’abandonner Inform.

Oui, je comprends tout à fait, c’est très frustrant.

S’il te reste un soupçon de motivation, tu peux juste extraire le Source/story.ni de mon links.inform et l’utiliser dans un nouveau projet (et pareil pour les extensions si tu n’as pas les mêmes versions).

De mon côté, juste inclure cette extension ne pose aucun problème :frowning:

J’ai pris le temps, et ton story.ni rajouté dans un nouveau projet me permet d’ouvrir le projet et de voir le code, mais j’ai le même problème : l’IDE plante quand je lance l’interpréteur. Par contre quand je compile pour en faire un .html je peux l’ouvrir et jouer à Jungle sans problème, les hyperliens fonctionnent. J’ai même inclus l’extension Basic screen effects et wait for any key ainsi que clear screen fonctionnent sans problème (toujours dans le html).

L’IDE ne plante pas dès que je lance l’interpréteur, comme tu peux le voir dans la capture ci-dessous, mais il ne transforme pas le texte en hyperliens, et dès que je tape une commande pour le parser (par exemple swing), l’appli bloque et disparaît.

J’ai la version 2.0.0 d’inform7, qui est la dernière version sur Flatpak.

Je ne laisse pas complètement tomber Inform, je vais essayer de finir un projet pour la jam Confiture de Parser de @Manonamora, vu que les hyperliens sont interdits ça ira bien :smiley:

Et pour réussir à faire une autre fiction qui affiche des hyperliens ou un parser suivant la situation dans l’histoire, je passe à FI-JS (utilisé par @paravaariar dans la FI « Sur l’inévitable ». Jusqu’ici j’arrive à faire ce que je veux donc je ne regrette pas encore Inform, même si éditer des fichiers texte Javascript a aussi des inconvénients…

1 « J'aime »

J’imagine que les soucis viennent de l’IDE Linux en effet…

N’hésite pas à nous faire un retour sur FI.js, on ne connait pas trop encore celui là par ici :wink: