[I7] Problème de nominalisme

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

[I7] Problème de nominalisme

Messagepar Landry le Ven Sep 07, 2018 9:32 pm

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…
Avatar de l’utilisateur
Landry
Investigateur débutant
 
Messages: 24
Inscription: Sam Déc 17, 2016 12:35 pm
Localisation: Lyon

Re: [I7] Problème de nominalisme

Messagepar Natrium le Ven Sep 07, 2018 10:34 pm

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: Tout sélectionner
la canette1 is a thing.
Understand "cannette" as la cannette1.

la cannette2 is a thing.
Understand "cannette" as la cannette2.

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: Tout sélectionner
A cannette is a kind of thing.
Understand "cannette" as a cannette.

The player carries 2 cannettes.

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 :

Code: Tout sélectionner
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):

Code: Tout sélectionner
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: Tout sélectionner
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".

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 :
Vous pouvez voir deux gobelins.

>attaquer gobelin
Veuillez préciser : le gobelin avec 14 PV ou le gobelin avec 3 PV ?

>3 PV
Vous attaquez le gobelin, qui meurt !


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 :

Code: Tout sélectionner
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. :)
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1148
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Problème de nominalisme

Messagepar filiaa le Jeu Sep 20, 2018 9:58 pm

Je suis pas non plus douée en philo, mais ça me fait penser à l'axiome du choix tout ça !
filiaa
Investigateur
 
Messages: 85
Inscription: Dim Fév 23, 2014 10:07 pm

Re: [I7] Problème de nominalisme

Messagepar Mule hollandaise le Jeu Sep 20, 2018 11:14 pm

filiaa a écrit: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 :D
Mule hollandaise
Grand Ancien
 
Messages: 1115
Inscription: Mar Aoû 29, 2006 10:57 pm

Re: [I7] Problème de nominalisme

Messagepar Natrium le Ven Sep 21, 2018 3:39 am

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). :(

C'est fou comme la plupart des gens ont une formation scientifique ici ! Un peu de diversité de ferait pas de mal !
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1148
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] Problème de nominalisme

Messagepar Landry le Dim Sep 23, 2018 11:53 am

Natrium a écrit: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 !
Avatar de l’utilisateur
Landry
Investigateur débutant
 
Messages: 24
Inscription: Sam Déc 17, 2016 12:35 pm
Localisation: Lyon


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron