Entombed è un gioco per Atari 2600 che nessuno sa come è stato programmato
Esistono dei veri e propri "archeologi" digitali che studiano le tecniche di sviluppo dei vecchi giochi per le console Atari mirate a eludere gli stringenti limiti degli hardware di allora. Uno in particolare ha richiesto degli studi molto approfonditi...
di Rosario Grasso pubblicata il 18 Giugno 2020, alle 18:41 nel canale VideogamesAtari
I vecchi giochi Atari molto spesso custodiscono delle soluzioni di programmazione decisamente geniali, considerati i limiti delle console su cui dovevano girare. Diversi studiosi ancora oggi cercano di capire il funzionamento dei metodi impiegati, anche perché certe tecniche possono essere trasposte alle modalità di sviluppo di oggi. Loro approfondiscono il codice dei vecchi giochi per capire come sono stati fatti, ma con un titolo in particolare incontrano tutt'oggi diverse difficoltà.
Entombed è un gioco per il mitico Atari 2600 rilasciato nel 1982. Porta i giocatori ad esplorare un labirinto che scorre in senso verticale e schivare i nemici. Poiché le prime cartucce per i giochi non disponevano di abbastanza spazio per l'archiviazione dei contenuti, lo sviluppatore di questo gioco pensò a un'ingegnosa tecnica di generazione procedurale. Fondamentalmente il labirinto veniva generato in tempo reale a seconda di ciò che succedeva nel gioco, perché altrimenti sarebbe stato troppo grande da poter immagazzinare nella sua interezza nella cartuccia.
Questo gioco è stato studiato da vari gruppi di ricerca, e recentemente da John Aycock, dell'Università di Calgary, in Alberta, Canada, e da Tara Copplestone, dell'Università di York, in Inghilterra, come ha raccontato la BBC. I ricercatori si sono concentrati proprio su come si forma il labirinto e, nello specifico, su come il gioco decide se il quadrato successivo deve essere un muro o un spazio percorribile dal personaggio. In termini informatici, è "1" se è un muro o "0" se è uno spazio vuoto.
L'algoritmo di generazione procedurale stabilisce se si tratta di un "1" o di uno "0" seguendo una tabella immagazzinata nel codice del gioco. Questa variabile viene sovrapposta ai valori determinati da una tessera che si forma di cinque quadrati e che assomiglia a uno dei tasselli del Tetris. Ogni area del labirinto segue uno schema e, a seconda di come è disposto il tassello e del valore restituito dalla tabella, viene stabilito come deve essere creato il quadrato successivo.
Tuttavia, nessuno si spiega come la tabella è stata creata. Aycock e Copplestone hanno cercato di capire come funziona il codice attraverso ingegneria inversa, ma non sono riusciti a giungere a una soluzione. La tabella ha un funzionamento logico, perché in caso contrario il gioco potrebbe generare labirinti non completamente percorribili e ingiocabili, ma questo in Entombed non capita mai. Inoltre, i labirinti sono sempre diversi a ogni partita.
La migliore ipotesi formulata dalla coppia di ricercatori è che il programmatore che ha scritto l'algoritmo originale del labirinto deve aver messo a punto manualmente i valori della tabella. Risalire agli autori originali di questi capolavori di programmazione è molto complicato, perché i riferimenti si sono persi nel tempo. Durante la loro ricerca, tuttavia, Aycock e Copplestone sono riusciti a consultare una delle persone coinvolte nella realizzazione del gioco, Steve Sidley.
Anche Sidley ha ammesso di essere rimasto molto sorpreso dal funzionamento di questo algoritmo. Ha rivelato che questo sistema è frutto del lavoro di uno sviluppatore in un momento in cui non si trovava in uno stato di assoluta sobrietà. "Lo ha creato mentre era ubriaco e il suo cervello in panne. Quando è tornato sobrio non si ricordava più come aveva fatto" ha detto Sidley alla BBC.
Studiare il funzionamento del codice dei vecchi giochi, i quali andavano incontro a limitazioni hardware che oggi guardiamo con simpatia, può essere molto utile per gli sviluppatori di oggi, in particolare per chi lavora sulla VR o altre piattaforme con risorse limitate. Se hai trovato interessante questo contenuto probabilmente vorrai capire anche come l'IA può sostituire il motore grafico di un gioco.
21 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoVi sta pigliando per i fondelli, #sapevatelo
(e fa bene!)
Vi sta pigliando per i fondelli, #sapevatelo
(e fa bene!)
giustissimo, altrimenti risalire al programmatore sarebbe stato semplicissimo, invece anche questa informazione è andata persa tra i fumi della perculata
Della serie, ottimizzazione questa sconosciuta
Sono così tanti anni che nessuno fa ottimizzazione nello sviluppo che si è perfino persa conoscenza del concetto (per non parlare delle tecniche) e occorre studiarsi il software di 30 anni fa.Il triste è che lo vedo anche con il software applicativo, non c'è la minima attenzione alle prestazioni. Esempio lampante: due select consecutive su due tabelle diverse invece di utilizzare una join per avere i due valori con una sola select.
Imbarazzante.
Con i tempi moderni e le potenze messe a disposizione,il programma risulta veloce anche se programmato con i piedi.
Con i tempi moderni e le potenze messe a disposizione,il programma risulta veloce anche se programmato con i piedi.
Quindi se non programmano in assembler sono degli sfigati? Se gli architetti non progettano una casa sistemando ogni singolo mattone invece di utilizzare un CAD apposito e' pure uno sfigato? E magari se sei un ingegnere elettronico se non metti tu ogni singolo transistor il circuito fa cagare... Ogni generazione utilizza i tool piu' avanzati di cui dispone, esattamente quale sarebbe il problema?
Esattamente come dice l'articolo, la pagina wiki dice che viene utilizzata una look-up table, ma come hanno fatto a generarla e perche' funziona sempre ancora non e' chiaro. Esattamente cosa dice di diverso questa pagina?
Per prima cosa, i sorgenti non sono disponibili, hanno analizzato direttamente il binario. In seconda battuta, i giochi si programmavano in assembler, quindi non e' che era molto diverso dal codice binario, a parte i commenti che potevano chiarire un po' di cose, ovviamente solamente se c'erano.
Interpretare da zero un programma non scritto da te e dissassemblato dal linguaggio macchina secondo me può essere ben più problematico.
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".