T: tema · Z: kodu büyüt · S: konuşmacı notları · F: tam ekran · Esc: genel bakış · ⌂ ders haritası
OYUNLARDA YAPAY ZEKÂ · HAFTA 12
Taktik YZ
Siper seçimi, etki haritaları, taktik yol bulma — nerede durmalı, nereden gitmeli?
PRESS ▶ TO START

Bu derste oyunun haritası 🗺️

  1. Taktik nedir? — Killzone’un “dinamik prosedürel taktikleri”
  2. Konum seçimi — üret, ele, puanla: Killzone, Crysis 2 TPS, Unreal EQS
  3. Etki haritaları — kim neresini kontrol ediyor? Kohan II’nin “tesadüfi” kanat saldırıları
  4. Taktik yol bulma — en kısa yol en güvenli yol değildir
  5. Strateji ve sıra tabanlı taktik — arazi analizi, Gears Tactics’in “taktik netlik” kuralları
  6. Kod — konum sorgusu, etki haritası + üç laboratuvar
  7. Kütüphaneler — Unreal EQS, CryENGINE TPS, A* Pathfinding Project etiketleri
🎮 Bu dersin sonunda…

…bir NPC’nin siper ve saldırı konumunu ağırlıklı puanlarla seçebilecek, etki haritasıyla savaş alanının “kim nerede güçlü” resmini çıkarabilecek, A*’a tehlike maliyeti ekleyerek açıkta koşmayan askerler yapabilecek ve Unreal EQS gibi araçları bilinçli kullanabileceksiniz.

🤔 ISINMA: ATEŞ ALTINDASINIZ, NEREYE GİDERSİNİZ?

Etrafta beş kutu, iki duvar, üç düşman var. Bir asker olarak hangi noktaya koşarsınız ve oraya hangi yoldan gidersiniz?

  • Muhtemelen: düşmanlardan korunan, ama birini vurabildiğim, çok uzak olmayan, düşmana fazla yakın olmayan bir yer. Birçok ölçütü tartıyorsunuz (Y4’teki utility!).
  • Oraya giderken de en kısa yoldan değil, açıkta kalmadan gidiyorsunuz.
  • Bunu her seviye için tasarımcının elle işaretlemesi yerine YZ’nin her durumda kendisi hesaplaması: taktik YZ.

🎯 Bu konu için bilmeniz gerekenler

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

Neden?Konum seçimi = noktalara utility puanı vermek. Taktik yol bulma = A*’a ek maliyet. Siper testi = Y11’deki ışın. Yani bu hafta yeni algoritmadan çok, eski araçları uzaya uyguluyoruz.
🧰 Kodlamadan korkuyorsanızUnreal’ın EQS’i konum seçimini tamamen editörden, görsel olarak yaptırır. Etki haritası ise basit bir ızgara ve birkaç toplama işlemidir: hesap tablosunda bile denenebilir.

Mini sözlük

tactics · strategytaktik · stratejiÇatışmanın “nasıl”ı (nerede durayım) · savaşın “ne”si (nereye saldırayım)
cover (full / partial) · hide spotsiper (tam / kısmi) · saklanma noktasıAteşten koruyan engel · siperin arkasındaki nokta
line of fire (LoF)ateş hattıSilahın hedefe engelsiz ulaştığı çizgi
position evaluation functionkonum değerlendirme fonksiyonuBir noktaya birçok ölçütün ağırlıklı toplamı ile puan veren fonksiyon
generator · condition · weightüreteç · koşul · ağırlıkAday noktaları üret · uymayanları ele · kalanları puanla (TPS, EQS)
influence mapetki haritasıHer hücrede her tarafın “gücü”: kontrol, gerilim, kırılganlık
tactical pathfindingtaktik yol bulmaTehlikeli alanları pahalı sayan A*
terrain analysis · chokepointarazi analizi · darboğazHaritayı bölgelere ve dar geçitlere ayırma
flanking · suppressionkanattan dolanma · bastırma ateşiYandan saldırmak · düşmanı siperinde tutmak için ateş
LEVEL 0
Taktik nedir?
Killzone ve dinamik prosedürel taktikler
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Hikâye: Killzone (2004, PS2) — “dinamik prosedürel taktikler”

Guerrilla’dan Arjen Beij ve Remco Straatman, GDC Europe 2005: o dönemin yaygın yaklaşımı, seviye tasarımcısının yerleştirdiği ipuçları ve tetiklenen senaryolu davranışlardı. Killzone ekibi bunun yerine YZ’ye taktik problemlerin çözümünü dinamik olarak hesaplayacak kurallar verdi.

  • Oyun faydası: herhangi sayıda oyuncuyla çalışır, savaş her yerde olabilir.
  • Üretim faydası: YZ davranışı yeniden kullanılır, seviyeler hızlı denenir, iyileştirmeler bütün oyuna bir anda yayılır.
  • “Ateş et ve manevra yap” çatışmasında iyi konum seçmek savaşın yarısıdır. Onlarca dinamik etken: duvara yaslanmak, kısmi siper, yakında siper, ateş hattı, yakınlık, tercih edilen menzil…
Killzone’un saldırı konumu örneğiBirden çok tehdit var; asıl tehdide saldırılacak, diğerlerinden siper tercih edilecek:
  • yakınlık: 20
  • asıl tehdide ateş hattı: kısmi siperle 40, değilse 20
  • diğer tehditlerden siper: 20
  • tercih edilen menzil içinde: 10
Bütün puanlar toplanır, en yüksek konum seçilir. Tek bir tehdit ya da birden çok tehdit varken aynı fonksiyon farklı yerler seçer.

Taktik katmanlar

katmansoruaraçörnek
StratejiNereye saldıralım, neresi savunulmalı?Etki haritası, arazi analizi, MCTS (Y6)Kohan II, Total War, Company of Heroes
Tim taktiğiKim bastırır, kim dolanır?Roller, cephe hattı (Y10)Days Gone, F.E.A.R.
Birey taktiğiNerede durayım, oraya nasıl gideyim?Konum sorgusu, taktik A*Killzone, Crysis 2, Bulletstorm
HareketAdım adım nasıl yürürüm?Steering, navmesh (Y7, Y9)her oyun

Bu hafta özellikle birey taktiğine ve stratejinin uzamsal kısmına (etki haritaları) odaklanıyoruz.

LEVEL 1
Konum seçimi
üret → ele → puanla
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Önce elle: dört aday nokta, üç ölçüt 🎯

Taktik konum seçimi bir puan tablosudur: aday noktaları sırala, her birine birkaç ölçütten 0–1 arası not ver, notları ağırlıklarıyla çarpıp topla, en yüksek toplamı seç. Aynı dört nokta için dört farklı asker deneyin: değişen yalnızca ağırlıklar.

Konum seçmenin üç adımı

1) Üret (generate)Aday noktalar: siperlerin etrafındaki “saklanma noktaları”, ajanın etrafında bir ızgara, hedefin etrafında bir halka, navmesh üzerindeki rastgele noktalar. Tasarımcı da elle koyabilir.
2) Ele (condition / filter)Kesin kurallar: “tehdide 5 m’den yakın olmasın”, “oraya düşmandan önce varabileyim”, “siperli olsun”. Uymayan aday tamamen çıkar.
3) Puanla (weight / score)Kalanlar ağırlıklı ölçütlerle puanlanır: yakınlık, siper, menzil, yükseklik, ateş hattı… En yüksek puanlı nokta seçilir (Y4: utility).

Bu üç adım neredeyse bütün modern konum seçme sistemlerinin ortak iskeletidir: Killzone’un konum değerlendirme fonksiyonları, Crysis 2’nin TPS’i, Unreal’ın EQS’i. Fark, adayların nasıl üretildiği ve ölçütlerin nasıl tanımlandığıdır. Puanlama tarafı doğrudan Y4’teki utility: ölçüt → normalize → ağırlık → toplam.

Crysis 2: sorgu dili olarak taktik

Crysis 2 — Tactical Point SystemMatthew Jack (Game AI Pro, 26. bölüm): Far Cry ve Crysis’in yönlü “saklanma çapaları”ndan gelen fikirler Crysis 2’de bir sorgu diline dönüştü. Bir sorgu birden çok “seçenek” içerebilir: ilki sonuç vermezse ikincisi denenir (yedek plan).

Örnekteki sorgu: “siperim delindi, yakında yeni bir yer bul”. Generation = üret, Conditions = ele, Weights = puanla. Negatif ağırlık “az olsun” demek.

Canlı: siper seçimi 🎯

  1. Tehdidi (kırmızı) sürükleyin: gri noktalar elendi (tehdide açık), renkliler puanlandı. Yeşil halka: seçilen konum. Siperin “hangi tarafının” iyi olduğu tehdide göre değişiyor.
  2. Askeri (mavi) sürükleyin: yakınlık ağırlığı yüzünden seçim askere yakın siperlere kayıyor.
  3. “Siper şart” koşulunu kapatın: siper artık sadece bir ağırlık. Siper ağırlığını 0 yaparsanız asker açık alanda menzil içine koşar: “cesur” bir kişilik.
  4. Tercih edilen menzili 80’e indirin (yakın dövüşçü), 340’a çıkarın (keskin nişancı): aynı fonksiyon, farklı karakter (Killzone: “kişilik = hangi etkenler önemli?”).
🔎 DEMODA DENEYİN
  1. Tehdidi (kırmızı) sürükleyin: gri noktalar elendi (tehdide açık), renkliler puanlandı. Yeşil halka: seçilen konum. Siperin “hangi tarafının” iyi olduğu tehdide göre değişiyor.
  2. Askeri (mavi) sürükleyin: yakınlık ağırlığı yüzünden seçim askere yakın siperlere kayıyor.
  3. “Siper şart” koşulunu kapatın: siper artık sadece bir ağırlık. Siper ağırlığını 0 yaparsanız asker açık alanda menzil içine koşar: “cesur” bir kişilik.
  4. Tercih edilen menzili 80’e indirin (yakın dövüşçü), 340’a çıkarın (keskin nişancı): aynı fonksiyon, farklı karakter (Killzone: “kişilik = hangi etkenler önemli?”).

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

Unreal EQS ve doğal görünen seçimler

Bulletstorm’dan Unreal’aMieszko Zieliński (Game AI Pro, 33. bölüm, “Asking the Environment Smart Questions”): Bulletstorm için “şeyleri bul, ele, puanla” yapan bir sistem kuruldu. Bu sistem Unreal Engine 4’e Environment Query System (EQS) olarak girdi; Crysis 2’nin TPS’i de CryENGINE ile herkese açıldı (Game AI Pro 3, 26. bölüm).
  • Üreteçler: bir aktörün etrafında ızgara/halka, navmesh noktaları, belirli türdeki aktörler.
  • Testler: mesafe, iz (görünürlük), nokta çarpım (yön), yol bulma (ulaşılabilir mi, ne kadar uzak).
  • Her test ya eleme ya puanlama yapar; puanlar normalize edilip ağırlıkla birleşir. Davranış ağacındaki “Run EQS Query” görevi sonucu kara tahtaya yazar.
⚠️ Salınım (Eric Johnson, Game AI Pro Online 2021)Aynı sorguyu tekrar tekrar çalıştırmak ajanın konumunu güncel tutar; ama hedef belirsizse iki nokta sürekli yer değiştirir. Örnek: hedefe “yandan” yaklaşmak — sol ve sağ eşit iyi. Ajan sola gidince sağ öne geçer, sağa gidince sol… sonuçta hiçbirine bağlanmadan hedefe dümdüz yürür. Çare: mevcut hedefe bonus (atalet, Y4), simetriyi bozan küçük tercih, sorguyu daha seyrek çalıştırmak.
Normalleştirme seçimiGöreli (adaylar arasında 0–1), kırpılmış (sabit aralık), hedefe göre… Seçim, puanların anlamını değiştirir (Y4’teki ayraçlar).
Quiz 1 · konum
Bir keskin nişancı için konum sorgusunda hangisi “koşul”, hangisi “ağırlık” olmalı?
Hedefi göremeyen bir keskin nişancı konumu işe yaramaz: bu bir olmazsa olmaz, yani koşul (eleme). Yükseklik ve uzaklık ise “ne kadar iyi” sorusudur: ağırlık. Her şeyi koşul yaparsanız çoğu zaman hiç aday kalmaz; her şeyi ağırlık yaparsanız saçma konumlar da arada bir kazanabilir.
LEVEL 2
Etki haritaları
savaş alanının ısı haritası
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Etki haritası fikri

  • Harita bir ızgaraya bölünür. Her birim, bulunduğu yerden çevreye gücü kadar etki “yayar”; uzaklaştıkça azalır (doğrusal, üstel…).
  • Her taraf için ayrı katman: mavi etki, kırmızı etki. Katmanlar birleştirilerek yeni sorular cevaplanır:
birleşimanlamı
mavi − kırmızıkontrol: kim nerede baskın? sıfır çizgisi = cephe
min(mavi, kırmızı)gerilim: iki taraf da güçlü, çatışma bölgesi
toplam yüksek, fark küçükkırılganlık: dengenin hassas olduğu yer
kırmızı düşük, mavi ulaşabilirsaldırı fırsatı (zayıf nokta)
Dave Mark: modüler etki haritalarıGame AI Pro 2, 30. bölüm: önceden hesaplanmış “damgalar” (her birim türü için etki deseni) haritaya basılır; yakınlık, tehdit gibi katmanlar ayrı tutulur ve ihtiyaç anında çalışma haritalarında birleştirilir (topla, çarp, ters çevir). Bireysel kararlar yine bireylerde, ama savaş alanı hakkında ortak bilgiyle.
⚙️ Neden ucuz?Izgara sabit boyutta; birimler hareket ettikçe sadece onların damgaları güncellenir. Sorgular O(1): “bu hücrede kim baskın?”

Canlı: etki haritası 🗺️

🎬 Ara: modüler etki haritaları

Modular Influence Map System (Imap)
Dave Mark · 7 dk 54 sn · YouTube’da aç

Etki haritası demosunun oyun motorundaki hâli: birimler kendi “etki şablonlarını” haritaya damgalıyor, haritalar toplanıp çıkarılarak tehdit, kontrol ve fırsat haritaları üretiliyor. Dave Mark bu yaklaşımı GDC’de yaygınlaştıran isim.

🤔 İzlerkenVideoda tek bir birimin etkisi uzaklıkla nasıl azalıyor? İki haritayı toplamak ya da çıkarmak hangi taktik soruya cevap veriyor? Bizim demodaki “cephe hattı” hangi işlemle bulunuyordu?

Derin hikâye: Kohan II (2004) ve “planlanmamış” kanat saldırıları

Kevin Dill (Game AI Pro 2, 31. bölüm), gerçek zamanlı strateji oyunu Kohan II’nin saldırı ve savunma kararlarını etki haritalarına dayandırdı:

  • Düşman etkisi yükselince YZ saldırının geldiğini erkenden fark eder ve karşılayacak birlik gönderir: oyuncu büyük ordusuyla gelip boş bir kale bulmaz (“savaşmayan düşman eğlenceli değildir”).
  • YZ düşmanın en zayıf olduğu yere saldırır: oyuncu geniş bir savunma kurmak zorunda kalır.
  • Kuvvetlerin hepsini birden göndermez; çatışmaya girenler yerinde kalır. Oyuncu başka yerden takviye getirirse ya sonraki saldırı beklenir ya da az önce boşaltılan yeni zayıf noktaya gidilir.
  • Sonuç ekibi de şaşırttı. İncelemeler şöyle yazdı: “Bilgisayar akıllı savaş taktikleri kullanıyor; kanattan dolanmaya, zayıf noktalarınıza saldırmaya çalışıyor”, “oyuncuyu oyalayıp ikincil bir saldırıdan dikkatini dağıtabiliyor”. YZ bunları açıkça düşünmüyordu: hepsi etki haritalarından ortaya çıktı.
Hafif hile, fark edilmezEtki haritaları sis perdesinin arkasını biraz “sezdirebilir”. Dill: amaç hiç hile yapmayan bir YZ mi, yoksa sürükleyici bir deneyim mi? İnsanlar kısmi bilgiden sezgiyle tahmin yapar; YZ’ye de bu kadarını vermek, bariz olmadığı ve kusursuz olmadığı sürece fark edilmez. Kohan II’de oyuncular oyunun tekrarını sissiz izleyebiliyordu bile.
🎬 İzleyinModular Influence Map System (Dave Mark)
Quiz 2 · etki
Etki haritasında bir hücrede mavi = 2,1 ve kırmızı = 2,0. Bu hücre için en uygun yorum hangisi?
Fark (0,1) çok küçük ama toplam (4,1) yüksek: iki ordu da burada güçlü. Burası savaşın en sıcak noktası; birkaç birimlik bir takviye dengeyi değiştirir. “Kontrol” görünümünde mavi gibi görünür ama “kırılganlık” görünümü asıl durumu söyler.
LEVEL 3
Taktik yol bulma
en kısa yol en güvenli yol değildir
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

En kısa yolun üç günahı (Killzone)

  1. Dost ateş hatlarından geçmek: arkadaşının nişan çizgisinin önüne koşmak.
  2. Düşman ateşine karşı siperi yok saymak: açık alandan dümdüz geçmek.
  3. Gereksiz yere açıkta kalmak.

Çözüm (Killzone): A*’ta bir bağlantıyı geçme maliyetine, dost ateş hattını kesme ve bir ya da daha fazla tehdidin ateşi altında olma cezası eklemek. Konum değerlendirme fonksiyonlarının aynısı, bu sefer yol üzerinde.

Navmesh üzerindeDaniel Brewer (Game AI Pro, 27. bölüm): navmesh çokgenleri ya da kenarları için tehlike değeri hesaplayıp A*’ın maliyetine katmak; böylece navmesh’in esnekliği korunur. Y8’deki arazi maliyetinin taktik hâli: bataklık yerine “düşman görüşü”.
⚙️ BedelTehlike haritası her tehdit hareket edince değişir. Görünürlüğü her hücre için ışınla hesaplamak pahalıdır: düşük çözünürlüklü ızgara, saniyede birkaç güncelleme ve önceden hesaplanmış görüş tabloları kullanılır.

Canlı: tehlike maliyetli A*

  1. Tehlike maliyeti 0: yeşil yol gri yolla aynı, açık alandan dümdüz geçiyor. 5’e, sonra 10’a çıkarın: yeşil yol önce kısmen, sonra tamamen uzun duvarın “gölgesine” iniyor.
  2. Alttaki sayılara bakın: taktik yol kaç adım daha uzun, kaç hücre daha az açıkta? (Birkaç adım fazlası, ateş altında kalan hücrelerin büyük kısmını siler.)
  3. Tehdidi duvarın altına sürükleyin: güvenli bölge tersine döner, yol da yukarı çıkar. Oyuncu hareket ettikçe NPC’nin rotası da değişmeli.
  4. Başlangıcı ve hedefi taşıyın: bazen gölgede bir yol hiç yoktur ve maliyet ne olursa olsun açıktan geçmek gerekir. O zaman taktik YZ’nin işi hızlı geçmek ya da bastırma ateşi istemektir (Y10).
🔎 DEMODA DENEYİN
  1. Tehlike maliyeti 0: yeşil yol gri yolla aynı, açık alandan dümdüz geçiyor. 5’e, sonra 10’a çıkarın: yeşil yol önce kısmen, sonra tamamen uzun duvarın “gölgesine” iniyor.
  2. Alttaki sayılara bakın: taktik yol kaç adım daha uzun, kaç hücre daha az açıkta? (Birkaç adım fazlası, ateş altında kalan hücrelerin büyük kısmını siler.)
  3. Tehdidi duvarın altına sürükleyin: güvenli bölge tersine döner, yol da yukarı çıkar. Oyuncu hareket ettikçe NPC’nin rotası da değişmeli.
  4. Başlangıcı ve hedefi taşıyın: bazen gölgede bir yol hiç yoktur ve maliyet ne olursa olsun açıktan geçmek gerekir. O zaman taktik YZ’nin işi hızlı geçmek ya da bastırma ateşi istemektir (Y10).
LEVEL 4
Strateji ve sıra tabanlı taktik
arazi analizi, Gears Tactics
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Arazi analizi: bölgeler ve darboğazlar

  • Strateji YZ’si haritayı bölgelere (odalar, vadiler, üsler) ve onları bağlayan darboğazlara (köprü, geçit, kapı) ayırır. Bu, haritanın küçük bir grafıdır.
  • Sorular grafa sorulur: “Üssüme kaç yoldan gelinir?”, “Hangi köprüyü tutarsam iki bölgeyi ayırırım?”, “Düşman bu bölgede mi?”
  • Splinter Cell: Blacklist’in ses için kullandığı darboğaz grafı (Y11) aynı yapı.
Değişen haritaOyuncu duvar yıkıp köprü kurabiliyorsa bölgeler de değişir. Dill: “Dinamik bölge hesabı zor ve dikenli bir problemdir; eklemeden önce iyi düşünün!” Karo tabanlı haritalarda hızlı, yerel bir flood fill işe yarar; Company of Heroes bunu muhtemelen ilk çözen oyundu.
🎒 Bağlantı ve bölgelerFlood fill, BFS’in (Yönsüz Graflar) ızgara hâlidir: bir hücreden başlayıp ulaşılabilen her hücreyi aynı bölgeye boyamak. Union-Find (bağlantı sunumu) ise “bu iki hücre aynı bölgede mi?” sorusunu çok hızlı cevaplar; Y8’deki “ulaşılamaz hedef” tuzağının da çaresi.

Sıra tabanlı taktik: Gears Tactics’in netlik kuralları

Gears Tactics (2020) Gears of War’un siper tabanlı çatışmasını XCOM tarzı sıra tabanlı taktiğe taşıdı (Matthias Siemonsmeier, Game AI Pro Online 2021). Sorun: düşman sırası.

  • Düşmanlar tek tek hareket edince sıra uzun ve sıkıcıydı; üstelik ilk birim hareket edince oyuncu zaten ne olacağını anlıyordu.
  • Hepsi aynı anda hareket edince heyecanlıydı (önündeki dostunu vuran düşman!), ama oyuncu kritik bilgiyi kaçırıyordu.
  • Ders: “En iyi düşman davranışı bile, oyuncu etkisini görüp anlamazsa akılsız ya da rastgele algılanabilir.”
Taktik netliğin üç kuralı
  1. Aynı anda, doğrudan saldırıyla birden fazla oyuncu birimine saldırma.
  2. Tek bir birimin eylemlerini mümkün olduğunca bölme.
  3. Durumu büyük ölçüde değiştiren eylemleri (ör. geri itme) tek başına oynatarak vurgula.

Taktik YZ sadece doğru kararı vermek değil; o kararı oyuncuya okunabilir sunmaktır (Y11’deki geri bildirim ilkesiyle aynı).

Quiz 3 · strateji
Bir RTS YZ’si, oyuncunun ordusunun nereye saldıracağını önceden “sezip” tam o noktaya savunma gönderiyor ve her seferinde haklı çıkıyor. Sorun ne?
Kohan II’nin dersi: etki haritaları sezgiye benzer, kusursuz olmayan bir bilgi verir; YZ bazen doğru, bazen yanlış tahmin eder ve bu yüzden hile fark edilmez. Her seferinde tam isabet ise sisin arkasını gördüğünü ilan eder.
LEVEL 5
Kod ve laboratuvarlar
konum sorgusu ve etki haritası
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

Konum sorgusu: üret, ele, puanla

Etki haritası (1/2)

Etki haritası (2/2)

Taktik A* için: adım maliyeti = mesafe × (1 + tehlike[hücre] × k). Y8’deki kodda tek satırlık değişiklik.

🎒 Kod sözlüğü

Physics.Raycast(p, yön, mesafe, mask)ışın atmaBu yönde, bu mesafe içinde maske katmanında bir şey var mı? (siper testi)
IEnumerable<T>gezilebilir diziListe, dizi ya da üreteç: foreach ile dolaşılır
np.mgrid · np.hypotNumPy ızgarası · uzunlukBütün hücreler için koordinat matrisleri; döngüsüz hesap
np.clip(x, 0, 1)kırpmaDeğerleri 0–1 aralığına sıkıştırır
np.where(koşul, a, b)koşullu seçimKoşul doğruysa a, değilse b (eleme için)
np.argmin · unravel_indexen küçüğün yeriDüzleştirilmiş dizideki indeksi (satır, sütun)’a çevirir
float[,] · GetLength(0)iki boyutlu diziC#’ta ızgara; 0 = satır sayısı, 1 = sütun sayısı

🌱 Isınma kodu: etki uzaklıkla azalır

Etki haritasının tek formülü. Yarıçapın dışında sonuç negatif olmamalı: Math.max(0, …) (p5.js’te max). Haritadaki her hücre, bütün birimler için bu değeri toplar.

🌱 Isınma kodu: bu hücre kimin?

İki katmanı birleştirince harita “konuşmaya” başlar: fark = kontrol, ikisinin de yüksek olması = gerilim. Quiz 2’deki hücre (mavi 2,1 · kırmızı 2,0) burada "cephe" çıkar.

🧪 Canlı laboratuvar: konum puanı

Başlangıç sadece siperi önemsiyor: asker en uzak siperlere de gidebilir. Killzone tarzı bir ağırlıklı toplam yazın (yakınlık, siper, menzil) ve koşulu ekleyin. Sağda tehdit fareyi izliyor; askerin seçimi her karede yenileniyor.

🐍 Laboratuvar: bir hücrenin etkisi

Bütün etki haritası, bu fonksiyonun her hücre için çağrılmasıdır. Sonra düşünün: 100 × 100 ızgara ve 200 birim için kaç kez çağrılır? (Damga ve NumPy neden önemli?)

🐍 Laboratuvar: TPS tarzı konum seçimi

Aynı adaylarla ağırlıkları değiştirmek farklı “kişilikler” üretir: testlerde yakınlığı ağır basan ve siperi ağır basan durumlar var.
LEVEL 6
Kütüphaneler ve entegrasyon
motorlar ve oyununuz
  • taktik nedir?
  • konum seçimi
  • etki haritaları
  • taktik yol bulma
  • strateji ve sıra tabanlı taktik
  • kod ve laboratuvarlar
  • kütüphaneler ve entegrasyon

🧰 Kütüphaneler ve araçlar

adplatformne yapar / sınırlarınasıl eklenir
Unreal EQSUnreal · yerleşikÜreteç + testler (mesafe, iz, nokta çarpım, yol bulma), puan/eleme, görsel hata ayıklama (Gameplay Debugger, EQS test pawn). BT/StateTree’den çağrılır.Project Settings → AI System; Content → Artificial Intelligence → Environment Query
CryENGINE TPSCryENGINE · yerleşikCrysis 2’nin Tactical Point System’i: Lua sorgu dili, seçenek zincirleri, saklanma noktaları.Motorla birlikte
A* Pathfinding Project (etiket ve ceza)UnityDüğümlere etiket ve ceza (penalty) vererek taktik yol bulma; “tehlikeli bölge” etiketleri çalışma anında değiştirilebilir.Asset Store
Unity: kendi sorgu sisteminizUnityHazır EQS yok; NavMesh.SamplePosition + Physics.Linecast ile bu sunumdaki sorgu yeter. Asset Store’da EQS benzeri eklentiler var (bakımlarını kontrol edin).Kod
NumPy / SciPyPythonEtki haritaları için dizi işlemleri; scipy.ndimage ile bulanıklaştırma/yayma, flood fill (label) ile bölgeler.pip install numpy scipy

🧩 Taktik YZ eklerken

  1. Önce siper noktaları: siper nesnelerinin etrafına otomatik noktalar üretin (ya da tasarımcı yerleştirsin). Her noktanın hangi yönden koruduğunu kaydedin.
  2. Sorguyu veri yapın: üreteç, koşullar, ağırlıklar bir dosyada; davranış (saldırı, geri çekilme, kanat) başına bir sorgu.
  3. Rezervasyon: iki NPC aynı noktayı seçmesin (Y10’daki jetonların akrabası).
  4. Salınımı önleyin: mevcut hedefe bonus, sorguyu 0,5–1 sn’de bir çalıştırın.
  5. Görselleştirin: aday noktaları puan renkleriyle çizin (EQS test pawn gibi). Tasarımcılar ağırlıkları oyun çalışırken ayarlasın.
⚙️ PerformansIşın atmak en pahalı test: ucuz testleri (mesafe, koşullar) önce yapın; aday sayısını sınırlayın; sonuçları birkaç kare önbellekte tutun. Etki haritasını düşük çözünürlükte ve seyrek güncelleyin.
Tasarım tuzağı“Mükemmel” taktik oyuncuyu ezebilir. Killzone ve Gears Tactics örneklerindeki gibi asıl hedef, oyuncunun anlayabildiği ve karşılık verebildiği akıllı davranış. Zorluk ayarı (Y17) için ağırlıklar ve koşullar da birer düğmedir.

🤖 Bu konuyu bir YZ kod asistanıyla yazarken

Sık yapılan hatalar — kontrol edin
  • Siper testini karakterin ayak hizasından yapmak (her şey “siperli” çıkar)
  • Puanları normalize etmeden toplamak (metre + 0/1 karışımı)
  • Aynı noktayı birden çok NPC’nin seçmesi
  • Etki haritasını her karede tüm birimler için sıfırdan hesaplamak
  • Tehlike maliyetini çok yüksek verip saçma uzun yollar üretmek
İyi bir istek (prompt) örneği

“Unity 6, C#. Bir siper sistemi yaz: sahnedeki “Cover” etiketli nesnelerin kenarlarına 1 m arayla siper noktaları üret (NavMesh.SamplePosition ile navmesh üzerine yapıştır). CoverQuery: koşullar (tehdide en az 4 m, NavMesh yolu var), ağırlıklar (yakınlık 20, tehdit yönünde 1,5 m Raycast ile bitişik siper 40, 10–14 m menzil 10), puanlar 0–1 normalize. Seçilen noktayı rezerve et, NPC ölünce bırak. Sorguyu 0,7 sn’de bir çalıştır ve mevcut noktaya +10 bonus ver. Gizmos ile aday noktaları puanına göre kırmızı→yeşil çiz.”

  • Ölçütleri, hangilerinin koşul hangilerinin ağırlık olduğunu ve ağırlık değerlerini siz belirleyin
  • Siper noktalarının nasıl üretileceğini (nesne etrafı, ızgara, navmesh) yazın
  • Nokta rezervasyonu ve salınım önleme isteyin
  • Gizmos ile aday noktaları puan renkleriyle çizdirin

🔬 Araştırma ucu

Öğrenilen konum değerlendirmeProfesyonel oyuncuların maç kayıtlarından “iyi konum” örneklerini öğrenip ağırlıkları otomatik ayarlamak (ters pekiştirmeli öğrenme / taklit öğrenme, Y13).
Prosedürel seviyelerde taktikRastgele üretilen haritalarda (Y15) siper noktası, darboğaz ve bölgelerin otomatik çıkarılması; Gears Tactics’in yarı prosedürel haritaları buna örnek.
Taktik netlik ölçümüOyuncuların düşman hamlelerini ne kadar “okuyabildiğini” ölçen bir oyuncu deneyi: aynı anda hareket eden düşman sayısı arttıkça anlama oranı nasıl düşüyor?

💬 Tartışma soruları

Yanınızdakiyle 2 dakika konuşun, sonra sınıfça tartışalım
  1. Kohan II’nin YZ’si kanat saldırısını hiç “düşünmedi”; etki haritası onu en zayıf noktaya gönderdi ve eleştirmenler “taktik deha” dedi. F.E.A.R.’daki yanılsamayla (Y5) ne ortak? Zekâ nerede: kodda mı, izleyenin kafasında mı?
  2. Aynı konum sorgusunda siper ağırlığını 0 yaparsanız asker “cesur”, 100 yaparsanız “korkak” olur. Sevdiğiniz bir oyundaki üç düşman türünü yalnızca ağırlıklarla tarif edin.
  3. En kısa yol 33 adım ve 20 adımı ateş altında; taktik yol 38 adım ve 2 adımı ateş altında. Hangi durumda NPC yine de kısa yolu seçmeli?
  4. Strateji oyununda YZ, sis perdesinin arkasını etki haritasıyla “biraz sezdiriyor”. Bu hile mi? İnsan oyuncu da görmediği yeri tahmin etmez mi?

🚀 Proje ve araştırma önerileri

  1. [kolay] Siper bulan asker — p5.js’te bu sunumdaki konum sorgusu: siper noktaları, tehdit fareyle hareket ediyor, asker en iyi noktaya koşuyor.
  2. [kolay] Etki haritası görselleştirici — Bir RTS haritasında iki tarafın birimleri; kontrol, gerilim ve kırılganlık görünümleri arasında geçiş.
  3. [orta] Taktik çatışma — Unity’de 4’e 4 siper tabanlı çatışma: konum sorgusu + tehlike maliyetli navmesh yolu + nokta rezervasyonu.
  4. [orta] Mini RTS stratejisi — Etki haritasıyla saldırı/savunma kararı veren bir YZ: Kohan II’nin “zayıf noktaya saldır, takviye gelince başka yere kay” davranışı ortaya çıkıyor mu?
  5. [zor] XCOM benzeri — Sıra tabanlı ızgara taktik: her birim için hareket+eylem kombinasyonlarını utility ile puanlayın; Gears Tactics’in üç netlik kuralını uygulayın.
  6. [araştırma] Arazi analizi — Bir harita görüntüsünden otomatik bölge ve darboğaz çıkaran bir araç (flood fill + iskelet); çıkan grafla savunma planı.

Neler öğrendik? 🎒

  • Taktik YZ = taktik problemlerin çözümünü dinamik hesaplayan kurallar (Killzone).
  • Konum seçimi: üret → ele → puanla; Killzone ağırlıkları, Crysis 2 TPS, Bulletstorm → Unreal EQS; salınım tuzağı.
  • Etki haritaları: kontrol, gerilim, kırılganlık, zayıf nokta; Kohan II’de ortaya çıkan kanat saldırıları.
  • Taktik yol bulma: A*’a tehlike maliyeti; en kısa ≠ en güvenli.
  • Strateji: bölgeler ve darboğazlar, dinamik bölge hesabının zorluğu.
  • Sıra tabanlı taktik: Gears Tactics’in taktik netlik kuralları.
  • Sonraki bölüm: öğrenen ve üreten YZ — önce pekiştirmeli öğrenme ve ML-Agents.

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

Killzone 2004 · nişancı
PS2’nin “Halo rakibi” diye tanıtılan askerî nişancısı; serinin ilk oyunu.
Crysis 2 2011 · nişancı
Nanosuit giyen askerle istila altındaki New York’ta geçen nişancı.
Kohan II: Kings of War 2004 · gerçek zamanlı strateji
Birimlerin bölük hâlinde yönetildiği fantastik strateji; YZ’si etki haritalarıyla karar verir.
Total War: Rome II 2013 · strateji
Sıra tabanlı kampanya ile gerçek zamanlı dev savaşları birleştiren strateji oyunu.
Company of Heroes 2006 · gerçek zamanlı strateji
İkinci Dünya Savaşı’nda manga düzeyinde strateji; siper ve görüş hattı çok önemli.

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

Days Gone 2019 · açık dünya aksiyon
Salgın sonrası Oregon’da motosikletli bir avcı; yüzlerce zombilik dev sürüleriyle ünlü.
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ı.
Splinter Cell: Blacklist 2013 · gizlilik
Ajan Sam Fisher’ın gölgelerde ilerlediği serinin son oyunu.
XCOM: Enemy Unknown 2012 · sıra tabanlı taktik
Uzaylı istilasına karşı küçük bir mangayı yönetirsiniz; her atış bir yüzde.

Kaynaklar: videolar 🎬

📄 Akademik okumalar

Beij & Straatman 2005 · Killzone’s AI: Dynamic Procedural Tactics (GDC Europe 2005 (slaytlar))
Konum değerlendirme fonksiyonları, taktik yol bulma.
Jack 2013 · Tactical Position Selection: An Architecture and Query Language (Game AI Pro, Bölüm 26)
Crysis 2 TPS.
Zieliński 2013 · Asking the Environment Smart Questions (Game AI Pro, Bölüm 33)
Bulletstorm → Unreal EQS.
Mark 2015 · Modular Tactical Influence Maps (Game AI Pro 2, Bölüm 30)
Damgalar, katmanlar, çalışma haritaları.
Dill 2015 · Spatial Reasoning for Strategic Decision Making (Game AI Pro 2, Bölüm 31)
Kohan II, bölgeler, etki haritaları.
Brewer 2013 · Tactical Pathfinding on a NavMesh (Game AI Pro, Bölüm 27)
Johnson 2021 · Taming Spatial Queries: Tips for Natural Position Selection (Game AI Pro Online, Bölüm 5)
Salınım, normalizasyon.
Siemonsmeier 2021 · Gearing the Tactics Genre: Simultaneous AI Actions in Gears Tactics (Game AI Pro Online, Bölüm 3)
Taktik netlik kuralları.
NEXT LEVEL ▶
Öğrenen YZ
Pekiştirmeli öğrenme, Q-learning, Unity ML-Agents
SONRAKİ SUNUM ▶