T: tema · Z: kodu büyüt · S: konuşmacı notları · F: tam ekran · Esc: genel bakış · ⌂ ders haritası
OYUNLARDA YAPAY ZEKÂ · HAFTA 17
Zorluk ve Oyuncu Modelleme
Akış, YZ yönetmeni, lastik bant, adil rastgelelik, eşleştirme — oyunu oyuncuya göre ayarlamak
PRESS ▶ TO START

Bu derste oyunun haritası 🗺️

  1. Zorluk neden zor? — Crash’in maskeleri, RE4’ün gizli zorluk değeri, Hades’in Tanrı Modu
  2. Akış ve dinamik zorluk — kaygı ile sıkıntı arasında dar bir kanal
  3. YZ yönetmeni — Left 4 Dead’in gerilim–rahatlama dalgası, Warframe’in yoğunluk ölçümü
  4. Lastik bant — yarış oyunları yakın yarışı nasıl korur, nasıl “hile” gibi görünmez?
  5. Adil hissettiren rastgelelik — Sid Meier’in 3’e 1’i, XCOM’un gizli nişan yardımı, Dota’nın PRD’si
  6. Oyuncu modelleme ve eşleştirme — Tomb Raider: Underworld’ün dört oyuncu tipi, Elo, TrueSkill, etik sorular
  7. Kod — DDA, yönetmen durum makinesi, Elo + dört laboratuvar
  8. Araçlar — telemetri, OpenSkill/TrueSkill, eşleştirme hizmetleri, gizlilik
🎮 Bu dersin sonunda…

…oyuncunun becerisini ölçüp zorluğu fark ettirmeden ayarlayabilecek, gerilim ve rahatlama ritmi kuran bir yönetmen yazabilecek, rastgeleliği “adil hissettirecek” şekilde biçimlendirebilecek ve oyuncu verisini oyuncunun yararına kullanmanın sınırlarını tartışabileceksiniz.

🤔 ISINMA: BİR OYUNUN SİZİ “KOLLADIĞINI” HİÇ FARK ETTİNİZ Mİ?

Çok öldüğünüz bir yerde birden can paketleri çoğaldı mı? Yarışta arkada kalınca rakipler yavaşladı mı? Son vuruşunuz hep mi “tam zamanında” isabet etti?

  • Büyük ihtimalle evet, ve büyük ihtimalle fark etmediniz. Bu, tasarımın başarısıdır.
  • Aynı oyunu oynayan iki kişinin becerisi 10 kat farklı olabilir. Tek bir sabit zorluk, birini sıkar, diğerini bıktırır.
  • Bu hafta oyuncuyu ölçen ve oyunu ona göre ayarlayan YZ’leri inceliyoruz. Ve şu soruyu soruyoruz: Bu ayar oyuncunun eğlencesi için mi, yoksa başka bir şey (satış, oyunda kalma süresi) için mi?

🎯 Bu konu için bilmeniz gerekenler

Yeşil = gerekli · kesikli = faydalı ama şart değil. Tıklayınca ilgili sunuma gider.

Neden?YZ yönetmeni dört durumlu bir FSM; oyuncunun “yoğunluk” değeri Y11’deki farkındalık sayacının kardeşi; lastik bant bir utility eğrisi. Yeni olan, bunları düşmana değil oyuncunun deneyimine uygulamak.
🧰 Kodlamadan korkuyorsanızMatematik olarak ortalama, yüzde ve basit bir eğri yeterli. Elo formülünü laboratuvarda yazacaksınız.

Mini sözlük

DDA (dynamic difficulty adjustment)dinamik zorluk ayarıZorluğun oyuncunun performansına göre oyun sırasında değişmesi
flowakışZorluk ile becerinin dengede olduğu, kendini kaptırma hâli
AI director · pacingYZ yönetmeni · tempoDeneyimin ritmini (gerilim/rahatlama) yöneten sistem
intensityyoğunlukOyuncunun ne kadar “sıkıştığının” sayısal tahmini
rubber-bandinglastik bantRakiplerin oyuncudan çok uzaklaşmaması için hızlarının ayarlanması
PRD (pseudo-random distribution)sözde rastgele dağılımUzun şanssızlık serilerini önleyen, olasılığı her denemede artan rastgelelik
player model · telemetryoyuncu modeli · telemetriOyuncunun beceri/tarz/tercih tahmini · oyundan toplanan olay verisi
Elo · TrueSkill · matchmaking— · — · eşleştirmeBeceri puanlama sistemleri · oyuncuları maçlara yerleştirme
LEVEL 0
Zorluk neden zor?
gizli mi, açık mı?
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Üç oyun, üç yaklaşım

Crash Bandicoot (1996): sessiz yardımYönetmen Jason Rubin’in anlattığına göre oyun, oyuncunun ne kadar zorlandığına göre küçük ayarlar yapıyordu: 5 can kaybettikten sonra koruyucu Aku Aku maskesi vermek, her kayıp canda kovalayan kayaları biraz yavaşlatmak. Sonraki oyunlarda ve N. Sane Trilogy’de daha fazla kontrol noktası da eklendi. Oyuncu çoğu zaman bunu fark etmedi.
Resident Evil 4 (2005): gizli değerOyuncuların ve meraklıların analizleriyle ortaya çıktı: oyun, isabet oranı, alınan hasar ve ölümlere göre değişen gizli bir zorluk değeri tutuyor; iyi oynayana daha saldırgan ve dayanıklı düşmanlar, zorlanana daha yumuşak karşılaşmalar. Capcom bunu oyunda hiç açıklamadı. (Durum: topluluk analizleriyle belgelenmiş; resmî tanıtım yok.)
Hades (2020): açık ve isteğe bağlıSupergiant’ın Tanrı Modu: oyuncu açarsa %20 hasar direnciyle başlar; her ölümde %2 artar, en çok %80. Düşmanlar zayıflamıyor: oyuncu her denemede kalıpları biraz daha öğrenebiliyor. Açık, saygılı ve geri alınabilir.
gizli / otomatikaçık / oyuncu seçer
artısıAkış bozulmaz, oyuncu “küçümsendiğini” hissetmezDürüst; oyuncunun kontrolü var; erişilebilirlik
eksisiFark edilirse “hile” hissi; usta oyuncu cezalandırılabilirGurur engeli (“kolay mod açmam”); seçim yükü

🎬 Ara: Resident Evil 4’ün gizli zorluğu

What Capcom Didn’t Tell You About Resident Evil 4
Game Maker’s Toolkit · 6 dk · YouTube’da aç

Az önceki tablodaki “gizli değer” satırının hikâyesi: RE4 oyuncunun isabet oranına, aldığı hasara ve ölümlerine göre düşmanların saldırganlığını ve dayanıklılığını sessizce değiştiriyor. Oyuncular bunu yıllarca fark etmedi.

🤔 İzlerkenRE4 hangi ölçümlere bakıyor? Oyuncu hangi durumda zorluğun düştüğünü fark edebilir? Sizce bu sistemi açıkça söylemek oyunu bozar mıydı?
LEVEL 1
Akış ve dinamik zorluk
kaygı ile sıkıntı arasında
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Önce günlük hayattan: masa tenisi rakibi 🏓

sizin beceriniz →rakibin gücü (zorluk) →KAYGISIKINTIAKIŞ KANALI🏓şampiyon🏓yeni başlayan🏓denk rakip

Aynı masa tenisi masasında üç farklı rakiple oynadığınızı düşünün:

  • Şampiyonla: her top köşeye gelir, bir sayı bile alamazsınız → kaygı, bırakmak istersiniz.
  • Yeni başlayanla: topu bile karşıya atamıyor → sıkıntı, telefona bakarsınız.
  • Denk rakiple: sayılar uzun sürer, bazen kazanır bazen kaybedersiniz, zaman su gibi akar → akış.

Bir de şu var: siz oynadıkça iyileşirsiniz. Dün denk olan rakip bugün sıkıcı gelir. İyi bir antrenör, sizi hep yeşil kanalda tutacak rakibi seçer. Oyundaki zorluk ayarı YZ’si o antrenördür.

Akış kanalı

  • Psikolog Mihaly Csikszentmihalyi’nin akış kavramı: görev çok zorsa kaygı, çok kolaysa sıkıntı; ikisinin dengede olduğu dar bir kanalda insan kendini kaptırır.
  • Oyuncu öğrendikçe becerisi artar: sabit bir oyun zamanla kolaylaşır. İyi bir zorluk eğrisi bu artışı takip etmelidir.
  • Jenova Chen’in yüksek lisans tezi ve oyunu flOw (2006): zorluğu oyuncunun kendi seçimleriyle ayarlamasına izin verir (daha derine dalmak ya da yüzeye çıkmak). Oyuncu odaklı DDA.
DDA’nın döngüsüölç (son karşılaşmalar, ölümler, isabet, süre) → tahmin et (beceri, “akışta mı?”) → ayarla (düşman sayısı/canı/saldırganlığı, can paketi, kontrol noktası) → tekrar.
⚠️ DDA tuzakları
  • Sömürülür: oyuncu bilerek kötü oynayıp zorluğu düşürür, sonra patlar.
  • Ustayı cezalandırır: iyi oynadıkça oyun zorlaşırsa “ilerleme” hissi kaybolur.
  • Salınım: çok hızlı ayar, zorluğu her karşılaşmada iniş çıkışa sokar.
  • Fark edilirse başarı değersizleşir (“oyun beni kazandırdı”).
Çare: küçük ve yavaş ayar, alt/üst sınır, ayarı oyuncunun göremeyeceği değişkenlere uygulamak (kaynak, düşmanın tereddüt süresi) ve kritik anlarda (boss) kapatmak.
🧭 DEMOYU OKUMA KILAVUZU (bir sonraki slayt)
  1. Sol kare akış kanalı: yatay eksen oyuncunun becerisi, dikey eksen oyunun zorluğu. Yeşil şerit akış, üstü kırmızı kaygı (oyun becerinin çok üstünde), altı mavi sıkıntı.
  2. Siyah çizgi 120 karşılaşma boyunca bir oyuncunun yolculuğu; sarı nokta şu an bulunduğu yer. Oyuncu öğrendikçe çizgi sağa gider; zorluk arttıkça yukarı.
  3. Sağ üst: mor çizgi her karşılaşmada kazanma olasılığı (yeşil bant %50–80). Altındaki şerit: yeşil kazandı, kırmızı kaybetti.
  4. Sağ alt üç çubuk: oyuncu zamanının yüzde kaçını akışta, kaygıda, sıkıntıda geçirdi. Karşılaştıracağınız sayı bu.
  5. Simülasyondaki oyuncu, dengeli maçlarda daha hızlı öğrenir (çok kolay ya da çok zor karşılaşmadan az şey öğrenilir).

Canlı: akışta tutmak 🌊

  1. “sabit” politikada öğrenme hızını 2’ye çıkarın: çizgi sağa kayıp sıkıntı bölgesine giriyor. Öğrenme hızı 0,25 ve başlangıç becerisi 0: oyuncu kaygıda takılıyor.
  2. “basamaklı”: ortalama bir oyuncu için iyi bir eğri. Ama hızlı öğrenen biri için yetersiz, yavaş öğrenen biri için fazla. “başka oyuncu” ile birkaç profil deneyin.
  3. “dinamik”: çizgi akış kanalında kalmaya çalışıyor. Hedef galibiyeti 0,5’e indirin (zorlu, yarı yarıya) ve 0,9’a çıkarın (rahat). Hangisi sizin oyununuza uygun?
  4. Alt şeride bakın: DDA’da bile kayıplar var; amaç hiç kaybetmemek değil, kayıpların anlamlı olması.
  1. Sol kare akış kanalı: yatay eksen oyuncunun becerisi, dikey eksen oyunun zorluğu. Yeşil şerit akış, üstü kırmızı kaygı (oyun becerinin çok üstünde), altı mavi sıkıntı.
  2. Siyah çizgi 120 karşılaşma boyunca bir oyuncunun yolculuğu; sarı nokta şu an bulunduğu yer. Oyuncu öğrendikçe çizgi sağa gider; zorluk arttıkça yukarı.
  3. Sağ üst: mor çizgi her karşılaşmada kazanma olasılığı (yeşil bant %50–80). Altındaki şerit: yeşil kazandı, kırmızı kaybetti.
  4. Sağ alt üç çubuk: oyuncu zamanının yüzde kaçını akışta, kaygıda, sıkıntıda geçirdi. Karşılaştıracağınız sayı bu.
  5. Simülasyondaki oyuncu, dengeli maçlarda daha hızlı öğrenir (çok kolay ya da çok zor karşılaşmadan az şey öğrenilir).
🔎 DEMODA DENEYİN
  1. “sabit” politikada öğrenme hızını 2’ye çıkarın: çizgi sağa kayıp sıkıntı bölgesine giriyor. Öğrenme hızı 0,25 ve başlangıç becerisi 0: oyuncu kaygıda takılıyor.
  2. “basamaklı”: ortalama bir oyuncu için iyi bir eğri. Ama hızlı öğrenen biri için yetersiz, yavaş öğrenen biri için fazla. “başka oyuncu” ile birkaç profil deneyin.
  3. “dinamik”: çizgi akış kanalında kalmaya çalışıyor. Hedef galibiyeti 0,5’e indirin (zorlu, yarı yarıya) ve 0,9’a çıkarın (rahat). Hangisi sizin oyununuza uygun?
  4. Alt şeride bakın: DDA’da bile kayıplar var; amaç hiç kaybetmemek değil, kayıpların anlamlı olması.

🔗 Başka gözle: etkileşimli anlatımlar ve yazılar

Aynı konuyu başka bir anlatımla, kendi elinizle oynayarak görmek çok işe yarar. Kartlar yeni sekmede açılır; çoğu İngilizce ama görsel ve etkileşimli.

Quiz 1 · akış
Bir DDA sistemi oyuncu her kaybettiğinde zorluğu %30 düşürüyor, her kazandığında %30 artırıyor. Oyuncular ne hisseder?
Büyük ve hızlı ayarlar salınım yaratır ve görünür olur. İyi DDA küçük adımlarla, birkaç karşılaşmanın ortalamasına bakarak, sınırlar içinde değişir; laboratuvarda tam olarak bunu yazacaksınız.
LEVEL 2
YZ yönetmeni ve tempo
gerilim, zirve, rahatlama
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

📸 Oyundan bir kare: Left 4 Dead (2008)

Left 4 Dead (2008) ekran görüntüsü
“YZ Yönetmeni” oyuncuların ne kadar zorlandığını ölçüp zombi dalgalarının ne zaman ve ne kadar kalabalık geleceğine karar veriyor: gerginlik yükselir, sonra nefes alma anı gelir.
Görsel: Left 4 Dead ekran görüntüsü, Valve, Wikipedia (eğitim amaçlı adil kullanım)

Çizimle: yönetmenin dört evresi

BUILD UPtam tehdit: zombi, sürüSUSTAIN PEAKzirve 3–5 sn korunurPEAK FADEyeni düşman yokRELAX30–45 sn nefesBUILD UPyeniden…zirve eşiğizaman →oyuncunun gerilimi💥 hasar, 🧟 yakında ölen zombi → gerilim artarYönetmen gerilimi ölçer, eşiği geçince geri çekilir; gerilim düşünce yeniden saldırtır. Sonuç: dalga dalga bir korku filmi temposu.

Derin hikâye: Left 4 Dead’in YZ Yönetmeni (Valve, 2008)

Michael Booth, “The AI Systems of Left 4 Dead” (2009): dört oyuncunun zombi sürüleri arasından kaçtığı bu oyunda, düşman yerleşimi elle yapılmıyordu. Amaç: Counter-Strike’taki doğal gerilim–rahatlama ritmini yakalamak ve her oynayışta farklı olmak.

  • Duygusal yoğunluk: her oyuncu için bir sayı. Artar: hasar alınca (hasarla orantılı), yere düşünce, bir canavar tarafından kenardan çekilince, yakında bir düşman ölünce (uzaklıkla ters orantılı). Zamanla sıfıra doğru azalır; ama oyuncuyla aktif savaşan düşman varsa azalmaz.
  • Yönetmen dört oyuncunun en yüksek yoğunluğunu izler ve dört durumda dolaşır:
  1. Build Up: yoğunluk zirve eşiğini geçene kadar tam tehdit (gezgin zombiler, sürüler, özel düşmanlar).
  2. Sustain Peak: zirveden sonra 3–5 saniye daha tam tehdit (en kısa tırmanışı garanti eder).
  3. Peak Fade: en düşük tehdide geç; yoğunluk zirve aralığından çıkana kadar bekle, mevcut çatışma doğal olarak bitsin.
  4. Relax: 30–45 saniye (ya da oyuncular yeterince ilerleyene kadar) en düşük tehdit; sonra yeniden Build Up.
AyrıntılarDüşmanlar oyuncuların görmediği yerlerde doğar (“prosedürel nüfus”). Rahatlama sırasında gezgin zombi yok, sürü yok, özel düşman yok. Boss karşılaşmaları (Tank, Witch) uyarlanabilir tempodan etkilenmez: ritmi bilerek bozmaları için.
Warframe’de aynı fikirDaniel Brewer (Game AI Pro Online 2021): prosedürel seviyelerde tetik alanları kullanılamayınca bir YZ yönetmeni kullanıldı. Yoğunluk: alınan hasar / toplam can ve kalkan oranında, öldürülen düşmanın uzaklığıyla orantılı artar; hedef alınıyorsan korunur, yoksa azalır. 100’e ulaşınca yeni düşman doğurma durur.

Canlı: YZ yönetmeni 🎬

  1. Bir süre izleyin: kırmızı yoğunluk eğrisi dalgalanıyor; arka plan renkleri yönetmenin durumunu gösteriyor. Mavi çizgi: aktif düşman. Rahatlama (yeşil) sırasında mavi sıfıra iniyor.
  2. Oyuncu becerisini 0,1’e indirin: düşmanlar yavaş temizleniyor, Peak Fade uzuyor; yönetmen savaş bitmeden dinlenmeyi başlatmıyor. 0,9: dalgalar kısa ve sık.
  3. Rahatlama süresini 2 saniyeye indirin: dinlenme yok, sürekli gerilim; sonra 40: uzun sessizlik. Hangisi korku, hangisi aksiyon oyununa uyar?
  4. “Pusu!” düğmesi: senaryolu bir olay yoğunluğu aniden zirveye taşırsa yönetmen otomatik olarak geri çekilir.
🔎 DEMODA DENEYİN
  1. Bir süre izleyin: kırmızı yoğunluk eğrisi dalgalanıyor; arka plan renkleri yönetmenin durumunu gösteriyor. Mavi çizgi: aktif düşman. Rahatlama (yeşil) sırasında mavi sıfıra iniyor.
  2. Oyuncu becerisini 0,1’e indirin: düşmanlar yavaş temizleniyor, Peak Fade uzuyor; yönetmen savaş bitmeden dinlenmeyi başlatmıyor. 0,9: dalgalar kısa ve sık.
  3. Rahatlama süresini 2 saniyeye indirin: dinlenme yok, sürekli gerilim; sonra 40: uzun sessizlik. Hangisi korku, hangisi aksiyon oyununa uyar?
  4. “Pusu!” düğmesi: senaryolu bir olay yoğunluğu aniden zirveye taşırsa yönetmen otomatik olarak geri çekilir.

🎬 Ara: Left 4 Dead’in yönetmeni

The Director AI of Left 4 Dead
AI and Games (Tommy Thompson) · 11 dk 34 sn · YouTube’da aç

Demoda oynadığımız dört evreli yönetmenin orijinal oyundaki hâli: düşmanların nerede doğduğu, “duygusal yoğunluk” ölçümü, Tank ve Witch gibi özel düşmanların zamanlaması.

🤔 İzlerkenVideoda yönetmen düşmanları neden oyuncunun göremediği yerlerde doğuruyor? Yoğunluğu artıran olaylar hangileri? Demodaki “dinlenme süresi” kaydırıcısının oyundaki karşılığı ne?
LEVEL 3
Yarış ve lastik bant
yakın yarış, görünmez el
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Lastik bant nasıl “hile” gibi görünmez?

Nic Melder (Game AI Pro, 42. bölüm): Öndeki YZ’yi yavaşlat, arkadakini hızlandır; böylece rakipler oyuncuya bir lastik bantla bağlıymış gibi yakın kalır. Ama kötü yapılırsa oyuncu, aynı arabadaki YZ’nin açıkça daha hızlı gittiğini görür ve kandırıldığını hisseder.

  • Ölü bölge: oyuncunun yakınında hiçbir ayar yok; yan yana yarışta her şey “gerçek”.
  • Önce sürücü becerisini değiştir (daha erken fren, virajda daha yavaş): araba aynı, hile yok. Beceri sınırına gelince motor gücünü değiştir.
  • Kapat: yarış başında (ilk viraja yığılmayı önlemek için), düşük hızda (kaza sonrası kalkış), YZ oyuncuyu tur bindirirken.
  • Yığılma: güçlü ileri bant YZ’leri bir araya toplar; oyuncu hepsini tek hamlede geçer. Çare: bütün öndeki grubu ortalama konumlarına göre birlikte ayarla.
Mario Kart: eşyayla lastik bantMario Kart serisinde eşya kutuları sıralamaya göre farklı eşya verir: arkadakilere güçlü eşyalar (yıldız, kurşun, ünlü “mavi kabuk” önde gideni vurur), öndekilere zayıflar. Rakip arabaların hızına dokunmadan yarışı sıkıştırır; tartışmalı ama oyunun kimliğinin parçası.
Bölünmüş ekrandaBirden çok insan oyuncu varsa: arkadaki insan, geri bant için; öndeki insan, ileri bant için referans. Aradaki YZ’lere dokunulmaz.

Canlı: lastik bant 🏎️

  1. Ekranı okuyun: görünüm size göre. Ortadaki kesikli çizgi sizsiniz; sağdaki arabalar önünüzde, soldakiler arkanızda. Sağdaki ×1.00 o YZ’nin hız çarpanı: kırmızı = yavaşlatılıyor, yeşil = hızlandırılıyor.
  2. “🏁 yarışı başlat”: yeşil şeridin (ölü bölge) içindeki arabanın çarpanı hep ×1.00. Yan yana yarışta hile yok.
  3. Lastik bant gücünü 0 yapıp yeniden başlatın: hızlı YZ’ler kaybolur, yavaşlar geride kalır; yarış 10 saniyede “biter”. 1 yapın: herkes dibinizde.
  4. 🚀 Nitro’ya basıp öne geçin: az önce yeşil olan çarpanlar ne oldu? Arkaya düşünce ne oluyor? Oyun sizi hem yakalıyor hem bekliyor.
  5. Ölü bölgeyi 0 yapın: yanınızdaki araba bile ayarlanıyor. Gerçek bir oyunda bunu nasıl fark ederdiniz?
🔎 DEMODA DENEYİN
  1. Ekranı okuyun: görünüm size göre. Ortadaki kesikli çizgi sizsiniz; sağdaki arabalar önünüzde, soldakiler arkanızda. Sağdaki ×1.00 o YZ’nin hız çarpanı: kırmızı = yavaşlatılıyor, yeşil = hızlandırılıyor.
  2. “🏁 yarışı başlat”: yeşil şeridin (ölü bölge) içindeki arabanın çarpanı hep ×1.00. Yan yana yarışta hile yok.
  3. Lastik bant gücünü 0 yapıp yeniden başlatın: hızlı YZ’ler kaybolur, yavaşlar geride kalır; yarış 10 saniyede “biter”. 1 yapın: herkes dibinizde.
  4. 🚀 Nitro’ya basıp öne geçin: az önce yeşil olan çarpanlar ne oldu? Arkaya düşünce ne oluyor? Oyun sizi hem yakalıyor hem bekliyor.
  5. Ölü bölgeyi 0 yapın: yanınızdaki araba bile ayarlanıyor. Gerçek bir oyunda bunu nasıl fark ederdiniz?
Quiz 2 · lastik bant
Lastik bandın oyuncunun hemen çevresinde (ölü bölgede) KAPALI olmasının sebebi nedir?
Lastik bandın amacı görünmez kalmak. Oyuncu ancak yakındaki rakibin hızını doğrudan karşılaştırabilir; uzaktaki aracın biraz yavaşlaması fark edilmez. Melder’in eğrisinde “c bölgesi” bu yüzden düzdür.
LEVEL 4
Adil hissettiren rastgelelik
matematik değil, psikoloji
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Hikâye: “Oyuncular mantıklı değildir” (Sid Meier, GDC 2010)

  • Sid Meier’in “The Psychology of Game Design (Everything You Know Is Wrong)” konuşması: Civilization Revolution’da oyuncunun 3 güçlü birimi 1 güçlü düşmana saldırıyor. Doğru matematikle, düşman yaklaşık %25 ihtimalle kazanır.
  • Test oyuncuları bundan nefret etti. Ama 1’e 3 saldırıyı kazandıklarında hiç şikâyet etmediler: bunu “parlak stratejilerine” bağladılar.
  • Sonuç: oyun, oyuncunun lehine olan olasılıkları gösterilenden daha cömert uygular. Meier’in dersi: tasarımın amacı matematiksel doğruluk değil, oyuncunun deneyimi.
XCOM: Enemy Unknown (2012)Oyuncuların oyunun yapılandırma dosyalarında (DefaultGameCore.ini) bulduğu gibi: kolay ve normal zorlukta, gösterilen isabet şansı %50 ve üstü olan atışlarda, art arda ıskaladıkça gizli bir nişan yardımı devreye giriyor. Ekranda yazan yüzde, uygulanan yüzde değil. (Durum: oyun dosyalarıyla belgelenmiş.)
Neden?İnsanlar olasılığı kötü sezer: %90 isabet ıskalanınca “oyun hile yapıyor” deriz; arka arkaya iki %75’lik ıskalama “imkânsız” gelir (aslında %6 ihtimal). Uzun şanssızlık serileri, ortalama doğru olsa bile haksızlık gibi hissedilir. Oyun tasarımı bu yanılgıları yönetmek zorunda.

Canlı: gerçek rastgele mi, PRD mi? 🎲

PRD (Warcraft III, Dota 2): ilk denemede şans C, her başarısızlıkta C kadar artar (C·n), başarıda sıfırlanır. C, ortalama gerçek olasılığı tutturacak şekilde önceden hesaplanır (%25 için ≈ %8,5).

LEVEL 5
Oyuncu modelleme ve eşleştirme
oyuncuyu anlamak, kime karşı oynayacağını seçmek
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Oyuncu modelleme: ne, neden, nasıl?

  • Ne? Beceri (ne kadar iyi?), tarz (nasıl oynuyor?), tercih (neyi seviyor?), duygu (şu an ne hissediyor?).
  • Veri: telemetri (ölümler, süreler, yollar, satın almalar), anketler, hatta fizyolojik sinyaller (araştırmada: kalp atışı, ten iletkenliği, yüz ifadesi).
  • Isı haritaları: Halo 3 geliştirilirken Microsoft’un kullanıcı araştırma ekibi, oyuncuların nerede öldüğünü haritalara işleyerek dengesiz bölgeleri buldu (Wired, 2007).
  • Kullanım: zorluk (bu ders), içerik (Y15), rakipler (Drivatar, Y13), test ve denge.
Bartle tipleri (1996)Richard Bartle’ın MUD oyuncuları için önerdiği dört tip: başarıcılar, kâşifler, sosyaller, katiller. Ünlü ama veriden değil gözlemden çıktı; bugün daha çok fikir verici bir çerçeve olarak kullanılıyor.
Tomb Raider: Underworld’ün dört oyuncu tipiDrachen, Canossa ve Yannakakis (2009): oyunu bitiren 1365 oyuncunun Xbox Live telemetrisi (ölüm sebepleri, bitirme süresi, yardım istekleri) kendi kendini düzenleyen haritalarla (SOM, bir sinir ağı türü) kümelendi. Dört tip çıktı:
  • Veterans: az ölür, çok hızlı bitirir.
  • Solvers: bulmacaları ipucusuz çözer, yavaş ve dikkatli; en çok düşerek ölür.
  • Pacifists (en büyük grup): en çok düşmanlardan ölür, gezinmede iyidir.
  • Runners: çok ölür ama çok hızlı bitirir.
Ders: “doğrusal” bir oyunda bile oyuncular oyunu çok farklı şekillerde oynar.

Çizimle: Bartle’ın dört oyuncu tipi (1996)

bir şey YAPMAK (etkilemek)ETKİLEŞMEK (tanımak, konuşmak)← diğer oyunculardünya →⚔️Katillerdiğer oyunculara üstünlük🏆Başarıcılarpuan, seviye, rozet💬Sosyallersohbet, lonca, dostluk🧭Kâşiflerharitanın her köşesi, sırlar

Richard Bartle, çok oyunculu metin oyunlarındaki (MUD) oyuncuları iki soruyla ayırdı: neyle ilgileniyor (diğer oyuncular mı, dünya mı) ve onunla ne yapmak istiyor (etkilemek mi, etkileşmek mi)?

Bir oyuncu modeli bu tipleri veriden tahmin etmeye çalışır: haritanın %90’ını gezen ama görevlerin yarısını bitirmeyen biri büyük ihtimalle kâşiftir. Ona yeni bir mağara göstermek, zorluğu artırmaktan daha çok sevindirir.

Bartle tipleri ölçümden değil gözlemden çıktı; bugün “kesin sınıflandırma” değil, “oyuncular farklı şeyler ister” fikrinin akılda kalan bir resmi olarak kullanılıyor.

Eşleştirme: kime karşı oynayacağım?

  • Elo (Arpad Elo, satranç): her oyuncunun bir puanı; puan farkından beklenen skor hesaplanır, maçtan sonra “beklenenden ne kadar iyi/kötü?” oranında puan güncellenir. Laboratuvarda yazacaksınız.
  • Glicko: puana bir de belirsizlik ekler (az oynayanın puanı daha hızlı değişir).
  • TrueSkill (Microsoft Research, 2006, Xbox Live; Halo 3): takım oyunları ve çok oyunculu maçlar için Bayesçi beceri tahmini. Açık kaynak benzeri: OpenSkill.
  • Beceriye dayalı eşleştirme (SBMM) tartışmalı: adil maçlar mı, yoksa arkadaşlarla rahat oynamak mı? Her oyun farklı denge kurar.
Etik sınır: “bağlılık için” eşleştirme
  • EA araştırmacıları (Chen ve ark., 2017) EOMM çerçevesini yayımladı: sadece “adil” maçlar her zaman oyuncuyu oyunda tutmaz; eşleştirmeyi doğrudan oyuncunun oyunu bırakma riskini azaltacak şekilde optimize etmeyi önerdi.
  • Activision’ın 2015’te başvurup Ekim 2017’de aldığı bir patent: usta bir oyuncuyu yeni bir oyuncuyla eşleştirip yeninin ustanın eşyalarını satın almasını teşvik eden eşleştirme. Tepki büyük oldu; Activision, bunun stüdyolarından bağımsız bir Ar-Ge ekibinin keşif amaçlı patenti olduğunu ve oyunlarda uygulanmadığını açıkladı. (Durum: patent gerçek; uygulama iddiası şirket tarafından reddedildi.)
Soru: Oyuncu modelini oyuncunun eğlencesi için mi, şirketin metrikleri için mi kullanıyoruz?
Quiz 3 · oyuncu modeli
Telemetri, oyuncuların %40’ının 3. bölümdeki bir köprüde oyunu bıraktığını gösteriyor. En iyi ilk adım hangisi?
Veri “nerede” sorusunu cevaplar, “neden” sorusunu değil. Isı haritası ve ölüm sebepleri (Tomb Raider örneğindeki gibi), sorunun beceri mi, belirsiz hedef mi, kötü kamera mı olduğunu gösterir. Genel zorluk düşürmek (D) diğer oyuncuları sıkar; doğrudan düzeltme + ölçüm en sağlam yoldur.
LEVEL 6
Kod ve laboratuvarlar
DDA, yönetmen, Elo
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

DDA ve YZ yönetmeni (1/2)

DDA ve YZ yönetmeni (2/2)

Elo ve sözde rastgele dağılım

🎒 Kod sözlüğü

Queue<bool> · Enqueue · DequeuekuyrukSon N sonucu tutan kayan pencere (Yığınlar ve Kuyruklar sunumu)
recent.Count(w => w)LINQ ile saymaKoşulu sağlayan eleman sayısı (using System.Linq)
Mathf.Lerp(a, b, t)doğrusal ara değert = 0 → a, t = 1 → b; zorluğu oyun değişkenlerine eşlemek
[Range(0, 10)]öznitelikInspector’da kaydırıcı: tasarımcı canlı ayarlar
10 ** x · Math.powüs almaElo’daki 10 tabanlı beklenti formülü
class PRD { constructor … }JS sınıfıDurum (n) tutan küçük nesne

🌱 Isınma kodu: oyuncu ne kadar kazanıyor?

Her DDA sisteminin ilk adımı ölçmek. Tek bir sonuca değil, son birkaç karşılaşmanın ortalamasına bakıyoruz: oyuncu bir kez şanssız diye oyunu kolaylaştırmak salınım yaratır. Bir sonraki laboratuvardaki recent parametresi tam olarak bu liste.

🌱 Isınma kodu: zorluğu fark ettirmeden değiştir

Quiz 1’deki “%30 in, %30 çık” sisteminin ilacı. Oyuncu zorluğun 5’ten 9’a fırladığını hemen hisseder; 5 → 5,5 → 6 diye sürünmesini hissetmez. İpucu: Math.max(-maxStep, Math.min(maxStep, wanted - oldD)).

🧪 Canlı laboratuvar: kendi DDA kuralınız

Başlangıç kodunda zorluk hiç değişmez: oyuncu önce kaygıda, sonra sıkıntıda. Son sonuçların ortalamasına bakan bir kural yazın. Üç farklı oyuncu profiliyle test ediliyor.

🐍 Laboratuvar: Elo puanı

Fark edin: iki puanın toplamı değişmez (biri ne kazanırsa öbürü o kadar kaybeder). Güçlü olanı yenmek çok, zayıfı yenmek az puan kazandırır.

🐍 Laboratuvar: lastik bant çarpanı

Melder’in grafiğindeki a–e bölgelerinin kodu. Sonuç, YZ’nin sürücü becerisi ya da motor gücüyle çarpılır.

🐍 Laboratuvar: yönetmenin sonraki durumu

Y2’deki FSM’nin aynısı; bu sefer bir düşmanı değil, bütün oyunun temposunu yönetiyor.
LEVEL 7
Kütüphaneler ve entegrasyon
ölç, ayarla, saygı göster
  • zorluk neden zor?
  • akış ve dinamik zorluk
  • YZ yönetmeni ve tempo
  • yarış ve lastik bant
  • adil hissettiren rastgelelik
  • oyuncu modelleme ve eşleştirme
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

🧰 Kütüphaneler ve araçlar

adplatformne yapar / sınırlarınasıl eklenir
Unity Analytics (UGS)UnityÖzel olaylar, huniler, oyuncu segmentleri; uzaktan ayar (Remote Config) ile zorluk değerlerini yayından sonra değiştirme.Package Manager → Analytics
GameAnalyticsUnity / Unreal / Godot / webÜcretsiz telemetri: ilerleme, kaynak, hata olayları, ısı haritası benzeri raporlar.SDK paketi
OpenSkillPython / JS / diğerleriTrueSkill benzeri, açık lisanslı çok oyunculu beceri puanlama (takımlar, beraberlik).pip install openskill
trueskill (Python)PythonTrueSkill algoritmasının açık uygulaması; prototip ve analiz için.pip install trueskill
Nakamaaçık kaynak sunucuEşleştirme (matchmaker), liderlik tabloları, sohbet; kendi sunucunuzda.Docker
scikit-learnPythonTelemetriden oyuncu kümeleme (k-means), oyunu bırakma tahmini (lojistik regresyon).pip install scikit-learn

🧩 Zorluk ve oyuncu modeli eklerken

  1. Önce seçenek: zorluk seviyeleri ve erişilebilirlik ayarları (Celeste’in Yardım Modu, Hades’in Tanrı Modu gibi) çoğu zaman gizli DDA’dan daha saygılıdır.
  2. Telemetri tasarımı: hangi olayı neden topladığınızı yazın (ölüm yeri ve sebebi, bölüm süresi, yardım isteği).
  3. Gizlilik: kişisel veri için açık rıza ve aydınlatma (KVKK/GDPR); veriyi anonimleştirin, gerekenden fazlasını toplamayın.
  4. Küçük ve sınırlı ayar: oyuncunun doğrudan görmediği değişkenler; alt/üst sınır; boss ve senaryo anlarında kapalı.
  5. Uzaktan ayar ve A/B testi: değerleri yayından sonra güncelleyin, etkisini ölçün.
  6. Tasarımcı paneli: yönetmenin durumunu ve yoğunluğu oyun içinde gösteren hata ayıklama ekranı.
Etik kontrolHer ayar için sorun: “Oyuncu bunu öğrense rahatsız olur mu?” Can paketini biraz artırmak çoğu oyuncuyu rahatsız etmez; satın almaya yönlendirmek için maçları ayarlamak eder. Çocuklara yönelik oyunlarda ve kumar benzeri mekaniklerde (ganimet kutuları) sorumluluk daha da büyük.
⚙️ Rekabetçi oyunlardaDDA genelde sadece tek oyunculu ya da PvE’de; PvP’de adalet eşleştirmeyle sağlanır, oyun içinde gizli yardım hile sayılır.

🤖 Bu konuyu bir YZ kod asistanıyla yazarken

Sık yapılan hatalar — kontrol edin
  • Her karede zorluğu değiştirmek (salınım)
  • Oyuncunun gördüğü değerleri (hasar sayıları, yüzdeler) açıkça değiştirmek
  • Rekabetçi modda gizli yardım
  • Kişisel veriyi rızasız toplamak
  • Asistanın önerdiği “bağlılığı artırma” hilelerini etik değerlendirme yapmadan uygulamak
İyi bir istek (prompt) örneği

“Unity 6, C#. Bir tek oyunculu aksiyon oyunu için “PacingDirector” yaz: (1) PlayerIntensity: hasar (hasar/maksCan oranında), yakın düşman ölümü (1/uzaklık), düşman saldırmıyorsa saniyede 0,08 azalma. (2) Dört durumlu FSM: BuildUp, SustainPeak (4 sn), PeakFade (yoğunluk < 0,4 ve canlı düşman 0 olunca bitir), Relax (25 sn). (3) EnemySpawner’a CanSpawn() ve SpawnBudget sağlayan arayüz; spawn noktaları oyuncunun kamerasının görmediği NavMesh noktaları. (4) BossArena içindeyken yönetmeni devre dışı bırak. (5) Oyun içi debug paneli: durum, yoğunluk grafiği (son 60 sn), aktif düşman sayısı. (6) Ayarları ScriptableObject’te tut.”

  • Ayarın hangi değişkenlere uygulanacağını ve sınırlarını siz belirleyin
  • Telemetri olaylarını ve gizlilik metnini birlikte isteyin
  • Yönetmen için hata ayıklama paneli (durum, yoğunluk grafiği) isteyin
  • Simülasyonla test: farklı beceri profilleri için zorluk eğrisi grafiği ürettirin

🔬 Araştırma ucu

Duygusal hesaplamaOyuncunun duygusunu (gerilim, sıkıntı, hayal kırıklığı) kamera, ses ya da fizyolojik sinyallerden tahmin edip deneyimi uyarlamak. Y&T kitabının “Modeling Players” bölümü.
Deneyim odaklı PCGOyuncu modeli + içerik üretimi (Y15): oyuncunun tarzına göre seviye üretmek (Solver’a daha çok bulmaca, Runner’a daha çok parkur).
Pekiştirmeli DDAZorluk ayarını bir RL ajanına öğretmek (Y13): ödül = oyuncunun oyunda kalması ve memnuniyeti. Ödül hilesine dikkat: “oyunda tutmak” ile “eğlendirmek” aynı şey değil.

💬 Tartışma soruları

Yanınızdakiyle 2 dakika konuşun, sonra sınıfça tartışalım
  1. Bir oyunun size gizlice yardım ettiğini sonradan öğrendiğiniz oldu mu (ya da bu derste öğrendiniz mi)? Başarınız gözünüzde değer kaybetti mi?
  2. Mario Kart’ın mavi kabuğu: öndeki oyuncuyu cezalandırmak adil mi? Arkadaşlarınızla oynarken kabuk olmasaydı oyun daha mı iyi olurdu?
  3. XCOM ekranda %85 yazıp aslında daha yüksek bir şansla zar atıyor. Bu yalan mı, iyi tasarım mı? Peki ekranda %85 yazıp daha düşük şans uygulasaydı?
  4. Rekabetçi bir oyunda beceriye göre eşleştirme (SBMM) her maçı “terletir”. Arkadaşlarınızla rahat oynamak isterken sistem sizi hep dengi rakiplerle eşleştirmeli mi?
  5. Bir oyun şirketi oyuncu modelini “bu oyuncu bırakmak üzere, ona kolay bir maç verelim” diye kullanıyor. “Bu oyuncu harcamaya yatkın, ona pahalı eşyalı bir rakip gösterelim” diye kullansa? Çizgi nerede?

🚀 Proje ve araştırma önerileri

  1. [kolay] Görünür yardım — Bir platform oyununa Hades tarzı açık, isteğe bağlı yardım modu ekleyin; oyunculara sorun: hangisini tercih ediyorlar, gizli DDA mı açık seçenek mi?
  2. [kolay] PRD karşılaştırması — Bir kritik vuruş sistemini gerçek rastgele ve PRD ile yapıp 10 oyuncuya oynatın; “adil” bulma oranlarını karşılaştırın.
  3. [orta] Mini yönetmen — Unity’de dalga tabanlı bir hayatta kalma oyunu: YZ istemindeki PacingDirector + yoğunluk grafiği.
  4. [orta] Yarış YZ’si — Waypoint takip eden 5 YZ araba + Melder tarzı lastik bant (ölü bölge, beceri önce güç sonra, başlangıçta kapalı).
  5. [zor] Oyuncu kümeleme — Kendi oyununuzdan (ya da açık bir veri kümesinden) telemetri toplayın, k-means ile oyuncu tiplerini bulun, her tip için bir tasarım önerisi yazın.
  6. [araştırma] DDA fark edilir mi? — Aynı seviyeyi DDA açık/kapalı oynatıp oyunculara “oyun size yardım etti mi?” diye sorun; fark edilme oranı ile memnuniyet arasındaki ilişki.

Neler öğrendik? 🎒

  • Zorluk: gizli (Crash, RE4) ya da açık (Hades) ayar; ikisinin artı ve eksileri.
  • Akış kanalı ve DDA: ölç → tahmin et → küçük adımlarla ayarla.
  • YZ yönetmeni: yoğunluk + Build Up / Sustain / Fade / Relax (Left 4 Dead, Warframe).
  • Lastik bant: ölü bölge, önce beceri sonra güç, istisnalar (Melder).
  • Adil rastgelelik: Sid Meier’in 3’e 1’i, XCOM’un gizli yardımı, PRD.
  • Oyuncu modelleme: telemetri, ısı haritası, Tomb Raider: Underworld kümeleri.
  • Eşleştirme: Elo, TrueSkill; EOMM ve patent tartışması: kimin yararına?
  • Sonraki: performans: bütün bu YZ’leri saniyede 60 kare içinde çalıştırmak.

🎮 Bu sunumdaki oyunlar (1/2)

Adı geçen oyunu tanımıyorsanız: oyuncuların kullandığı wiki sayfası ve oyunu kısaca gösteren bir video. ▶ video slaydın üstünde açılır (Esc ile kapanır); 🎯 işaretli bağlantılar doğrudan bu sunumdaki konuya gider.

Hades 2020 · aksiyon roguelike
Yeraltı dünyasından kaçmaya çalışan Zagreus; her denemede oda sırası değişir.
Left 4 Dead 2008 · eşli nişancı
Dört kişilik ekip zombi sürülerinden kaçar; “yönetmen” YZ her oyunu farklı akıtır.
Warframe 2013 · eşli aksiyon
Uzay ninjalarıyla oynanan ücretsiz çevrimiçi nişancı.
XCOM: Enemy Unknown 2012 · sıra tabanlı taktik
Uzaylı istilasına karşı küçük bir mangayı yönetirsiniz; her atış bir yüzde.
Dota 2 2013 · MOBA
5’e 5 takım strateji oyunu; kritik vuruş gibi şans olaylarında sözde rastgele dağılım kullanır.
Tomb Raider: Underworld 2008 · aksiyon-macera
Lara Croft’un İskandinav mitolojisi temalı macerası.
Crash Bandicoot 1996 · platform
PlayStation’ın maskotu sayılan 3B platform oyunu; üst üste ölene gizlice yardım eder.
Resident Evil 4 2005 · korku / aksiyon
Omuz üstü kamerayı popülerleştiren korku-aksiyon oyunu.

🎮 Bu sunumdaki oyunlar (2/2)

Adı geçen oyunu tanımıyorsanız: oyuncuların kullandığı wiki sayfası ve oyunu kısaca gösteren bir video. ▶ video slaydın üstünde açılır (Esc ile kapanır); 🎯 işaretli bağlantılar doğrudan bu sunumdaki konuya gider.

Counter-Strike 1999– · takım nişancısı
Teröristler ve antiterör timi; isabet ve gecikme telafisi çok tartışılan rekabetçi nişancı.
Mario Kart 1992– · yarış
Eşya atılan parti yarışı serisi; geride kalana daha iyi eşya verir.
Civilization 1991– · sıra tabanlı strateji
Bir uygarlığı taş devrinden uzay çağına yönetirsiniz; teknoloji ağacı serinin simgesi.
Warcraft III 2002 · gerçek zamanlı strateji
Kahramanlı strateji oyunu; kritik vuruş şansında sözde rastgele dağılım kullanır.
Halo 3 2007 · nişancı
Serinin üçüncü oyunu; ölüm ısı haritalarıyla harita dengesi ayarlandı.
Forza Motorsport 2005– · yarış simülasyonu
Xbox’ın gerçekçi yarış serisi; Drivatar rakipleri oyuncuların sürüşünden öğrenir.
Celeste 2018 · platform
Bir dağa tırmanış; zor ama cömert kontrol noktalı hassas platform oyunu.

Kaynaklar: videolar 🎬

📄 Akademik okumalar

Booth 2009 · The AI Systems of Left 4 Dead (AIIDE 2009 açılış konuşması (slaytlar))
YZ yönetmeni, yoğunluk, tempo.
Melder 2013 · A Rubber-Banding System for Gameplay and Race Management (Game AI Pro, Bölüm 42)
Lastik bant eğrisi ve istisnalar.
Brewer 2021 · Managing Pacing in Procedural Levels in Warframe (Game AI Pro Online, Bölüm 7)
Prosedürel seviyede yönetmen.
Drachen, Canossa & Yannakakis 2009 · Player Modeling using Self-Organization in Tomb Raider: Underworld (IEEE CIG 2009)
Dört oyuncu tipi.
Herbrich, Minka & Graepel 2006 · TrueSkill™: A Bayesian Skill Rating System (NeurIPS 2006)
Xbox Live eşleştirmesi.
Chen ve ark. 2017 · EOMM: An Engagement Optimized Matchmaking Framework (WWW 2017)
Bağlılık odaklı eşleştirme (etik tartışmasıyla okuyun).

Kaynaklar: hikâyelerin izi 📰

NEXT LEVEL ▶
Oyun YZ’sinde Performans
Bütçeler, zaman dilimleme, LOD, profil, çoklu iş parçacığı
SONRAKİ SUNUM ▶