Tüm bunlar 64 kb’ye nasıl sığabilir?


45

Bu yüzden, 2011 toplantısında buradayım ve şu demo oynandı: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded

Sadece bir tek dosya, kurallarda yazıyor. Yani tekrar ediyorum, bunu nasıl bu kadar küçük bir dosyaya sığdırdılar?


Bu demo indirilebilir mi? Yerel olarak çalıştırıldığında nasıl çalıştığını görmek isterim.
David,


Tabii orada olan bu şey, tek çokgen çizmek mümkün olmaz onsuz sistem kütüphanelerinin birkaç megabayt ...
hobbs

2
Aktif olarak 64kB tanıtımlar yapan biri olarak bu makaleyi yazdım: ctrl-alt-test.fr/?p=494 ( Demossen yapımları nasıl bu kadar küçük olabilir?). TL; DR: yordamsal üretim, sıkıştırma ve çok fazla ek iş.
Laurent

1
@TeamUpvote Hayır, hepsi C ++. 12kB'nin altına inmek için standart kütüphaneden kurtulmanız gerekir. Visual C ++ kullanıyorsanız, burada örnekleri bulabilirsiniz: github.com/laurentlb/Ctrl-Alt-Test/tree/master/F ve iquilezles.org/code/framework64k/framework64k.htm .
Laurent,

Yanıtlar:


39

Bu var prosedürel tabanlı. İçerik exe'ye dahil edilmez, sadece nasıl çizileceğine ilişkin kuralları içerir. Başlatıldığında, program çalışma zamanında ihtiyaç duyduğu şeyi çizer ve önceden oluşturulmuş veya önceden kaydedilmemiş bir biçimdedir.

Bu, Elite tarafından çok sayıda yıldız sistemi, vb. Oluşturmak için kullanılan aynı yöntemdir .

Bugün, prosedürel jenerasyon kullanarak mümkün olan şey oldukça şaşırtıcı, oyunların gelecekte bundan daha fazla özellik taşıyacağını düşünüyorum.


Sadece dokuların oldukça doğru olduğunu düşündüm. Yani sadece kodla ve sanırım herhangi bir doku dosyası olmadan çiziyorlar mı?
Samuli Lehtonen

1
Evet bu doğru.
Gary Willoughby

1
Bu tür demolar için ses koddan da üretilir (örnek yok). Her şey anında sentezlenir ... ve elbette bazı krediler ve solma sahneleri ağır ön hesaplamaya izin verir :)
Karoly Horvath

2
Eski bir 3d sanatçı olarak, uzun süredir ana akım 3d sanat programlarında standart araç setine dahil edilmek üzere usule göre üretilmiş dokuların bulunmasını istiyorum. Muhtemelen en yakınları yerleşik kodlama dilini kullanmaktır ....
Darknight

Usul üretme yoluyla aynı soruna iki yaklaşım olan Proje Sınır ve Usul Dünyası gibi şeyler ilginizi çekebilir .
Kyte

10

@ Gary Willoughby'nin dediği gibi, oldukça yordamsal.

Ayrıca, asmseçim sistemlerinin ne kadarının pencere / platformda dahili olarak çalıştığı konusundaki kapsamlı bilgi ile birlikte önemli bir el kodlaması söz konusudur.

Kompakt kodun daha da uç örneklerini görmek istiyorsanız 4K demo kategorisi de var.

DemoScene gruplarından bazıları, demolarını çevrimiçi olarak yayınlar; istediğiniz yerde indirebilir ve oynayabilirsiniz.

Komplo
farb-rausch

Ayrıca DemoScene tarihinde Vikipedi'ye bakınız.

Not - gösterilerin çoğu, virüsten koruma yazılımınızın çıldırmasına neden olur . Temelde hemen hemen tüm demolar paketlenmiş .exe dosyalarını kullanıyor ve demo gruplarının çoğu kendi paketleyicilerini alıyor. Ne yazık ki, birçok AV şirketi topal olduğundan, genellikle paketlenmiş herhangi bir ikili çalıştırılabilir dosyasının bir tür virüs olduğunu iddia ederler.


1
Ne tür bir AV şirketi olduğunu, muhtemelen topal olmayan biri olarak bile merak ediyorum ...
Jerry Coffin

+1 Harika şeyler. Nvidea API'lerini kullanıyorlar mı veya doğrudan grafik kartına mı çekiyorlar?

1
Genelde minimal bir OpenGL çerçevesi oluşturdular ve gerisini yapmak için bazı gölgelendiricileri
başlattılar

3
Cidden etkileyici şeyler. 15 yaş genç olsaydım, boş zamanımı harcadığım şey olurdu.

İşte bazı montaj 2011 demoları: archive.assembly.org/2011
Samuli Lehtonen

4

Herkesin, prosedürün ürettiği koda geniş ölçüde güvendiklerini söylediği gibi, ancak özellikle bu demo hakkında daha fazla şey var, eğer bazı detayları durdurup bakarsanız, örneğin şu duvarları görmenizi sağlar: tuğlaları görün ve ışığın bunları nasıl yansıttığına bakın. Doğal görünüyorlar.

Çünkü, üretilen içeriğe hayat vermek için birçok tepe gölgelendirici ve parça gölgelendirici kullanıyorlar.

Bunları nasıl yaptıklarını anlamaya çalışmak için biraz zaman harcadım ve bu gösterilerden aldığım her kod parçasına hayran kaldım.

BTW, bu gösterileri yaparken daha da sıkmak için sıkıştırma araçları kullanıyorlar. bu derleme işlemini kontrol edin:

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

3

Bu özel demoda görüntülemenin nasıl yapıldığına dair bir PowerPoint sunumu var . Bu tek başına her şeyin 64 kilobayta nasıl uyduğunu açıklamaz, ancak geometrinin bu kadar küçük bir alanda nasıl yaratıldığının anahtarıdır.

Diğer demossen yapımları hakkında blogunda birçok ilginç okuma var .


1

Diğerlerinin de belirttiği gibi, bunun çoğu prosedürsel olarak yaratılan varlıklara dayanır.

Sıkıştırma olan başka bir öğe var. 4k ve 64k gösterileri çok özel çalıştırılabilir kompresörler kullanır. Bunların en ünlüsü farbrausch (64ks için) tarafından kkrunchy ve TBC & Loonies (4ks için) tarafından crinkler. Dahası, modern demolar, düz metin olan gölgeleri yoğun şekilde kullanıyor ve bu nedenle sıkıştırma sonrasında çok daha küçük oluyor.

Şimdi, video oyunlarına entegrasyon söz konusu olduğunda, asıl sorun tüm bunların zaman alması. Prosedürel içerik oluşturmak zaman alır ve yürütülebilir dosyayı çıkarmak çok zaman alır. Ve insanlar genellikle sabit disklerinde oyunun yüklenmesini beklemek için harcadıkları zamandan daha fazla alana sahipler, bu yüzden yakın zamanda yaygın olarak bulunan oyunlarda çok fazla şey göreceğimizi sanmıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.