Plazma sayı 2, sayfa 110

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 110

64kb Herkese Yeter

Bir demoda kodun kalitesini belirleyen tek şeyin hız olmadığını öğrendik. PC'de hız konusunda coder'lar bir nebze rahat olduğu için boyut optimizasyonuna yöneldiler. Normal bir demo için kodun boyutu bir şey ifade etmediğinden, tüm bir demoyu eskiden olduğu gibi belli boyut limitleri içerisine sıkıştırmaya çalıştılar.

PC coder'larının yukarıda bahsettiğim boşluğu yaşadığı 2000 yılında, PC'de iki adet klasik 64k yayınlandı. Bunlardan ilki daha çok DOS ürünlerinin takipçisi ve tamamen software rendered olan Heaven Seven/Exceed. Bu 64k, tamamen asm ile yazılmış gerçek zamanlı bir raytracer'ı, tasarımı, müziği ve anlatılması güç ruhu ile sadece PC değil tüm platformların en iyi ürünlerinden biri. Diğer 64k ise, Kasparov'da imzası bulunan scener'ların da içinde bulunduğu tecrübeli coder ve müzisyenlerin çalışması olan The Product/Farbrausch.

Demolarda Spot'un bir devrin sonu, Kasparov'un sonraki devrin başlangıcı olması gibi; 64k'larda da Heaven Seven DOS introlarının sonu, The Product (fr08) Windows introlarının başlangıcı oldu. (Burada ilk ve son derken, release edilmekten çok akımların yönlerinden bahsediyoruz tabi ki.)

Peki kodu bu kadar küçük yapmanın yolları nelerdir? Kayıpsız sıkıştırma (yani dataları ve exenizi zipleme), sizi bir yere kadar götürebilir. Oradan sonra önünüzde iki seçenek bulunmaktadır.

Bu seçeneklerden ilki kayıplı sıkıştırmadır. Kayıplı sıkıştırma, sıkıştırılacak bilginin %100 geri dönüşülebilir olmadığı durumlarda uygulanabilir. Örneğin bir resmi kayıplı sıkıştırıp tekrar açtığınız vakit, resme benzer bir görüntü elde edebilirsiniz. Fakat exe içindeki opcodelara böyle bir sıkıştırma uygulamak mümkün değildir. Çünkü opcodelarda geri dönülen bilginin öncekiyle tamamen aynı olması gerekir.

Örneğin fr08'de tüm dokular, obje bilgileri ve ses sample'ları kayıplı sıkıştırma ile saklanmıştır. Bu bilgilerin orijinallerini, duyularla çok kolay yakalayamayacağımız yüksek frekanslarını "kaybederek" daha düşük boyutlara indirebiliriz. Bu konunun temelinde mühendislikte çok önemli bir alan olan Fourier teorisi yatmaktadır. Coder'ın kayıplı sıkıştırma ve tekrar geri açma kodu yazabilmesi için teoriye hakim olması gerekmez. Ama "Kaybedilen şey ne olacak?", "Bu bilgi ne kadar küçülecek?" gibi sorulara cevap verebilmesi için, teori hakkında biraz bilgi, biraz da deneyim sahibi olması gerekir.

Fakat coder'ların çoğu, kartlarını buna değil de, sonraki seçeneğe oynamaktadırlar. Bu diğer seçenek, bilgileri demonun başlangıcında (ya da gerekiyorsa gerçek zamanlı olarak) işe uygun algoritmalar sayesinde oluşturmaktır. Doruk noktasına demoscene ile ulaşan ve "procedural generation" denilen bu yordamda kod içinde bilgi değil, bilgiyi oluşturacak yöntemler tutulur. Örneğin işinize uygun bir obje oluşturucu yazdıktan sonra bu kodun ufak parametrelerini oynayıp, farklı objeler elde etmeniz mümkündür. Yahut benzer şekilde bir texture generator'ın parametrelerinde değişiklikler yapıp sayısız doku elde etmek mümkün olabilir.

Klavyeyle gezinmek için ← ve → tuşları.