Je suis en train de créer une salle que je voudrais décomposer en plusieurs « zones » à savoir « dans les gradins », « sous les gradins » et « sur scène » en gros. Je voudrais qu’on puisse voir la scène (et ce qu’il y a dessus) qu’on soit dans ou sous les gradins, mais qu’on ne puisse pas y toucher. Dans les gradins, on ne devrait pas voir ni toucher ce qu’il y a dessous, et vice versa.
Pour l’instant, j’ai fait des gradins un contenant transparent, de sous les gradins un conteneur pas transparent et de la scène un support. Depuis l’intérieur des gradins, niveau visibilité, ça va, par contre, on peut toucher (et autres verbes qui dépendent de ça) ce qu’il y a sur scène, et je ne trouve pas dans la doc comment on fait ses propres règles pour gérer ça. Je n’ai pas encore eu l’occasion d’implémenter proprement sous les gradins, mais j’ai peur que vu que ce n’est pas transparent, on ne voie pas à l’extérieur. Et dans la description du lieu, j’ai aussi peur que ça affiche quelque chose du type « (dans sous les gradins) », et je ne sais pas non plus comment ça se change.
Pour la touchabilité, j’ai vu un post sur intfiction qui parlait d’objet distants, je pense que ça doit être adaptable, même si j’avoue que si je copie-colle des bouts comme celui qui définit à quel endroit ajouter la règle, je ne sais pas du tout comment cette partie d’I7 fonctionne. Le reste me parait compréhensible, faut juste que je trouve les équivalents français des substitutions.
Je ne sais même pas si mon approche avec des contenants et des supports est pertinente.
Ma première suggestion, c’est de faire autrement parce que jouer avec le scope/visibilité/touchabilité (c’est un mot, ça ?), c’est jamais amusant.
Ma deuxième suggestion : utiliser des endroits me semble causer moins de problèmes à long terme. On peut modifier le scope pour rendre les objets visible mais non touchables (encore que, il y a une nuance entre « visible » et « dans le scope », pas forcément important ici).
After deciding the scope of the player when the location is les gradins:
place the contents of la scène in scope.
Cf. la section sur cette activité dans le chapitre des activités de la doc.
C’est très possible qu’il y ait pleins de petits cas spéciaux à gérer qui se révéleront au fur et à mesure.
Troisième suggestion : Ça dépendra du jeu, mais il y a possiblement qu’il y a moyen de tricher sans modifier le scope. Genre dupliquer les objets pour en mettre une version dans chaque endroit, utiliser des backdrops, etc. Mais ça dépend vraiment du projet.
(Hors-sujet, mais si tu fais deux passages à la ligne quand tu écris des messages sur le forum, ça fait de vrais paragraphes, c’est plus visible.)
Merci, je me disais bien qu’il y avait un truc pour les paragraphes.
J’avais hésité à faire des salles différentes, je me suis dit que c’était moins « idiomatique » et je pensais que ça serait plus compliqué. Dupliquer les objets c’est probablement possible aussi, je vais réfléchir à ce que je fais.
C’est frustrant qu’il n’y aie pas de façon simple de changer ces propriétés là.
C’est surtout que les endroits discrets et isolés, c’est le paradigme même d’Inform et du parser en général, donc c’est difficile à en dévier.
Les contenants, ça pourrait marcher en vrai, mais comme tu l’as mentionné, il faudra modifier des règles pour éviter les « dans sous les gradins » dans le nom de l’endroit, et dans ton cas il faudra modifier la transparence/opacité de dessous les gradins en fonction de l’endroit parce que ça ne va que dans une direction, et on pourra interagir avec les contenant eux-même, etc. Mon impression est qu’il faudra adapter davantage de choses pour que ça fonctionne bien.
Je partage cet avis, j’ai l’intuition que ça sera plus facile avec des rooms.
L’exemple « Rock Garden » t’intéressera probablement. Il y a un système pour aller automatiquement dans les autres pièces quand on essaie d’interagir avec un objet. Ça ne semble pas utile vu ta description mais on ne sait jamais. Dans la même règle (reaching inside a room), tu peux gérer le cas particulier de la scène avec laquelle on n’a pas le droit d’interagir.
Je pense que tu peux modifier la relation utilisée pour gérer des cas à sens unique.
J’ai tenté la solution avec deux pièces + le place the contents in scope, mais ce n’était pas très satisfaisant (la réponse pour les interactions refusées, c’était « Ce n’est pas disponible », ce qui est très général et n’aide pas du tout un potentiel joueur qui aurait tenté un truc bizarre je pense.
J’ai testé aussi la solution d’ajouter une propriété « distant » comme dans le post Intfiction cité plus haut, ce qui m’a permis de rendre compte que le refus de donner des objets à quelqu’un ne différentie pas trop si la personne est touchable ou pas.
Je viens d’aller voir l’exemple Rock Garden, ça a l’air prometteur, il faut que j’adapte quelques trucs et que je me remette aux relations. On peut utiliser ce genre de trucs pour faire des groupes de gens tiens ? (pour permettre par exemple d’examiner un groupe de personnes en plus de les examiner séparément)
Tu peux faire une relation « X relates various rooms to various rooms » pour avoir de l’unidirectionnel (quitte à définir les 2 sens quand tu as besoin).