Blog
Oynanış hissi, performans mühendisliği ve motor mimarisi üzerine teknik notlar. Çoğu, bir hatayı çözerken tuttuğum notlardan doğdu.
Unreal Engine 5 GAS: yetenek sistemini doğru kurmak
Dash yeteneğim paketlenmiş build'de client tarafında bir kez çalışıp sustu. Sorun GAS'ta değil, attribute'a GameplayEffect'siz dokunan kendi kodumdaydı.
Unity Profiler ile gerçek darboğazı bulmak: 22 ms'ten 8 ms'e
Kare süresi 22 ms'e çıktığında herkes shader'ları suçladı. Unity Profiler kaydı başka bir şey gösterdi; ölçümle 8,7 ms'e nasıl indiğimizi anlatıyorum.
Coyote time ve jump buffer: iyi zıplamanın 12 satırı
Oyuncular "zıplama iyi hissettirmiyor" dediğinde kastettikleri şey genelde iki eksik özelliktir. İkisi de yarım saatte yazılır.
Lag compensation: 'vurdum ama saymadı' nereden geliyor
Nişan alma oyunlarında gecikme telafisini sunucu tarafında nasıl kurduğumu, hangi sayılarla ayarladığımı ve pencereyi nerede kestiğimi anlatıyorum.
Oyun motorunda C++ bellek yönetimi: kareyi kim yiyor?
Kare içinde new çağırmak profiler'da 13 ms'lik sıçramalar üretiyordu; frame arena ve object pool sonrası tepe değer 7.9 ms'e indi. Nasıl yaptığımı anlatıyorum.
Unreal'de Blueprint mi C++ mi: ölçtüğüm gerçek maliyet
Blueprint VM'in maliyeti çoğu sahnede görünmez, ama tick başına on binlerce node çalışınca 7 ms'e çıktı. Hibrit iş akışını sayılarla anlatıyorum.
DOTS/ECS geçişinden sonra öğrendiklerim
Bir üretim projesini kısmen ECS'e taşıdık ve frame süresi %34 düştü. Ama kazanç sandığımız yerden gelmedi.
Draw call ve overdraw: mobil oyunda 17 FPS nasıl kazandım
Orta segment bir Android telefonda kule savunma sahnem 41 FPS'te takılıyordu. Draw call, materyal ve overdraw tarafında ölçerek 58 FPS'e nasıl çıktığımı anlatıyorum.
Compute shader ile GPU parçacık sistemi: 1 milyon sınırı
40 bin parçacıkta düşen kare hızını, parçacık durumunu tamamen GPU'da tutup DrawProceduralIndirect ile çizerek 1 milyona çıkardım; ölçümler ve tuzaklar.
Client prediction'ı anlatmanın en sade yolu
Çok oyunculu hareket sistemleri karmaşık görünür. Aslında üç adımdan ibarettir: tahmin et, karşılaştır, düzelt.
Sıfırdan oyun motoru mimarisi: altı katman, bir döngü
Kendi motorunu yazmak katman sırasını doğru kurmakla başlar. Alt sistem sırası, sabit adımlı simülasyon ve hazır motora geçme eşiği üzerine notlar.
URP mi HDRP mi? Unity'de doğru render pipeline seçimi
Hedef platform listeniz kararı zaten vermiş olabilir; HDRP'nin volumetric ve SSR faturasını, URP'nin mobildeki avantajını ve geç geçişin gerçek maliyetini ölçtüm.
Stilize aydınlatma: cel shading'in ötesinde
Bantlı gölge herkesin bildiği ilk adım. Asıl karakter, rim ışığı ve gölge renginin nasıl seçildiğinde saklı.
NavMesh, A* ve flow field: 200 ajanı takılmadan yürütmek
200 ajanlı bir kuşatma sahnesinde yol bulma neden tıkanıyor, NavMesh nerede sessizce yalan söylüyor ve flow field ile A* arasındaki sınır tam olarak nerede geçiyor.
Dedicated server mimarisi: konteyner başına 48 oyuncu
Otoriter oyun sunucusunu backend'den ayırdık, matchmaking kuyruğunu ve oda tahsisini yeniden yazdık, eş zamanlı oyuncu başına gerçek maliyeti ölçtük.
Karakter kontrolcüsü neden kayıyor gibi hissettiriyor?
Oyuncular karakter kontrolcüsü için "kayıyor" dediğinde ortada tek bir hata yoktur; yavaşlama, zemin tespiti ve eğim yönetimi ayrı ayrı bozuktur.
Behavior Tree mi, Utility AI mı?
İkisi de doğru cevap olabilir. Seçimi belirleyen şey, düşmanınızın kaç şeyi aynı anda düşünmesi gerektiğidir.
Oyun geliştirmede CI/CD: gece build'i neyi değiştirir
Küçük bir ekipte build otomasyonunu kurmak beş gün sürdü; kırık bir commit'in ortalama ömrü 2,5 günden 9 saate indi ve sürüm günleri sakinleşti.
Steam'de oyun yayınlama rehberi: neyi ne zaman yapmalı
İlk oyunumda mağaza sayfasını çıkıştan üç hafta önce açtım ve 480 wishlist ile yayınladım; ikincisinde takvimi tersten kurunca tablo değişti.
Oyun programcısı portfolyosunda ne aranıyor
Stüdyolarda mülakat yapan tarafta da bulundum. Dikkat çeken portfolyolarda tekrar eden birkaç şey var.
1 sonuç
Bir sonraki build'i birlikte alalım.
Tam zamanlı pozisyon, freelance proje veya teknik danışmanlık — kutu her zaman açık.