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