Bu konudaki kullanıcılar: 2 misafir, 2 mobil kullanıcı
68
Cevap
1776
Tıklama
0
Öne Çıkarma
Cevap: ohaaa!!! 96 kbayt oyun (3. sayfa)

M Miharbi
17 yıl (760 mesaj)
256 ram 5700ultra 1700@2600 akıcı bir şekilde oynayabildim
Acharad +1




M MuwHinny
17 yıl (383 mesaj)
Bu oyun çok güzel boyutuna göre grafikleri güzel ama çok fazla ram istiyor.Bunun nedeni ise oyunun aslında grafikleri falan 96kb değil 96kb olan bir program siz programı açtığınızda program oyunun grafik ve kodlarını yazmaya başlıyor ve bunları ram yüklüyor örneğin oyunda ilerlediğinizde bir önceki grafikleri ve kodları siliyor.Bu oyunun bu program tarafından oluşturulmasının mantığı da Acharad ın da dediği gibi bitmape dönüştürülmüş dataların 8*8 lik kümelerinin diziliş şeklidir.Bu teknolojiyi bildiğiniz üzere Almanlar bulmuş gerçekten programcılık harikası bu teknolojiyle çok güzel oyunlar yapılır fakat bunun için çok güçlü sistemler gerektirir.Ben daha önce bu teknolojiyle yapılmış video clipler izlemiştim yani bir video clipi çalıştırmak için bile en az 256 mb ram istiyordu.Yanlış hatırlamıyorsam izlediğim clip 4.5 dklıktı fakat boyutu 56 kbtı buna rağmen görüntü kalitesi en az bir divX kadar iyiydi.




K Kermit
17 yıl (764 mesaj)
Heh... Visual Studio'da new project diyip Direct3D template'inden boş proje yarattım, (sadece standart Utah çaydanlığı gösterip döndürüyor) 3 Mb tuttu!!! Yuh!
Microsoft'un antitezi bu herifler




C Cem
17 yıl (6837 mesaj)
EN SON NE OLUYOR.BEN BİRYERE GELDİM ORTADA DONEN BİR HALAKALAR VAR BUYUK BİR YAPI AMA ORDA KALDIM




M Mesudum
17 yıl (2909 mesaj)
Ekran kartı DirectX9 desteklemeyip de oyunu oynatabilen var mı?

DirectX asıl bunun için var benim bildiğim. Bir yerden sonrasını sistemin otomatik yapmasını sağlamak için. Bir nevi Grafik İşletim (Alt)Sistemi gibi.

.oO°Oo.




K KARAKULE
17 yıl (320 mesaj)
VALLAHA SÜPER DOĞRUSU




S seckinim
17 yıl (184 mesaj)
harika bir teknoloji. ama büyük şirketler tarafından pek tutulmayacağını düşünüyorum neden derseniz; bilirsiniz bir dosya ne kadar ufak olursa internette o kadar fazla kişiye ulaşabilir.




F fubo
17 yıl (2525 mesaj)
abi harikada benim makinadada kastı yaws[bwlng]




P pew
17 yıl (3758 mesaj)
<blockquote id='quote'><font size='1' face='Verdana, Arial, Helvetica' id='quote'>quote:<hr height='1' noshade id='quote'><i>Originally posted by Acharad</i>
<br />copy paste değil abi... Maalesef kendim yazdım..
<hr height='1' noshade id='quote'></blockquote id='quote'></font id='quote'> Helal Olsun[ban]




C cat_axeyns
17 yıl (573 mesaj)
Valla komik oyuna bak yaw p4 2 zorluyor.Ee abi bunun 100 mb şeklinde olsa biz ne yapardık.O zaman her halde sadece oyunu merak etmekle kalırdık.




K knight
17 yıl (326 mesaj)
o oyunun cok iyi bir makina istemesi beniagzı acık bıraktı




K knight
17 yıl (326 mesaj)
cok garip aslında 96 kb ve p4 te kasıyor




K knight
17 yıl (326 mesaj)
yinede guzel




B Barlas
17 yıl (4717 mesaj)
Oha bee abi...




K Kermit
17 yıl (764 mesaj)
"We do .not. have some kind of magical data compression machine that is able to squeeze
hundreds of megabytes of mesh/texture and sound data into 96k. We merely store the
individual steps employed by the artists to produce their textures and meshes, in a very
compact way. This allows us to get .much. higher data density than is achievable with
normal data compression techniques, at some expense in artistic freedom and loading times."

Yani diyor ki :
texture'lar sıkıştırılmış değil, ama program tarafından üretiliyor (bazı anahtar kısımlar, renkler, ana şekil, adımlar vs. programın içinde). Mesh'ler de keza.
Bir de assembler değil C++ kullanmışlar, MMX optimizasyonlar dışında.




P pew
17 yıl (3758 mesaj)
bi screen şat koysanız göremedikte oyunu




S SuSe
17 yıl (197 mesaj)
<blockquote id='quote'><font size='1' face='Verdana, Arial, Helvetica' id='quote'>quote:<hr height='1' noshade id='quote'><i>Originally posted by pew</i>
<br />bi screen şat koysanız göremedikte oyunu
<hr height='1' noshade id='quote'></blockquote id='quote'></font id='quote'>


All ... < Resime gitmek için tıklayın >




P pew
17 yıl (3758 mesaj)
kahretsin ya şu oyunu oynayamadım bi 1.3 ghz 64 mb ekran 256 mb ram




F fubo
17 yıl (2525 mesaj)
pew boşver ya bende imzamdaki makina var genede oynayamıyorum kasıyor ram den galiba




E elmaarmut
17 yıl (37 mesaj)
Selam arkadaşlar,
Bu oyunu ilk gördüğümde ben de biraz şaşırdım, daha önce ilginç 64K demolara rastlamıştım ama bu sefer çok emek harcamışlar, tabi uzunluk 32K artmış. Biraz araştırdım ekipten birkaçının netteki yazışmalarını takip ettim, öğrendiklerimi konuya merakınız olduğu için sizinle paylaşayım dedim:

Oyun assembly değil, tümü C++'da yazılmış, kodu 100 bin satır civarı (sanırım binaryden çevirdikleri dataları da koddan sayıyorlar), 60 küsür KB'ı kod zaten, yapımı 2 sene sürmüş ve yapımında kendi yazdıkları bazı yazılımlardan faydalanmışlar. Bildiğiniz gibi oyunun uzunluğunu mümkün olduğunca düşürebilmek için çeşitli teknikler kullanılmış ama bunların hiçbiri yeni bulunmuş birşey değil, bu vatandaşlar sadece biraraya getirmiş. Açılışındaki 2 dakikalık (benim makinaya göre) bekleme süresi oyun datalarını prosedürel yöntemlerle hesaplamasından kaynaklanıyor. Sadece açılışta 1 kereye mahsus olmak üzere tüm oyun datalarını hesaplayıp RAMe atıyor ve oyun boyunca da ramdaki bu hazır hesaplanmış dataları kullanıyor.

512ye512lik 256 renk bir doku (texture) sıkıştırılmamış haliyle 256KB yer kaplar bir de bunun normal map'inin kaplayacağı alan var, peki bu oyunda yer alan onlarca yüzlerce texture nasıl yapılmış, şöyle: Oyunda dokular png,tiff gibi herhangi bir bitmap resim formatında tutulmuyor, sadece nasıl hesaplatılacağının parametresi tutuluyor ve oyun başlarken o parametreye göre resim hesaplatılıyor. Yani resmin kendisi yerine, bir grafiker dokuyu photoshopda filtrelerle vesayir nasıl hazırlıyorsa bu adımlar kaydediliyor, zaten bu işlemi kolaylaştırmak için editör de yapmışlar. Örneğin bir ağaç materyali yapmak için gereken aşamalar:

1.
512lik bir resim yap, bu A resmi olsun
resmi Perlin gürültüsüyle doldur (ör:http://www.noisemachine.com/talk1/ )
0,10 pixel açısıyla hareket bulanıklığı ver (motion blur)
kahverengi renge çevir
yanyana döşendiğinde kesişimlerinin belli olmaması için bulanıklaştır

2.
512lik bir resim yap, bu da B resmi olsun
yatay 32 pixel aralıklarla çizgi ile doldur
yarı yarıya bulanıklaştır
biraz parlat
iki kat karşıtlık ver
merkezden itibaren iyice bükerek kıvır

3.
"Ağaç" isminde bir doku yap
A resmini dokuya bas
B resmini yarı şeffaflıkta dokuyla birleştir

4.
"Ağaç_normalmap" isminde bir doku yap
A resmini dokuya bas
rengini griye çevir

5.
"Ağaç" isminde bir materyal yap
doku olarak "Ağaç" isimli dokuyu kullan
yükselti haritası olarak da "Ağaç_normalmap" isimli dokuyu kullan

bu kadar. Bu örnek şahsın verdiği örneğin Türkçesi oluyor. Oyundaki materyal hesaplayıcı koda her bir dokunun hesaplatma parametreleri verilerek dokular açılışta oluşturuluyor, rame atılıyor. Bu minik doku verilerinin yapısı da şöyle:

512lik resim yap demek için 1 byte gidiyor (1 byte = 8 bit). Bunun 2 bitini komut oluşturuyor bildiğiniz gibi 2 bitde 4 olasılık var yani 4 komut yapılabilir örnekte kullanılan "resim yap" komutu bunlardan biri. Diğer 2 bit yapılacak işlemin türü, örnekte "resim". Diger geriye kalan 4 biti de ismi oluyor yani isim numarayla ifade ediliyor, dolayısıyla isim için 16 olasılık var. Tabi yapanlar bitlerle uğraşmıyor, editöründe onlar "ağaç" gibi ismini ve diğer özelliklerini giriyorlarmış, editör kendisi istenilen formata çeviriyormuş. Programca varsayılan uzunluk zaten 512 olduğundan uzunluk vermeye gerek yok.

Bir diğer örnek; Perlin gürültüsüyle (bu arada aklımdayken söyleyeyim bu algoritma terrain dokusu yapımında da kullanılır) doldur demek 7 bit tutuyor; bunun 2 biti yapılacak işlem, örnekte bir komutun çalıştırılması; diğer 4 bit komutun ne olduğu, örnekte doldur komutu; sonraki 1 bit de komutun parametresi yani ne ile dolduracağı (perlin gür.)
...

Sonuçta toplamda yukarıdaki "ağaç" materyalini oluşturmak için gerekli data miktarı sadece 9 byte. Yani 256K lık bir doku bu programda 9 byte yer tutmuş oluyor. Bu yöntemle 1000 tane doku sıkıştırılmamış haldeyken bile sadece 10KB yer tutuyor. Tabi grafiker çizimi gibi olmaz ama o kadarı da normaldir, zaten görüntünün çirkinliğini saklamak için render işlemine ek filtrelemeler atmışlar.

Modelleri de (3 boyutlu vektör çizimleri) aynı mantıkla kaydetmişler. Örneğin bir küre yap, biraz eğ, belli miktarda açı aralıklarıyla kopyalarını çıkar, bir silindir ekle,...

Oyunun tüm dataları (texture,model,...) binary formatından text formatına çevrilip ( .h gibi) koda eklenmiş, böylece kod tek parça derleniyor.

Oyunda sıkıştırma işlemi için UPX'in modifiye edilmiş bir varyasyonu diyebileceğimiz kendi yaptıkları bir cruncher kullanmışlar. UPXin de kullandığı UCL isminde bir algoritma var, bu daha önce benim de kullandığım lzop algoritmasına benzemesine rağmen ondan daha iyi sıkıştırıyor ve gene lzop gibi minik ve basit bir algoritma, decruncherı 200 bytea kadar küçültülebiliyor (PE sıkıştırması hariç). Özellikle decruncherı az yer tuttuğu için ve de iyi sıkıştırdığı için bu algoritmayı tercih etmişler, decruncher uzunluğu engel teşkil etmeseydi PAQ da olduğu gibi çok daha gelişmiş algoritmalar da var tabi, bir de PE yapısındaki gereksiz byte israfına karşı EXE optimizasyonu eklentisi eklemişler.

Müzik ve ses için de wave dataları kaydı kullanmamışlar tabiki, sentezleyici kod kullanmışlar. Müzik için sadece notaları kaydetmişler, ses efekti ve enstrümanlar içinse ses dalgası oluşturucu kodlardan istifade etmişler, tıpkı eski commodore-64'ün sid sentezleyicisinde ve bazı trackerlarda olduğu gibi. Örneğin bir sinüs dalgası verip birkaç parametreyle şeklini oynayarak yeni bir sample oluşturmak gibi.

Oyunun diğer bazı özellikleri de şöyle: karakter animasyonu sistemi var, basit bir de temel Inverse Kinematics uygulaması, çok basit bir fizik sistemi var, gelişmiş bir parçacık sistemi var, renderlanmış görüntüyü daha güzel göstermek için smoothlamak gibi son aşama filtreleri var, herşeyde tek pixel ışıklandırması var.

Oyun hızlı makina istiyor, kodu haliyle hızdan ziyade uzunluğa optimize edilmiş. Oyunun sadece dx9da ve belli donanımlarda çalışmasınınn sebebi kullanıcıların tüm konfigürasyon varyasyonlarını karşılayacak kod yazmanın hem uzunluğu artıracağından hem de yapımının zahmetli iş olduğundan/zaman alacağından.