T: tema · Z: kodu büyüt · S: konuşmacı notları · F: tam ekran · Esc: genel bakış · ⌂ ders haritası
OYUNLARDA YAPAY ZEKÂ · HAFTA 19
Proje: Hepsini Birleştir
Mimari, kapsam, tasarım belgesi, hata ayıklama, test, sunum — dönemin bütün araçlarıyla tek bir oyun
PRESS ▶ TO START

Bu derste oyunun haritası 🗺️

  1. Bir NPC’nin anatomisi — algıla → hatırla → karar ver → davran; dönemin hangi haftası nereye oturuyor?
  2. Hepsi bir arada — A*, algılama, farkındalık, kara tahta, karar, steering, yönetmen: canlı gizlilik oyunu
  3. Proje seçimi ve kapsam — altı proje şablonu, en az / hedef / bonus kapsamı, takvim
  4. YZ tasarım belgesi — kodlamadan önce yazılacak bir sayfa
  5. Hata ayıklama ve test — görselleştirme, kayıt, birim testi, oyun testi
  6. YZ asistanıyla çalışmak — izinli, beyanlı, anlaşılmış
  7. Teslim ve değerlendirme — puanlama ölçütleri, video, sunum, “postmortem”
  8. Buradan sonra — kitaplar, konferanslar, yarışmalar, meslekler
🎮 Bu dersin sonunda…

…dönem boyunca öğrendiğiniz teknikleri tek bir oyunda birlikte çalıştıracak bir mimari kurabilecek, gerçekçi bir kapsam ve takvim çıkarabilecek, projenizi ölçülebilir şekilde test edip sunabileceksiniz.

🤔 ISINMA: 18 HAFTA, 18 ARAÇ

FSM, davranış ağacı, utility, GOAP, minimax, steering, A*, navmesh, grup, algılama, taktik, RL, LLM, PCG, üretken YZ, zorluk, performans… Bir gizlilik oyununda hangilerini birlikte kullanırdınız?

  • Muhtemelen: A* ya da navmesh (yol), algılama + farkındalık (görme/duyma), FSM ya da BT (karar), steering (yumuşak hareket), belki bir yönetmen (zorluk).
  • Asıl beceri tek tek teknikleri bilmek değil, onları doğru katmana yerleştirip birbirleriyle konuşturmak. Bunun ortak dili: kara tahta (blackboard).
  • Ve en önemli tasarım sorusu hep aynı: “Bu YZ, oyuncunun deneyimine ne katıyor?”

🎯 Bu konu için bilmeniz gerekenler

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

Neden?Bu hafta yeni bir algoritma yok: dönemin araçlarını birleştiriyoruz. Canlı örnek oyun, Y2/Y3 (karar), Y7 (hareket), Y8 (yol), Y11 (algılama, farkındalık) ve Y17’yi (yönetmen) birlikte kullanıyor.
🧰 Kodlamadan korkuyorsanızProjeniz için bütün haftaları bilmeniz gerekmiyor: şablonunuzun kullandığı 3–5 haftayı tekrar etmeniz yeterli.

Mini sözlük

vertical slicedikey dilimOyunun küçük ama her katmanı (YZ, oynanış, görsel, ses) bitmiş bir parçası
MVP · scope creepen küçük çalışan ürün · kapsam kaymasıFikri kanıtlayan en küçük sürüm · özelliklerin kontrolsüz büyümesi
milestonekilometre taşıTarihli, kontrol edilebilir ara hedef
blackboardkara tahtaNPC sistemlerinin ortak bilgi deposu (son görülen yer, hedef, farkındalık…)
debug draw · overlayhata ayıklama çizimi · katmanYZ’nin iç durumunu oyun içinde görselleştirmek
playtest · think-aloudoyun testi · sesli düşünmeGerçek oyuncuyla deneme · oyuncunun düşündüğünü söyleyerek oynaması
postmortemproje sonrası değerlendirme“Ne iyi gitti, ne kötü gitti, ne öğrendik?” raporu
LEVEL 0
Bir NPC’nin anatomisi
katmanlar ve kara tahta
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Algıla → hatırla → karar ver → davran

ALGILAgörme, duyma (Y11) HATIRLAkara tahta, farkındalık KARAR VERFSM, BT, utility… DAVRANyol, steering dünya değişir → yeniden algıla DÜNYA DÜZEYİNDE SİSTEMLER (bütün NPC’lerin ortak kullandığı) navmesh / ızgara (Y8–9)etki haritası (Y12)grup ve jeton (Y10)yönetmen / DDA (Y17) PCG harita (Y15)LLM diyalog (Y14)öğrenen modeller (Y13)zamanlayıcı, LOD (Y18)
Kara tahta: ortak dilHer katman kara tahtaya yazar ya da okur: algılama “son görülen yer”i yazar, karar katmanı okuyup “incele” der, eylem katmanı oraya yol ister. Katmanlar birbirini doğrudan çağırmaz: biri değişince diğerleri bozulmaz.
KuralHer katmanı tek başına test edebilmelisiniz: algılamayı karar olmadan, kararı hareket olmadan (laboratuvarlardaki gibi).
LEVEL 1
Hepsi bir arada
canlı gizlilik oyunu
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra
🧭 OYUNU OKUMA KILAVUZU (bir sonraki slayt)
  1. Siz yeşil topsunuz. Tıklayın: oraya A* ile yürür (yeşil çizgi). Amaç: 5 sarı altını toplayıp sağ alttaki ÇIKIŞ’a varmak.
  2. X tuşu: farenin durduğu yere taş atar (3 hak). Ses halkasının içindeki muhafız oraya gidip 3 saniye bakınır: dikkat dağıtma. Altın toplamak da ses çıkarır!
  3. Muhafızın rengi = durumu: mavi devriye, sarı incele, kırmızı kovala. Üstündeki küçük çubuk farkındalık: koninin içinde kaldıkça dolar; 0,4’te şüphelenir, 1’de kovalar.
  4. Kesikli çizgi muhafızın A* yolu; çarpı kara tahtadaki “son görülen/duyulan yer”. Alt satırda üç muhafızın kara tahtası yazıyla da görünür.
  5. Sağ panel: altın, taş, yakalanma, muhafız görüş menzili (yönetmen ayarlar), YZ’nin kare başına süresi, toplam A* çağrısı.
  6. Üstteki kutucuklar hata ayıklama katmanları ve sistemleri açıp kapatır. Ses açık: yakalanınca ve fark edilince duyarsınız.

Canlı: gizlilik mini oyunu 🥷

  1. Yol (Y8): haritaya tıklayın; yeşil çizgi A* yolu. Muhafızların kesikli çizgileri de A*.
  2. Algılama + farkındalık (Y11): bir muhafızın konisine girin: çubuk yeşil → sarı (incele) → kırmızı (kovala). Uzaktan görünmek daha yavaş doldurur.
  3. Hafıza / kara tahta: görüş alanından çıkın: muhafız “son görülen yer”e (çarpı) gider, etrafına bakar, 3 sn sonra vazgeçer. “Hafıza”yı kapatın: görüş kesildiği an unutur. Hangisi daha inandırıcı?
  4. İşitme: altın toplamak ses dalgası çıkarır; yakındaki muhafız oraya gelir. İşitmeyi kapatıp karşılaştırın. X tuşu ile farenin olduğu yere taş atın (3 hak): muhafızı bilerek başka yere çekip arkasından geçin.
  5. Yönetmen (Y17): her yakalanışta muhafızların görüşü kısalır; uzun süre yakalanmazsanız yavaşça uzar. Sağ panelde günlük.
  6. Performans (Y18): sağ panelde YZ’nin kare başına süresi ve A* çağrı sayısı. Kovalama sırasında çağrı sayısı nasıl artıyor?
  1. Siz yeşil topsunuz. Tıklayın: oraya A* ile yürür (yeşil çizgi). Amaç: 5 sarı altını toplayıp sağ alttaki ÇIKIŞ’a varmak.
  2. X tuşu: farenin durduğu yere taş atar (3 hak). Ses halkasının içindeki muhafız oraya gidip 3 saniye bakınır: dikkat dağıtma. Altın toplamak da ses çıkarır!
  3. Muhafızın rengi = durumu: mavi devriye, sarı incele, kırmızı kovala. Üstündeki küçük çubuk farkındalık: koninin içinde kaldıkça dolar; 0,4’te şüphelenir, 1’de kovalar.
  4. Kesikli çizgi muhafızın A* yolu; çarpı kara tahtadaki “son görülen/duyulan yer”. Alt satırda üç muhafızın kara tahtası yazıyla da görünür.
  5. Sağ panel: altın, taş, yakalanma, muhafız görüş menzili (yönetmen ayarlar), YZ’nin kare başına süresi, toplam A* çağrısı.
  6. Üstteki kutucuklar hata ayıklama katmanları ve sistemleri açıp kapatır. Ses açık: yakalanınca ve fark edilince duyarsınız.
🔎 KATMANLARI TEK TEK DENEYİN
  1. Yol (Y8): haritaya tıklayın; yeşil çizgi A* yolu. Muhafızların kesikli çizgileri de A*.
  2. Algılama + farkındalık (Y11): bir muhafızın konisine girin: çubuk yeşil → sarı (incele) → kırmızı (kovala). Uzaktan görünmek daha yavaş doldurur.
  3. Hafıza / kara tahta: görüş alanından çıkın: muhafız “son görülen yer”e (çarpı) gider, etrafına bakar, 3 sn sonra vazgeçer. “Hafıza”yı kapatın: görüş kesildiği an unutur. Hangisi daha inandırıcı?
  4. İşitme: altın toplamak ses dalgası çıkarır; yakındaki muhafız oraya gelir. İşitmeyi kapatıp karşılaştırın. X tuşu ile farenin olduğu yere taş atın (3 hak): muhafızı bilerek başka yere çekip arkasından geçin.
  5. Yönetmen (Y17): her yakalanışta muhafızların görüşü kısalır; uzun süre yakalanmazsanız yavaşça uzar. Sağ panelde günlük.
  6. Performans (Y18): sağ panelde YZ’nin kare başına süresi ve A* çağrı sayısı. Kovalama sırasında çağrı sayısı nasıl artıyor?
LEVEL 2
Proje seçimi ve kapsam
küçük ama bitmiş
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Altı proje şablonu

şablonYZ’nin rolükullanılan haftalaresinlenilecek oyunlar
🥷 GizlilikDevriye, şüphe, arama, kovalama; ses ve ışıkY2/Y3, Y8, Y11, Y17Mark of the Ninja, Metal Gear Solid
🏰 Kule savunmaAkış alanıyla binlerce birim, dalga yönetmeni, formasyonlarY7, Y8, Y10, Y15, Y17, Y18Kingdom Rush, Bloons TD
🏎️ YarışYol takibi, sollama, lastik bant; bonus: nöroevrim ya da ML-Agents sürücüY7, Y13, Y17Mario Kart, Forza (Drivatar)
⚔️ Mini RTS / taktikEtki haritası, siper seçimi, GOAP/HTN komutan, grup hareketiY5, Y10, Y12, Y18StarCraft, XCOM
🗝️ RoguelikeProsedürel zindan, utility düşmanlar, dinamik zorlukY4, Y15, Y17 (+Y6 boss)Spelunky, Hades
💬 Konuşan yol arkadaşıLLM diyalog + davranış ağacı + algılama; denetim hattıY3, Y11, Y14The Last of Us (Ellie), Suck Up!

Kendi fikriniz de olabilir: koşul, en az üç farklı haftanın tekniğinin aynı oyunda birlikte çalışması ve en az birinin “derin” uygulanması (kendi yazdığınız, ayarladığınız, ölçtüğünüz).

Kapsam: en az / hedef / bonus

örnek: gizlilik oyunu
En az (geçer)1 seviye, 2 muhafız, görüş konisi + FSM (devriye/kovala), A* ile kovalama, kazan/kaybet
Hedef+ farkındalık sayacı, son görülen yere gitme, ses, 3 durumlu BT, hata ayıklama katmanları, 3 seviye
Bonus+ grup koordinasyonu (biri arar, biri kapıyı tutar), yönetmen/DDA, prosedürel seviye, performans ölçümü
Kapsam kayması“Bir de envanter, bir de diyalog, bir de çok oyunculu…” En sık başarısızlık sebebi. Önce en az kapsamı bitirin, oynanabilir hâle getirin, sonra büyütün.
Örnek takvim (6 hafta)
  1. Fikir ve tasarım belgesi (1 sayfa), şablon seçimi, boş proje + depo.
  2. Dikey dilim: 1 NPC, 1 mekanik, uçtan uca çalışıyor.
  3. Ana YZ sistemleri: hedef kapsamın YZ’si.
  4. Hata ayıklama görünümleri, içerik, ayar.
  5. Test ve performans: birim testleri, oyun testi (3+ kişi), ölçümler.
  6. Cila, video, rapor, sunum.
Her haftanın sonunda oynanabilir bir sürüm olsun.

🎬 Ara: az ama iyi YZ

Less is More: Designing Awesome AI for Games
GDC · 24 dk 56 sn · YouTube’da aç

Proje kapsamını seçmeden önce izlenecek konuşma: oyuncunun fark etmeyeceği karmaşıklığa zaman harcamamak, birkaç davranışı çok okunur yapmak. “En az / hedef / bonus” tablosunun tasarımcı gözüyle savunması.

🤔 İzlerkenKonuşmacı hangi YZ özelliklerini “oyuncu fark etmiyor” diye kesiyor? Kendi proje şablonunuzda kesebileceğiniz bir özellik var mı? Hangi davranışı oyuncuya daha okunur gösterebilirsiniz?
LEVEL 3
YZ tasarım belgesi
kodlamadan önce bir sayfa
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Bir sayfalık YZ tasarım belgesi

  1. Oyuncu deneyimi hedefi: “Oyuncu her köşede tetikte olmalı ama yakalandığında haksızlığa uğradığını hissetmemeli.”
  2. NPC listesi: her NPC türünün amacı, yetenekleri, sınırları.
  3. Karar yapısı: FSM/BT/utility şeması (bir çizim).
  4. Algılama: görüş açısı, menzil, ışık, ses yarıçapları, farkındalık hızları.
  5. Hareket ve yol: ızgara mı navmesh mi, hızlar, kaçınma.
  6. Geri bildirim: oyuncu NPC’nin ne düşündüğünü nasıl anlıyor? (ünlem işareti, ses, çubuk)
  7. Zorluk: ayar düğmeleri, varsa DDA ve sınırları.
  8. Bütçe: hedef FPS, YZ’ye ayrılan ms, en kalabalık sahne.
  9. Test planı: birim testleri, test seviyeleri, oyun testi soruları.
Neden yazmalı?Y11’deki “oyuncu ne zaman fark edildiğini anlamalı”, Y17’deki “oyuncu bunu öğrense rahatsız olur mu?”, Y18’deki “bütçe” soruları kodlamadan önce cevaplanırsa yeniden yazmanız gereken kod azalır. Belge değişebilir; önemli olan kararların bilinçli verilmesi.
Bir parametre tablosuBütün sayıları (açı, menzil, hız, eşik) koda gömmek yerine tek bir ayar dosyasında (Unity: ScriptableObject) tutun; tasarım belgesindeki tabloyla eşleşsin.
LEVEL 4
Hata ayıklama ve test
gör, kaydet, test et
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

YZ’nin içini görünür yapın

  • Hata ayıklama katmanları: canlı örnekteki gibi açılıp kapanan görüş konileri, yollar, durumlar, farkındalık çubukları. Unity’de Gizmos/Handles, Unreal’da Gameplay Debugger ve Visual Logger.
  • Kayıt: durum değişimleri, kararların sebepleri (“KOVALA çünkü farkındalık 1,02”). Final Fantasy XV ekibi kayıtları haritada görselleştirdi (Y18).
  • Geri sarma: David Young (Game AI Pro 3, 6. bölüm): oyunu oyun içinde anında geri sarıp bir hatanın tam anını yeniden izlemek. Basit sürümü: son 10 saniyenin durumlarını bir halka tamponda tutmak.
Testler
  • Birim testi: dönem boyunca laboratuvarlarda yazdığınız saf fonksiyonlar (karar, puan, yol maliyeti) birim testine en uygun kod. Projenizde de YZ mantığını böyle küçük, test edilebilir fonksiyonlara bölün.
  • Senaryo testi: iki karakterli küçük test seviyeleri (Malte Skarupke, Y18): “muhafız sesi duyunca 5 sn içinde oraya varıyor mu?”
  • Oyun testi: en az 3 kişi; sesli düşünme; “muhafızın ne yapacağını tahmin edebildin mi?”, “yakalandığında adil miydi?”

Karar fonksiyonunu test edilebilir yazmak

🔗 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.

📦 Tam kod: p5.js ile gizlilik oyunu

Bir NPC’nin bir karesi (sadeleştirilmiş): dört katman, aralarındaki tek bağ kara tahta. Örnekteki gerçek kod aynı iskelete sınırları (0–1,5), “bakmadan unutma” kuralını ve yol yenilemeyi ekler.

🎮 Çalıştırın, kopyalayın, bozun

▶ Eksiksiz oyunu aç — yaklaşık 200 satır p5.js: A*, görüş konisi, farkındalık, kara tahta, üç durumlu karar, ses.

Kontroller: tıkla = yürü · X = taş at · R = baştan

Projeniz için başlangıç noktası:

  • kararVer’e dördüncü durum ekleyin (“alarm ver”: diğer muhafızları çağır, Y10).
  • Yakalandıkça GORUS’ü kısaltan bir yönetmen yazın (Y17).
  • Haritayı hücresel otomatla üretin (Y15); A* ile çıkışa yol var mı test edin.
  • astar çağrılarını sayın; kovalama sırasında kaç oluyor? (Y18)

🌱 Isınma kodu: muhafız beni görüyor mu?

ALGILA katmanı (Y11). Oyundaki koni tam olarak bu üç test: menzil, açı, görüş hattı. Sıra önemli: en ucuz test (uzaklık) önce, en pahalı test (duvar ışını) en sonda yapılır (Y18). Dikkat: oyuncu soldaysa açı eksi gelir.

🌱 Isınma kodu: farkındalık çubuğu

HATIRLA katmanı. Muhafızın üstündeki çubuk bu sayı. Hızlı dolup yavaş boşalması bilerek: bir anlık görünme şüphe yaratır, ama muhafız hemen unutmaz. Sıradaki laboratuvarda bu sayıya bakan KARAR fonksiyonunu yazacaksınız: böylece ALGILA → HATIRLA → KARAR zincirinin üç halkasını da kendiniz yazmış olacaksınız.

🧪 Canlı laboratuvar: muhafızın beyni

Sağda canlı örnekteki oyunun aynısı; üç muhafız sizin fonksiyonunuzla karar veriyor, bir bot oyuncu altınları topluyor. Başlangıç kodunda muhafızlar hiçbir şeye tepki vermez.

🐍 Laboratuvar: öncelikli seçici

Y3’teki seçici düğümün (selector) en sade hâli; laboratuvardaki muhafız beyni bunun özel bir durumu. Projenizde koşulları ayrı fonksiyonlara bölerseniz her birini ayrı test edebilirsiniz.
LEVEL 5
YZ asistanıyla çalışmak
izinli, beyanlı, anlaşılmış
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Projede YZ kod asistanı: kurallar

  1. İzinli: kod, açıklama, test ve hata ayıklama için YZ asistanı kullanabilirsiniz.
  2. Beyanlı: raporunuzda hangi araç/modeli, ne için kullandığınızı yazın; önemli istemlerinizi saklayın (bir “istem günlüğü”).
  3. Anlaşılmış: teslim ettiğiniz her satırı açıklayabilmelisiniz. Sunumda “bu fonksiyon ne yapıyor, neden böyle?” sorusu sorulacak.
  4. Doğrulanmış: asistanın kodunu test edin; sürüm ve API’leri belgelerle kontrol edin.
  5. Varlıklar: üretken YZ ile yaptığınız görsel/ses varsa Y16’daki köken kaydı ve lisans kuralları geçerli.
Dönem boyunca gördüğümüz tipik asistan hataları
  • Eski API’ler: ML-Agents’ın eski OnActionReceived(float[])’ı, Barracuda/Sentis yerine Inference Engine, Unity 6’da rb.velocity yerine linearVelocity.
  • Ekran koordinatlarında y aşağı iken yön hesabı (Y9 funnel), açıları derece/radyan karıştırmak.
  • A*’da kabul edilemez sezgisel (Y8), bitmiş bölümde gelecek değeri eklemek (Y13).
  • LLM çıktısına doğrudan güvenmek (Y14), tohumsuz rastgelelik (Y15).
  • Ölçmeden “optimize etmek” (Y18).

🤖 Bu konuyu bir YZ kod asistanıyla yazarken

Sık yapılan hatalar — kontrol edin
  • Bütün projeyi tek istemde yazdırmak
  • Anlamadığınız kodu teslim etmek
  • İstem günlüğü tutmamak
  • Üretilmiş varlıkları beyan etmeden kullanmak
İyi bir istek (prompt) örneği

“Unity 6, C#. Gizlilik oyunu projem için mimari kur: (1) Blackboard sınıfı (Sees, Awareness, HeardNoise, LastKnownPosition, TimeSinceSeen). (2) PerceptionSystem: 70° görüş konisi, 12 m menzil, Physics.Raycast ile görüş hattı, mesafeye bağlı farkındalık artışı (saniyede en çok 1,6), görmezken saniyede 0,12 azalma; NoiseEvent ile işitme. (3) GuardBrain.Decide(in Blackboard) saf fonksiyonu (kovala > incele > devriye). (4) GuardController: NavMeshAgent ile devriye noktaları, son görülen yere gidip 3 sn etrafa bakma, kovalama. (5) DebugOverlay: Gizmos ile koni, son görülen yer, durum etiketi; bir tuşla aç/kapa. (6) GuardBrain için 5 NUnit EditMode testi. Her sınıf ayrı dosya; ayarlar GuardSettings ScriptableObject’te.”

  • Tasarım belgenizi asistana verip mimari önerisi isteyin; kararı siz verin
  • Her sistem için önce testleri, sonra kodu isteyin
  • Hata ayıklama görselleştirmesini baştan isteyin
  • Sürüm ve paket adlarını açıkça yazın (Unity 6, ML-Agents 4.0, Inference Engine…)
LEVEL 6
Teslim, sunum ve değerlendirme
göster, ölç, anlat
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Teslim edilecekler ve puanlama

  1. Oynanabilir sürüm (Windows/WebGL/Android) + kaynak kod deposu (git geçmişiyle).
  2. 2–3 dakikalık video: oynanış + hata ayıklama katmanları açıkken YZ’nin nasıl düşündüğü.
  3. Rapor (4–6 sayfa): tasarım belgesi, mimari şeması, ölçümler (FPS, YZ ms), test sonuçları, oyun testi bulguları, YZ asistanı beyanı, postmortem.
  4. Sunum (8 dk + soru): canlı demo ve bir sistemin kodunu açıklama.
ölçütpuan
Oynanabilirlik ve kapsam (en az kapsam tamam mı?)15
YZ mimarisi: en az 3 tekniğin bütünleşmesi, katmanlı tasarım25
Hata ayıklama görselleştirmesi ve kayıt15
Test: birim/senaryo testleri ve oyun testi10
Performans: bütçe ve ölçüm10
Tasarım belgesi ve rapor15
Sunum, video, YZ asistanı beyanı ve kodu açıklayabilme10

Bu tablo bir öneridir; dersin yürütücüsü ağırlıkları ve teslim tarihlerini ayrıca duyurur.

Postmortem: ne iyi gitti, ne kötü gitti?

Oyun sektöründe proje bitince yazılan değerlendirmeler (Game Developer dergisinin yıllardır yayımladığı “postmortem”ler) en değerli öğrenme kaynaklarındandır. Raporunuzun son bölümü böyle olsun:

  • İyi giden 3 şey (ve neden).
  • Kötü giden 3 şey (ve bir dahaki sefere ne yapardınız).
  • Bir sayı: ölçtüğünüz ve sizi şaşırtan bir şey (ör. “A* çağrılarının %80’i kovalama sırasında”).
  • Oyuncu sesi: oyun testinden bir alıntı.
Video ipuçları
  • İlk 10 saniyede oyunun ne olduğunu gösterin.
  • YZ’yi görünür kılın: hata ayıklama katmanlarını açıp kapatarak anlatın (“burada muhafız sesi duydu, kara tahtaya son görülen yeri yazdı…”).
  • Bir “önce/sonra” gösterin: hafıza kapalı/açık, DDA kapalı/açık, LOD kapalı/açık.
  • Bir başarısızlığı da gösterin: neyi neden düzelttiniz?
LEVEL 7
Buradan sonra
okumaya, oynamaya, yapmaya devam
  • bir NPC’nin anatomisi
  • hepsi bir arada: canlı örnek
  • proje seçimi ve kapsam
  • YZ tasarım belgesi
  • hata ayıklama ve test
  • YZ asistanıyla çalışmak
  • teslim, sunum ve değerlendirme
  • buradan sonra

Okuma listesi ve topluluk

Kitaplar
  • Game AI Pro 1, 2, 3 ve Online Edition 2021 (Steve Rabin, ed.): sektörden yüzlerce bölüm; gameaipro.com’da ücretsiz. Dönem boyunca en çok alıntı yaptığımız kaynak.
  • Artificial Intelligence and Games (Yannakakis & Togelius): akademik bakış; gameaibook.org’da ücretsiz sürüm ve ders slaytları.
  • AI for Games (Ian Millington): klasik ders kitabı; algoritmaların ayrıntılı anlatımı.
  • Programming Game AI by Example (Mat Buckland): FSM, steering, yol bulma; bol C++ örneği.
İzlemek ve katılmak
  • AI and Games (Tommy Thompson): oyunlardaki YZ’yi anlatan video dizisi ve bülten; dönem boyunca birçok videosunu izledik.
  • GDC AI Summit konuşmaları (birçoğu YouTube’da ücretsiz).
  • Akademik: AIIDE, IEEE Conference on Games (CoG), FDG.
  • Yarışmalar: CodinGame bot yarışmaları, Kaggle simülasyon yarışmaları, CoG ve AIIDE’nin oyun YZ’si yarışmaları (microRTS, StarCraft, genel oyun oynama).
MesleklerOyun YZ programcısı, oynanış programcısı, teknik tasarımcı, araçlar programcısı, oyun verisi analisti, oyunlarda ML mühendisi, QA otomasyonu (test botları).

Dönemin haritası: neyi nerede kullanırım?

ihtiyaçilk deneyinbüyüyünce
Az durumlu, net davranışFSM (Y2)Davranış ağacı (Y3)
Çok seçenek, “en iyisi hangisi?”Utility (Y4)GOAP/HTN plan (Y5)
Sıra tabanlı rakipMinimax + alfa-beta (Y6)MCTS (Y6)
Yumuşak hareket, sürülerSteering (Y7)Bağlam haritalı steering (Y7), formasyon (Y10)
Yol bulmaIzgarada A* (Y8)Navmesh + funnel (Y9), akış alanı
Görme, duymaKoni + ışın (Y11)Farkındalık, ses yayılımı (Y11)
Siper, kuşatma, bölge kontrolüKonum puanlama (Y12)Etki haritası, taktik A* (Y12)
Kuralı yazılamayan beceriNöroevrim / Q-learning (Y13)ML-Agents, taklit öğrenme (Y13)
Serbest konuşmaEl yazımı diyalogLLM + denetim hattı (Y14)
Çok içerikGürültü, otomat, şablonlar (Y15)WFC, arama tabanlı PCG (Y15), üretken modeller (Y16)
Herkese uygun zorlukZorluk seçenekleriYZ yönetmeni, DDA (Y17)
Kalabalık sahnelerKademelendirme (Y18)LOD, DOTS/Mass (Y18)

💬 Tartışma soruları

Yanınızdakiyle 2 dakika konuşun, sonra sınıfça tartışalım
  1. Canlı oyunda “hafıza”yı kapatınca muhafızlar görüş kesilir kesilmez unutuyor. Hangisi daha eğlenceli, hangisi daha adil? İkisi aynı şey mi?
  2. Dönem boyunca gördüğünüz tekniklerden hangisi sizi en çok şaşırttı (“bu kadar basit miymiş?” ya da “bu kadar zor muymuş?”)? Projenizde kullanacak mısınız?
  3. Projenizin YZ’si çok iyi çalışıyor ama oyuncular fark etmiyor. Sorun YZ’de mi, geri bildirimde mi? Oyuncuya NPC’nin ne düşündüğünü göstermenin üç yolunu sayın.
  4. Altı haftanız var ve üçüncü haftada hâlâ oynanabilir bir sürüm yok. Neyi kesersiniz? Kapsamı küçültmek başarısızlık mı?
  5. YZ kod asistanı kodun %80’ini yazdıysa proje kimin? Sunumda hangi soruyu cevaplayabilmeniz gerekir?

🚀 Proje ve araştırma önerileri

  1. [kolay] Gizlilik dikey dilimi — Bu sunumdaki canlı örneği kendi motorunuza taşıyın: 1 seviye, 2 muhafız, hata ayıklama katmanları.
  2. [orta] Kule savunma — Akış alanı + 1000 birim + dalga yönetmeni; performans raporu.
  3. [orta] Konuşan yol arkadaşı — LLM diyalog + davranış ağacı + algılama; denetim hattı ve 10 kötü niyetli test mesajı.
  4. [zor] Taktik çatışma — Siper seçimi, etki haritası, tim koordinasyonu ve taktik A* ile 4’e 4 çatışma.
  5. [zor] Roguelike — Prosedürel zindan + utility düşmanlar + DDA; ifade aralığı analizi.
  6. [araştırma] Öğrenen rakip — Bir yarış ya da dövüş oyununda ML-Agents rakibi; ödül tasarımı günlüğü ve ödül hilesi raporu.

Dönemin özeti 🎒

  • Oyun YZ’si = oyuncunun deneyimi için yazılan YZ; “akıllı” olmaktan çok inandırıcı, okunabilir ve eğlenceli.
  • NPC: algıla → hatırla (kara tahta) → karar ver → davran; dünya sistemleri ortak.
  • Klasik araçlar (FSM, BT, utility, A*, steering) hâlâ işin çoğunu yapıyor; öğrenen ve üreten YZ bunların içine giriyor.
  • Her teknik bir tasarım kararıdır: kontrol, test edilebilirlik, maliyet, etik.
  • Ölç, görselleştir, test et.
  • YZ asistanları güçlü yardımcılar; ama anlamak, doğrulamak ve beyan etmek sizin işiniz.
  • Şimdi sıra sizin oyununuzda. 🎮

📄 Akademik okumalar

Rabin (ed.) 2013–2021 · Game AI Pro 1, 2, 3 ve Online Edition 2021 (CRC Press / ücretsiz çevrimiçi)
Sektörden uygulamalı bölümler.
Yannakakis & Togelius · Artificial Intelligence and Games (Springer, ücretsiz sürüm)
Akademik çerçeve, oyuncu modelleme, PCG.
Young 2017 · Debugging AI with Instant In-Game Scrubbing (Game AI Pro 3, Bölüm 6)
Oyun içi geri sarma ile hata ayıklama.
Skarupke 2021 · Automated AI Testing: Simple tests will save you time (Game AI Pro Online, Bölüm 1)
YZ için otomatik test.

🎮 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.

Mark of the Ninja 2012 · 2B gizlilik
Yandan görünümlü ninja gizlilik oyunu; görüş konileri ve ses halkaları ekranda çizilir.
Metal Gear Solid 2 2001 · gizlilik
Hideo Kojima’nın sızma oyunu; fark edilince nöbetçinin başında “!” belirir.
Mario Kart 1992– · yarış
Eşya atılan parti yarışı serisi; geride kalana daha iyi eşya verir.
Forza Motorsport 2005– · yarış simülasyonu
Xbox’ın gerçekçi yarış serisi; Drivatar rakipleri oyuncuların sürüşünden öğrenir.
StarCraft 1998 / 2010 · gerçek zamanlı strateji
Üç ırkın savaştığı, e-sporu başlatan strateji serisi; StarCraft II, DeepMind’ın AlphaStar’ının sahnesi oldu.
XCOM: Enemy Unknown 2012 · sıra tabanlı taktik
Uzaylı istilasına karşı küçük bir mangayı yönetirsiniz; her atış bir yüzde.

🎮 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.

Spelunky 2008 / 2012 · platform roguelike
Her ölümde yeni bir mağara: tuzaklar, hazineler ve acımasız fizik.
Hades 2020 · aksiyon roguelike
Yeraltı dünyasından kaçmaya çalışan Zagreus; her denemede oda sırası değişir.
The Last of Us 2013 · aksiyon-macera
Salgın sonrası Amerika’da Joel ve Ellie’nin yolculuğu; yoldaş YZ’si çok övüldü.
Suck Up! 2023 · parti / komedi
Vampir olarak kapı kapı dolaşıp kasabalıları sizi içeri davet etmeye ikna edersiniz; NPC’ler dil modeliyle konuşur.
Final Fantasy XV 2016 · aksiyon RPG
Dört arkadaşın yol hikâyesi; yoldaşlar FSM + davranış ağacı karışımı bir YZ ile savaşır.

Kaynaklar: videolar 🎬

GAME COMPLETE ★
İyi oyunlar!
Ders haritasına dönüp istediğiniz haftayı tekrar açabilirsiniz.
DERS HARİTASI ▶