3 puan yazan GN⁺ 2024-01-25 | 1 yorum | WhatsApp'ta paylaş

8kB ile animasyon filmi nasıl yapılır

  • Kasım 2022'de, 8 kilobayt içinde gerçek zamanlı bir animasyon üretme meydan okumasına başlandı.
  • Amaç; yüksek kaliteli grafikler, animasyon, yönetmenlik, kamera çalışması ve müzik içermekti.
  • Nisan 2023'te, aylar süren çalışmanın ardından "The Sheep and the Flower" tamamlanıp yayımlandı.

Genel bakış

  • Ortaya çıkan çıktı bir Windows çalıştırılabilir dosyası ve tüm görsel öğeler GPU üzerinde gerçek zamanlı hesaplanan GLSL shader'ları kullanıyor.
  • Render işlemi ray marching tekniğini kullanıyor ve shader'lar Shader Minifier aracıyla küçültülüyor.
  • Müzik, OpenMPT ve 4klang synthesizer kullanılarak bestelendi; enstrümanlar prosedürel olarak tanımlandı ve nota listeleri sıkıştırıldı.
  • Kod C++ ile yazıldı ve derleyici bayraklarını ve başlatmayı ayarlamak için Leviathan framework'ü kullanıldı.
  • Nihai çıktı Crinkler kullanılarak sıkıştırıldı.

Yaratımın başlangıcı

  • Proje, eski bir iş arkadaşının uzun zaman önce yaptığı "Capoda" adlı videoyu paylaşmasının verdiği ilhamla başladı.
  • Bu proje, 8kB'ye uygun bir hikâyeye sahip size coding için iyi bir örnek olabilir.
  • 64kB'yi hedefleyen işlerden farklı olan bu yeni meydan okuma ilgi çekici bulundu.

Dünyayı iki üçgenle render etmek

  • Tüm ekranı kaplayan bir dikdörtgen (iki üçgen) çiziliyor ve GLSL dilinde yazılmış GPU programı (shader) çalıştırılarak her piksel ve kare için renk hesaplanıyor.
  • Sahne signed distance field olarak temsil ediliyor ve ray marching kullanılarak distance field piksellere dönüştürülüyor.

Yönetmenlik

  • Sınırlı karakter ve animasyonla hikâyenin nasıl anlatılacağı ve duyguların nasıl ifade edileceği üzerine düşünüldü.
  • Hikâye için gereksiz öğeler çıkarıldı; detay, yönetmenlik, kurgu ve müzikle senkronizasyona odaklanıldı.
  • Duyguları aktarmak için kamera çalışması ve hikâye anlatımı teknikleri kullanıldı.

Geliştirme süreci

  • Kaynak kodda çok sayıda hard-code edilmiş sabit bulunuyor ve her sabit birçok yineleme sonucunda belirlendi.
  • Hızlı bir geri bildirim döngüsü için shader'lar çalışma zamanında yeniden derlendi.
  • Animasyon ve kamera kontrolü üzerinde çalışmak için kullanışlı bir player gerekiyordu.

Müzik

  • Hikâyeye uygun müzik, farklı bölümler ve belirli anlarda geçişler gerektiriyordu.
  • Müziği bestelemek ve yerden tasarruf etmek için veriyi sıkıştırmak amacıyla 4klang synthesizer kullanıldı.

Animasyon & senkronizasyon

  • Demodaki her şey her karede yeniden değerlendiriliyor ve yaklaşık 25 adet manuel kamera planından oluşuyor.
  • Her plan oluşturulurken kameranın her parametresinin zaman içinde nasıl değiştiği tanımlandı.

Doku & malzemeler

  • Geleneksel rendererlardan farklı olarak, 3D dokular gerçek zamanlı hesaplanıp kullanılıyor.
  • Trafik işaretleri gibi dokular birden fazla fonksiyon birleştirilerek oluşturuluyor.

Gözler

  • Geliştirmenin ilk aşamalarında gözler cansız ve inorganik görünüyordu, ancak hikâye anlatımı aracı olarak büyük önem taşıyordu.
  • Gözlerde yansıyan ışık eklenerek canlılık kazandırıldı.

Son işleme

  • Son görsel dokunuşları yapmak ve hikâyenin atmosferini kurmak için renk düzeltme, gamma düzeltmesi, vignette, FXAA filtresi gibi teknikler kullanıldı.

Sıkıştırma

  • Veri depolamak yerine, veriyi kodla üreten bir yaklaşım benimsendi.
  • Crinkler sıkıştırma aracı kullanılarak çalıştırılabilir dosya kendini açabilir hâle getirildi.

Küçültme

  • Shader kaynak kodunu olabildiğince küçük yapmak için Shader Minifier aracı kullanıldı.
  • Shader kodunu küçültmek ve sıkıştırmak için Shader Minifier'a yeni özellikler eklendi.

Koyun ile çiçek arasındaki savaş

  • Koyun ile çiçek arasındaki savaşın önemli olmadığını mı düşünüyorsunuz? "Küçük Prens"te anılan bu konu, hikâyenin önemli bir parçası.

Sonuç

  • Bu tür demoları oluşturmak için gereken ileri teknikler ve mevcut araştırmalar temel alındı.
  • Yeni özelliklerin başkalarının daha iyi demolar yapmasına yardımcı olması umuluyor.
  • 8kB kategorisi 4kB'ye kıyasla daha fazla imkân sunuyor ve popülerleşmesi umut ediliyor.

GN⁺ görüşü

  • Bu proje, teknik sınırları aşarak ve yaratıcılığı ortaya koyarak etkileyici bir çıktı üretmenin bir örneği.
  • 8kB gibi son derece kısıtlı bir alanda tamamlanan bu animasyon; programlama, algoritma optimizasyonu ve sanatsal ifadenin birleşimini gösteriyor.
  • Shader Minifier gibi araçların geliştirilmesi ve Crinkler sıkıştırma aracının kullanımı, yazılım mühendisliği ve veri sıkıştırma alanlarında yenilikçi bir yaklaşımı vurguluyor.

1 yorum

 
GN⁺ 2024-01-25
Hacker News yorumları
  • Orijinal yaratıcının görüşü:

    • Orijinal filmin yaratıcısı olarak, asıl yapımın MB düzeyinde Blender, SVG ve ses dosyalarından oluşmasına kıyasla yeniden yapımın 8kB içine sığdırılmasının etkileyici olduğunu belirtiyor.
    • Creative Commons lisansının faydalı biçimde kullanıldığı bir örnek olduğunu, orijinaldeki kirpi karakterinin ve melodinin de kullanılmış olmasını dilediğini ifade ediyor.
  • Sloot Digital Coding System'e gönderme:

    • "Sloot lives!!!" sözüyle Sloot Digital Coding System'e atıfta bulunuluyor.
  • Demoscene videoları hakkındaki görüş:

    • Demoscene videolarının eğlenceli olduğunu ve daha fazla kişinin izlemesi gerektiği hâlde yeterince ilgi görmediğini söylüyor.
    • Retro Game Mechanics gibi kanalların demoscene'i iyi açıklamasını umduğunu belirtiyor.
  • Demoscene tekniğine dair analiz:

    • Çok sayıda demoscene çalışması izleyip incelerseniz, koyunun bacaklarını koni biçiminde göstermek gibi geometrik sadeleştirmelerin nasıl yapılabildiğini anlamaya başladığınızı söylüyor.
    • Demoların çoğunun GPU'nun 3D hızlandırma özelliklerine dayandığını, ancak 2D animasyon tarzındaki demoların nadir olduğunu ve bu kadar küçük boyutlarda neredeyse hiç görülmediğini belirtiyor.
    • 3D animasyonun 2D'den daha mı kolay olduğu sorusunu ortaya atıyor.
    • "mouton"un Fransızcada "koyun" anlamına geldiğini ve "mutton" sözcüğünün de buradan türediğini ekliyor.
  • .kkrieger oyunu üzerine anımsama:

    • Teknik olarak farklı olsa da, 96k boyutuna sıkıştırılmış 3D FPS oyunu .kkrieger'i hatırlattığını söylüyor.
    • .kkrieger'in ilginç bir çalışma olduğunu değerlendiriyor.
  • Cosmos Laundromat önerisi:

    • 8kB'den daha büyük olsa da, koyunlarla ilgili beklenmedik derecede karanlık bir animasyon filmi olan Blender Foundation'ın Cosmos Laundromat'ını öneriyor.
    • Teknik demoların alışılmadık biçimde karanlık temalara sahip filmler üretme eğiliminde olduğunu belirtiyor.
  • Filme yönelik olumlu tepki:

    • Öngörülemez bir sona sahip, ilginç ve şaşırtıcı bir film olarak değerlendiriyor.
  • Yaratıcılığa övgü:

    • Kısıtlar içinde yaratıcı ve eğlenceli bir hikâye ortaya çıkarılmasına hayran kaldığını söylüyor.
    • Teknik ayrıntılar ve bayt sayısını azaltmak için kullanılan yöntemler hakkında daha fazla şey öğrenmek istediğini belirtiyor.
  • Razor 1911'e dair nostalji:

    • "Razor 1911" ifadesinin saf nostalji hissettirdiğini söylüyor.
  • Demoscene kategorileri hakkında bilgi:

    • 8KB'nin demoscene kategorilerinden biri olduğunu ve Pouet'te iyi bir dizin bulunduğunu aktarıyor.