Questa pagina è destinata a chi vuole saperne di più. Ci sarà un po’ di tecnichese. Se vuoi sapere cos’è IFAnyone in generale vai alla pagina di presentazione cliccando qui.

La struttura di IFAnyone

Le componenti di IFAnyone sono quattro:

  • Editor / Debugger. Lo strumento online per redigere i sorgenti in linguaggio IFAL.
  • Il compilatore. Trasforma il sorgente in un file in formato IFA che contiene sia gli indici dei testi multilingua, sia le specifiche di gioco.
  • L’interprete IFA. E’ una libreria Javascript che interpreta i dati del file IFA e permette al lettore di giocare. Gestisce autonomamente le schede, gli oggetti, le scelte condizionali.
  • L’engine di combattimento. E’ una libreria Javascript che si interfaccia con l’interprete e gestisce i combattimenti a turno.

Caratteristiche del linguaggio IFAL

IFAL è un linguaggio descrittivo organizzato in blocchi. La sua struttura è molto semplice ed è pensata per essere fruibile anche da non ha esperienza di programmazione. Ogni blocco inizia con una parola chiave che ne specifica il tipo e termina con la parola end.

Ad esempio. Un capitolo della storia inizia con la parola chiave “chapter” e termina con la parola chiave “end”.

chapter #the_cavern



end

Ogni blocco può contenere del testo, o altri blocchi che definiscono le caratteristiche del blocco padre. Un capitolo dovrà avere un nome, almeno una riga di testo, che verrà mostrata al lettore, e almeno una scelta da poter intraprendere. La gestione delle stringhe di testo è molto libera per lasciare all’autore la possibilità di organizzare il testo a suo piacimento. Ogni testo deve iniziare e terminare con le virgolette () ma è possibile andare a capo a piacimento. E’ anche possibile creare paragrafi di testo formati da più stringhe consecutive.
Nota bene: la formattazione del testo viene lasciata all’interfaccia utente così come accade per l’HTML. Questo vuol dire che un testo che la formattazione in IFAL è indifferente. (Esistono ovviamente appositi marcatori per indirizzare la formattazione come, ad esempio, andare a capo forzatamente, evidenziare il testo e così via).
In qualsiasi punto del codice è possibile inserire commenti visibili solo allo sviluppatore preceduti da // o compresi tra /* e */

// QUESTA RIGA E’ UN COMMENTO
chapter #the_cavern

it “Questo è un capitolo di prova, che parlerà di una caverna.
Sono andato a capo
come voglio,
ma il testo sarà formattato bene.”

“Anche questa riga fa parte del paragrafo.”

// Questa è una scelta anche essa termina con “END”
choice to #the_corridor
it “Continua nel corridoio”
end
// Qui la scelta è finita

// Qui si chiude il capitolo
end

E’ possibile specificare, per ogni blocco testo se necessario, la lingua in cui esso è scritto attraverso il codice internazionale di due lettere. In questo modo IFAL sa che la stringa deve essere memorizzata nell’indice testo della lingua indicata. Scrivendo in una sola lingua è sufficiente specificare il codice una sola volta, tutte le stringhe seguenti, anche in blocchi successivi, saranno nella stessa lingua.

it “QUESTA RIGA SARA’ CONSIDERATA
IN ITALIANO”
“ANCHE QUESTA
e questa
e questa!”

en “Da adesso, invece, IFAL considererà il testo in inglese.”

Elenco delle parole chiave e loro significato

Questo non vuole essere un manuale ma solo fornire un’idea delle potenzialità. Appena IFAnyone sarà rilasciato in beta aperta allora sarà corredato di un manuale esaustivo.

KeywordDescrizione
startIndica che il capitolo è il capitolo iniziale.
chapterIndica un capitolo normale della storia.
winIndica un capitolo finale “positivo”.
loseIndica un capitolo finale “negativo”.
choiceIndica una scelta all’interno di un capitolo.
endIndica la fine di un blocco (capitolo, scelte, oggetti)
toSpecifica il capitolo destinazione di una scelta.
has/hasnotCondizione: se il giocatore ha o non ha un certo oggetto.
is/isnotCondizione: se il giocatore è o non è in un certo stato.
can/cannotCondizione: se un valore nella scheda del giocatore è sopra o sotto un determinato valore.
takeDà al personaggio l’oggetto indicato.
dropRimuove dal personaggio l’oggetto indicato.
add/subAggiunge o sottrae un valore ad un parametro della scheda del personaggio (o variabile)
statImposta il valore di un parametro della scheda o variabile.
set/resetImposta o elimina un determinato flag.
itemIdentifica un blocco descrittivo di un oggetto.
randomIdentifica un capitolo a scelte casuali.
moodSegnala all’interfaccia di cambiare il “mood” della pagina. Ad esempio cambiando musica o sfondo.
enemySpecifica quale nemico verrà affrontato nel capitolo.
initialIndica le condizioni iniziali della scheda.
storySpecifica il nome della storia.
moduleSpecifica il nome del modulo.
bundleSpecifica il nome del sotto modulo.
scoreIndica il punteggio massimo raggiungibile.
inventorylimitIndica il numero massimo di oggetti trasportabili.
passiveIndica che l’oggetto applica le sua caratteristiche senza essere equipaggiato.
equippableIndica che l’oggetto deve essere equipaggiato per funzionare e in che parte del corpo può essere equipaggiato.
giveCome “take” ma non viene segnalato al giocatore. Serve a fornire l’equipaggiamento iniziale.