Zork: Come Cavarsela Da Soli
The Digital Antiquarian (la traduzione ufficiale italiana)

Prodi Avventurieri, vi siete infine ripresi dai bagordi delle festività natalizie? Io no! Ho ancora l'olezzo appiccicoso e penetrante di Grue e capitone nei peli della barba... 
Ma non importa, perché l'Avventura chiama! E noi, rispondiamo... Sempre! Riemersi dalle profondità del Regno Sotterraneo di
Zork è già il momento di scoprire le origini dell'ineluttabile seguito del capolavoro di Infocom, ma, attenzione, solo per questa volta, ci concederemo la libertà di compiere un balzo nella cronologia del Blog del "The Digital Antiquarian", proprio per seguire il percorso che abbiamo tracciato e che porterà a Zork II e persino a ... Zork III (come già rivelato nella nostra lista degli articoli).
Ma non temete, una volta concluso il ciclo degli articoli Infocom, riprenderemo la normale cronologia, recuperando tutti gli articoli "saltati" (il nostro traduttore, The Ancient One, rinchiuso in una stamberga da mesi, ne ha già tradotti a migliaia, perdendo così moglie e lavoro... ma è il giusto prezzo della gloria eterna!).
Ora vi lascio alla vostra meritata lettura, la prima di un anno speciale per noi avventurieri!
 
 L'ineffabile lista degli articoli del ciclo Infocom:
 
Infocom: Come Cavarsela da Soli
Zork II, Parte 1
Zork II, Parte 2
– Lo Zork User Group
Zork III, Parte 1
Zork III, Parte 2
 
Stringete la cinghia e prendete la lanterna...si riparte per un lungo viaggio!
 
Festuceto
 
Con Zork ormai sugli scaffali e pronto a diventare un grande successo commerciale, per la Infocom era giunto il momento di pensare all’inevitabile seguito. Il compito di prepararlo ricadde su Dave Lebling. A prima vista poteva apparire un compito abbastanza lineare: doveva solo prendere la metà dell’originale Zork per PDP-10 (la metà che non era finita nella versione PC), etichettarla come Zork II, e avrebbe finito. In realtà però le cose erano un po’ più complicate di così. Come minimo, il nuovo gioco aveva bisogno di una ristrutturazione. Per esempio, lo scopo della versione per PDP-10 di Zork (così come della successiva versione PC del primo capitolo) era quello di raccogliere un insieme di tesori all’interno di quella casa bianca dinanzi alla quale il giocatore aveva iniziato la propria partita. Tuttavia tale casa bianca non poteva esistere in Zork II. Forse spinto inizialmente dalla necessità, Lebling iniziò a mettere mano al design originale. E ben presto, ispirato dalla nuova tecnologia ZIL (che la Infocom aveva sviluppato per portare Zork su PC, e che era una tecnologia molto più flessibile, molto più potente, e più semplice con cui lavorare rispetto all’MDL che invece stava dietro all’originale Zork), Lebling iniziò a dargli una forma drasticamente nuova, mischiando elementi presi dall’originale con nuove aree, nuovi enigmi, e nuovi personaggi. Finì con l’usare solo una metà del materiale rimasto dalla versione PDP-10, e tale materiale a sua volta componeva circa una metà di Zork II; l’altra metà sarebbe stata nuova. Questo fa di Lebling il primo “implementatore” a creare consapevolmente un gioco della Infocom destinato alla vendita come prodotto commerciale sul mercato PC.
 
Vista dal mondo esterno, la Infocom stava iniziando a mettere le basi di quei tratti distintivi che la gente ben presto avrebbe imparato ad amare non meno dei loro giochi, basata su un’inclusività amichevole e spensierata, che faceva sì che chi comprava i loro giochi si sentisse un po’ membro di un “club di persone intelligenti”. E l’organizzatore e guida di tale club, anziché essere uno dei creatori di Zork o uno dei soci della Infocom, era Mike Dornbrook, appena laureato in biologia al MIT, che aveva conosciuto Zork solo nel 1980, e che era stato il primo e più importante beta tester della versione PC.
 
Più di chiunque altro alla Infocom, Dornbrook credeva in Zork, convinto che fosse molto di più di un interessante esercizio di hacking, o di un modo per raggranellare un po’ di soldi facili in vista di prodotti più seri, o anche di più di un “semplice” gioco divertente. Considerava Zork come qualcosa di completamente nuovo, qualcosa che nel suo piccolo poteva cambiare il mondo. E così incoraggiò vivamente la Infocom a costruire una community intorno a questa nascente forma d’arte. Su sua richiesta, la primissima versione di Zork includeva il seguente messaggio, scritto su un appunto all’interno dello studio dell’artista:
 
Congratulations!
You are the privileged owner of a genuine ZORK Great Underground Empire (Part I), a self contained and self maintaining universe. As a legitimate owner, you have available to you both the Movement Assistance Planner (MAP) and Hierarchical Information for Novice Treasure Seekers (HINTS). For information about these and other services, send a stamped, self-addressed, business-size envelope to:
 
Infocom, Inc.
GUE I Maintenance Division
PO Box 120, Kendall Station
Cambridge, Mass. 02142
 
A quei tempi, unirsi al club delle persone intelligenti era ancora piuttosto complicato. La lettera con l’indirizzo già scritto di cui sopra sarebbe stata ritirata da Stu Galley, che ogni giorno si recava diligentemente alle poste. A quel punto, egli spediva un foglio in cui si proponeva l’acquisto di una mappa, oltre che il definitivo servizio di indizi su misura: per un paio di dollari l’uno, la Infocom avrebbe risposto personalmente a tutte le domande!
 
La mappa era un adattamento dell’originale di Lebling, creato da Dave Ardito, un artista amico di Galley, che abbellì le linee e i rettangoli con degli orpelli di natura opportunamente avventurosa. Dornbrook, che aveva già esperienza di stampa, usò i suoi privilegi di ex alunno del MIT per stampare le mappe, nel cuore della notte, su una grande stampante normalmente destinata alla produzione di manifesti e di volantini per gli eventi del campus. In cerca d’aiuto, arruolò il suo compagno di stanza, Steve Meretzky.
 
Anche Meretzky era un ex studente del MIT, laureato nel 1979 in gestione delle costruzioni. Pur avendo frequentato la più importante università informatica del mondo, Meretzky non aveva alcuna intenzione di entrare a far parte di quel mondo. “Detestava” i computer e gli hacker. Nella sua intervista in Get Lamp, Dornbrook parla del primo approccio di Steve Meretzky con Zork. Dornbrook stava testando il gioco e si era fatto prestare un TRS-80, portandolo nel loro appartamento, dove lo aveva collocato sul tavolo della cucina.
 
Lui [Meretzky], rientrando a casa, vide il computer e disse: “Lungi da me!”, con quel tono che solo Steve sapeva usare. Cercai di dirgli: “Steve, questo ti piacerà!”. Cercavo di spiegargli come iniziare a giocarci e lui si mise le mani sulle orecchie e iniziò a urlare per non sentirmi.  
 
Ma evidentemente sentì quanto bastava. Nel corso delle successive settimane, quando tornavo a casa e mi accingevo a rimettermi a fare il beta testing, mi accorgevo che la tastiera era stata spostata di qualche centimetro o che i miei appunti erano stati leggermente mossi. Compresi che Steve ci stava giocando, ma non voleva ammetterlo. Una notte alla fine scoppiò e mi disse: “Va bene! Va bene! Mi serve un indizio!”. Lì iniziò il tracollo di Steve.
 
Di lì a poco Meretzky si candidò come beta tester e si unì a Dornbrook noi suoi progetti legati alla Infocom.
 
Fra gli extra di Get Lamp c’è un’ottima intervista a David Shaw, uno studente del MIT che scriveva sul giornale del campus, i cui uffici si trovavano proprio sopra la stampante che Dornbrook e Meretzky usavano di nascosto. Shaw era sorpreso dal fatto che la stampante “sembrava fosse sempre in funzione”, anche quando non c’erano nuovi eventi da promuovere: “Là sotto c’erano sempre i soliti due o tre tizi. Stampavano qualcosa che chiaramente non era il manifesto di un film, ed erano estremamente vaghi sull’oggetto del loro continuo stampare.” Un giorno Shaw trovò una “pila di scarti” delle mappe di Zork stampate da Dornbrook e Meretzky e comprese finalmente quel che stava accadendo.
 
Se le mappe erano uno sforzo di squadra, gli indizi ricadevano interamente su Dornbrook. Rispondeva a mano, su carta comune. Dopo un po’ si rese conto che si trattava di un impegno alquanto profittevole, seppure a volte noioso: molte delle richieste che riceveva erano solo variazioni di una manciata di identiche domande, e quindi predisporre delle risposte personalizzate non richiedeva poi tutto quel tempo che ci si sarebbe potuti aspettare (visitate la sezione della Infocom della Gallery of Undiscovered Entities per vedere delle scansioni della mappe originali e, meglio ancora, un paio di risposte scritte a mano da Dornbrook).
 
Poi Dornbrook fu accettato a un Master in “business administration” presso l’Università di Chicago, che sarebbe iniziato nell’ultimo semestre dell’anno; questo significava, ovviamente, che avrebbe dovuto lasciare Boston, rinunciando ai suoi contatti quotidiani con il gruppo della Infocom. Nessuno si sentiva in grado di rimpiazzare Dornbrook, che a questo punto era diventato (se non formalmente, di certo nei fatti) il capo delle pubbliche relazioni della Infocom. Dornbrook, preoccupato di ciò che sarebbe potuto accadere ai “suoi” fedeli clienti, cercò di convincere il Presidente Joel Berez ad assumere un dipendente che lo sostituisse. Impossibile, rispose Berez; semplicemente, l’azienda non aveva abbastanza risorse per poter impiegare una persona che si dedicasse esclusivamente ai rapporti con i clienti. Fu così che Dornbrook avanzò un’altra idea: avrebbe creato lui una nuova società, lo Zork Users Group, per vendere hint, mappe, memorabilia, e perfino i giochi della Infocom a un prezzo leggermente scontato per attirare nuovi membri del suo club, che lui avrebbe gestito da Chicago fra una lezione e l’altra. In cambio la Infocom si sarebbe liberata di questo complicato fardello. Avrebbero potuto semplicemente girare le richieste di aiuto a Dornbrook, preoccupandosi solo di fare più giochi, e migliori. Berez si disse d’accordo e lo Zork Users Group nacque ufficialmente nell’Ottobre del 1981. Avrebbe raggiunto i 20.000 membri, ma di questo parlerò meglio in futuro.
 
Per gran parte del 1981, la Infocom aveva dato per scontato che la Personal Software (il publisher del primo Zork) avrebbe pubblicato anche Zork II. Dopotutto Zork era stato un vero successo. Ed effettivamente la Personal Software rispose positivamente quando la Infocom gli parlò per la prima volta di Zork II nell’Aprile di quell’anno. Le due società dovevano addirittura firmare un contratto in Giugno. Ma un paio di mesi dopo, improvvisamente, la Personal Software si ritirò dall’accordo. E in più annunciò anche che avrebbe ritirato il primo Zork. "Cosa era accaduto?" si chiesero alla Infocom.
 
Quel che era accaduto, ovviamente, non poteva che essere VisiCalc. Dan Fylstra, fondatore della Personal Software, aveva fatto crescere la creazione di Dan Bricklin e Bob Frankston, donando loro un Apple II su cui sviluppare la loro idea. Pubblicato nell’Ottobre del 1979, VisiCalc trasformò l’industria dei microcomputer. E trasformò anche il suo publisher. La Personal Software, che fino ad allora era nota come publisher di giochi e di programmi per hobbisti, divenne di colpo “il publisher di VisiCalc”, una delle compagnie emergenti più promettenti della nazione. Per quanto fosse stato grande il successo di Zork, non era niente in confronto a VisiCalc. Già nel 1981 i giochi e il software per hobbisti costituivano meno del 10% del fatturato della Personal Software. C’è poco da meravigliarsi se spesso la Infocom avvertiva che la Personal Software avesse cambiato idea sul proprio gioco. In più, ora che l’IBM PC era all’orizzonte, la Personal Software si ritrovò corteggiata da giganti come la stessa “Big Blue”, che avevano bisogno che VisiCalc fosse disponibile anche sul loro nuovo computer. Quando anche la Microsoft iniziò a fare lo stesso, la Personal Software cominciò a trasformarsi, lasciandosi alle spalle le sue radici hacker e hobbistiche, per focalizzarsi sul mercato di VisiCalc e del software professionale, che in quel periodo stava letteralmente esplodendo. Per la prima volta iniziarono a sviluppare software internamente, sfornando tutta una linea di programmi pensati per capitalizzare il massimo profitto possibile dal nome di VisiCalc: VisiDex, VisiPlot, VisiTrend, VisiTerm, VisiFile. L’anno successivo, la Personal Software completò la propria “Visificazione”, cambiando nome in VisiCorp, ormai incamminati verso l’annichilimento in una gigantesca “VisiBotta”, che avrebbe prodotto uno dei più grandi fallimenti nella storia del software.
 
Secondo il nuovo paradigma aziendale, Zork non solo non era necessario, ma era addirittura potenzialmente pericoloso. I giochi erano l’anatema del nuovo esercito di clienti dai colletti bianchi, che di colpo avevano iniziato a comprare i PC. Le società come la Personal Software, che volevano rifornirli ed essere prese seriamente, nonostante le loro ambigue origini di hacker, iniziarono a tenersi alla larga da ogni cosa che fosse anche solo lontanamente legata all’entertainment. Tutta la linea di videogiochi sarebbe stata soppressa, vittima di quella stessa paranoia che teneva sveglio la notte Al Vezza.
 
 
Questa reazione mise la Infocom dinanzi a un bivio. Non che la cosa fosse particolarmente tragica: non mancavano di certo publisher più che lieti di metterli sotto contratto, adesso che avevano un gioco di grande successo all’attivo. Il problema era che non erano più sicuri che fosse quella la direzione in cui volevano andare. Anche se c’era certamente un certo prestigio nell’essere pubblicati dal più grande publisher del mondo, alla Infocom non sono mai stati davvero soddisfatti della Personal Software. Si sono sempre sentiti una bassa priorità. Il terribile packaging del “barbaro” di Zork portava a chiedersi se qualcuno alla Personal Software si fosse mai preso la briga di giocarci, e tutti gli sforzi pubblicitari erano apparsi sbrigativi e superficiali. Di certo la Personal Software non si era mai mostrata interessata ad aiutare la Infocom e Dornbrook a costruire una base fedele di clientela. Se davvero intendeva fare di Infocom il brand delle migliori avventure testuali del mercato, perché mai avrebbe dovuto tenere il logo di un’altra società sugli scatolati dei suoi giochi?
 
Ma, ovviamente, diventare un publisher significava per la Infocom diventare una “vera” società, anziché restare una società che faceva affari tramite una casella postale, con più personale dipendente e molti più soldi investiti. Dinanzi alla scelta fra mantenere la Infocom come una profittevole e piccola attività secondaria, o “provarci”, beh, i fondatori della Infocom scelsero questa seconda possibilità.
 
Diversi di loro contrassero un mutuo di rilevante entità per finanziare questo cambiamento. E assunsero anche un tizio chiamato Mort Rosenthal come direttore del marketing. Durò meno di un anno alla Infocom, facendosi licenziare per aver oltrepassato le proprie mansioni quando offrì i giochi della Infocom a Radio Shack con un ingente sconto pur di portarli in tutti i negozi della catena. Prima di allora però aveva fatto faville, e non solo nel marketing. Affarista di natura, secondo quanto racconta Stu Galley, egli riuscì ad assicurarsi: “un impianto di produzione in condivisione di tempo a Randolph, un’agenzia pubblicitaria a Watertown, un servizio di raccolta ordini in New Jersey, un fornitore di dischetti in California, e così via”, tutto nel giro di qualche settimana. Trovò anche il loro primo minuscolo ufficio sopra la storica Faneuil Hall Marketplace di Boston [“La Culla della Libertà”, in onore dei numerosi discorsi che vi sono stati tenuti da celebri indipendentisti americani; ndAncient]. I primi due dipendenti stipendiati che vi andarono a lavorare furono Berez, la principale mente affarista della società, e Marc Blanc, l’architetto della Z-Machine, che ormai da più di un anno aveva già lasciato il suo internato medico trasferendosi a Boston per far parte della rischiosa partita.
 
Mostrando un istinto del tutto sorprendente in un manipolo di hacker, la Infocom strinse un ultimo accordo con la Personal Software: avrebbe ricomprato le restanti copie di Zork, per impedire che esse inondassero il mercato a prezzi scontanti, svalutando così il marchio di Zork. Dovevano far uscire Zork II in tempo per Natale, e quindi lavorarono freneticamente al fianco della compagnia pubblicitaria, che Rosenthal aveva trovato, per dare un nuovo look alla serie. Lo stile che idearono era certamente molto più appropriato ed elegante del vecchio barbaro della Personal Software. E infatti ancora oggi è il “volto” ufficiale di Zork.
 
 
Ironicamente, per una società che produceva giochi testuali, il livello di raffinatezza visiva dei prodotti Infocom li contraddistingueva, già a partire dal logo classico dell’azienda, che debuttò già in questa occasione e che resterà un punto fermo per il resto della vita della società. Ma, parlando di testo, nelle pubblicità e nel packaging di Zork II troviamo già quel tono che i fan della Infocom impareranno a conoscere: un’atmosfera apparentemente casual e spiritosa, che però rifletteva un’immensa cura per i dettagli; il tutto in un’epoca dove la maggior parte dei publisher sembra non preoccuparsi nemmeno dell’ortografia dei suoi prodotti. Rispetto a tutti gli altri, la Infocom è sempre apparsa un po’ più di classe, un po’ più brillante, e un po’ più adulta. Ed è un'immagine che sicuramente gli ha giovato.
 
La prossima volta accetteremo l’invito qui sopra e ci tufferemo in Zork II, che riuscì per davvero a uscire in tempo per Natale.

The Digital Antiquarian è un blog, scritto da Jimmy Maher, che si occupa di storia e di cultura del videogioco partendo dall'analisi di singoli videogiochi. OldGamesItalia è lieta di presentarvi la traduzione italiana, autorizzata dall'autore!
Se anche voi apprezzerete questo interessantissimo blog, non mancate di visitare la pagina ufficiale (in lingua inglese) e di sostenerlo tramite Patreon.
Traduzione a cura di: The Ancient One
Editing a cura di: Festuceto


Consulta l'indice per leggere gli articoli precedenti

Visita il sito ufficiale di The Digital Antiquarian
Discutiamone insieme sul forum di OldGamesItalia!

 

ZIL e la Z-Machine
The Digital Antiquarian (la traduzione ufficiale italiana)


Bentrovati fedeli lettori di OldGamesItalia e del Digital Antiquarian, vi siete mai chiesti come sia possibile giocare a Zork sui moderni computer e tablet? Nulla di più semplice: per prima cosa, come ogni avventuriero che si rispetti, munitevi di foglio e matita, poi scaricate la nostra epica traduzione di Zork, infine procuratevi un interprete di Z-Machine.
La Z-Machine, ecco, è solo grazie alla mitica "Macchina Z" se Zork e la sua ricca eredità sono stati convertiti per una moltitudine di piattaforme e giocati da milioni di persone per decenni fino ai giorni nostri, un'impresa che nel 1979 era quasi impossibile... ma non per Joel Berez e Marc Blank
L'Antiquario ci trasporta in quel delicato momento della storia di Infocom.
 
La rassicurante lista degli articoli del ciclo Infocom:
 
 
Lo ZIL e la Z-Machine
Come Vendettero Zork
Giochi col Parser
Esplorando Zork, Parte 1
Esplorando Zork, Parte 2
Esplorando Zork, Parte 3
Infocom: Come Cavarsela da Soli
Zork II, Parte 1
Zork II, Parte 2
Lo Zork User Group
Zork III, Parte 1
Zork III, Parte 2
 
Buona lettura avventurieri... e non perdete la bussola!
 
Festuceto
 
Quando ci siamo lasciati l’ultima volta, Marc Blank e Joel Berez stavano valutando come portare Zork sui microcomputer. In realtà stavano cercando di risolvere tre problemi interconnessi. A costo di risultare pedante, lasciate che ve li riassuma:
 
1. Come portare Zork (un gioco enorme, che consumava 1 MB di memoria sul PDP-10) sui microcomputer di fascia più bassa che avevano selezionato: Apple II o TRS-80 con 32 K di RAM e un singolo floppy-disk.
 
2. Come farlo in modo che fosse facilmente convertibile per altre piattaforme, affinché fosse il più indolore possibile trasportare Zork non solo sull’Apple II e sul TRS-80, ma anche (se tutto fosse andato bene) sulle molte altre piattaforme incompatibili, presenti e future.
 
3. Come usare il codice sorgente esistente di Zork in MDL come base per una nuova versione per microcomputer, piuttosto che dover ripartire da zero e implementare da capo il gioco su un qualche nuovo ambiente di programmazione.
 
Volendo potete considerare questo elenco come una classifica di problemi in ordine di importanza, da “assolutamente essenziale” fino a “non sarebbe male”. Ma non è strettamente necessario, perché -come vedremo di qui a poco- Blank e Berez (col successivo aiuto degli altri) riuscirono a risolverli tutti in modo assolutamente brillante. Vorrei potermi occupare singolarmente di ognuno di questi problemi, ma (come sa chiunque si sia cimentato con delle complicate mansioni di programmazione) le soluzioni tendono a intrecciarsi l’una con l’altra. Quindi mi limiterò a chiedervi di tenere a mente questi tre obbiettivi, mentre io vi spiegherò come funzionava nel suo insieme il progetto di Blank e Berez.
 
Quando ci troviamo davanti a un gioco troppo grande per essere accomodato in un nuovo ambiente, la soluzione più ovvia sarebbe quella di rendere semplicemente il gioco più piccolo, rimuovendo dei contenuti. E questa è appunto una di quelle cose che la Infocom fece con Zork. Stu Galley:
 
Dave esaminò la sua mappa completa di Zork e tracciò un confine intorno a una porzione della stessa che includeva circa 100 location: tutte le stanze all’aperto e un’ampia sezione intorno alla Round Room. Lo scopo era quello di creare uno Zork più piccolo, che rientrasse nei limiti fissati dal progetto di Joel e Marc. Tutto quello che restava fuori sarebbe stato messo da parte per un altro gioco, da realizzare in un altro momento.
 
Dimezzando il mondo di Zork, la Infocom potette ridurre drasticamente le dimensioni del gioco. 191 stanze divennero 110; 211 oggetti divennero 117; 911 parole conosciute dal parser divennero 617. Non era la soluzione definitiva ai loro problemi, ma di certo aiutava, lasciandoli comunque con in mano un gioco enorme, delle dimensioni approssimative simili a quelle dell’originale Adventure come numero di stanze, ma capace comunque di annichilirlo in termini di oggetti e di parole, e che era comunque più grande di ogni altro gioco d’avventura per microcomputer. E, come spiega Galley qui sopra, li lasciava comunque in possesso di abbondante materiale con cui costruire un possibile seguito.
 
Altri risparmi potevano essere conseguiti spostando l’attenzione sul compilatore per MDL. Essendo un linguaggio progettato per eseguire molti compiti di computazione generici, molte delle capacità dell’MDL risultavano ovviamente inutilizzate in un gioco d’avventura come Zork. Ma, anche se inutilizzate, esse consumavano comunque memoria preziosa. La Infocom dette un paio di sforbiciate all’MDL, proprio come avevano fatto con il mondo di Zork, eliminando le librerie e la sintassi superflua, e tenendo solo ciò che era strettamente necessario per implementare un gioco d’avventura. Chiamarono il nuovo linguaggio ZIL (Zork Implementation Language [“Linguaggio per l’Implementazione di Zork”; ndAncient]), mentre il compilatore che attivava il linguaggio (che girava ancora su un PDP-1) lo chiamarono Zilch. Lo ZIL restò abbastanza simile, come sintassi e impostazione di base, all’MDL, tanto è vero che convertire Zork verso lo ZIL fu piuttosto indolore, ma nonostante ciò il nuovo linguaggio non solo produceva degli eseguibili più compatti e più veloci, ma era anche molto più pulito sintatticamente. Infatti lo ZIL incoraggiò la Infocom non solo a convertire Zork per il nuovo linguaggio, ma anche a migliorarlo da molti punti di vista; in particolare fu il parser che, implementato nel più congeniale ZIL, divenne ancora migliore.
 
Questa è la lanterna di Zork in MDL:
 
<OBJECT ["LAMP" "LANTE" "LIGHT"]
["BRASS"]
"lamp"
<+ ,OVISON ,TAKEBIT ,LIGHTBIT>
LANTERN
()
(ODESCO "A battery-powered brass lantern is on the trophy case."
ODESC1 "There is a brass lantern (battery-powered) here."
OSIZE 15
OLINT [0 >])>
 
E questo è il medesimo oggetto in ZIL:
 
<OBJECT LANTERN
                (LOC LIVING-ROOM)
                (SYNONYM LAMP LANTERN LIGHT)
                (ADJECTIVE BRASS)
                (DESC "brass lantern")
                (FLAGS TAKEBIT LIGHTBIT)
                (ACTION LANTERN-F)
                (FDESC "A battery-powered lantern is on the trophy
               case.")
                (LDESC "There is a brass lantern (battery-powered)
               here.")
                (SIZE 15)>
 
Per i posteri darò una veloce spiegazione del codice ZIL mostrato qui sopra. La prima linea semplicemente ci dice che quel che segue descriverà un oggetto chiamato “lanterna”. La linea successiva ci dice che esso si trova nel soggiorno della casa bianca. Poi vediamo che il giocatore si può riferire a esso anche con i termini “lamp,” “lantern,” or “light,”, con l’aggettivo opzionale di “d’ottone” (che del resto può rivelarsi utile per distinguerla dalla lanterna rotta che si trova in un’altra zona del gioco). Quella che viene chiamata descrizione breve (e cioè, con maggior precisione, il nome col quale appare nell’inventario e in altri punti dove deve essere inserito nel testo) è “lanterna d’ottone”. Il flag TAKEBIT indica che è un oggetto che il giocatore può raccogliere e portare in giro con sé; il flag LIGHTBIT significa che proietta luce, illuminando qualunque stanza buia in cui viene lasciato o trasportato.  LANTERN-F è la speciale routine d’azione della lanterna: un pezzo di codice che ci permette di scrivere delle “regole” speciali per la lanterna, che valgono solo per essa, come ad esempio le routine che permettono al giocatore di accenderla e di spegnerla (come ho spiegato in precedenza, questo livello di programmabilità e il conseguente approccio “orientato agli oggetti” era ciò che davvero contraddistingueva l’MDL -e di conseguenza lo ZIL- da tutti gli altri sistemi di sviluppo di avventure testuali dell’epoca). FDESC è la descrizione della lanterna che appare prima che essa sia spostata, e quindi come parte della descrizione della stanza del soggiorno; LDESC invece appare dopo che l’oggetto è stato spostato e depositato altrove. Per finire, SIZE determina le dimensioni e il peso della lanterna ai fini di stabilire quanto il personaggio possa trasportare con sé in un certo momento. Vi lascerò come esercizio quello di tradurre il più caotico codice per MDL...
 
E così a questo punto la Infocom aveva in gran parte risolto il problema n° 3 e aveva fatto dei grandi passi in avanti con il problema n° 1. Il che però li lasciava ancora con in mano il problema n° 2. Probabilmente state pensando che fosse abbastanza facile progettare un’accoppiata engine/database simile a quella ideata da Scott Adams. La verità però è che era assai problematico. Vi ricorderete infatti che una delle cose che rendevano unico l’ambiente di sviluppo di Zork (che fosse l’MDL o lo ZIL) era la sua programmabilità. Passare a una soluzione simile a quella di Adams avrebbe significato sacrificare proprio questo e, nel mezzo, anche lo ZIL. Perché lo ZIL funzionasse doveva poter eseguire del codice che gli consentisse di gestire le interazioni speciali (come, appunto, l’accensione e lo spegnimento della lanterna); doveva, in altre parole, essere un vero linguaggio di programmazione “Turing-complete” e non un mero sistema di inserimento dati. Ma come riuscirci senza rinunciare ad avere un sistema che fosse anche portabile da macchina a macchina (incompatibile)? La risposta: avrebbero ideato una macchina virtuale, un computer immaginario ottimizzato proprio per giocare alle avventure testuali (proprio come lo ZIL era ottimizzato per scriverle) e poi avrebbero scritto il codice di un interprete che avrebbe simulato quel computer su ogni piattaforma per cui avrebbero voluto pubblicare Zork.
 
Oggi le macchine virtuali sono ovunque. Le app del vostro smartphone Android in realtà girano dentro una virtual machine. Potete utilizzare qualcosa tipo VMWare sul vostro computer per utilizzare Linux dentro Windows, o viceversa. I grandi mainframe e, sempre di più, anche i server di fascia alta hanno sistemi operativi tipo Linux che funzionano all’interno di macchine virtuali astratte dal sottostante hardware; ciò, fra i vari benefici, permette anche di suddividere un unico gigantesco mainframe in tanti mainframe più piccoli. A parte gli scenari di questo tipo, le virtual machine sono così interessanti essenzialmente per due motivi; e virtualmente (ah!) chiunque decida di usarle lo fa per un motivo o per l’altro, o per entrambi. Innanzitutto sono molto più sicure. Se un codice malevolo (come un virus) viene introdotto in una macchina virtuale, rimane al suo interno, anziché infettare l’intero sistema che la ospita, e il codice che manda in crash la virtual machine (che lo faccia intenzionalmente o accidentalmente) in realtà manda in crash solo la virtual machine stessa, e non tutto il sistema che la ospita. La seconda cosa è che una virtual machine consente di eseguire lo stesso programma su macchine che sarebbero altrimenti incompatibili. È un caso di “scrivilo una volta e poi gira ovunque”, come erano soliti ripetere i sostenitori di Java. Nel loro caso, ogni piattaforma su cui doveva girare il programma in questione doveva solo essere dotata di un’implementazione aggiornata della virtual machine di Java (non necessariamente il linguaggio, anche solo la virtual machine). Le macchine virtuali hanno però anche un grosso svantaggio: poiché la piattaforma che le ospita sta emulando un altro computer, tendono a essere molto più lente dello stesso codice sorgente eseguito direttamente sulla propria piattaforma (lo so, tecnologie come la compilazione just-in-time possono fare molto per alleviare questo difetto, ma qui non è il caso di addentrarsi ulteriormente nell’argomento). Tuttavia oggi il potere computazionale è poco costoso e molto diffuso, e quindi questo in genere non è un grande problema. E infatti la situazione attuale può diventare a tratti anche abbastanza ridicola: la mia versione per Kindle di The King of Shreds and Patches è costruita su una virtual machine (Glulx) che viene eseguita dentro un’altra virtual machine (quella di Java), il tutto eseguito su un minuscolo lettore portatile... e nonostante questo le performance restano accettabili.
 
Già nel 1979 le virtual machine non erano un’idea nuova. Fra il 1965 e il 1967 un team dell’IBM aveva lavorato in stretto contatto con il Lincoln Laboratory del MIT per creare un sistema operativo chiamato CP-40, nel quale fino a 14 utenti potevano loggarsi all'interno di un proprio computer mono-utente, interamente simulato da un software eseguito su un grande mainframe della IBM. In seguito il CP-40 divenne la base del sistema operativo opportunamente chiamato VM, pubblicato per la prima volta dalla IBM nel 1972 e ancora oggi largamente usato sui mainframe odierni. Nel 1978 un’implementazione in Pascal, nota come UCSD Pascal introdusse la P-Machine, una macchina virtuale portatile che consentiva ai programmi scritti in UCSD Pascal di girare su molte macchine diverse, incluso perfino l’Apple II (in seguito alla pubblicazione dell’Apple Pascal nell’agosto del 1979). Proprio la P-Machine ebbe una grande influenza sulla virtual machine della Infocom, la Z-Machine.
 
Nell’optare per una virtual machine, dovettero ovviamente pagare (come con ogni altra virtual machine) la penalità in termini di performance, ma essa non era troppo severa come invece ci si aspetterebbe. Proprio come avevano ottimizzato lo ZIL, Blank e Berez resero infatti la Z-Machine il più leggera ed efficiente possibile, includendovi solo quelle caratteristiche davvero utili per eseguire un’avventura testuale. E poi avrebbero implementato l’interprete di ogni piattaforma solo in un linguaggio assembly altamente ottimizzato, col risultato che Zork (pur girando all’interno di una virtual machine) girava comunque molto, molto più velocemente delle tipiche avventure scritte in BASIC di quegli anni. E infatti il potere computazionale dei microcomputer, per quanto limitato, non era mai stato la loro preoccupazione principale durante la conversione di Zork: il vero collo di bottiglia era la memoria. Sì, avrebbero dovuto sacrificare della memoria aggiuntiva per l’interprete, ma ne avrebbero risparmiata ancora di più lavorando sull’efficienza della Z-Machine. Per esempio, una speciale codifica gli permetteva di immagazzinare la maggior parte dei caratteri in 5 bit invece che in 8 bit, e gli permetteva di rimpiazzare le parole più comunemente usate con delle loro abbreviazioni. Una tale compressione del testo era molto rilevante, specie se consideriamo che, dopotutto, è il testo che compone la maggior parte di un'avventura testuale. Con tali tecniche di compressione, insieme alle sforbiciate al gioco stesso e al linguaggio ZIL, finirono per avere un gioco di soli 77 K di dimensioni, senza ovviamente considerare l’interprete della macchina virtuale che era necessario per eseguirlo; quest’ultimo fu chiamato Zip (da non confondersi ovviamente con il formato di compressione dei file). Il file del gioco da 77 K, che la Infocom iniziò a chiamare “story file” [“file della storia”; ndAncient] è sostanzialmente uno "snapshot" della memoria della virtual machine.
 
Quando parliamo di capacità di immagazzinamento di un computer, in realtà stiamo parlando (confondendo così genitori e nonni di tutto il mondo) di due quantità separate: la capacità su disco e la capacità di memoria (RAM). Un Apple II poteva contenere 140 K su un singolo dischetto, mentre il TRS-80 in realtà faceva un po’ meglio con i suoi 180 K. E così ora la Infocom aveva un gioco che poteva essere comodamente alloggiato, insieme al suo necessario interprete, su un singolo dischetto. Il problema era la RAM: anche dimenticandoci il necessario interprete, 77 K non entrano in 32 K, per quanto ci si sforzi di ficcarceli. Oppure sì?
 
Non era la prima volta nemmeno in quegli anni che si sentiva usare il disco come una sorta di memoria secondaria, leggendo dei pezzetti di dati e trasferendoli nella RAM, per poi scartarli quando non erano più necessari. La Microsoft aveva usato proprio questa tecnica per infilare Adventure nei 32 K del TRS-80: ogni pezzo di testo, tutti immagazzinati in un file esterno al gioco stesso proprio come nel progetto originale di Crowther e Woods, veniva letto dal disco solo quando doveva andare a schermo. Tuttavia il sofisticato sistema orientato agli oggetti della Infocom mischiava necessariamente testo e codice, rendendo quantomeno poco pratico un tale approccio. Per questo Blank e Berez si spinsero un passo oltre: avendo già progettato una virtual machine, vi aggiunsero un’implementazione della memoria virtuale.
 
Anche il concetto di memoria virtuale non era nuovo, in generale, nel mondo dell’informatica. E infatti la memoria virtuale risale ancora più indietro nel tempo delle virtual machine, fino a uno dei primi supercomputer, sviluppato dalla University of Manchester e chiamato Atlas, che era stato ufficialmente commissionato nel 1962. In un sistema con memoria virtuale, ogni programma non ha un punto di vista “onesto” sulla memoria fisica del computer host. In sostanza gli viene data una mappa “idealizzata” della memoria, che potrebbe avere ben poco a che fare con il vero layout della RAM fisica del computer che lo ospita. Quando legge e scrive dei pezzi di questa mappa, l’host automaticamente traduce gli indirizzi virtuali in indirizzi reali dentro la sua memoria fisica, in modo trasparente. Ma perché mai fare una cosa del genere, specialmente se consideriamo che produce necessariamente uno spreco di risorse? Anche stavolta per due principali ragioni, entrambe le quali di solito si considerano applicabili solo a sistemi operativi multitasking (che ovviamente erano poco più di un sogno per i microcomputer del 1979 o del 1980). Per prima cosa, isolando la memoria di ciascun programma da quella di ogni altro (oltre che da quella del sistema operativo) la memoria virtuale si assicura che un programma non possa (per malizia o semplicemente a causa di bug) corrompersi e danneggiare altri programmi, se non addirittura far crashare l’intero sistema. Per seconda cosa, la memoria virtuale fornisce al computer una specie di “seconda spiaggia”, un’alternativa al semplice fallimento di sistema, qualora un programma (o più programmi) in esecuzione chiedessero più memoria fisica di quella concretamente disponibile. Quando ciò accade, il sistema operativo cerca nella propria memoria dei pezzi che non vengono usati spesso. A quel punto li archivia nella cache su disco, facendo così spazio nella RAM fisica per allocare la nuova richiesta. Quando si deve accedere nuovamente alle aree così archiviate nella cache, esse devono essere riportate nella RAM, possibilmente scambiandole con altri chunk, se la memoria è scarsa. Tutto ciò avviene in modo trasparente rispetto al programma (o ai programmi) in questione, che continuano a vivere all’interno del loro punto di vista idealizzato sulla memoria, gioiosamente ignari di quanto il sistema sottostante stia in realtà ansimando per tenere tutto in piedi. La memoria virtuale ormai è con noi da molti anni nel mondo dei PC desktop. In uno schema del genere c’è inevitabilmente un punto in cui il gioco non vale più la candela: se avete provato ad aprire tantissime finestre o programmi su un vecchio PC, avrete notato che tutto diventava terribilmente lento, mentre l’hard disk lavorava come un mulino; ecco, adesso sapete quello che stava succedendo dietro le quinte (sempre che non lo sapeste già; qui al The Digital Antiquarian non presupponiamo nessun livello di conoscenze tecniche nei nostri lettori).
 
Per la Z-Machine, Berez e Blank adoperarono una versione molto più semplice della memoria virtuale rispetto a quella che oggi troviamo in sistemi operativi come Windows, Linux, o OS X. E se certe importanti informazioni dinamiche (come la posizione attuale di oggetti all’interno del mondo di gioco) deve essere sempre tracciata e aggiornata dinamicamente, la gran parte dei dati che compongono un gioco come Zork è in realtà statica e non cambia nel tempo: tanto, tanto testo, ovviamente, mischiato a un bel po’ di codice. Berez e Blank riuscirono a progettare il compilatore ZIL in modo tale che esso collocasse tutta la roba che poteva realisticamente cambiare (e che noi chiameremo “dati dinamici”) all’inizio dello story file. Tutto il resto (che noi chiameremo “dati statici”) veniva dopo. Ebbene, dei 77 K dello story file di Zork, solo 18 K erano di dati dinamici. Ecco quello che fecero, quindi...
 
I dati dinamici (cioè la memoria in cui la virtual machine avrebbe scritto, oltre che letto) è sempre immagazzinata nella RAM del computer host. I dati statici tuttavia sono caricati e scaricati dalla RAM ad opera dell'interprete, secondo il bisogno, in blocchi di 1 K chiamati “page” [“pagine”; ndAncient]. In altre parole: dal punto di vista del gioco, esso ha 77 K di memoria con cui lavorare. L’interprete nel frattempo scambia freneticamente blocchi di memoria dentro e fuori dalla molto più limitata RAM fisica, per mantenere in piedi questa illusione. Come la virtual machine, anche la memoria virtuale porta ovviamente con sé un rallentamento, ma è un male necessario. Su un sistema a 32 K, con 18 K riservati ai dati dinamici, la Infocom aveva ancora 14 K liberi per ospitare al loro interno l’interprete della macchina virtuale, un piccolo “stack” (cioè un’area dove i programmi immagazzinano le informazioni temporanee di cui hanno bisogno per il “moment-to-moment processing”) e una “page” o due di memoria virtuale. Certo alle volte poteva rallentare vistosamente, ma funzionava. E, quando veniva avviato su un sistema con, ad esempio, 48 K, l’interprete se ne accorgeva automaticamente e usava questa memoria addizionale per tenere più dati statici nella RAM fisica, velocizzando così il tutto e ripagando l’utente per il suo investimento nell’hardware.
 
Con l’impianto ZIL / Z-Machine, la Infocom aveva creato un sistema, robusto e riutilizzabile, che avrebbe potuto godere di vita propria ben al di là del compito specifico di infilare Zork sul TRS-80 e sull’Apple II. Sono certo di non spoilerare niente a nessuno, se vi svelo già adesso che ciò è esattamente ciò che accadde.
 
Forti di tali fondamenta tecniche, la prossima volta osserveremo il percorso che portò infine Zork sul mercato.  

The Digital Antiquarian è un blog, scritto da Jimmy Maher, che si occupa di storia e di cultura del videogioco partendo dall'analisi di singoli videogiochi. OldGamesItalia è lieta di presentarvi la traduzione italiana, autorizzata dall'autore!
Se anche voi apprezzerete questo interessantissimo blog, non mancate di visitare la pagina ufficiale (in lingua inglese) e di sostenerlo tramite Patreon.
Traduzione a cura di: The Ancient One
Editing a cura di: Festuceto


Consulta l'indice per leggere gli articoli precedenti

Visita il sito ufficiale di The Digital Antiquarian
Discutiamone insieme sul forum di OldGamesItalia!