T: tema · Z: kodu büyüt · S: konuşmacı notları · F: tam ekran · Esc: genel bakış · ⌂ ders haritası
OYUNLARDA YAPAY ZEKÂ · HAFTA 1
Oyun Yapay Zekâsına Giriş
Ajan, NPC, zorluk ayarı — oyun YZ’si “akıllı” değil, eğlenceli olmak zorunda
PRESS ▶ TO START

Bu derste oyunun haritası 🗺️

  1. Oyun YZ’si nedir? — akademik YZ’den farkı
  2. Ajan ve NPC — algıla → düşün → davran
  3. Vaka: Pac-Man — dört basit kural, dört kişilik
  4. Zekâ yanılsaması — Halo, F.E.A.R., The Sims’ten dersler
  5. Zorluk ayarı ve hile — RE4, Mario Kart, Left 4 Dead, “Nükleer Gandi”
  6. Kısa tarih — 1980’den LLM’li NPC’lere
  7. Bölümün araçları — motorlar, kütüphaneler, kitaplar, kanallar
🎮 Bu dersin sonunda…

…bir oyundaki YZ’yi izleyip “bu nasıl çalışıyor olabilir?” diye analiz edebilecek, dört satırlık kurallardan nasıl “kişilik” çıktığını görecek ve bir düşmanın zorluğunu ayarlayan düğmeleri tanıyacaksınız.

🤔 ISINMA: MÜKEMMEL DÜŞMAN

Bir FPS’te düşmanlar hiç ıskalamıyor, duvarların arkasını görüyor, tepki süreleri 0 ms. Teknik olarak “en zeki” YZ bu. Oyun nasıl olur?

  • İlk karşılaşmada ölürsünüz. Her seferinde. 😩
  • Satrançta Stockfish’e karşı oynamak gibi: kazanma şansınız yok → eğlence de yok.
  • Oyun YZ’sinin işi kazanmak değil, iyi bir rakip / iyi bir oyun deneyimi olmak. Çoğu zaman “güzelce kaybetmek”.

🎯 Bu konu için bilmeniz gerekenler

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

Neden?Bu sunum çoğunlukla kavramsal. Pac-Man örneğinde iki vektör işlemi (toplama ve mesafe) kullanacağız; Y0’daki “vektör oyun alanı” yeterli.
🧰 Kodlamadan korkuyorsanızBu sunumun büyük kısmı hikâye ve analiz: oyunları YZ gözlüğüyle izlemeyi öğreniyoruz. Kod laboratuvarları isteğe bağlı.

Mini sözlük

agentajanOrtamını algılayıp karar veren ve eylem yapan varlık
NPC (non-player character)oyuncu olmayan karakterBilgisayarın yönettiği her karakter: düşman, köylü, yoldaş
botbotOyuncu yerine oynayan YZ (çok oyunculu oyunlarda, testlerde)
difficulty · DDAzorluk · dinamik zorluk ayarıdynamic difficulty adjustment: zorluğun oyuncuya göre kendiliğinden değişmesi
AI directorYZ yönetmeniTek tek karakterleri değil, oyunun temposunu yöneten YZ
barkbağırış / replikNPC’nin durumunu belli eden kısa ses: “El bombası!”
emergent behaviorortaya çıkan davranışBasit kuralların etkileşiminden doğan, kimsenin tek tek yazmadığı davranış
artificial stupidityyapay aptallıkDuvara yürümek gibi yanılsamayı bozan bariz hatalar
LEVEL 0
Oyun YZ’si nedir?
akıllı olmak değil, deneyim yaratmak
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

Akademik YZ ile oyun YZ’si

akademik YZoyun YZ’si
amaçen iyi sonuç: kazan, doğru sınıflandıroyuncuya istenen deneyimi yaşat (gerilim, eğlence, güç hissi)
başarı ölçütüdoğruluk, kazanma oranıoyuncu inanıyor mu, eğleniyor mu?
bütçesaatler, GPU kümeleribir karede 1–3 ms, onlarca karakter
hilekabul edilmezserbest — yakalanmadıkça
kontrolöğrenen, öngörülemeztasarımcı kontrol edebilmeli, hatayı tekrar üretebilmeli
kaybetmekbaşarısızlıkçoğu zaman görevin ta kendisi

Kevin Dill (Game AI Pro, 1. bölüm): “Oyun YZ’si tek bir şey için vardır: geliştiricilerin oyuncuya etkileyici bir deneyim sunmasını sağlamak.”

Tasarımcı kontrolü ↔ özerklik

tasarımcı kontrolü · öngörülebilir özerklik · şaşırtıcı senaryokurallarFSMdavranış ağacıutilityplanlama (GOAP)makine öğrenmesi WoW boss’larıPac-ManDoom, Metal GearHalo 2, UnrealThe SimsF.E.A.R.Forza Drivatar Kaynak: Kevin Dill, “What Is Game AI?”, Game AI Pro (2013), Şekil 1.1’den uyarlandı

Bu bölümün karar verme sunumları tam bu çizgi boyunca soldan sağa ilerliyor. Sağa gittikçe karakter daha “kendi kafasına göre” davranır ama tasarımcının istediği deneyimi garanti etmek zorlaşır.

🔗 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 · nedir
Bir korku oyununda canavar YZ’si oyuncuyu her zaman 10 saniyede yakalayabilecek kadar “iyi”. Oyun YZ’si açısından en doğru yorum hangisi?
Korku oyununun deneyimi “kıl payı kurtulmak”. Alien: Isolation’ın yönetmen YZ’si tam bunun için canavarı oyuncuya ara sıra yönlendirir ama sürekli dibinde tutmaz (birazdan anlatacağız).
LEVEL 1
Ajan ve NPC
algıla → düşün → davran
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

Önce günlük hayattan: üç “ajan” 🏠

Terimleri bir kenara bırakalım. Aşağıdaki üç şeyin ortak noktası ne? Her biri çevresine bakıyor, bir karar veriyor ve bir şey yapıyor; sonra aynı şeyi baştan tekrarlıyor.

👀 neye bakıyor?🤔 nasıl karar veriyor?✋ ne yapıyor?
🌡️ Kombi termostatıoda sıcaklığı“20 °C’nin altındaysa ısıt”kombiyi açar ya da kapatır
🧹 Robot süpürgetampon sensörü, toz sensörü“çarptıysam dön; toz çoksa yavaşla”tekerlekleri döndürür
🚶 Siz, karşıdan karşıya geçerkenışık, gelen araba“yeşilse ve araba yoksa geç”yürürsünüz
💂 Oyundaki nöbetçigörüş konisi, sesler“oyuncuyu görürsem kovala”yürür, koşar, ateş eder

Bu üç adımlık tekrara ajan döngüsü denir: algıla → düşün → davran. Döngüyü kuran şeye de ajan. Oyunda ajanların çoğu NPC’dir (oyuncunun yönetmediği karakter). Dikkat: termostat “akıllı” değildir ama yine de bir ajandır; ajan olmak için zeki olmak gerekmiyor.

Ajan döngüsü sense–think–act

AJAN (NPC) ALGILAgörüş, ses, hafıza DÜŞÜNFSM, BT, utility… DAVRANyürü, ateş et, konuş OYUN DÜNYASI (oyuncu, harita, diğer NPC’ler)

Russell & Norvig’in tanımı: ajan, ortamını algılayıcılarla algılayan ve ona eylemcilerle etki eden her şeydir.

  • Oyunda “algılayıcı” = oyun durumundan okunan bilgi (çoğu zaman sınırlandırılmış: duvarın arkasını görmemeli!)
  • Bu döngü her karede (ya da saniyede birkaç kez) döner
  • Y0’daki “beyin ve kaslar” düzeni bu döngünün kod hâli

Döngüyü elle çalıştıralım: nöbetçi 💂

Bir senaryo seçin; “▶ Sonraki adım” döngünün bir aşamasını çalıştırır. Basmadan önce tahmin edin. Dört senaryoda aynı kural listesi var; değişen yalnızca nöbetçinin algıladığı şey.

  • Üstteki üç kutu: döngünün aşamaları; o anki aşama renkli ve kalın çerçeveli.
  • Sarı dilim: nöbetçinin görüş konisi (menzil 260). Kalın siyah çizgi: duvar.
  • Çizgi nöbetçiden oyuncuya: yeşil düz = görüyor, kırmızı kesikli = göremiyor, mor = hile (bellekten okuma). Turuncu halkalar = ses.
  • Sağdaki günlük: her aşamada nöbetçinin “kafasından geçen”. Son adımda nöbetçi yer değiştirir ve başında “!” ya da “?” çıkar.

Kural listesi (DÜŞÜN): yukarıdan aşağı bakılır, ilk uyan uygulanır. 1) oyuncuyu görüyorsam kovala, 2) ses duyduysam oraya gidip bak, 3) hiçbiri değilse devriye.

Oyunlarda YZ’nin işleri

Karakter YZ’si
  • Düşmanlar: devriye, kovalama, saklanma
  • Yoldaşlar: takip, yardım, “önüme geçme!”
  • Kalabalık / köylüler: canlı dünya hissi
  • Rakipler: yarış, strateji, dövüş oyunu botları
Karakter olmayan YZ
  • Yönetmen: tempo, düşman dalgaları (Left 4 Dead)
  • Prosedürel üretim: harita, görev, müzik
  • Zorluk ayarı ve eşleştirme (matchmaking)
  • Test botları: oyunu binlerce kez oynayıp hata arar
  • Analitik / oyuncu modelleme: oyuncu nerede sıkılıyor?

Yannakakis & Togelius’un “Artificial Intelligence and Games” kitabı alanı üç ana başlıkta toplar: oyun oynamak, içerik üretmek, oyuncuyu modellemek. Bu bölüm üçüne de değiniyor.

LEVEL 2
Vaka: Pac-Man hayaletleri
dört basit kural, dört kişilik (1980)
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

Pac-Man (Namco, 1980): kişilikli hayaletler

Tasarımcı Toru Iwatani her hayalete farklı bir “karakter” vermek istedi. Japonca takma adları bunu anlatır:

BlinkyOikake (kovalayan)doğrudan Pac-Man’e
PinkyMachibuse (pusu kuran)Pac-Man’in 4 kare önüne
InkyKimagure (kaprisli)Blinky ile birlikte kıskaç
ClydeOtoboke (aptalı oynayan)yaklaşınca kaçar
Pac-Man ekran görüntüsü
Pac-Man (1980): dört renkli hayalet, aynı labirent · Görsel: Bandai Namco, Wikimedia Commons, CC BY 3.0
Tek bir hareket kuralıHer hayalet bir hedef kare seçer. Her kavşakta, gidebileceği yönlerden hedefe kuş uçuşu en yakın olanı seçer. Geri dönemez. Eşitlikte sıra: yukarı, sol, aşağı, sağ.

Bütün “kişilik” farkı sadece hedef karenin nasıl seçildiğinde! Kaynak: Jamey Pittman, “The Pac-Man Dossier”. 🎬 Kısa ve güzel bir özet: Pac-Man’s Ghosts Were Never a Team (Seeded).

Dört hayalet — canlı simülasyon

Modlar ve 1980’den kalan bir hata

  • Dağıl scatter: her hayalet kendi köşesine gider (oyuncuya nefes aldırır)
  • Kovala chase: kişilik kuralları
  • 1. seviyede: 7 sn dağıl → 20 sn kovala → … Mod değişince hepsi geri döner (oyuncuya ipucu!)
  • Korku frightened: güç hapı yenince rastgele dolaşır

Bu bir sonlu durum makinesi: bir sonraki sunumun konusu.

🐛 Taşma hatasıPac-Man yukarı bakarken Pinky’nin hedefi “4 yukarı” değil “4 yukarı ve 4 sola” çıkar (Inky’nin ara noktası da 2 sola kayar). Neden? Yön, 8 bitlik bir sayı çiftinde saklanıyordu; “yukarı” için yapılan hesap taşınca sol bileşene de sızdı.

Hata hiç düzeltilmedi; usta oyuncular Pinky’yi kandırmak için kullanır. Demodaki “1980 taşma hatası” kutusunu kapatıp farkı görün.

Hedef kareleri — kod

🎒 switch / if zinciri: hangi hayalet olduğuna göre farklı kural. mid + (mid − blinky) = Blinky’den mid’e giden ok, bir kez daha mid’in ötesine uzatılır.

🌱 Isınma kodu: Pinky’nin hedefi

Şu an Pinky tıpkı Blinky gibi doğrudan Pac-Man’i hedefliyor. Yön vektörü d’yi 4 ile çarpıp ekleyin: pac[0] + 4 * d[0]. Tek satır değişince “kovalayan” hayalet “pusu kuran” hayalete dönüşür.

🌱 Isınma kodu: dağıl mı, kovala mı?

% (mod) işleci “tekrar eden zamanlayıcı”ların anahtarıdır; p5.js’te millis() / 1000 size t’yi verir. Gerçek oyunda süreler seviyeye göre değişir ve birkaç turdan sonra hayaletler hep kovalar; burada sade hâlini yazıyoruz. (Bu, bir sonraki sunumun konusu olan durum makinesinin en küçük örneği.)

🧪 Kod laboratuvarı: Inky’nin hedefi

Hedef = mid + (mid − blinky). Kâğıt üzerinde bir örnekle deneyin: Pac-Man (10, 10) sağa bakıyor, Blinky (8, 10) → mid (12, 10) → hedef (16, 10). Bonus: 1980 hatasını ekleyin (yön “up” ise mid’in x’inden 2 çıkarın).

🐍 Kod laboratuvarı — Clyde (Python)

İki hata var: (1) mesafe kuş uçuşu (Öklid) olmalı, Manhattan değil — math.hypot kullanın; (2) “8 veya daha uzak” için >= gerekir. Neden bu küçük farklar önemli? Hayalet yanlış anda kaçar, oyuncular “Clyde garip davranıyor” der.

🎬 Ara: dört hayaletin beyni, kare kare

Pac-Man Ghost AI Explained
Retro Game Mechanics Explained · 19 dk 34 sn · YouTube’da aç

Az önce kodunu yazdığımız hedef kare kurallarının orijinal oyundaki hâli: dağıl/kovala zamanlayıcısı, kavşakta yön seçimi ve Pinky’nin “yukarı” taşması, hepsi oyunun kendi ekranında çizilerek.

🤔 İzlerkenVideoda Blinky’nin “Elroy” hızlanması ne zaman başlıyor? Inky’nin hedef karesini bulmak için hangi iki noktayı kullanıyor? Pinky’nin hatası videoda nasıl gösteriliyor; bizim demodaki “1980 taşma hatası” kutusuyla aynı mı?
Quiz 2 · Pac-Man
Pac-Man hayaletlerinin “kişilikleri” teknik olarak nereden geliyor?
Hareket kuralı ortak (kavşakta hedefe en yakın yön). Kişilik = hedef seçimi: doğrudan, 4 kare önü, kıskaç, yaklaşınca kaç. Basit kuralların etkileşimi karmaşık görünen davranışlar üretir: ortaya çıkan davranış. (Hayaletler korku modunda gerçekten rastgele dolaşır.)
LEVEL 3
Zekâ yanılsaması
oyuncunun fark etmediği zekâ, yoktur
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

📜 Halo (2001): sağlam düşman = akıllı düşman?

Bungie’den Chris Butcher ve Jaime Griesemer GDC 2002’de “The Illusion of Intelligence” konuşmasında oyun testi sonuçlarını paylaştı. Davranışı aynı, sadece canı farklı düşmanlar:

“çok zeki”“biraz zeki”
zayıf düşman%8%72
güçlü düşman%43%57

Oyuncular uzun yaşayan düşmanı daha uzun izledi → davranışını fark etti → “akıllı” dedi.

Halo 2 ekran görüntüsü
Halo serisi: canı yüksek Elite’ler “zeki” bulundu · Görsel: Bungie/Microsoft, Wikipedia (eğitim amaçlı adil kullanım)
Grunt’lar kaçıyor!Elite (lider) ölünce küçük Grunt’ların kaçması planlanmıştı. Test oyuncuları fark etmedi. Bungie ipuçlarını abarttıkça abarttı: sonunda her Grunt, kollarını havaya kaldırıp çığlık atarak ve çoğu zaman “Lider öldü, kaç!” diye bağırarak kaçtı.

Ders: davranışı oyuncuya göstermek, davranışı yazmak kadar önemli.

📜 F.E.A.R. (2005): “Söylemediyse olmamıştır”

Jeff Orkin (Game AI Pro 2, 2. bölüm): asker NPC’ler ne yaptıklarını birbirlerine anlatan kısa diyaloglar kurar:

  • Vurulan yerine bir başkası sorar: “Durumun ne?” — “Vuruldum!” → oyuncu isabet ettiğini anlar
  • Saklanınca: “Gören var mı?” — “Ağacın arkasında!”
  • Kımıldamayan asker: “Çık oradan!” — “Gidecek yerim yok!” → hata gibi görünen durum açıklanır
  • Son kalan: “Takviye lazım!” → aslında kodda takviye sistemi yoktu
Ucuz ama etkili hileler
  • Kafa çevirme: iki düşmana bir saniye bakıp sonra birine saldırmak “tarttı” izlenimi verir (Steve Rabin)
  • Düşünce baloncukları: The Sims’in ihtiyaç ikonları
  • Şaşkın ikonu: Creatures (1996), fikrini değiştiren yaratığın başına “?” koyardı — kararsızlık hata değil “bilinçli” görünsün diye
F.E.A.R. ekran görüntüsü
F.E.A.R. (2005): birbirine seslenen askerler · Görsel: Monolith, Wikipedia (eğitim amaçlı adil kullanım)
⚠️ Yapay aptallık artificial stupidity
  • Duvara doğru yürümeye devam etmek, bir köşeye takılmak
  • Ateş eden oyuncuyu görmezden gelmek
  • Saniyede üç kez fikir değiştirip titremek
  • Yoldaşın kapıyı tıkaması, oyuncunun önüne geçip ateş hattına girmesi

Tek bir bariz hata, saatlerce kurulan yanılsamayı yıkar. Oyun YZ’sinde ilk iş: aptalca görünmemek.

📜 “Liquid AI” (1997)EA, Madden NFL 98’in YZ’sini “sıvı gibi akan” Liquid AI diye tanıttı. Rakip NFL GameDay 98’in ekibi bir dergi röportajında alay etti: “Liquid AI, GameDay’i görünce EA’nın bacağından aşağı akan şeydir.” 😅

Beklenti yönetimi önemli: YZ’yi övüp teslim edemezseniz geri teper. (Steve Rabin, Game AI Pro 3, 1. bölüm)

🎬 Ara: iyi bir oyun YZ’si neye benzer?

What Makes Good AI?
Game Maker’s Toolkit (Mark Brown) · 15 dk 42 sn · YouTube’da aç

Halo ve F.E.A.R. örneklerinin geniş hâli: düşmanın niyetini oyuncuya okutmak, tahmin edilebilir ama şaşırtabilir olmak, “yapay aptallık” ve oyuncuya adil davranmak. Bölümün ana fikri tek videoda.

🤔 İzlerkenVideo “iyi YZ” için hangi ilkeleri sayıyor? Bunlardan hangisi Halo’daki kaçan Grunt’larla, hangisi F.E.A.R.’ın konuşan askerleriyle örtüşüyor? Hangisi az önceki “hileci bekçi” senaryosuna karşı bir kural?
Quiz 3 · yanılsama
Testlerde oyuncular, kuşatma (flanking) yapan düşmanlarınızı fark etmiyor. En ucuz ve etkili çözüm hangisi?
F.E.A.R.’ın dersi: oyuncunun fark etmediği zekâ yoktur. Bir ses kaydı ve basit bir tetikleyici, aylarca süren algoritma iyileştirmesinden daha çok “akıllı YZ” algısı yaratır.
LEVEL 4
Zorluk ayarı ve hile
düğmeler, gizli sistemler, efsaneler
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

📜 Oyuncuya söylenmeyen iyilikler

👾 Space Invaders (1978): ilk zorluk eğrisi bir kazaydı

Tomohiro Nishikado’nun donanımı 55 uzaylıyı aynı anda çizmekte zorlanıyordu. Oyuncu uzaylıları vurdukça çizilecek şey azaldı ve kalanlar kendiliğinden hızlandı. Nishikado bunu hata sayıp düzeltmek yerine oyunda bıraktı: son uzaylı ekranı çılgınca tarar.

Bugün her oyunda gördüğümüz “gittikçe zorlaşma” fikrinin ilk ünlü örneği, yavaş bir işlemcinin yan etkisi.

🤫 2017: tasarımcılar itiraf ediyor

Tasarımcı Jennifer Scheurle sosyal medyada meslektaşlarına “oyununuzdaki gizli mekanikleri anlatın” dedi. Gelen cevaplardan:

  • BioShock: bir düşmanın size attığı ilk mermi her zaman ıskalar — önce uyarılın, sonra vurulun.
  • BioShock: son can puanınızı kaybedecekken 1–2 saniye ölümsüz olursunuz: “kıl payı kurtuldum!”
  • Assassin’s Creed, Doom (2016): can çubuğunun son dilimi göründüğünden daha fazla can taşır.

Ortak nokta: hiçbiri YZ’yi “daha zeki” yapmıyor; hepsi oyuncunun hissini ayarlıyor. Sizce bunlar hile mi, tasarım mı?

Zorluk düğmeleri — kendiniz ayarlayın

Fareyi alanın içinde gezdirerek mermilerden kaçın. Tepki süresi, nişan hatası ve atış hızı “zorluk” düğmeleridir; algoritma aynı kalır. “Hareketini tahmin et” akıllıca; “hile yap” (duvar arkasını görmek) ise oyuncuya haksız gelir.

Gizli dinamik zorluk: üç örnek

Resident Evil 4 (2005)Oyunun gizli bir derece sistemi var (1–10). İyi nişan alıp az hasar alırsanız düşmanlar daha çok vurur ve saldırganlaşır; sık ölürseniz kolaylaşır. Capcom resmî olarak duyurmadı; oyuncular ve hız koşucuları kodu inceleyerek buldu.
Mario Kart“Lastik bant” rubber banding: geride kalan bilgisayar sürücüleri hızlanır, öndekiler yavaşlar; dağıtılan eşyalar da sıranıza bağlıdır (sondakine güçlüler). Yarış hep sıkışık kalır — ama birinci gidenler “haksızlık” diye kızar.
Crash Bandicoot (1996)Yönetmen Jason Rubin’e göre: üst üste ölen oyuncuya ekstra koruyucu maske, kayalar biraz daha yavaş, daha çok meyve… Oyuncu çoğu zaman fark etmez — amaç da bu.

Daha fazlası: Y17 “Zorluk Ayarı ve Oyuncu Modelleme” sunumu. Robin Hunicke’nin 2005 makalesi “The Case for Dynamic Difficulty Adjustment in Games” akademik başlangıç noktası.

YZ yönetmeni: oyunun temposunu yöneten YZ

Left 4 Dead (Valve, 2008)Michael Booth’un AI Director’ı her oyuncu için bir “duygusal yoğunluk” değeri tutar: hasar aldıkça, yakında zombi öldükçe artar. Yoğunluk zirveye çıkınca yönetmen bir süre dinlenme verir (yeni sürü göndermez); düşünce yeniden gerilimi yükseltir. Zombilerin, eşyaların ve hatta müziğin nerede/ne zaman çıkacağı her oyunda farklıdır.

Korku filmlerindeki “gerilim–rahatlama” dalgası. Kaynak: Booth, “The AI Systems of Left 4 Dead” (2009).

Left 4 Dead ekran görüntüsü
Left 4 Dead (2008): dalgaların zamanını yönetmen seçer · Görsel: Valve, Wikipedia (eğitim amaçlı adil kullanım)
Alien: Isolation (2014)“İki beyin”: yönetmen YZ oyuncunun yerini hep bilir ve bir tehdit göstergesi menace gauge tutar. Gösterge çok yükselince uzaylıyı uzaklaştırır, çok düşünce oyuncunun bölgesine “ipucu” verir. Uzaylının kendi YZ’si ise oyuncunun yerini bilmez: duyar, görür, arar.

Hile ile adalet arasındaki ince çizgi: yönetmen bilir ama av (uzaylı) bilmez.

📜 “Nükleer Gandi”: ünlü bir hata… ki aslında hiç olmadı

Efsane: İlk Civilization’da (1991) Gandi’nin saldırganlık değeri 1’di. Demokrasiye geçen liderin saldırganlığı 2 azalıyordu. 1 − 2 = −1… ama değer 8 bitlik işaretsiz sayıda (0–255) tutulduğundan 255’e “taştı” ve barışçı Gandi nükleer silah delisi oldu.

25225325425501230’ın altı yok: sayı başa (255’e) sarar−1−18 bitlik işaretsiz sayı: 1 − 2 = ?1 → 0 → 255 (“en saldırgan”)

Gerçek: Bu hikâye 2012 civarında internette yayıldı. 2020’de Sid Meier anı kitabında böyle bir hatanın ilk oyunda imkânsız olduğunu söyledi. Civilization V’in (2010) tasarımcıları ise Gandi’nin nükleer silah eğilimini bilerek en üst düzeye ayarlamıştı — bir şaka olarak. Sonraki oyunlarda da göndermeler var.

⚙️ Neden yine de iyi bir ders?Efsane yanlış ama anlattığı hata çok gerçek: işaretsiz bir sayıdan büyük bir sayı çıkarınca “sarar” wrap around. Arama Algoritmaları sunumundaki ikili arama taşması ((lo + hi) / 2) ile aynı aile.

C#’ta byte b = 1; b -= 2; → 255. Python’da tam sayılar taşmaz; JS’te Uint8Array sarar. Oyun YZ’sindeki “kişilik” değerlerini sınırlandırın (clamp).

Quiz 4 · zorluk
Hangisi oyuncunun gözünde en “haksız” hile olur?
Oyuncunun görebildiği ve oyunun kurallarını açıkça çiğneyen hileler en kötüsüdür. Gizli kolaylıklar (A) ve sıkışık yarış (B) çoğu zaman fark edilmez; kaynak bonusu (D) birçok strateji oyununda açıkça zorluk ayarı olarak yazılır (Civilization’ın zorluk seviyeleri gibi).
LEVEL 5
Kısa tarih
1980’den LLM’li NPC’lere
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

Oyun YZ’sinin dönüm noktaları

yıloyun / olayyenilikbu bölümde
1980Pac-Mankişilikli hayaletler, modlarY1, Y2
1996Creaturessinir ağlı, öğrenen yaratıklarY13
1998Half-Life · Thieftakım YZ’si · görüş/ses ile gizlilikY11, Y12
2000The Simsihtiyaçlar + “akıllı nesneler” (fayda)Y4
2001Black & Whiteoyuncunun eğittiği yaratıkY13
2004Halo 2davranış ağaçları yaygınlaşıyorY3
2005F.E.A.R.hedef yönelimli planlama (GOAP)Y5
2008Left 4 DeadYZ yönetmeniY17
2014Alien: Isolation · Shadow of Mordoriki beyinli canavar · Nemesis sistemiY11, Y17
2016–2019AlphaGo · OpenAI Five · AlphaStarderin pekiştirmeli öğrenme insanı yeniyorY6, Y13
2022Gran Turismo Sophyşampiyonları yenen yarış YZ’si (Nature)Y13
2023–Generative Agents · LLM’li NPC demolarıdil modelleriyle konuşan, plan yapan karakterlerY14, Y16
LEVEL 6
Bölümün araçları
motorlar, kütüphaneler, kitaplar, kanallar
  • oyun YZ’si nedir?
  • ajan ve NPC
  • vaka: Pac-Man hayaletleri
  • zekâ yanılsaması
  • zorluk ayarı ve hile
  • kısa tarih
  • bölümün araçları

🧰 Kütüphaneler ve araçlar

adplatformne yapar / sınırlarınasıl eklenir
Unity AI NavigationUnityNavMesh, ajanlar, engeller, bağlantılar (Y9). Hazır yol bulmaPackage Manager → AI Navigation
Unity BehaviorUnity 6Görsel davranış ağacı editörü (Y3)Package Manager → Behavior
Unity ML-AgentsUnity + PythonPekiştirmeli öğrenme ile ajan eğitimi (Y13)paket + pip install mlagents
Unreal Engine AIUnreal (C++/Blueprint)Davranış ağaçları, StateTree, EQS, AI Perception, MassAIMotorla gelir
Godot Navigation + LimboAI / BeehaveGodotYol bulma motorda; davranış ağacı ve durum makinesi eklentileriAssetLib’den eklenti
YukaJavaScriptTarayıcı oyunları için steering, FSM, hedef tabanlı ajanlar, algılama, yol bulmanpm install yuka
gdx-aiJava (libGDX)Steering, davranış ağaçları, A*, mesajlaşma — öğretici kaynak koduGradle bağımlılığı

Her sunumda o konunun kütüphanelerini ayrıntılı (nasıl eklenir, ne yapar, ne yapmaz) ele alacağız. Kural: önce kavramı küçük bir örnekle kendiniz yazın, sonra hazır aracı kullanın — hata ayıklarken içini bilmek hayat kurtarır.

📚 Bölümün temel kaynakları

Kitaplar
  • Yannakakis & Togelius, Artificial Intelligence and Games (Springer, 2. baskı 2025) — akademik bakış; 1. baskı ücretsiz PDF olarak sitede
  • Ian Millington, AI for Games (3. baskı, 2019) — algoritmaların “ders kitabı”
  • Steve Rabin (ed.), Game AI Pro 1–3 + Online — sektördeki geliştiricilerin yazdığı 150’den fazla bölüm, ücretsiz
  • Daniel Shiffman, The Nature of Code — p5.js ile ajanlar ve steering, ücretsiz
İzleme listesi
  • AI and Games (Tommy Thompson): oyunların YZ’sini anlatan YouTube kanalı — bu bölümün en iyi arkadaşı
  • GDC Vault — AI Summit konuşmaları (birçoğu YouTube’da ücretsiz)
  • Game Maker’s Toolkit: tasarım açısından YZ
  • The Coding Train: p5.js ile otonom ajanlar

🤖 Bu konuyu bir YZ kod asistanıyla yazarken

Sık yapılan hatalar — kontrol edin
  • Mükemmel nişancı: hata payı ve tepki süresi yok
  • Oyuncunun yerini her zaman bilen “hileci” YZ
  • Her karede pahalı hesaplar (Find, raycast yağmuru)
  • Kararını saniyede defalarca değiştiren titrek YZ
  • Test edilemeyen, rastgeleliği tohumsuz (seed) kod
İyi bir istek (prompt) örneği

“Unity 6, C#, 2D üstten görünüm. Bir taret yaz: oyuncuyu sadece görüş hattı açıksa (Physics2D.Raycast) görsün, tepki süresi (0,3 sn) ve nişan hatası (derece) Inspector’dan ayarlanabilsin, saniyede en fazla 2 atış yapsın. Zorluk ayarı için bu üç değeri bir ScriptableObject’te topla.”

  • Oyunun türünü ve istenen deneyimi yazın (“gerilimli ama adil”)
  • YZ’nin neyi bilip neyi bilmemesi gerektiğini belirtin (duvar arkası, oyuncunun canı)
  • Zorluk değerlerini Inspector’dan ayarlanabilir istemeyi unutmayın
  • Kodu küçük parçalarla isteyin ve her birini oyunda test edin

💬 Tartışma soruları

Yanınızdakiyle 2 dakika konuşun, sonra sınıfça tartışalım
  1. En son oynadığınız oyunda YZ’nin hile yaptığını hissettiğiniz bir an oldu mu? Sizi rahatsız eden hilenin kendisi miydi, yoksa fark etmeniz mi?
  2. BioShock’ta ilk merminin hep ıskalaması bir yalan. Oyuncuya söylenmeli mi? Rekabetçi (çok oyunculu) bir oyunda aynı şey kabul edilir mi?
  3. Mario Kart’tan lastik bant etkisini tamamen kaldırsanız yarışlar kimin için daha eğlenceli, kimin için daha sıkıcı olur?
  4. Pac-Man hayaletleri birbirleriyle hiç “konuşmuyor” ama oyuncular onların takım hâlinde çalıştığını düşünüyor. Bu ortaya çıkan davranışı başka hangi oyunlarda gördünüz?

🚀 Proje ve araştırma önerileri

  1. [kolay] Pac-Man hayaletleri — p5.js’te bu sunumdaki labirent ve dört hedefleme kuralıyla bir Pac-Man klonu. Bonus: korku modu.
  2. [kolay] YZ analizi — Sevdiğiniz bir oyunun düşmanlarını 30 dk izleyip “algıla–düşün–davran” şemasını çizin; hangi zekâ yanılsaması hilelerini kullanıyor?
  3. [orta] Zorluk düğmeleri — Taret demosunu Unity’ye taşıyın; üç zorluk seviyesini ScriptableObject ile tanımlayın ve 5 arkadaşınızla test edin.
  4. [orta] Mini AI Director — Bir hayatta kalma oyununda “yoğunluk” değeri tutup düşman dalgalarının zamanlamasını buna göre ayarlayın.
  5. [araştırma] Halo deneyini tekrarlayın — Davranışı aynı, canı farklı iki düşman yapın; 10 kişiye “ne kadar zeki?” anketi uygulayıp sonuçları Halo verisiyle karşılaştırın.
  6. [araştırma] Efsane mi gerçek mi? — Nükleer Gandi benzeri bir oyun efsanesini (ör. Pac-Man’in 256. seviye hatası) kaynaklarıyla araştırıp sunun.

Neler öğrendik? 🎒

  • Oyun YZ’sinin amacı deneyim: eğlence, gerilim, adil bir rakip.
  • Ajan: algıla → düşün → davran döngüsü.
  • Pac-Man: basit kurallar + farklı hedefler = kişilik.
  • Zekâ yanılsaması: fark ettirmek, yazmak kadar önemli (Halo, F.E.A.R.).
  • Zorluk düğmeleri: tepki süresi, isabet, hız, hile.
  • Gizli DDA: RE4, Mario Kart, Crash; yönetmen YZ: L4D, Alien: Isolation.
  • Efsanelere dikkat: Nükleer Gandi (ama taşma hatası gerçek!).
  • Araçlar: Unity, Unreal, Godot, Yuka; kaynaklar: Game AI Pro, AI and Games.

🎮 Bu sunumdaki oyunlar (1/3)

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.

Pac-Man 1980 · arcade
Labirentte yem toplayıp dört hayaletten kaçarsınız; her hayaletin ayrı bir kovalama kuralı var.
Halo: Combat Evolved 2001 · nişancı
Xbox’ın amiral gemisi bilimkurgu nişancısı; korkak küçük Grunt’lar ve lider Elite’ler meşhurdur.
F.E.A.R. 2005 · nişancı
Paranormal olayları araştıran özel tim; düşman askerleri yıllarca “en akıllı düşmanlar” listelerinde anıldı.
The Sims 2000 · yaşam simülasyonu
Sanal insanların evini kurar, açlık, uyku, eğlence gibi ihtiyaçlarını yönetirsiniz.
Mario Kart 1992– · yarış
Eşya atılan parti yarışı serisi; geride kalana daha iyi eşya verir.
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.
Doom 1993 · nişancı
Türü popülerleştiren nişancı; kaynak kodu 1997’de açıldı.
Metal Gear Solid 2 2001 · gizlilik
Hideo Kojima’nın sızma oyunu; fark edilince nöbetçinin başında “!” belirir.

🎮 Bu sunumdaki oyunlar (2/3)

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.

Halo 2 2004 · nişancı
Serinin ikinci oyunu; davranış ağaçlarını oyun endüstrisine tanıtan YZ’siyle bilinir.
Forza Motorsport 2005– · yarış simülasyonu
Xbox’ın gerçekçi yarış serisi; Drivatar rakipleri oyuncuların sürüşünden öğrenir.
Alien: Isolation 2014 · korku / gizlilik
Uzay istasyonunda sizi oyun boyunca avlayan tek bir uzaylıdan saklanırsınız; onu öldüremezsiniz.
Creatures 1996 · yapay yaşam
“Norn” adlı yaratıkları yetiştirirsiniz; her birinin küçük bir sinir ağı ve biyokimyası vardır.
Space Invaders 1978 · arcade
Aşağı inen uzaylı sıralarını vurduğunuz klasik.
BioShock 2007 · nişancı
Su altı şehri Rapture’da geçen hikâye ağırlıklı nişancı.
Assassin’s Creed 2007– · aksiyon-macera
Tarihî şehirlerde çatılarda koşan suikastçı serisi; kalabalığın içinde saklanmak temel mekanik.
Resident Evil 4 2005 · korku / aksiyon
Omuz üstü kamerayı popülerleştiren korku-aksiyon oyunu.

🎮 Bu sunumdaki oyunlar (3/3)

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.

Crash Bandicoot 1996 · platform
PlayStation’ın maskotu sayılan 3B platform oyunu; üst üste ölene gizlice yardım eder.
Civilization 1991– · sıra tabanlı strateji
Bir uygarlığı taş devrinden uzay çağına yönetirsiniz; teknoloji ağacı serinin simgesi.
Half-Life 1998 · nişancı
Hikâyeyi ara sahnesiz anlatan, türü değiştiren nişancı; asker timleri birlikte hareket eder.
Thief: The Dark Project 1998 · gizlilik
Gölgelerde saklanan hırsız Garrett; ışık ve ses üzerine kurulu ilk gizlilik oyunlarından.
Black & White 2001 · tanrı oyunu
Bir tanrı olarak köylüleri yönetir, dev bir yaratığı ödül ve cezayla eğitirsiniz.
Middle-earth: Shadow of Mordor 2014 · açık dünya aksiyon
Ork kaptanlarıyla savaşırsınız; sizi öldüren ork terfi eder ve sizi hatırlar (Nemesis sistemi).
Gran Turismo 7 2022 · yarış simülasyonu
PlayStation’ın yarış simülasyonu; GT Sophy en iyi pilotları yenen pekiştirmeli öğrenme YZ’si.

Kaynaklar: videolar 🎬

📄 Akademik okumalar

Dill 2013 · What Is Game AI? (Game AI Pro, Bölüm 1)
Bu sunumun felsefesi: deneyim, tasarımcı kontrolü, yapay aptallık.
Rabin 2017 · The Illusion of Intelligence (Game AI Pro 3, Bölüm 1)
Oyuncular neden kandırılmaya hazır; altı somut yanılsama hilesi.
Hunicke 2005 · The Case for Dynamic Difficulty Adjustment in Games (ACM ACE 2005)
Half-Life üzerinde DDA (Hamlet sistemi): akademik DDA’nın başlangıcı.
Yannakakis & Togelius 2025 · Artificial Intelligence and Games (2. baskı) (Springer)
Alanın akademik haritası: oynamak, üretmek, oyuncuyu modellemek; LLM’ler ve etik.

Kaynaklar: okuma 📚

NEXT LEVEL ▶
Sonlu Durum Makineleri
Devriye → şüphe → saldırı → kaç: NPC beyninin en klasik hâli
SONRAKİ SUNUM ▶