…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.
Ç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?
Yeşil = gerekli · kesikli = faydalı ama şart değil. Tıklayınca ilgili sunuma gider.
| DDA (dynamic difficulty adjustment) | dinamik zorluk ayarı | Zorluğun oyuncunun performansına göre oyun sırasında değişmesi |
| flow | akış | Zorluk ile becerinin dengede olduğu, kendini kaptırma hâli |
| AI director · pacing | YZ yönetmeni · tempo | Deneyimin ritmini (gerilim/rahatlama) yöneten sistem |
| intensity | yoğunluk | Oyuncunun ne kadar “sıkıştığının” sayısal tahmini |
| rubber-banding | lastik bant | Rakiplerin oyuncudan çok uzaklaşmaması için hızlarının ayarlanması |
| PRD (pseudo-random distribution) | sözde rastgele dağılım | Uzun şanssızlık serilerini önleyen, olasılığı her denemede artan rastgelelik |
| player model · telemetry | oyuncu modeli · telemetri | Oyuncunun beceri/tarz/tercih tahmini · oyundan toplanan olay verisi |
| Elo · TrueSkill · matchmaking | — · — · eşleştirme | Beceri puanlama sistemleri · oyuncuları maçlara yerleştirme |
| gizli / otomatik | açık / oyuncu seçer | |
|---|---|---|
| artısı | Akış bozulmaz, oyuncu “küçümsendiğini” hissetmez | Dürüst; oyuncunun kontrolü var; erişilebilirlik |
| eksisi | Fark edilirse “hile” hissi; usta oyuncu cezalandırılabilir | Gurur engeli (“kolay mod açmam”); seçim yükü |
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.
Aynı masa tenisi masasında üç farklı rakiple oynadığınızı düşünün:
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.
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.

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.
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ı.
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.
×1.00 o YZ’nin hız çarpanı: kırmızı = yavaşlatılıyor, yeşil = hızlandırılıyor.×1.00 o YZ’nin hız çarpanı: kırmızı = yavaşlatılıyor, yeşil = hızlandırılıyor.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).
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.
| Queue<bool> · Enqueue · Dequeue | kuyruk | Son N sonucu tutan kayan pencere (Yığınlar ve Kuyruklar sunumu) |
| recent.Count(w => w) | LINQ ile sayma | Koşulu sağlayan eleman sayısı (using System.Linq) |
| Mathf.Lerp(a, b, t) | doğrusal ara değer | t = 0 → a, t = 1 → b; zorluğu oyun değişkenlerine eşlemek |
| [Range(0, 10)] | öznitelik | Inspector’da kaydırıcı: tasarımcı canlı ayarlar |
| 10 ** x · Math.pow | üs alma | Elo’daki 10 tabanlı beklenti formülü |
| class PRD { constructor … } | JS sınıfı | Durum (n) tutan küçük nesne |
recent parametresi tam olarak bu liste.Math.max(-maxStep, Math.min(maxStep, wanted - oldD)).| ad | platform | ne 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 |
| GameAnalytics | Unity / Unreal / Godot / web | Ücretsiz telemetri: ilerleme, kaynak, hata olayları, ısı haritası benzeri raporlar. | SDK paketi |
| OpenSkill | Python / JS / diğerleri | TrueSkill benzeri, açık lisanslı çok oyunculu beceri puanlama (takımlar, beraberlik). | pip install openskill |
| trueskill (Python) | Python | TrueSkill algoritmasının açık uygulaması; prototip ve analiz için. | pip install trueskill |
| Nakama | açık kaynak sunucu | Eşleştirme (matchmaker), liderlik tabloları, sohbet; kendi sunucunuzda. | Docker |
| scikit-learn | Python | Telemetriden oyuncu kümeleme (k-means), oyunu bırakma tahmini (lojistik regresyon). | pip install scikit-learn |
“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.”
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.
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.
The Director AI of Left 4 Dead
Director AI for Balancing In-Game Experiences
What Capcom Didn’t Tell You About Resident Evil 4
Sid Meier’s Psychology of Game Design
The Elo Rating System for Chess and Beyond
Theories Behind Journey (flow ve duygu)