Glulx e Glulx Inform

Ci sono, come discusso nelle precedenti sezioni, molte virtual machine là fuori progettate per l'IF. Alcune di queste -- la VM TADS e la VM Hugo, ad esempio -- che possono fare cose che la Z-machine non può fare. Possono gestire giochi più grandi di 512 kilobyte, ad esempio, far mostrare loro delle immagini od emettere suoni è molto meno scomodo che cercare di fare lo stesso con la Z-machine. Comunque, per usare una di quelle, avete bisogno di impare il corrispondente linguaggio: TADS o Hugo. Molti programmatori Inform hanno investito una significante quantità di tempo ed energia per imparare Inform, e preferirebbero non dover ricominciare da capo per imparare come si programmano IF.

Glulx è stato progettato per risolvere questo problema. Glulx è una virtual machine a 32 bit (nota) i cui compilatori sono stati disegnati per prendere il codice Inform e convertirlo in codice Glulx. In questo modo i programmatori Inform possono lasciarsi alle spalle le restrizioni della Z-machine ed approfittare dei vantaggi delle capacità extra di Glulx senza avere la necessità di imparare un nuovo linguaggio. Per la maggior parte.

Dovreste ricordare dalla sezione Glk che c'è una importante eccezione alla regola riguardante la separazione tra trattamento dei dati ed input/output nella programmazione IF. L'eccezione capita quando i programmatori inseriscono opcode nei loro programmi.

Un opcode è un'istruzione che salta alcuni dei consueti passi di un processo di programmazione. Immaginate questo processo come una torre di robot, ognuno sulle spalle di un altro. Ogni robot parla solo con il robot sotto di lui. Così un robot vicino la cima della torre parla con il robot sotto di lui, "Ecco, stampa questa frase". E quel robot, il robot di I/O, dice al prossimo robot più sotto, "Okay, scrivi la lettera A a questa posizione dello schermo con questo colore, poi stampa la lettera B a questa posizione con questo colore..." E quel robot la traduce in "Metti un punto bianco qui, qui, qui, qui, qui..." Alla fine vedrete dei piccoli puntini bianchi sullo schermo a formare le parole che interpretate come parte di una storia.

Ma cosa accade se non volete lasciare ai robot il compito di determinare dove le lettere devono andare e come devono apparire? Cosa accade se volete levarvi dai piedi uno dei robot e dire direttamente al robot di I/O, "Okay, voglio la lettera Q, in grassetto, alla posizione dello schermo (1,5), e in verde chiaro"? È qui che entranto in gioco gli opcode. Normalmente se il vostro gioco è in Inform, scrivete tutte le vostre istruzioni in Inform, e poi lasciate al compilatore il compito di convertirle in codice macchina. Ma qualche volta, quando volete un controllo più diretto -- come quando state personalizzando la vostra riga di stato, o quando volete inserire effetti speciali nel gioco come delle parole che ballano nello schermo dei titoli -- avete la necessità di inserire degli opcode. Se state compilando per la Z-machine, questi opcode sono scritti in Z-assembly, e sono cose come "@set_colour 2 4;" (che significa "stampa il testo in nero con lo sfondo verde") o "@read_char 1 8 Dummy i;" (che significa "aspetta che venga premuto un tasto o per otto decimi di secondo, chiunque dei due arrivi prima"). Gli opcode Z-assembly vengono trattati nell'Inform designer's manual, e per un sacco di tempo sono stati considerati dai più come un'altra parte di Inform.

D'altra parte l'arrivo di Glulx ha cambiato le cose. I normali compilatori Inform sanno come trasformare il codice sorgente Inform in codice Z-machine e come trasformare gli opcode Z-assembly in codice Z-machine. Ma mentre i compilatori Glulx Inform sanno come convertire il codice sorgente Inform in codice Glulx, lo Z-assembly appare loro incomprensibile. I compilatori hanno bisogno che tutti gli opcode siano scritti per Glk. Questo comprende anche quelli inseriti nella libreria di Inform, così che la libreria standard di Inform non funziona con Glulx: avete la necessità di usare la libreria Inform speciale bi-piattaforma (che è stata progettata per essere usata con i giochi indirizzati alla Z-machine o a Glulx).

Questo significa che ogni conoscenza gli autori Inform hanno riguardo gli opcode per la Z-machine è inutile nella creazione di giochi Glulx. Se vogliono compilare per Glulx, hanno bisogno di imparare un nuovo insieme di procedure per specificare gli stili del testo, creare effetti speciali, visualizzare immagini, suonare musica ed altro. Ed è a questo che la sezione due serve.


Sottosezione: (nota sulle VM a 32-bit)
O ritorna al sommario