Bagaimana ini bisa masuk ke 64kb?

45

Jadi, saya di sini di perakitan 2011 dan ada demo ini diputar: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded

Ini satu file saja, katanya dalam aturan. Jadi saya ulangi, bagaimana mereka membuat ini agar sesuai dengan file yang sangat kecil?

Samuli Lehtonen
sumber
Bisakah demo ini diunduh? Saya ingin melihat cara kerjanya saat dijalankan secara lokal.
David
1
Ya, Anda dapat menemukan demo itu di sini: ftp.untergrund.net/users/atzAdmin/fltatz_uncovering_static.zip
Samuli Lehtonen
Tentu saja ada yang beberapa megabyte sistem perpustakaan yang tanpa hal ini tidak akan mampu menggambar poligon tunggal ...
Hobbs
2
Sebagai seseorang yang secara aktif membuat intro 64kB, saya telah menulis artikel ini: ctrl-alt-test.fr/?p=494 (Bagaimana produksi demoscene bisa sangat kecil?). TL; DR: generasi prosedural, kompresi, dan banyak pekerjaan tambahan.
Laurent
1
@ TimUpVote Tidak, itu semua C ++. Untuk pergi di bawah 12kB, Anda harus menyingkirkan perpustakaan standar. Jika Anda menggunakan Visual C ++, Anda dapat menemukan contoh di sini: github.com/laurentlb/Ctrl-Alt-Test/tree/master/F dan iquilezles.org/code/framework64k/framework64k.htm .
Laurent

Jawaban:

39

Ini prosedural berdasarkan. Konten tidak termasuk dalam exe, hanya aturan cara menggambarnya. Ketika diluncurkan, program ini menggambar apa yang dibutuhkan pada saat runtime yang tidak dirender atau disimpan sebelumnya dalam bentuk apa pun.

Ini adalah metode yang sama yang digunakan oleh Elite untuk menciptakan alam semesta yang luas dari sistem bintang, dll.

Sungguh menakjubkan apa yang mungkin saat ini menggunakan generasi prosedural, saya pikir game akan menampilkan lebih banyak hal ini di masa depan.

Gary Willoughby
sumber
Saya hanya berpikir bahwa teksturnya cukup akurat. Jadi mereka hanya menggambarnya dengan kode dan tanpa file tekstur saya kira?
Samuli Lehtonen
1
Ya itu betul.
Gary Willoughby
1
Untuk demo semacam ini, suara juga dihasilkan dari kode (tidak ada sampel). Semuanya disintesis dengan cepat ... dan tentu saja beberapa kredit dan adegan pudar memungkinkan pra-perhitungan yang berat :)
Karoly Horvath
2
Sebagai mantan seniman 3d, saya ingin tekstur prosedural yang dihasilkan dimasukkan sebagai tool-set standar dalam program seni 3d arus utama untuk waktu yang lama. Mungkin yang paling dekat adalah dengan menggunakan bahasa skrip
bawaan
Anda mungkin tertarik pada hal-hal seperti Project Frontier dan Prosedural World , yang merupakan dua pendekatan untuk masalah yang sama melalui generasi prosedural.
Kyte
10

Seperti yang dikatakan @Gary Willoughby, ini sangat prosedural.

Juga, ada asmpengkodean tangan yang signifikan yang terlibat, bersama dengan pengetahuan yang luas tentang berapa banyak windows / platform sistem pilihan bekerja secara internal.

Ada juga kategori demo 4K, jika Anda ingin melihat contoh kode kompak yang lebih ekstrem.

Beberapa grup DemoScene merilis demo mereka secara online, di mana Anda dapat mengunduhnya dan memutarnya jika Anda mau.

Persekongkolan
farb-rausch

Lihat juga Wikipedia tentang sejarah DemoScene

Catatan - banyak demo akan menyebabkan antivirus Anda menjadi panik . Pada dasarnya sepertinya hampir semua demo menggunakan file .exe yang dikemas, dan sebagian besar grup demo menggulung paket mereka sendiri. Sayangnya, karena banyak perusahaan AV lumpuh, mereka umumnya mengklaim bahwa setiap biner yang dapat dieksekusi adalah sejenis virus.

Nama palsu
sumber
1
Saya bertanya-tanya apa perusahaan AV yang ada dalam pikiran Anda bahkan mungkin tidak lumpuh ...
Jerry Coffin
+1 hal-hal luar biasa. Apakah mereka menggunakan Nvidea API atau menggambar langsung ke kartu grafis?
1
Mereka biasanya membuat kerangka kerja OpenGL minimal dan memulai beberapa shader untuk melakukan sisanya
Jasper Bekkers
3
Ini hal yang sangat mengesankan. Saya pikir jika saya sekitar 15 tahun lebih muda, ini akan menjadi apa yang saya habiskan waktu luang saya.
Berikut adalah beberapa demo perakitan 2011: archive.assembly.org/2011
Samuli Lehtonen
4

Seperti semua orang mengatakan mereka secara luas bergantung pada kode yang dihasilkan secara prosedural, tetapi ada lebih banyak lagi tentang demo ini khususnya, jika Anda berhenti dan melihat beberapa detail, mari kita lihat misalnya tembok-tembok itu: lihatlah batu bata dan bagaimana cahaya memantulkannya. Mereka terlihat alami.

Itu karena mereka menggunakan banyak vertex shader dan fragmen shader untuk menghidupkan konten yang dihasilkan.

Saya menghabiskan beberapa waktu mencoba untuk memahami bagaimana mereka membuat hal-hal seperti itu, dan merasa kagum dengan setiap bagian dari kode saya ambil dari orang-orang demo.

BTW, ketika melakukan demo itu mereka juga menggunakan alat kompresi untuk menekan lebih. periksa proses kompilasi ini:

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
Fernando Meyer
sumber
3

Ada presentasi PowerPoint tentang bagaimana rendering dilakukan dalam demo khusus ini. Ini saja tidak menjelaskan bagaimana semuanya masuk ke dalam 64 kilobyte, tetapi merupakan kunci bagaimana geometri dibuat dalam ruang sekecil itu.

Ada juga banyak bacaan menarik di blognya tentang produksi demoscene lainnya.

msell
sumber
1

Seperti yang telah dinyatakan orang lain, banyak dari ini bergantung pada aset yang dihasilkan secara prosedural.

Ada elemen lain untuk itu, yaitu kompresi. Demo 4k dan 64k menggunakan kompresor yang dapat dieksekusi yang sangat khusus. Yang paling terkenal adalah kkrunchy by farbrausch (for 64ks) dan crinkler oleh TBC & Loonies (for 4ks). Selain itu, demo modern banyak menggunakan shader, yang merupakan teks biasa dan dengan demikian menjadi lebih kecil secara dramatis setelah kompresi.

Sekarang, sejauh menyangkut integrasi dalam permainan video, masalah utama adalah bahwa semua ini membutuhkan waktu. Membuat konten prosedural membutuhkan waktu, dan mengekstrak yang dapat dieksekusi membutuhkan banyak waktu. Dan orang-orang pada umumnya memiliki lebih banyak ruang pada hard drive mereka daripada waktu yang dihabiskan untuk menunggu game dimuat, jadi saya tidak berpikir kita akan melihat banyak dari ini di game yang tersedia secara luas dalam waktu dekat.

Tarmil
sumber