Entombed è un gioco per Atari 2600 che nessuno sa come è stato programmato

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 pubblicata il , alle 18:41 nel canale Videogames
Atari
 

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.

Entombed

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.

24 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
astaroth218 Giugno 2020, 19:47 #1
4kbytes si e no di codice da esaminare. Ammazza! Avrebbero messo in ginocchio anche denuvo questi qui.
LORENZ018 Giugno 2020, 20:33 #2
"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."

Vi sta pigliando per i fondelli, #sapevatelo
(e fa bene!)
hrossi19 Giugno 2020, 09:54 #3
Originariamente inviato da: LORENZ0
"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."

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
mail9000it19 Giugno 2020, 11:22 #4

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.
supertigrotto19 Giugno 2020, 14:22 #5
È quello che sostengo da anni,i vecchi programmatori erano più bravi e creativi di quelli moderni,dovevano scervellarsi per far funzionare bene un programma con pochi kb.
Con i tempi moderni e le potenze messe a disposizione,il programma risulta veloce anche se programmato con i piedi.
Saturn19 Giugno 2020, 14:26 #6
Originariamente inviato da: astaroth2
4kbytes si e no di codice da esaminare. Ammazza! Avrebbero messo in ginocchio anche denuvo questi qui.


mally19 Giugno 2020, 14:40 #7
peccato che qui > https://en.wikipedia.org/wiki/Entombed_(Atari_2600) ci sia la spiegazione di come funziona il sistema di generazione del labirinto
mally19 Giugno 2020, 14:42 #8
poi la storia non ha alcun senso, anche scrivendo codice sotto stato di alterazione il sorgente resta, non è che si trasforma magicamente in compilato e non si puo' piu' leggerlo...
jepessen19 Giugno 2020, 14:43 #9
Originariamente inviato da: supertigrotto
È quello che sostengo da anni,i vecchi programmatori erano più bravi e creativi di quelli moderni,dovevano scervellarsi per far funzionare bene un programma con pochi kb.
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?
jepessen19 Giugno 2020, 14:45 #10
Originariamente inviato da: mally
peccato che qui > https://en.wikipedia.org/wiki/Entombed_(Atari_2600) ci sia la spiegazione di come funziona il sistema di generazione del labirinto


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?

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".

La discussione è consultabile anche qui, sul forum.
 
^