[I7] Problème de nominalisme

Bonjour à tous,
J’ai un problème d’ordre un peu philosophique avec Inform 7 et je vais essayer de vous le communiquer, j’espère y arriver.
Mon problème c’est que j’ai l’impression qu’Inform (mais c’est peut-être une caractéristique des fictions interactives en général) se prête mal à la production d’objet à la chaîne. Ma question est la suivante, elle peut paraître un peu théorique mais ça devient plus concret avec mon exemple : comment peut-on produire quelque chose comme un objet standardisé en fiction interactive ?

Bon mon exemple est nul, mais il permet de comprendre.
Admettons par exemple, que notre joueur aille à un distributeur de soda. Il prend un premier coca puis un deuxième. Comment peut-on différencier ces deux canettes de cocas qui ont toutes les deux exactement les mêmes propriétés ? On peut imaginer que si par exemple le joueur vide une des deux canettes les deux se différencieront par le fait que l’une est ouverte et à moitié vide et que l’autre ne l’est pas. Mais admettons que notre joueur veuille garder les deux canettes intactes dans son inventaire, il risque (à mon sens) d’avoir un problème lorsqu’il va taper la commande : poser la canette et que l’interpréteur va lui demander laquelle. Bon le problème n’en est pas vraiment un, s’il n’y a que deux canettes en jeu. Mais admettons qu’il y en ait une grosse centaine (bon mon exemple touche ici à ses limites)…

Comment faire lorsqu’on a besoin d’une quantité assez considérable d’objet semblables (pour ne pas dire les mêmes) sans pour autant se perdre dans les méandres des incompréhensions du parser ? En d’autres termes comment écrire une fiction interactive sans être un nominaliste forcené (qui considère qu’il n’y a que des individus/choses particulier·ère et qu’on ne peut pas les ranger dans des catégories ou des espèces) ? Je reconnais que d’un point de vue philosophique et lorsque ça concerne le monde réel, je suis plutôt nominaliste mais, lorsqu’il s’agit d’écrire des FI j’aurais plutôt tendance à être idéaliste ou intellectualiste.

Bref, j’espère que vous comprendrez mes interrogations…

C’est effectivement un problème récurrent dans les FI à parser (et pas qu’avec Inform, du coup).

Si tu crées des canettes de cette façon :

[code]la canette1 is a thing.
Understand « cannette » as la cannette1.

la cannette2 is a thing.
Understand « cannette » as la cannette2.[/code]
Alors, oui, il y a un problème car, pour Inform, les deux objets sont distincts (ils ont chacun un identifiant unique), mais pas pour le joueur. Cela va causer le problème du jeu qui va demander laquelle sans qu’il y ait moyen de les différencier.

Cependant, si on l’écrit de cette façon :

[code]A cannette is a kind of thing.
Understand « cannette » as a cannette.

The player carries 2 cannettes.[/code]
alors Inform va réellement considérer que les deux cannettes sont identiques, car elles n’ont été défini que par leur kind (et n’ont pas d’identifiant propre). Je n’ai pas testé, mais normalement, dans ce cas-ci, si le joueur tape « poser cannette », le jeu va en choisir une au hasard, car elles sont de toute façon totalement identiques. Si le joueur tape « prendre cannette », le jeu va prioriser les cannettes que le joueur ne porte pas (cf. §4.14 de la doc).

Si on ajoute des propriétés (comme ouvert/fermé), alors ça devient plus complexe à gérer. Il faut ajouter des règles does the player mean pour prioriser les cannettes ayant une certaine propriété pour certaines actions :

Does the player mean opening a closed cannette: it is very likely.
(Voir §17.19 de la doc. D’ailleurs, l’exemple Masochism Deli de cette section est une bonne illustration de ce problème.)

Mais sinon, rien ne change : deux cannettes ouvertes sont indiscernables entre elles et le jeu en prendra une au hasard.

C’est une bonne chose d’aussi ajouter des lignes de compréhension pour qu’on puisse taper « cannette ouverte » (§17.15 à 17.17):

Understand "ouverte" as a cannette when the item described is open.

Enfin, il vaut sûrement mieux changer le nom des cannettes en fonction de leurs propriétés.

[code]After printing the name of an open cannette:
say " ouverte".

After printing the plural name of an open cannette:
say " ouvertes".

After printing the name of a closed cannette:
say " fermée".

After printing the plural name of a closed cannette:
say " fermées".[/code]
Si l’on ne veut pas leur donner de nom différents en jeu, on peut quand même leur donner un nom différent seulement quand le jeu demande de préciser de quelle cannette on parle (comme ça le joueur pourra faire un choix). La section 18.31 en montre un exemple. Une situation où ça pourrait servir : s’il y a deux gobelins, identiques en tant que tel mais avec un nombre de points de vie différents, on veut que le joueur puisse préciser lequel, sans pour autant toujours afficher les points de vie :

Voilà ! Si jamais tu veux créer des objets identiques, c’est de cette manière (dans les grandes lignes) qu’il faut procéder avec Inform : créer un des objets définis uniquement par leur kind et écrire des règles et des lignes de compréhension pour guider le jeu et le joueur à faire les bon choix. Si jamais tu as besoin de précision, n’hésite pas.

Enfin, il reste possible, si l’objet est plutôt utilisé comme une ressource, d’utiliser une propriété plutôt qu’un véritable objet. Par exemple, pour de l’argent, on évite en général de modéliser chaque pièce d’or ; on préfère définir une variable ou une propriété à la place :

A person has a number called argent. The argent of the player is 729.

Et pour ce qui est du point de vue philosophique, je ne préfère rien dire : la philo, ce n’est pas trop mon truc. :slight_smile:

Je suis pas non plus douée en philo, mais ça me fait penser à l’axiome du choix tout ça !

Ooh, maintenant que tu le dis, moi aussi ! C’est tout à fait comme ça qu’on me l’a expliqué la première fois :smiley:

Ben moi je me suis spécialisé en physique, alors même si j’ai une vague idée de ce que c’est l’axiome du choix, on ne me l’a jamais vraiment expliqué (ou en tout cas, pas comme ça). :frowning:

C’est fou comme la plupart des gens ont une formation scientifique ici ! Un peu de diversité de ferait pas de mal !

Et bah ça tombe bien ! Je viens du côté littéraire de la force : j’ai une formation de philosophie !