Şimdi Ara

ohaaa!!! 96 kbayt oyun (3. sayfa)

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
70
Cevap
0
Favori
1.988
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 1234
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • 256 ram 5700ultra 1700@2600 akıcı bir şekilde oynayabildim
    Acharad +1
  • 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.




  • 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
  • EN SON NE OLUYOR.BEN BİRYERE GELDİM ORTADA DONEN BİR HALAKALAR VAR BUYUK BİR YAPI AMA ORDA KALDIM
  • 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.
  • VALLAHA SÜPER DOĞRUSU
  • 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.
  • abi harikada benim makinadada kastı yaws[bwlng]
  • <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]
  • 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.
  • o oyunun cok iyi bir makina istemesi beniagzı acık bıraktı
  • cok garip aslında 96 kb ve p4 te kasıyor
  • yinede guzel
  • Oha bee abi...
  • "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.
  • bi screen şat koysanız göremedikte oyunu
  • <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 ...
    ohaaa!!! 96 kbayt oyun
  • kahretsin ya şu oyunu oynayamadım bi 1.3 ghz 64 mb ekran 256 mb ram
  • pew boşver ya bende imzamdaki makina var genede oynayamıyorum kasıyor ram den galiba
  • 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.




  • 
Sayfa: önceki 1234
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.