Cara membuat film animasi dalam 8kB
- Pada November 2022, dimulai tantangan untuk membuat animasi real-time dalam batas 8 kilobyte.
- Tujuannya adalah mencakup grafik berkualitas tinggi, animasi, penyutradaraan, penggarapan kamera, dan musik.
- Pada April 2023, setelah beberapa bulan pengerjaan, "The Sheep and the Flower" diselesaikan dan dirilis.
Gambaran umum
- Hasil akhirnya berupa executable Windows, dan semua elemen visual menggunakan shader GLSL yang dihitung secara real-time di GPU.
- Rendering menggunakan teknik ray marching, dan shader diperkecil menggunakan alat Shader Minifier.
- Musik dikomposisikan menggunakan OpenMPT dan synthesizer 4klang, dengan instrumen dijelaskan secara prosedural dan daftar not dikompresi.
- Kode ditulis dalam C++ dan menggunakan framework Leviathan untuk memulai flag compiler dan inisialisasi.
- Output akhir dikompresi menggunakan Crinkler.
Awal mula penciptaan
- Proyek ini dimulai setelah terinspirasi oleh video berjudul "Capoda" yang dibagikan oleh mantan rekan kerja dan dibuatnya sejak lama.
- Proyek ini bisa menjadi contoh yang baik untuk size coding dengan cerita yang cocok untuk 8kB.
- Ada ketertarikan pada tantangan baru yang berbeda dari target 64kB sebelumnya.
Merender dunia dengan dua segitiga
- Sebuah persegi panjang yang menutupi seluruh layar (dua segitiga) digambar, lalu program GPU (shader) yang ditulis dalam bahasa GLSL dijalankan untuk menghitung warna setiap piksel dan frame.
- Adegan direpresentasikan sebagai signed distance field, lalu ray marching digunakan untuk mengubah distance field menjadi piksel.
Penyutradaraan
- Ada banyak pertimbangan tentang cara menyampaikan cerita dan mengekspresikan emosi dengan karakter dan animasi yang terbatas.
- Unsur yang tidak diperlukan untuk cerita disingkirkan, lalu fokus diarahkan pada detail, penyutradaraan, penyuntingan, dan sinkronisasi dengan musik.
- Teknik penggarapan kamera dan storytelling digunakan untuk menyampaikan emosi.
Proses pengembangan
- Kode sumber berisi banyak konstanta yang di-hardcode, dan masing-masing ditentukan melalui banyak iterasi.
- Shader dikompilasi ulang saat runtime untuk mendapatkan loop umpan balik yang cepat.
- Diperlukan sebuah player yang berguna untuk mengerjakan animasi dan kontrol kamera.
Musik
- Musik yang sesuai dengan cerita membutuhkan berbagai bagian dan transisi pada momen tertentu.
- Musik dikomposisikan menggunakan synthesizer 4klang, dan datanya dikompresi untuk menghemat ruang.
Animasi & sinkronisasi
- Semua hal dalam demo dievaluasi ulang pada setiap frame, dan terdiri dari sekitar 25 shot kamera manual.
- Saat membuat tiap shot, dijelaskan bagaimana setiap parameter kamera berubah seiring waktu.
Tekstur & material
- Berbeda dari renderer tradisional, tekstur 3D dihitung dan digunakan secara real-time.
- Tekstur seperti rambu lalu lintas dibuat dengan menggabungkan beberapa fungsi.
Mata
- Pada tahap awal pengembangan, mata terlihat tidak hidup dan seperti benda mati, padahal mata penting sebagai alat storytelling.
- Cahaya pantulan ditambahkan pada mata untuk memberi kesan hidup.
Pascaproses
- Untuk sentuhan visual akhir dan membangun suasana cerita, digunakan color grading, koreksi gamma, vignetting, filter FXAA, dan lain-lain.
Kompresi
- Alih-alih menyimpan data, dipakai pendekatan menghasilkan data melalui kode.
- Alat kompresi Crinkler digunakan agar executable dapat mengekstrak dirinya sendiri.
Minimalisasi
- Alat Shader Minifier digunakan untuk membuat source code shader sekecil mungkin.
- Fitur baru ditambahkan ke Shader Minifier untuk meminimalkan dan mengompresi kode shader.
Perang antara domba dan bunga
- Apakah menurut Anda perang antara domba dan bunga tidak penting? Topik yang disebut dalam "Pangeran Kecil" ini merupakan bagian penting dari cerita.
Kesimpulan
- Karya ini dibangun di atas teknik tingkat lanjut dan riset yang sudah ada yang diperlukan untuk membuat demo seperti ini.
- Harapannya, fitur-fitur baru ini membantu orang lain membuat demo yang lebih baik.
- Kategori 8kB menawarkan lebih banyak kemungkinan dibanding 4kB, dan diharapkan bisa menjadi populer.
Opini GN⁺
- Proyek ini merupakan contoh hasil luar biasa yang tercipta dengan melampaui keterbatasan teknis dan mengerahkan kreativitas.
- Animasi yang diselesaikan dalam ruang yang sangat terbatas, yaitu 8kB, menunjukkan perpaduan antara pemrograman, optimasi algoritma, dan ekspresi artistik.
- Pengembangan alat seperti Shader Minifier dan penggunaan alat kompresi Crinkler menekankan pendekatan inovatif dalam rekayasa perangkat lunak dan kompresi data.
1 komentar
Komentar Hacker News
Pendapat pembuat aslinya:
Penyebutan tentang Sloot Digital Coding System:
Pendapat tentang video demoscene:
Analisis tentang teknik demoscene:
Kenangan tentang game .kkrieger:
Rekomendasi tentang Cosmos Laundromat:
Reaksi positif terhadap film ini:
Pujian terhadap kreativitas:
Kenangan tentang Razor 1911:
Informasi tentang kategori demoscene: