Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Inform 7: le mille e una... cosa che non capisco - 2

Ciao a tutti.
 
La seconda cosa che non capisco, più di dettaglio è:
per assegnare il giocatore a un personaggio della storia è obbligatorio 
che il personaggio sia sempre "on-stage". Ma proprio per questo in ogni 
descrizione lo si vede.
 
Ridefinisco la regola del guarda?
 
[inizio codice]
 
James is a person.
now James is in Salotto;[obbligatorio per il comando successivo]
now the player is James.
 
[fine codice]
 
Da questo momento in poi, alla fine di ogni descrizione continua a dire, 
giustamente:
 
'Qui puoi anche vedere te stesso'
 
pg
 


Mmmh, confesso che in questa situazione mi trovi un pò impreparato. Tuttavia, cercando un pò in giro ho trovato questo:
 
The player's point of view can also be moved by shifting to another character. Suppose the story features two people, Alice and Bob, and the player at the keyboard is giving commands to Alice, and seeing everything from her point of view. The phrase:
 
    now the player is Bob 
 
switches the perspective so that now Bob is the one controlled by the human player, and it's Bob's point of view which counts. The human being at the keyboard may feel a sense of having jumped abruptly from place to place, but in fact neither Alice nor Bob has moved.
 
A change of player can sometimes cause confusing things to happen, if it takes place as part of a successful action. Suppose there's an action called "possessing", which enables the player to possess somebody else's body; and suppose the player types POSSESS ADELE. The action succeeds, so that the player moves into the mind of Adele. But that means that at the end of the action, the player is no longer the actor - that is, no longer the person who began the action; and consequently, Inform won't use the report rulebook to say what has just happened. It's a strange business, moving into another body.
 


Dopo di che riporta e spiega l'esempio seguente (un pò lungo)
 
Suppose we have a game where we want the player to control two different characters, swapping bodies from one turn to the next. First, the setting, and the two people who will alternately play:
 
    "Terror of the Sierra Madre" 
 
    The Hay-Strewn Corridor is a room. "[if the player is Maleska]The horse stalls are empty: you have already drained the animals, and carried off their corpses. The house will not long sustain you now. 
 
    The window throws on the floor a bright square of malevolent sunlight[otherwise]The stalls for horses run down one side of the room, but the house has long stood empty. A square window without shutters looks out over the ranch, away toward the Sierras[end if]." 
 
    Teresa is a woman in the Hay-Strewn Corridor. "Teresa stands opposite you[if Teresa carries something], her fingers wrapped tightly around [a list of things carried by Teresa][end if]." Teresa carries a bulb of garlic and a cross. 
 
     Maleska is a man in the Hay-Strewn Corridor. "Maleska watches you from eyes entirely black." Maleska carries a skull. 
 
If we tried the text above in Inform, we would find ourselves in the Hay-Strewn Corridor and confronted by both Teresa and Maleska. If "player" is not set to any named person, Inform creates a bland person called "yourself" to represent the player. To avoid this, we set "player" to the person we want to begin as. The player character is normally privately-named, so we'll need to make sure "Maleska" still means what it should.
 
    The player is Maleska. Understand "Maleska" as Maleska. 
 
Now the Corridor contains just two people, and we arrive on the scene as Maleska, with only Teresa facing us.
 
At the end of every turn we will use the 'now the player is...' phrase. (This looks as if it simply changes the value of "player": which it does, but it also carries out a complicated operation behind the scenes to effect the switch.)
 
     Every turn:
        if the player is Maleska, now the player is Teresa;
        otherwise now the player is Maleska. 
 
Our two characters already see the Corridor differently, but let's differentiate them further:
 
    Every person has a number called strength. The strength of Teresa is 3. The strength of Maleska is 5. 
 
In this small example, strength is not used for anything, except that we will display it on the status line:
 
    When play begins:
        now the command prompt is "[bold type][player][roman type] > ";
        now the left hand status line is "[player]";
        now the right hand status line is "STR: [strength of the player]". 
 
That last rule doesn't quite do what we might have expected. When we print "[player]", we find that Inform usually prints "yourself". This is because Inform says "you" to mean Teresa when talking to the player-being-Teresa, and likewise for Maleska. We want to override that in this particular story, because the rapid switches of personality are otherwise hard to follow. So:
 
    Rule for printing the name of Teresa: say "Teresa". 
 
    Rule for printing the name of Maleska: say "Maleska".

> It's a strange business, moving into another body.
 
Ho un'intera sezione dedicata ai personaggi.
 
Effetto voluto: senza cambiare punto di vista (anche se sarebbe comunque 
interessante), cerco di centralizzare in un unico punto tutte le 
informazioni inerenti la stessa cosa (in questo caso il protagonista).
 
E questa potrebbe essere la terza cosa che non capisco di Inform che non 
semplifica molto alcune cose banali come definire delle cose in un unico 
punto per poi poterle utilizzare altrove o meglio, consente l'analogo di 
funzioni, procedure e costanti ma non sempre è molto immediato nella 
loro stesura e nel loro uso (sempre per la mia poca esperienza).
 
Il problema qui è quello di disattivare la regola "printing the locale 
description" per la parte "for you-can-also-see rule" (response D) 
quando si applica al player ma non capisco come si faccia.
 
Grazie ancora
pg


Ho paura che l'unico modo per far impersonare al giocatore un png (in questo caso James) sia quello di inserire nel codice "The player is James", facendo si che già ad inizio gioco il nostro pg è James, senza che venga stampato alcun messaggio. O almeno sembra che così funzioni.
 
Se il tuo obiettivo primario è di far si che il player abbia un "nome" e che esso venga usato durante l'avventura per riferirsi al personaggio principale, potresti anche fare così:
 
Salotto is a room. "Un semplice, piccolo salottino."
 
The player's name is a text that varies. The player's name is "James".
 
When play begins:
	say "Il tuo nome è [player's name]".
 
Linda is a woman in salotto. "Linda ti saluta, 'ciao [player's name]!'".


Altro sistema che mi è appena venuto in mente: potresti applicare a James la condizione "scenery", in questo modo:
 
James is a scenery man in salotto.
 
Tutti gli *oggetti con questa condizione non compaiono nella descrizione della stanza, ma soltanto se esaminati, riportano la descrizione dell'oggetto che decidiamo di dare. E' una condizione che uso per gli oggetti che in qualche modo fanno parte della location (alberi, altari, colonne, etc), anche perchè sono automaticamente fissi e non trasportabili.
 


 
Perfetto funziona nel primo modo che mi hai suggerito (era davvero banale).
 
Avendolo inserito nella regola "when play begins" avevo usato il "now" 
che mi dava i problemi che dicevo.
 
La seconda soluzione che proponi è quella che avevo adottato in 
precedenza ma non mi piaceva perché dovevo replicare le caratteristiche 
di James per il player.
 
Resta però il fatto che se dovessi cambiare attribuzione del player 
rimane il problema iniziale. Ma per ora non mi interessa.
 
Grazie
pg
 


 
No. Anche se scenery, essendo a man appare nuovamente "Vedi anche te
stesso" risolvibile solo modificando la regola che scrivevo prima.
 
Grazie lo stesso
pg
 


Ottimo!