…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 · strategy
taktik · strateji
Çatışmanın “nasıl”ı (nerede durayım) · savaşın “ne”si (nereye saldırayım)
cover (full / partial) · hide spot
siper (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 function
konum değerlendirme fonksiyonu
Bir noktaya birçok ölçütün ağırlıklı toplamı ile puan veren fonksiyon
generator · condition · weight
üreteç · koşul · ağırlık
Aday noktaları üret · uymayanları ele · kalanları puanla (TPS, EQS)
influence map
etki haritası
Her hücrede her tarafın “gücü”: kontrol, gerilim, kırılganlık
tactical pathfinding
taktik yol bulma
Tehlikeli alanları pahalı sayan A*
terrain analysis · chokepoint
arazi analizi · darboğaz
Haritayı bölgelere ve dar geçitlere ayırma
flanking · suppression
kanattan dolanma · bastırma ateşi
Yandan saldırmak · düşmanı siperinde tutmak için ateş
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
katman
soru
araç
örnek
Strateji
Nereye saldıralım, neresi savunulmalı?
Etki haritası, arazi analizi, MCTS (Y6)
Kohan II, Total War, Company of Heroes
Tim taktiği
Kim bastırır, kim dolanır?
Roller, cephe hattı (Y10)
Days Gone, F.E.A.R.
Birey taktiği
Nerede durayım, oraya nasıl gideyim?
Konum sorgusu, taktik A*
Killzone, Crysis 2, Bulletstorm
Hareket
Adı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 🎯
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.
Askeri (mavi) sürükleyin: yakınlık ağırlığı yüzünden seçim askere yakın siperlere kayıyor.
“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.
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
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.
Askeri (mavi) sürükleyin: yakınlık ağırlığı yüzünden seçim askere yakın siperlere kayıyor.
“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.
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.
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.
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şim
anlamı
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üçük
kırılganlık: dengenin hassas olduğu yer
kırmızı düşük, mavi ulaşabilir
saldı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.
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)
Dost ateş hatlarından geçmek: arkadaşının nişan çizgisinin önüne koşmak.
Düşman ateşine karşı siperi yok saymak: açık alandan dümdüz geçmek.
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*
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.
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.)
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.
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
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.
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.)
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.
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ı
Aynı anda, doğrudan saldırıyla birden fazla oyuncu birimine saldırma.
Tek bir birimin eylemlerini mümkün olduğunca bölme.
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 atma
Bu yönde, bu mesafe içinde maske katmanında bir şey var mı? (siper testi)
IEnumerable<T>
gezilebilir dizi
Liste, dizi ya da üreteç: foreach ile dolaşılır
np.mgrid · np.hypot
NumPy ızgarası · uzunluk
Bütün hücreler için koordinat matrisleri; döngüsüz hesap
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.
Ü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.
Hazır EQS yok; NavMesh.SamplePosition + Physics.Linecast ile bu sunumdaki sorgu yeter. Asset Store’da EQS benzeri eklentiler var (bakımlarını kontrol edin).
Etki 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
Ö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.
Sorguyu veri yapın: üreteç, koşullar, ağırlıklar bir dosyada; davranış (saldırı, geri çekilme, kanat) başına bir sorgu.
Rezervasyon: iki NPC aynı noktayı seçmesin (Y10’daki jetonların akrabası).
Salınımı önleyin: mevcut hedefe bonus, sorguyu 0,5–1 sn’de bir çalıştırın.
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)
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
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ı?
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.
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?
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
[kolay]Siper bulan asker — p5.js’te bu sunumdaki konum sorgusu: siper noktaları, tehdit fareyle hareket ediyor, asker en iyi noktaya koşuyor.
[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ş.
[orta]Taktik çatışma — Unity’de 4’e 4 siper tabanlı çatışma: konum sorgusu + tehlike maliyetli navmesh yolu + nokta rezervasyonu.
[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?
[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.
[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).
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.
Killzone2004 · nişancı
PS2’nin “Halo rakibi” diye tanıtılan askerî nişancısı; serinin ilk oyunu.
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 Gone2019 · açık dünya aksiyon
Salgın sonrası Oregon’da motosikletli bir avcı; yüzlerce zombilik dev sürüleriyle ünlü.