Come può tutto questo essere contenuto in 64kb?

45

Quindi, sono qui all'assemblea del 2011 e questa demo è stata riprodotta: link

È un solo file, lo dice nelle regole. Quindi ripeto, come hanno fatto questo per adattarsi a un file così piccolo?

    
posta Samuli Lehtonen 06.08.2011 - 23:39
fonte

5 risposte

39

È basato su procedurale . Il contenuto non è incluso nell'exe, solo le regole su come disegnarlo. Una volta avviato, il programma disegna ciò di cui ha bisogno in fase di runtime, non è pre-eseguito o pre-salvato in alcuna forma.

Questo è lo stesso metodo utilizzato da Elite per creare un vasto universo di sistemi stellari, ecc.

È piuttosto sorprendente ciò che è possibile oggi usando la generazione procedurale, penso che i giochi presenteranno più di questo in futuro.

    
risposta data 07.08.2011 - 00:04
fonte
10

Come dice @Gary Willoughby, è molto procedurale.

Inoltre, vi è una significativa partecipazione della codifica asm , insieme a una vasta conoscenza di quanti dei sistemi Windows / Platform of Choice lavorano internamente.

C'è anche una categoria demo 4K, se vuoi vedere esempi ancora più estremi di codice compatto.

Alcuni dei gruppi DemoScene pubblicano i loro demo online, dove puoi scaricarli e riprodurli se vuoi.

Conspiracy
farb-rausch

Vedi anche Wikipedia sulla storia di DemoScene

Nota: molte demo causeranno il tuo antivirus fuori di testa . Fondamentalmente sembra che praticamente tutte le demo utilizzino file .exe compressi, e la maggior parte dei gruppi demo lancia i propri packer. Sfortunatamente, poiché molte aziende AV sono zoppe, generalmente affermano che qualsiasi eseguibile binario compatto è un virus di qualche tipo.

    
risposta data 07.08.2011 - 07:28
fonte
4

Come tutti dicono che si affida ampiamente al codice generato procedurale, ma c'è ancora di più su questa demo in particolare, se ti fermi e guardi alcuni dettagli, per esempio vedi quei muri: guarda i mattoni e come la luce si riflette su di loro. Sembrano naturali.

Questo perché utilizzano molti vertex shader e framment shader per dare vita al contenuto generato.

Ho dedicato qualche volta a cercare di capire come fanno queste cose, e mi meraviglio di ogni pezzo di codice che ho preso da quelle demo.

BTW, quando fai queste demo usano anche strumenti di compressione per spremere ancora di più. controlla questo processo di compilazione:

all:
nasm -f bin -o intro main.asm
nasm -f bin -o stub stub.asm
gzip -n --best intro
advdef -z -4 intro.gz
cat stub intro.gz > intro
chmod +x intro
rm intro.gz
rm stub
    
risposta data 09.08.2011 - 01:35
fonte
3

C'è una presentazione in PowerPoint su come è stato eseguito il rendering in questa demo specifica. Questo da solo non spiega come tutto si adatti a 64 kilobyte, ma è la chiave per come la geometria è stata creata in un così piccolo spazio.

C'è anche un sacco di letture interessanti nel suo blog sulle sue altre produzioni demercene.

    
risposta data 04.06.2013 - 09:40
fonte
1

Come altri hanno già affermato, molto di questo si basa su risorse generate proceduralmente.

C'è un altro elemento, che è la compressione. Le demo 4k e 64k utilizzano compressori eseguibili altamente specializzati. I più famosi di questi sono kkrunchy di farbrausch (per 64k) e crinkler di TBC & Loonies (per 4k). Inoltre, i demo moderni fanno un uso pesante degli shader, che sono di testo normale e quindi diventano notevolmente più piccoli dopo la compressione.

Ora, per quanto riguarda l'integrazione nei videogiochi, il problema principale è che tutto ciò richiede tempo. La generazione di contenuto procedurale richiede tempo e l'estrazione dell'eseguibile richiede un'enorme quantità di tempo. E in genere le persone hanno più spazio sui loro dischi rigidi del tempo da spendere in attesa del caricamento del gioco, quindi non penso che ne vedremo molto nei giochi ampiamente disponibili in qualsiasi momento.

    
risposta data 09.08.2011 - 11:11
fonte

Leggi altre domande sui tag