3 poin oleh GN⁺ 2024-01-25 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-01-25
Komentar Hacker News
  • Pendapat pembuat aslinya:

    • Sebagai kreator film aslinya, ia terkesan karena versi remake berhasil dimasukkan ke dalam 8kB, dibandingkan karya asli yang terdiri dari file Blender, SVG, dan audio berukuran megabita.
    • Ia menyebut ini sebagai contoh lisensi berbagi karya (Creative Commons license) yang digunakan dengan baik, dan menyatakan harapannya agar karakter landak serta melodi dari karya asli digunakan.
  • Penyebutan tentang Sloot Digital Coding System:

    • Merujuk pada Sloot Digital Coding System dengan kalimat "Sloot lives!!!".
  • Pendapat tentang video demoscene:

    • Menunjukkan bahwa video demoscene itu menarik dan belum mendapat perhatian yang layak, padahal lebih banyak orang seharusnya menontonnya.
    • Berharap kanal seperti Retro Game Mechanics Explained dapat menjelaskan demoscene dengan baik.
  • Analisis tentang teknik demoscene:

    • Jika banyak menonton dan mempelajari karya demoscene, orang akan memahami cara penyederhanaan geometris seperti menggambarkan kaki domba dalam bentuk kerucut.
    • Menyebut bahwa sebagian besar demoscene bergantung pada akselerasi 3D GPU, tetapi demo bergaya animasi 2D jarang ada dan hampir tidak ditemukan pada ukuran sekecil ini.
    • Mengajukan pertanyaan apakah animasi 3D memang lebih mudah daripada 2D.
    • Menambahkan bahwa "mouton" berarti "domba" dalam bahasa Prancis, dan dari sanalah kata "mutton" berasal.
  • Kenangan tentang game .kkrieger:

    • Meski aspek teknisnya berbeda, ini mengingatkannya pada game FPS 3D .kkrieger yang dikompresi ke ukuran 96k.
    • Menilai .kkrieger sebagai karya yang menarik.
  • Rekomendasi tentang Cosmos Laundromat:

    • Meski lebih besar dari 8kB, ia merekomendasikan Cosmos Laundromat dari Blender Foundation, sebuah film animasi gelap tak terduga tentang domba.
    • Menyebut bahwa film-film demo teknis sering cenderung memiliki tema yang luar biasa gelap.
  • Reaksi positif terhadap film ini:

    • Menilai film ini sebagai karya yang menarik dan mengejutkan dengan akhir yang sulit diprediksi.
  • Pujian terhadap kreativitas:

    • Mengagumi bagaimana cerita yang kreatif dan menghibur bisa dibuat di bawah berbagai keterbatasan.
    • Ingin tahu lebih banyak tentang detail teknis dan cara-cara yang digunakan untuk mengurangi jumlah byte.
  • Kenangan tentang Razor 1911:

    • Kalimat "Razor 1911" membangkitkan nostalgia murni.
  • Informasi tentang kategori demoscene:

    • Menjelaskan bahwa 8KB adalah salah satu kategori dalam demoscene, dan memperkenalkan Pouet sebagai indeks yang bagus.