Plazma sayı 1, sayfa 20

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 20

- Tamam güzeldir, nedir yani şimdi bu bahsettiklerimiz: ========================================================

Özetle şöyle basit bir şekil çizelim ascii'miz ile:

thread/task manager resource manager | |--> audio render timer -----> demo flow -- demo core engine -| (AV layer) | |--> video render memory manager

Her bi component aslında kendi başına bile kitap olabilecek kadar detaylı. Fakat demo durumunda bu detayları mümkün olduğunca atabiliriz. Ve işimize yarayan kadarı üstüne konuşup bi design çıkartabiliriz. Hangisinden anlatmaya başlayacağım ben de bilmiyom ama, şöyle basitçe bi timer'dan girelim bakalım nerelere gidiyor durum. Tabi bunu design ederken her zaman diğer component'ları gözümüzün önünde bulundurmalıyız ki, sonuçta çıkaracağımız design düzgün bir yapı olsun ve istediğimiz değişikliği parmak şıklatana kadar yapabilelim.

- Let the time flow: ====================

Evet timer. GetTickCount(), GetPerformanceCounter(), Gettime(), ... Bunlar boş şeyler. Yani önemli olan time'i nasıl aldığımız değil. Hiç de bir önemi yok. İki gün sonra function'ın adı belki de "GiveMeTheTimeMothaFucker()" olabilir. Dediğim gibi hiç bi önemi yok. Önemli olan burada bu time olayını nasıl olup da sisteme entegre edeceğiz. Bunun üstüne değineceğiz. Demonun akışı tamamen time'a bağlıdır. Belli bir zaman geldiğinde belli şeyler yapılması istenilir. Bunun design'ını yaparken bir başka istediğimiz husus, rahat debug edebilmek. Yani belki de istiyoruz ki bütün demo... Aslında yavaş çalışsın. Normal zamanın ne bileyim ben 9.3562 de birinde. Çünkü o zaman belki de görülmeyen bir bug'ı yakalayabiliriz.

Aynı yapı oyunlarda da çok sık kullanılır. Rahat debug edebilme, 'constant' fps sağlamak, gerektiğinde başka bi virtual timer ile değiştirmek, kafadan 40. saniyeden başlatabilmek... v.s. timeline gibi düşünün. nasıl ki ben 35.ci saniyeden film playlesin diyorsam demo'da da bunu diyebilmeliyim. ve her şey ona göre düzgün bir şekilde akmalı.

Tabi bütün bunların dışında en önemli sorun (ki bi çok kişinin dikkat etmediği mevzu...) Constant frame rate. Nasıl olur da sağlanır. ? Bıraktım demoyu bugün bi çok profesyonel oyun bile adam gibi sağlayabilmiş durumda değil bunu. Bi pixel ilerletirsin adamı/arabayı/ yaratığı... frame rate 75fps'den 35'e düşer. ... "u-uh.. No!.. Bad design".. Eee napacağız !? Hah çözüm bulduk!.. Bütün olayı 35 fps'ye setleyelim o zaman. O zaman düşmez. Yani bütün demo'ya bakalım en düşük kaç fps oluyor ona bakalım. Ona setleriz bütün akışı.. Yooo dostum yooo zaman cpu o 75fps yapabildiği yerde boş kalıyor mu olacak ?! Yok böyle bişii."unused system resource" exception fırlatılır suratına! Madem ki 2 cpu 1 gpu'muz var dibine kadar kullanıp. Mümkün olduğunca da constant frame rate nasıl sağlanır. bunu kasmak gerekmektedir. (bu arada design temelini 2 cpu 1 gpu muş gibi varsayıyorum. Şu an için sizde böyle bi sistem olmasa da bundan sonra böyle olacak bu iş.. Hatta yakında 4/8 cpu 2/4 gpu olması an meselesi. (sli cards, multiple cpu boards...etc.. Fiyatları her geçen gün düşüyor)

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