J’ai enfin fini mon travail sur une extension I6, EffetsDeTexte, une bibliothèque pour réaliser des effets de texte divers et variés. Il existe déjà quelques extensions pour faire des effets de texte en I6, mais elles sont plutôt incomplètes (ou se recouvrent) ; je voulais une bibliothèque qui fasse tout correctement.
Les features :
- Biplateforme Z-Code et Glulx
- Grande variété d’effets : gras/italique/non-proportionnel/inversé et couleurs + toutes les combinaisons possibles pour ces réglages (pour tous ceux qui rêvent d’écrire en gras italique vert) ; affichage centré (approximatif) ; affichage progressif ; affichage ‹ touche par touche › (afficher une nouvelle lettre à chaque fois que le joueur appuie sur une touche - si vous voulez simuler une ligne de commande) ; affichage après attente ou appui sur une touche, et affichage après attente mais pas après appui sur une touche.
- Teste si les effets recherchés sont pris en charge par l’interpréteur ; très important car Parchment ne prend pas en charge les effets temporels (c’est des ‹ appuyez sur une touche ›, à la place), ce qui m’embêtait pour Homeland Security mais surtout rendait Life On Mars absolument injouable. Du coup, vous avez l’assurance que tout le monde pourra jouer à votre jeu correctement, même si certains effets manqueront (à vous par contre d’afficher un message « votre terp ne prend pas les effets temporels en compte, ce qui peut nuire à votre expérience » - utilisez la fonction IsTimeSupported de l’extension pour le test).
Les bugs / trucs qui ne marchent pas et ne marcheront jamais :
- Affichage centré : vu qu’on n’a pas accès à la police de caractères utilisée par l’interpréteur, l’affichage centré est condamné à être imparfait (pas moyen de savoir à quoi ressemblera le résultat). Par contre, si vous affichez un texte centré en police monospace/non-proportionnelle, ça sera parfait.
- Couleurs sous Glulx : Glulx est en fait très mauvais pour l’affichage de couleurs, et pour les styles de texte en général : il n’y a que 11 styles (dont seulement 2 pour la customisation), et il faut les définir au tout début du jeu (avant même Initialise()). Donc impossible de faire quelque chose de dynamique (on aurait pu penser à faire un truc du genre « sauvegarder le style défini par l’auteur, changer en ce qu’on veut et l’utiliser pour afficher le truc, puis revenir au style qui était là avant » mais non, ça doit être défini avant Initialise), et il faut laisser les 2 autres styles pour l’auteur. Donc c’est une limitation fondamentale de Glulx (!) et ma bibliothèque ne permet pas d’y échapper.
- Gras/italique sous Glulx : Glulx ne définit pas gras, italique ou souligné ou autre, mais « emphasized » (mise en avant) : à l’interpréteur de déterminer si ça sera du gras ou de l’italique. (Le raisonnement, de ce que j’ai pu voir, c’est « il faut laisser le choix aux gens, aux interpréteurs et aux joueurs » - inutile de dire que je suis totalement contre, parce que faire un système où l’auteur ne peut pas écrire ce qu’il veut parce qu’il faut laisser le choix aux gens de changer les italiques en gras…) Du coup, c’est implanté en trichant : les interpréteurs que j’ai pu voir utilisent le gras pour « emphasized » et l’italique pour « note », alors c’est ça qui est utilisé - donc, aucune garantie que ça sera vraiment de l’italique ou quoi, mais Glulx ne permet pas d’avoir ces garanties.
- Karaoké : je voulais faire quelque chose qui permet d’afficher des paroles de chanson progressivement, selon un rythme/tempo, comme au karaoké, mais je n’ai pas eu le temps (en fait, la conception du truc pour qu’il soit simple à utiliser est compliquée - je pense faire quelque chose comme ‹ un symbole pour chaque temps dans le string, et un entier pour le tempo ›). Ca sera fait, je pense, vu que Homeland Security et Life On Mars simulent un effet similaire, donc j’ai tout intérêt à automatiser la chose ; mais je ne sais pas quand !
Je compte utiliser cette bibliothèque dans Homeland Security et Life On Mars, pour que les joueurs et joueuses puissent utiliser Parchment sans encombres. Tout test et rapport de bug ou feedback, ou demande d’effet à intégrer à l’extension, est plus que bienvenue ! Et n’hésitez pas à l’utiliser dans vos jeux !!