Come può adattarsi a 64kb?


45

Quindi, sono qui all'assemblea del 2011 e questa demo è stata giocata: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded

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


Questa demo può essere scaricata? Vorrei vedere come funziona quando eseguito localmente.
David,


Naturalmente ci sono diversi megabyte di librerie di sistema senza le quali questa cosa non sarebbe in grado di disegnare un singolo poligono ...
hobbs

2
Come qualcuno che crea attivamente introduzioni da 64kB, ho scritto questo articolo: ctrl-alt-test.fr/?p=494 (Come possono le produzioni demoscene essere così piccole?). TL; DR: generazione procedurale, compressione e molto lavoro extra.
Laurent

1
@TeamUpvote No, è tutto in C ++. Per scendere sotto i 12kB, è necessario sbarazzarsi della libreria standard. Se usi Visual C ++, puoi trovare esempi qui: github.com/laurentlb/Ctrl-Alt-Test/tree/master/F e iquilezles.org/code/framework64k/framework64k.htm .
Laurent,

Risposte:


39

È basato su una procedura . Il contenuto non è incluso nell'esempio, solo le regole su come disegnarlo. Una volta avviato, il programma disegna ciò di cui ha bisogno in fase di runtime e non è pre-renderizzato o pre-salvato in nessuna forma.

Questo è lo stesso metodo usato 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.


Ho solo pensato che le trame fossero piuttosto precise. Quindi lo disegnano semplicemente con il codice e senza file di trama immagino?
Samuli Lehtonen,

1
Sì, è giusto.
Gary Willoughby,

1
Per questo tipo di demo, anche il suono viene generato dal codice (nessun campione). Tutto è sintetizzato al volo ... e ovviamente alcuni crediti e scene di dissolvenza consentono un pesante pre-calcolo :)
Karoly Horvath,

2
Come ex artista 3d, ho desiderato per molto tempo che le trame generate dalla procedura fossero incluse come set di strumenti standard nei principali programmi di arte 3d. Probabilmente il più vicino è usando il linguaggio di scripting integrato ....
Darknight,

Potresti essere interessato a cose come Project Frontier e Procedural World , che sono due approcci allo stesso problema attraverso la generazione procedurale.
Kyte,

10

Come dice @Gary Willoughby, è ampiamente procedurale.

Inoltre, vi è una significativa asmcodifica manuale , insieme a una vasta conoscenza di quanti sistemi Windows / piattaforma di scelta funzionano internamente.

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

Alcuni dei gruppi DemoScene rilasciano le loro demo online, dove è possibile scaricarle e riprodurle se lo si desidera.

Cospirazione
farb-rausch

Vedi anche Wikipedia sulla storia del DemoScene

Nota - un sacco di demo farà sì che il vostro antivirus per matto . Fondamentalmente sembra che quasi tutte le demo utilizzino file .exe compressi e la maggior parte dei gruppi demo eseguono il rollup dei propri packer. Sfortunatamente, poiché molte aziende AV sono zoppe, generalmente affermano che qualsiasi eseguibile binario compresso è un virus di qualche tipo.


1
Sono rimasto a chiedermi quale compagnia AV hai in mente come forse anche non-zoppa ...
Jerry Coffin,

+1 cose fantastiche. Usano le API di Nvidea o disegnano direttamente sulla scheda grafica?

1
Di solito creano un framework OpenGL minimo e danno il via ad alcuni shader per fare il resto
Jasper Bekkers,

3
È roba davvero impressionante. Penso che se avessi 15 anni in meno, sarebbe quello che passerei il mio tempo libero a fare.

Ecco alcune demo dell'assemblea 2011: archive.assembly.org/2011
Samuli Lehtonen,

4

Come tutti dicono che si basano ampiamente sul codice generato dalla procedura, ma c'è ancora di più su questa demo in particolare, se ti fermi e guardi alcuni dettagli, vediamo ad esempio quei muri: guarda quei mattoni e come la luce si riflette su di essi. Sembrano naturali.

Questo perché usano molti shader di vertici e shader di frammenti per dare vita al contenuto generato.

Ho trascorso un po 'di tempo a cercare di capire come fanno queste cose, e mi sento stupito con ogni pezzo di codice che prendo da quelle demo.

A proposito, quando fanno queste dimostrazioni 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

3

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

Ci sono anche molte letture interessanti nel suo blog sulle sue altre produzioni demoscene.


1

Come altri hanno già affermato, gran parte di questo si basa su attività generate proceduralmente.

C'è un altro elemento ad esso, 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, le demo moderne fanno un uso pesante degli shader, che sono solo testo 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 contenuti procedurali richiede tempo, mentre l'estrazione dell'eseguibile richiede molto tempo. E le persone in genere hanno più spazio sui loro dischi rigidi del tempo da trascorrere in attesa del caricamento del gioco, quindi non credo che vedremo molto di questo nei giochi ampiamente disponibili presto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.