…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
agent
ajan
Ortamını algılayıp karar veren ve eylem yapan varlık
NPC (non-player character)
oyuncu olmayan karakter
Bilgisayarın yönettiği her karakter: düşman, köylü, yoldaş
bot
bot
Oyuncu yerine oynayan YZ (çok oyunculu oyunlarda, testlerde)
difficulty · DDA
zorluk · dinamik zorluk ayarı
dynamic difficulty adjustment: zorluğun oyuncuya göre kendiliğinden değişmesi
AI director
YZ yönetmeni
Tek tek karakterleri değil, oyunun temposunu yöneten YZ
bark
bağırış / replik
NPC’nin durumunu belli eden kısa ses: “El bombası!”
emergent behavior
ortaya çıkan davranış
Basit kuralların etkileşiminden doğan, kimsenin tek tek yazmadığı davranış
artificial stupidity
yapay aptallık
Duvara 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 YZ
oyun YZ’si
amaç
en iyi sonuç: kazan, doğru sınıflandır
oyuncuya 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çe
saatler, GPU kümeleri
bir karede 1–3 ms, onlarca karakter
hile
kabul edilmez
serbest — yakalanmadıkça
kontrol
öğrenen, öngörülemez
tasarımcı kontrol edebilmeli, hatayı tekrar üretebilmeli
kaybetmek
baş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
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.
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ürge
tampon 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çi
gö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
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:
Blinky
Oikake (kovalayan)
doğrudan Pac-Man’e
Pinky
Machibuse (pusu kuran)
Pac-Man’in 4 kare önüne
Inky
Kimagure (kaprisli)
Blinky ile birlikte kıskaç
Clyde
Otoboke (aptalı oynayan)
yaklaşınca kaçar
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ğılscatter: her hayalet kendi köşesine gider (oyuncuya nefes aldırır)
Kovalachase: kişilik kuralları
1. seviyede: 7 sn dağıl → 20 sn kovala → … Mod değişince hepsi geri döner (oyuncuya ipucu!)
Korkufrightened: 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 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. (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 (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östergesimenace 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.
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).
Steering, davranış ağaçları, A*, mesajlaşma — öğretici kaynak kodu
Gradle 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ı)
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
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?
BioShock’ta ilk merminin hep ıskalaması bir yalan. Oyuncuya söylenmeli mi? Rekabetçi (çok oyunculu) bir oyunda aynı şey kabul edilir mi?
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?
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
[kolay]Pac-Man hayaletleri — p5.js’te bu sunumdaki labirent ve dört hedefleme kuralıyla bir Pac-Man klonu. Bonus: korku modu.
[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?
[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.
[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.
[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.
[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-Man1980 · arcade
Labirentte yem toplayıp dört hayaletten kaçarsınız; her hayaletin ayrı bir kovalama kuralı var.
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 22004 · nişancı
Serinin ikinci oyunu; davranış ağaçlarını oyun endüstrisine tanıtan YZ’siyle bilinir.
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 Bandicoot1996 · platform
PlayStation’ın maskotu sayılan 3B platform oyunu; üst üste ölene gizlice yardım eder.