Combat avec Ink

Bonjour,

A ma connaissance il n’est pas possible de réaliser un jeu de combat genre D&D avec Ink, totalement infoutu de lire et afficher des variables numériques. Enfin, c’était comme ça il y a deux mois. Ah, et puis j’oubliais : traitement élémentaire des nombres aléatoires ( en générer un compris entre N1 et N2 ).

Ce qui me confirme dans mon idée que ce n’est absolument pas un outil conçu pour la fiction interactive. Par contre il peut s’interfacer facilement avec d’autres outils ( ex: Unity ) qui prendront en charge ce genre de « détails » mais multiplieront au moins par 10 si ce n’est par 100 l’investissement nécessaire ( collaboration de documentalistes et de graphistes, etc. ). Ce n’est pas un outil pour indépendants.
C’est d’ailleurs pour cela que je reste sur Inform.

Je me trompe ?

Pour afficher des variables :

[code]VAR attaque = 10

Vous avez {attaque} points d’attaque.[/code]
Pour les nombres aléatoires (ici entre 1 et 10) :

[code]VAR attaque = 0

~ attaque = RANDOM(1, 10)
Vous avez {attaque} points d’attaque.[/code]
Mais c’est vrai que cette fonction pour avoir des entiers aléatoires n’est documentée nulle part (je suis tombé dessus dans une discussion sur GitHub).

Donc je pense qu’il est tout à fait possible de coder un RPG avec plein de stats et de combats avec ink. Ce n’est en revanche pas forcément le langage le plus approprié, effectivement. Ink, c’est plutôt fait pour des histoires avec beaucoup d’embranchement et de recombinaisons. Mais ça reste quand même possible de l’utiliser pour un jeu de combat (mais je pense que ça ne serait pas drôle de coder des armes ou des objets, à moins peut-être d’utiliser une intégration dans un moteur de jeu).

C’est vrai qu’apprendre Unity, ce serait un peu lourd, mais il n’y aurait pas forcément besoin de graphistes : tout peut rester textuel. Mais dans ce cas, le mieux est d’utiliser l’intégration en JavaScript, ce sera beaucoup plus facile (et le rendu du texte sera plus beau).

On ne peut pas vraiment comparer Inform et ink. Faire un RPG dans Inform sera vraisemblablement plus facile puisqu’Inform est conçu autour d’un modèle de monde et d’objets. Mais porter une histoire ink complexe en Inform serait un véritable cauchemar (points de rassemblements, tunnels, fils) en plus d’être désagréable à écrire (parce que je trouve la syntaxe d’ink hyperclaire).

Ta définition de fiction interactive ne doit pas être très large… On peut très bien utiliser ink pour faire une simple histoire interactive purement textuelle, sans combat. C’est ce qui fait la force d’ink, je trouve : on peut aussi bien l’utiliser tel quel ou l’intégrer à un moteur de jeu plus puissant.

Donc je dirais que tout dépend de ce que tu veux faire. J’ai un projet ink en cours (j’ai beaucoup trop de projets :frowning:), et jamais je ne considérerai le faire avec Inform !

Si tu as des questions plus précise sur ink, n’hésite pas !

Très très intéressant, merci !

Inform comence à faire son âge, comme on dit, et les rumeurs des blogs disent qu’il est de moins en moins maintenu. Donc…

As-tu l’intention de faire un tutoriel sur les listes dans Ink?

En fait, Inform n’est pas mort ! Graham Nelson, son créateur, va parler de son avancement lors d’un petit événement un juin. J’ai vraiment hâte de savoir ce qu’il va dire ! Mais c’est vrai que niveau communication ce n’est pas top en ce moment.

En tout cas, je ne pense pas qu’il faille choisir ink juste parce que des rumeurs disent qu’Inform est abandonné. En plus, le souhait de Graham Nelson est de rendre Inform open source quand le code sera plus propre, donc si un jour il décide d’abandonner, je pense qu’il le fera pour que n’importe qui puisse le reprendre.

Pour ce qui est des listes dans ink, c’est vraisemblablement prévu. Il ne reste que ça et les threads à couvrir je pense. Mais ces sujets sont un peu plus compliqués et je n’ai pas trop utilisé ces fonctionnalités, il faut que je réfléchisse à quand je vais les faire.

Inkle a partagé ce lien sur Twitter :

github.com/nbush/ink_roguelike

Il s’agit d’une sorte de mini-roguelike écrit en ink. Il n’y a apparemment pas de combat, mais il y a quand même une génération rudimentaire des niveaux, et une gestion d’objets et d’événements aléatoires. Peut-être que ça pourrait t’intéresser !

Ça peut, merci.
Mais pour tout dire j’ai besoin de deux ou trois scènes de combat pour ma « Tombe dans la Campagne » et j’en ai déjà écrit une ! Avec Ink ! Et ça marche !
Comme je suis un perfectionniste, je suis en train de ré-écrire avec Ink « Lanista » ( Tu sais, ce vieil exemple de combat sous I7 ) en le rebaptisant astucieusement « Gladiator » pour qu’on ne voie pas que c’est la même chose. Et je fais ça avec des listes… Dans quelques jours, disons fin de la semaine prochaine, je devrais pouvoir mettre ça sur votre site, au cas où ça intéresserait quelqu’un.

En tous cas voilà déjà un petit test de listes :

// Deux listes de base.

LIST cuisine = (table), (tabouret), escabeau, (buffet)
LIST salon = sofa, tapis

cuisine = {cuisine}
salon = {salon}
Meubles dans la cuisine = {LIST_COUNT(cuisine)}

// Test présence tabouret dans cuisine.

VAR meuble = tabouret

{cuisine? tabouret:
    Le tabouret est dans la cuisine.
- else:
    Le tabouret n'est pas dans la cuisine.
}

// Test présence escabeau dans cuisine.

~ meuble = escabeau

{cuisine? escabeau:
    L'escabeau est dans la cuisine.
- else:
    L'escabeau n'est pas dans la cuisine.
}

// On met un escabeau dans le salon.

~ salon += escabeau

salon = {salon}

// Troisième meuble dans la cuisine.

Troisième meuble liste cuisine = {cuisine(3)}

// Pas possible : VAR Kitchen = cuisine

// Mais ça, ça l'est !

VAR Kitchen = 0
~ Kitchen = cuisine
{Kitchen}

-> END

Et pour te donner une idée, voilà le genre de choses que donne ma scène de combat. Rien d’original, mais ça marche. Très bien, même. Mais il faut raffiner tout ça, d’où « Gladiator ».

Il lève sa faucille. Voyant que la menace est sérieuse vous sortez rapidement votre lampe torche, bien décidé à vous en servir comme d'une massue. 

Vous vous observez quelques instants.

La faucille s'abat en sifflant.

Vous êtes touché, subissant 5 points de dommage.

Il vous reste 95 points de vie.

Vous donnez un grand coup de votre lampe torche.

Il réussit à éviter votre coup.

Il frappe de sa faucille.

Vous esquivez.

Vous donnez un grand coup de votre lampe torche.

Vous l'avez touché, lui causant 8 points de dommage. Une gerbe d'étincelles apparaît à l'endroit du coup !

Il lui reste 42 points de vie.