T: tema · Z: kodu büyüt · S: konuşmacı notları · F: tam ekran · Esc: genel bakış · ⌂ ders haritası
OYUNLARDA YAPAY ZEKÂ · HAFTA 11
Algılama
Görme, duyma, farkındalık, hafıza — NPC dünyayı nasıl “bilir”?
PRESS ▶ TO START
Bu derste oyunun haritası 🗺️
Neden algı? — Thief (1998) ve “adil” YZ’nin dört şartı
Görme — mesafe, açı, ışın; görüş bölgeleri, ışık, duruş (Splinter Cell, The Last of Us)
Farkındalık ve hafıza — sayaçlar, seviyeler, son bilinen konum, ADSR zarfları (Crysis 2)
Duyma — ses duvardan geçmez: kapılar ve pencereler üzerinden mesafe
Diğer duyular ve hile — koku, sosyal bilgi, ortam değişiklikleri; ne zaman hile yapılır?
Kod — canSee, farkındalık sayacı, ses olayları + üç laboratuvar
Kütüphaneler — Unreal AI Perception, Unity raycast + kendi sisteminiz, Yuka
🎮 Bu dersin sonunda…
…“gördü / görmedi” yerine kademeli fark eden, ışığa ve duruşa duyarlı, sesi duvarların arkasından doğru mesafeyle duyan, oyuncuyu kaybedince son gördüğü yeri araştıran ve bütün bunları oyuncuya okunabilir biçimde gösteren bir algı sistemi kurabileceksiniz.
🤔 ISINMA: YZ’YE OYUNCUNUN YERİNİ SÖYLEMEK ÇOK KOLAY
enemy.ThePlayerIsHere(player.position); — tek satır. Neden yapmıyoruz?
Crytek’ten Rich Welsh (Game AI Pro): Matrix filmindeki gibi telefondaki bir ses kahramanı yönlendirebilir; biz de YZ’ye her şeyi söyleyebiliriz. Ama “oyuncu YZ’nin hile yaptığını anladığı anda kendini aldatılmış hisseder.”
Algı sisteminin işi, YZ’nin bilgisini bilerek kısıtlamak: oyuncuyla benzer sınırlar (görme, duyma, hafıza) koymak.
Gizlilik oyunlarında bu, oyunun kendisidir. Aksiyon oyunlarında da düşmanın “ne bildiği” dövüşün ritmini belirler.
🎯 Bu konu için bilmeniz gerekenler
Yeşil = gerekli · kesikli = faydalı ama şart değil. Tıklayınca ilgili sunuma gider.
Neden?Y0’daki “oyuncu görüş açımda mı?” laboratuvarı bu sunumun ilk adımıdır. Y2’deki nöbetçinin “görüyor/duydu” bilgisini bu hafta nereden aldığını kuruyoruz.
🧰 Kodlamadan korkuyorsanızUnreal’ın AI Perception bileşeni görme ve duymayı hazır verir; Unity’de birkaç satır Physics.Raycast yeter. Bu sunumun asıl dersi kod değil, tasarım: oyuncunun algıyı anlayabilmesi (gösterge, ses, animasyon).
Mini sözlük
perception · stimulus (stim)
algı · uyaran
Duyuların dünyadan bilgi alması · algılanabilir olay (görüntü, ses, hasar)
field of view (FOV) · line of sight (LOS)
görüş açısı · görüş hattı
Gözün baktığı açı · arada engel olmaması
raycast
ışın atma
Bir noktadan diğerine düz çizginin bir şeye çarpıp çarpmadığını sorma
peripheral vision
çevresel görüş
Gözün kenarı: hareketi fark eder, ayrıntıyı seçemez
certainty · awareness
kesinlik · farkındalık
“Ne kadar net görüyorum?” · “Bu kadar süredir görüyorum, artık eminim”
last known position (LKP)
son bilinen konum
Hedefin en son algılandığı yer; araştırmanın başladığı nokta
sound propagation · occlusion
ses yayılımı · engelleme
Sesin duvarlar, kapılar üzerinden ilerlemesi ve sönümlenmesi
ADSR envelope
ADSR zarfı
Attack, Decay, Sustain, Release: algı değerinin zamanla yükselip sönmesi
omniscience · cheating
her şeyi bilme · hile
YZ’nin görmediği bilgiyi kullanması
LEVEL 0
Neden algı?
Thief ve adil YZ’nin dört şartı
neden algı?
görme
farkındalık ve hafıza
duyma
diğer duyular ve hile
kod ve laboratuvarlar
kütüphaneler ve entegrasyon
Derin hikâye: Thief: The Dark Project (1998) 🕯️
Looking Glass Studios’un baş programcısı Tom Leonard, “Building an AI Sensory System” yazısında: Thief’te oyuncu yavaş hareket eder, çatışmadan kaçar, öldürünce cezalandırılır ve kolayca ölür. “Oyunun merkezi, YZ’nin oyuncu hakkındaki duyusal bilgisinin gelip gitmesidir.”
Görme tek bir koni değil, sıralı beş görüş konisi: doğrudan görüş, çevresel görüş, yukarı/aşağı… Her koninin kendi keskinliği ve “harekete mi ışığa mı duyarlı” ayarı var.
Beşinci koni geriye bakar ve sadece harekete duyarlıdır: oyuncu sessiz olsa bile çok yakından takip ederse muhafız “örümcek hissi” ile fark eder.
Her nesnenin bir görünürlük değeri var; oyuncunun aydınlığı, ayağının altındaki zeminin ışığına göre hesaplanır. Böylece oyuncu ekrandaki ışık taşı (light gem) göstergesiyle güvende olup olmadığını nesnel olarak görebilir.
Sesler anlam etiketleriyle 3B geometride yayılır ve doğru yönden gelir; algı değerleri zamanla filtrelenerek yükselir, bir “kapasitör” gibi yavaşça söner.
💡 DersAlgı sistemi “tasarımcının ayarlayabileceği, ama çıktısı istikrarlı ve anlaşılır” olmalı. Oyuncu kuralı öğrenebilmeli: “gölgede yavaş yürürsem görünmem.”
İyi bir algı sisteminin dört şartı (Splinter Cell: Blacklist)
1) AdaletGizlilikte yakalanmak, oyunun bitmesi ya da kolun duvara fırlatılması demek. Haksız gelen tek bir yakalanma oyunu bıraktırır.
2) TutarlılıkOyuncu, YZ’nin neyi algılayacağını tahmin edebilmeli ki strateji kurabilsin. Gerçek insanlardan farklı olarak! (Ama tutarlı ≠ tekrarlayan: mesafe ve süreler aynı, animasyon ve sözler farklı.)
3) İyi geri bildirimOyuncu YZ’nin ne yaptığını ve neden yaptığını okuyabilmeli: göstergeler, sözler (“Orada biri mi var?”), bakış animasyonları.
4) ZekâMartin Walsh: “Aptal olmamak, akıllı olmak demek değildir; her zaman inandırıcı olmak demektir.”
Bir NPC’nin “görmesi” üç sorudan ibarettir ve sorular ucuzdan pahalıya sorulur: yeterince yakın mı? Baktığım yönde mi? Arada engel var mı? Biri “hayır” derse gerisine bakılmaz. Dört senaryoyu deneyin, sonra alana tıklayıp oyuncuyu kendiniz yerleştirin.
Klasik üç kontrol ve sorunu
Mesafe: yeterince yakın mı? (en ucuz: bir çıkarma, bir uzunluk)
Açı: görüş açımda mı? (nokta çarpım ≥ cos(yarı açı); Y0)
Işın: arada duvar var mı? (en pahalı: fizik sorgusu)
Sıra önemlidir: ucuz kontroller pahalıları eler. Yüz NPC × yüz hedef için ışın atmak, uzaktakileri baştan elemekten çok daha pahalıdır.
⚠️ Evet/hayır sorunu (Steve Rabin)“Oyuncu 10,001 m uzaktayken görülmez, 1 mm yaklaşınca birden görülür.” Gri alan yok; oyuncular bu sınırı çabucak keşfeder ve sömürür. Ayrıca 0,3 gibi bir sayıyı “%30 görme olasılığı” diye zar atmak daha da kötü: rastgele ve açıklanamaz. Rabin’in önerisi: 0–1 değeri bir tanıma kesinliği olarak yorumlamak (“bir şey gördüm ama ne olduğundan emin değilim”).
Koni neden kötü bir göz?
The Last of Us (Naughty Dog)Uncharted’tan gelen basit koni + ışın sistemiyle oyun testlerinde sorun çıktı: oyuncu NPC’nin hemen yanında görünmüyor, çok uzaktayken fark ediliyordu. Çözüm basit bir kural: görüş açısı mesafeyle ters orantılı — yakında geniş, uzakta dar. (McIntosh, Game AI Pro 2, 34. bölüm)
Splinter Cell: Blacklist’in tabutuKoni uzaklaştıkça yana genişler: 40 m ötede 15 m yandaki hareketi fark etmek mantıksız. Önce koni yerine kutular, sonra tabut biçimli kutular kullanıldı: önce koni gibi genişler, sonra daralır. Çevresel görüş için ayrı, yakın bir bölge.
Rabin’in görüş bölgeleriBirkaç bölge, her birinin bir kesinlik değeri: tam önde ve orta mesafede “tatlı nokta” (1,0), ana koni (0,5), çevre (0,25). Hareket eden hedef daha görünür, kamuflajlı hedef daha az. Sonuç bir sayı; davranış bu sayıya göre kademelenir: dön ve bak, yaklaş, alarm.
Bir sonraki demoda “görüş bölgeleri” modeli tam olarak bu: kırmızı tabut (1,0), turuncu koni (0,5), mavi çevre (0,25).
Canlı: görüş bölgeleri, ışık ve farkındalık 👁️
“Evet/hayır koni”yi seçin: koninin kenarında bir milim içeri girin, çıkın. Farkındalık bir anda doluyor mu? Sonra “görüş bölgeleri”: uzak kenarlarda yavaş, tatlı noktada hızlı.
Gölgeli alanlarda (koyu dikdörtgenler) dolaşın: kesinlik ×0,3. Çömelin: ×0,6. Muhafızın hemen yanından gölgede, çömelerek geçebiliyor musunuz?
Muhafızın arkasına çok yakın gelin: yakın çevre bölgesi (“örümcek hissi”). Thief’in arkaya bakan konisi.
Görünüp hemen saklanın: muhafız “şüpheli” (?) olup son bilinen konuma bakıyor; “arıyor” seviyesinde oraya yürüyor.
“Fark etme süresi”ni 0,3 yapın: haksız mı geldi? 4 yapın: kolay mı? İşte zorluk ayarı.
🔎 DEMODA DENEYİN
“Evet/hayır koni”yi seçin: koninin kenarında bir milim içeri girin, çıkın. Farkındalık bir anda doluyor mu? Sonra “görüş bölgeleri”: uzak kenarlarda yavaş, tatlı noktada hızlı.
Gölgeli alanlarda (koyu dikdörtgenler) dolaşın: kesinlik ×0,3. Çömelin: ×0,6. Muhafızın hemen yanından gölgede, çömelerek geçebiliyor musunuz?
Muhafızın arkasına çok yakın gelin: yakın çevre bölgesi (“örümcek hissi”). Thief’in arkaya bakan konisi.
Görünüp hemen saklanın: muhafız “şüpheli” (?) olup son bilinen konuma bakıyor; “arıyor” seviyesinde oraya yürüyor.
“Fark etme süresi”ni 0,3 yapın: haksız mı geldi? 4 yapın: kolay mı? İşte zorluk ayarı.
🎬 Ara: gizlilik oyunlarında nöbetçiler nasıl görür ve duyar?
How Stealth Game Guards See and Hear (School of Stealth #1) Game Maker’s Toolkit (Mark Brown) · 12 dk 42 sn · YouTube’da aç
Az önceki üç kontrolün ve görüş bölgelerinin gerçek gizlilik oyunlarındaki hâli: görüş konileri, ışık ve gölge, sesler, yavaşça dolan şüphe. Tasarımcı gözüyle: oyuncu nöbetçinin ne algıladığını nasıl okur?
🤔 İzlerkenVideodaki oyunlardan hangisi evet/hayır görüş kullanıyor, hangisi yavaşça dolan bir farkındalık? Oyuncuya “görüldün” bilgisini veren işaretler neler? Bizim demodaki “şüpheli → arıyor → alarm” basamakları hangi oyuna benziyor?
🔗 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.
Splinter Cell: Blacklist — tespit sayacıOyuncunun iskeletinden “yeterince kemik” görünür olunca bir sayaç başlar. Sayacın süresi oyuncunun bulunduğu görüş bölgesine, mesafeye, aydınlığına ve NPC’nin durumuna göre ölçeklenir. Sayaç ekranda büyüyen bir gösterge olarak çizilir: oyuncunun “görüş hattını kırmak ya da NPC’yi etkisiz hâle getirmek” için ne kadar vakti olduğunu gösterir.
The Last of Us — tek bir noktaİlk deneme: Joel’in neredeyse her eklemine ışın, ağırlıklı ortalama %60’ı geçerse görünür. Sonuç doğru ama oyuncular bir siperin güvenli olup olmadığını tahmin edemedi. Çözüm: tek nokta. Gizlilikteyken göğsün ortası, çatışmadayken başın tepesi: gizlilikte oyuncu lehine, çatışmada iyi görüş.
Ve bir sayaç dahaTLOU’da da oyuncu görüldüğü her karede sayaç artar, görülmediği her karede azalır; sayaç eşiği geçince algılanmış sayılır (tipik NPC için 1–2 sn; çatışmada çok daha kısa, oyuncu henüz hiç görülmemişse çok daha uzun).
Quiz 1 · görme
Yüz NPC her karede oyuncuyu “görüyor mu” diye kontrol ediyor. Hangi sıra en verimlidir?
Ucuz kontroller önce: mesafe bir çıkarma ve uzunluk; açı bir nokta çarpım; ışın ise fizik motoruna sorgudur. Uzaktaki ya da arkadaki NPC’ler ışına hiç ulaşmadan elenir. Sonuç aynı, maliyet çok farklı.
LEVEL 2
Farkındalık ve hafıza
seviyeler, son bilinen konum, ADSR
neden algı?
görme
farkındalık ve hafıza
duyma
diğer duyular ve hile
kod ve laboratuvarlar
kütüphaneler ve entegrasyon
Algı ≠ farkındalık
Splinter Cell ekibinin tanımı: farkındalık, algılanan şeyin giderek daha ayrıntılı anlaşılmasını temsil eden kesikli zihinsel durumlardır; zamanla, duyular yoluyla adım adım ulaşılır. Uzakta bir hareket görünce “orada bir şey var” dersiniz; ne olduğunu anlamak zaman alır.
seviye
NPC ne yapar?
oyuncu ne görür?
habersiz
rutin (devriye)
—
şüpheli
durur, bakar
“?” · “Bir ses mi duydum?”
arıyor
son bilinen konuma gider
“??” · el feneri, tarama
alarm
saldırır, haber verir
“!” · müzik değişir
“!” işaretinin tarihiMetal Gear serisinin muhafızlarının başındaki “!” sesi ve işareti, oyunculara YZ’nin durumunu anında okutan en tanınmış geri bildirimlerden biri. Y2’deki MGS2 alarm evreleri de aynı fikrin bütün üsse yayılmış hâli.
Son bilinen konumNPC oyuncuyu kaybedince gerçek konumunu değil, son gördüğü yeri bilir ve orayı araştırır. Bu, oyuncuya “kaçma, şaşırtma, arkadan dolanma” fırsatı verir. Splinter Cell: Conviction (2010) bunu oyuncuya görünür kıldı: düşmanların sizi sandığı yerde beyaz bir siluetiniz kalır.
Crysis 2: hedef izleri ve ADSR zarfları 🎹
Crytek’in Target Tracks Perception System’i (Crysis 2 için Kevin Kirst yazdı; Rich Welsh, Game AI Pro, 31. bölüm):
Uyaranlar (stims): görme, ses, silah sesi… veri olarak.
Algı yöneticisi uyaranları işler, hedef izleri her ajan için olası hedeflere göre uyaranları toplar ve en önemli hedefi seçer.
Her uyaran zamanla değişen bir algı değeri üretir: müzik sentezleyicilerinden alınmış ADSR zarfı — yükselme (attack), oturma (decay), sürdürme (sustain), sönme (release).
Çevresel görüş, birincil görüşe göre daha uzun yükselme süresiyle tanımlanır: kenardaki hedef daha geç tanınır.
Hafıza ve “ilgi kaynakları” (Mark of the Ninja)
Mark of the Ninja (Klei, 2012)Motor, sadece hedefleri umursayan dövüş oyunu Shank’ten geliyordu. Gizlilik için muhafızların hedef olmayan şeylere de dikkat etmesi gerekti: sesler, cesetler, kırılmış lambalar. Ekip veri güdümlü bir ilgi kaynağı sistemi kurdu: tasarımcı dünyaya “ilginç şeyler” koyar, ajanlar onları algılayıp önceliklendirir ve araştırır; araştırırken hedeflere karşı da tetikte kalır. (Brook Miles, Game AI Pro, 32. bölüm)
Hafıza ne tutar?
Hedef başına: son bilinen konum, yön, zaman, güven (azalır)
Olaylar: “burada ceset vardı”, “bu kapı açıktı”
Unutma: güven zamanla düşer; düşük güvenli anılar araştırma önceliğini kaybeder
Y3’te Isla’nın Halo 2 hafıza türleri (davranış başına, nesne başına) ile aynı aile.
Quiz 2 · farkındalık
Oyuncu bir an görünüp hemen bir duvarın arkasına saklandı. İyi tasarlanmış bir NPC ne yapmalı?
NPC sadece algıladığını bilir: son bilinen konum. Gerçek konuma gitmek hile olur ve oyuncu fark eder; hemen unutmak ise aptal görünür. Farkındalığın yavaşça sönmesi (Thief’in “kapasitörü”, ADSR’ın release’i) ikisinin arasındaki inandırıcı orta yoldur.
LEVEL 3
Duyma
ses duvardan geçmez
neden algı?
görme
farkındalık ve hafıza
duyma
diğer duyular ve hile
kod ve laboratuvarlar
kütüphaneler ve entegrasyon
Sesin mesafesi düz çizgi değildir
Basit model: her ses olayının bir gürültü yarıçapı var (koşmak > yürümek > çömelmek; silah > ayak sesi). Dinleyici yarıçap içindeyse duyar.
Düz (Öklid) mesafe kullanırsanız oyuncu duvarın arkasından duyulur: haksız.
Ses motoru ile hesaplamak da sorunluydu (Splinter Cell: Blacklist): bazı çağrılar çok pahalı, ses verisi derlenmemişse yanlış tespit hataları.
Blacklist’in çözümü: TEASSeviye, darboğazlarla (kapı, pencere) bağlanmış alanlara bölünmüş bir bağlantı grafı. Ses mesafesi = kaynaktan sonraki alana giden en yakın darboğaza + darboğazdan darboğaza + son darboğazdan dinleyiciye. “Kabaca bir yaklaşım, ama pratikte yeterince doğruydu; geçtik ve bir daha geri bakmadık.”
Gösterilebilir olmalıThe Last of Us’ta Clicker’lar kördür ve sesle avlanır. Duymaya başlayınca “huzursuz” bir duruma geçerler: oyuncuya, bulunmadan önce tepki verme şansı. Ekip, iletişimi kötü olan özellikleri kesti: Clicker’ların “havlaması” aslında çok daha iddialı bir tasarımın kalıntısı — havladıkça bir anlığına “görüşlerini açarak” yarasalar gibi çevrenin anlık bir modelini çıkaracaklardı. Ama kör bir karakter tarafından görülen oyuncular kafası karıştı; terk edildi. (Game AI Pro 2, 33. bölüm)
Canlı: kapılar ve pencereler üzerinden duymak 👂
A odasının ortasına tıklayın: muhafız (B odası) duyuyor mu? Kırmızı kesikli çizgi sesin izlediği yol: kapı ya da pencere.
“Düz çizgi”ye geçin: aynı yere tıklayınca muhafız duvarın öbür tarafından duyuyor. Hangisi adil?
Pencerenin yakınına tıklayın: pencere sesi yarıya indirdiği için kapıdan dolanan yol yine de “daha kısa” sayılabilir.
Fareyi hızla gezdirin: koşma sesi (küçük halkalar). Yavaş gezdirin: sessiz. Gizlilik oyunlarının temel kuralı.
Mor noktalar: muhafızın ses hafızası; zamanla soluyor (güven düşüyor).
🔎 DEMODA DENEYİN
A odasının ortasına tıklayın: muhafız (B odası) duyuyor mu? Kırmızı kesikli çizgi sesin izlediği yol: kapı ya da pencere.
“Düz çizgi”ye geçin: aynı yere tıklayınca muhafız duvarın öbür tarafından duyuyor. Hangisi adil?
Pencerenin yakınına tıklayın: pencere sesi yarıya indirdiği için kapıdan dolanan yol yine de “daha kısa” sayılabilir.
Fareyi hızla gezdirin: koşma sesi (küçük halkalar). Yavaş gezdirin: sessiz. Gizlilik oyunlarının temel kuralı.
Mor noktalar: muhafızın ses hafızası; zamanla soluyor (güven düşüyor).
LEVEL 4
Diğer duyular ve hile
sosyal bilgi, ortam, adil hile
neden algı?
görme
farkındalık ve hafıza
duyma
diğer duyular ve hile
kod ve laboratuvarlar
kütüphaneler ve entegrasyon
Görme ve duymanın ötesi
Sosyal / bağlamsal farkındalıkNPC’ler birbirine haber verir: “Orada biri var!” Thief’te bilgi muhafızlar arasında konuşmayla yayılır, ama seviye boyunca zincirleme yayılmayı sınırlayan kontroller vardır (yoksa tek bir hata bütün üssü alarma geçirir).
Ortam değişiklikleri (Blacklist)Açık bırakılmış kapı, söndürülmüş ışık: NPC fark eder. Ama tek başına fark etmek yetmez; oyuncuya göstermek gerekir: durup kapıya bakmak, “Bu kapı açık mıydı?” demek, temkinli bir tarama yürüyüşü. Sözler ayrıntı düzeyine göre katmanlıydı (çok özel → genel “Bunu ben mi açık bıraktım?”).
Koku, dokunma, hasarKoku izi bırakan oyuncu (Half-Life’ın koku örneği Thief yazısında anılır), çarpışma ile “dokunma”, hasarın geldiği yön. Unreal’ın algı sistemi görme, duyma, hasar, dokunma, takım ve tahmin “duyularını” hazır sunar.
Ölçülebilir kuralHer duyu için oyuncunun kendi başına ölçebileceği bir kural olsun: ışık taşı, ayak sesi seviyesi göstergesi, koku bulutu efekti… Ölçülemeyen duyu “hile” gibi hissedilir.
Ne zaman hile yapmak doğru?
The Last of Us’ın “hilesi”Çatışma döngüsü: oyuncu kendini gösterir → NPC’ler etrafını sarar ve yaklaşır → 10 sn veya daha uzun süre göremezlerse biri gidip bakar → oyuncu orada değilse aramaya geçilir. Odak testlerinde bu döngü ortalama neredeyse 2 dakika sürdü; oyuncu çoktan gitmiş, NPC’ler tepkisiz görünüyordu. Çözüm: “hile yapmak” — oyuncu NPC’lerin sandığı yerden 5 m’den fazla uzaklaştıysa “sıvıştı” sayıldı ve bir NPC hemen o noktaya gönderildi. Döngü ~30 saniyeye indi. Bu sırada NPC’ler oyuncunun yerini çoğu zaman bilmiyordu; sadece temponun hızlanmasına “yardım” edildi.
Kabul edilebilir hile
Görünmez: oyuncu fark etmez (Alien: Isolation’ın yönetmeni uzaylıyı sadece “yöne iter”, konumu söylemez — Y1).
Oyuncu lehine: TLOU’nun gizlilikte göğüs noktası, Thief’in ayak altı ışığı.
Tempo için: oyunun akmasını sağlar, kazanmayı değil.
Kabul edilemezDuvarın arkasından isabetli ateş, oyuncu saklandığı anda tam yerine gelen düşman, görmediği bir el bombasından kaçış. Oyuncu “bunu bilemezdi” dediği anda güven kaybolur.
Quiz 3 · diğer
Hangisi oyunculara “adil” gelen bir algı hilesidir?
Bu “hile” oyuncu lehinedir ve oyuncunun gözlemleriyle tutarlıdır: gizlilikte biraz daha bağışlayıcı, çatışmada daha net. Diğerleri oyuncunun ölçemeyeceği bilgiyi YZ’ye verir ve haksız hissettirir.
LEVEL 5
Kod ve laboratuvarlar
canSee, sayaç, ses olayları
neden algı?
görme
farkındalık ve hafıza
duyma
diğer duyular ve hile
kod ve laboratuvarlar
kütüphaneler ve entegrasyon
🎒 Ön bilgi: nokta çarpım ile açı testi (Y0)
Bakış yönü f (birim vektör), hedefe vektör t. f · t̂ = cos(θ). Görüş yarı açısı α ise: f · t̂ ≥ cos(α) → açının içinde.
acos çağırmaya gerek yok (pahalı ve hassas değil); kosinüsü bir kez hesaplayıp saklayın.
t’yi normalize etmeden önce uzunluğu 0 mı diye bakın.
Işın atmaUnity: Physics.Raycast(göz, yön, out hit, mesafe, katmanMaskesi). Katman maskesiyle sadece görüşü engelleyen katmanları (duvarlar) test edin; cam, çimen, diğer NPC’ler hariç. Unreal: LineTraceSingleByChannel (ECC_Visibility).
canSee: üç kontrol
Farkındalık sayacı ve son bilinen konum
Algı katmanı kara tahtaya yazar, karar katmanı (FSM/BT/utility) okur: Y3’teki ayrım. Böylece algıyı bir kez yazıp her NPC türünde kullanırsınız.
Ses olayları: yayınla, duyan tepki versin
Navmesh yol uzunluğu, Blacklist’in “darboğaz grafı”nın motorlardaki pratik karşılığıdır (daha pahalı; sadece yarıçap içindeki dinleyiciler için hesaplayın).
🎒 Kod sözlüğü
LayerMask
katman maskesi
Işının hangi katmanlara çarpabileceği
Mathf.Deg2Rad
derece → radyan
Trigonometri fonksiyonları radyan ister
Vector3? · HasValue
boş olabilen tür
“Henüz bir değer yok” durumunu taşıyabilen değişken
event Action<...> · += / -=
olay · abone ol / ayrıl
Bir şey olduğunda haber verilecek fonksiyonların listesi
En basit işitme modeli: her sesin bir yarıçapı var. Bu sürüm sesi duvardan geçirir (haksız!); birazdan kapı ve pencereler üzerinden ölçen sürümünü göreceksiniz. p5.js’te: dist(x1, y1, x2, y2).
🌱 Isınma kodu: farkındalık seviyesi
Algı sürekli bir sayıdır (0–1); davranış ise kademelidir: dur ve bak (?), gidip araştır (??), saldır (!). Bu dört satır, sayıyı oyuncunun okuyabileceği dört duruma çevirir — Metal Gear’ın “!” işaretinin arkasındaki fikir.
🧪 Canlı laboratuvar: canSee
Başlangıçta muhafız arkasındakini ve duvarın arkasındakini de “görüyor”. İki kontrolü ekleyin. Math.cos(Math.PI / 4) ≈ 0,707. Uzaklık 0 ise açı kontrolünü atlayın.
🐍 Laboratuvar: farkındalık adımı
Görülüyorsa (kesinlik > 0) yükselt, görülmüyorsa düşür; 0–1 aralığında tutun. Bu iki satırlık fonksiyon, Thief’ten The Last of Us’a kadar gizlilik oyunlarının kalbi.
🐍 Laboratuvar: ses mesafesi (darboğazlar)
Başlangıç kodu sesi duvardan geçiriyor. “Aynı oda” = ikisi de duvarın aynı tarafında (x < wall_x). Blacklist’in TEAS formülünün tek duvarlı hâli.
RayPerceptionSensor: öğrenen ajanlar (Y13) için çevreyi ışınlarla “gören” hazır sensör.
Package Manager → ML Agents
🧩 Algı sistemi kurarken
Algı katmanını ayırın: duyular kara tahtaya yazar (“gördüğüm hedefler”, “duyduğum sesler”, “son bilinen konumlar”); kararlar oradan okur.
Kesinlik + sayaç: evet/hayır yerine 0–1 ve zamanla yükselen farkındalık.
Görselleştirin: geliştirirken konileri ve bölgeleri çizin; oyunda oyuncuya göstergeler verin.
Sesleri olay yapın: her ses kaynağı bir “gürültü olayı” yayınlasın; dinleyiciler abone olsun.
Oyuncu testi: “Bu yakalanma adil miydi?” diye sorun; ölçemediğiniz şeyi ayarlayamazsınız.
⚙️ PerformansAlgı her karede gerekmez: 5–10 Hz yeterli (NPC’leri farklı karelere yayın). Uzaktaki NPC’ler daha seyrek düşünsün (Y18: LOD). Işınları önbelleğe alın: aynı hedef için bu karede zaten atıldıysa tekrar atmayın.
Sık hatalarGözü ayağa koymak (ışın yerden atılıyor, her şey engelleniyor) · tetikleyici çarpıştırıcıları görüşü engelleyen katmanda bırakmak · sesin duvardan geçmesi · farkındalık hiç düşmüyor (NPC sonsuza kadar alarmda).
🤖 Bu konuyu bir YZ kod asistanıyla yazarken
Sık yapılan hatalar — kontrol edin
Göz konumu yerine karakter pivotundan (ayaklardan) ışın atmak
Katman maskesi olmadan ışın (kendi çarpıştırıcısına çarpar)
acos ile her karede açı hesaplamak (gereksiz ve hassasiyet sorunlu)
“Unity 6, C#. Gizlilik oyunu için algı sistemi: (1) Vision: üç görüş bölgesi (tatlı nokta 1.0, koni 0.5, çevre 0.25), occluder LayerMask ile göz hizasından tek ışın; oyuncu gölgedeyse ×0.3, çömeliyse ×0.6. (2) Awareness: riseTime 1.5 sn, decay 0.2/sn, seviyeler 0.3/0.7/1.0; LastKnownPos tut; kara tahtaya yaz. (3) Hearing: static Noise.Emit olayı, dinleyici önce sqrMagnitude ile eler, sonra NavMesh.CalculatePath yol uzunluğuyla kontrol eder. 10 Hz güncelle, NPC’leri karelere yay. Gizmos ile bölgeleri çiz; başının üstünde ?/! göstergesi.”
Görme modelini (bölgeler, kesinlik değerleri), ışık/duruş çarpanlarını ve farkındalık eşiklerini siz belirleyin
Algının kara tahtaya yazmasını, kararın oradan okumasını isteyin
Ses olayları için olay (event) tabanlı yapı ve yol uzunluğu kontrolü isteyin
Gizmos ile koni/bölge çizimi ve oyun içi gösterge isteyin
🔬 Araştırma ucu
Oyuncu YZ’yi nasıl algılıyor?Game AI Pro 3, 4. bölüm (“Player Perception of AI Opponents”) ve “You had me at AAAAHHH” (Game AI Pro Online 2021): oyuncu YZ’yi çoğunlukla tepkilerinden değerlendirir. Algı sisteminin yarısı, NPC’nin “fark ettiğini” göstermektir.
Öğrenen gözlerML-Agents’ın ışın sensörleri ya da kamera görüntüsüyle eğitilen ajanlar: elle yazılmış koni yerine algı öğrenilebilir mi? Peki o zaman “adil” olduğunu nasıl garanti edersiniz?
Akademik vaka“The NPC AI of The Last of Us: A case study” (arXiv 2207.00682): oyunun algı ve davranış sistemlerinin akademik incelemesi.
💬 Tartışma soruları
Yanınızdakiyle 2 dakika konuşun, sonra sınıfça tartışalım
Bir gizlilik oyununda yakalandığınızda “haksızlık!” dediğiniz bir an hatırlıyor musunuz? Sizi gören şey neydi ve neden haksız geldi: bilemeyeceğiniz bir şey mi, yoksa göremediğiniz bir gösterge mi?
Thief’in ışık taşı ve Splinter Cell’in dolan göstergesi oyuncuya “şu an ne kadar görünürsün” der. Bu göstergeleri kaldırsanız oyun daha gerçekçi mi olur, daha kötü mü?
The Last of Us’ta düşmanlar 10 saniye sonra oyuncunun yerini “hileyle” öğreniyor, çünkü yoksa çatışma 2 dakika sürüp sıkıyordu. Tempo için yapılan hile kabul edilebilir mi? Sınır nerede?
Gerçek bir insan sizi 1 saniyede tanır; oyundaki muhafız 2 saniye bakıp “bir şey mi gördüm?” der. Bu aptallık mı, yoksa oyunun size verdiği bir hediye mi?
🚀 Proje ve araştırma önerileri
[kolay]Işık taşı — p5.js’te gölgeli bir oda; oyuncunun aydınlığını gösteren bir gösterge (Thief) ve görüş bölgeli bir muhafız.
[kolay]Gürültü oyunu — Taş atıp muhafızı oyalama: atılan taşın düştüğü yer bir ses olayı; muhafız oraya gider (Mark of the Ninja tarzı).
[orta]Unity gizlilik seviyesi — 3 muhafız, gölge alanları, çömelme, kapıdan geçen ses; ?/! göstergeleri ve farkındalık çubukları.
[orta]Son bilinen konum — Splinter Cell: Conviction gibi: muhafızların sizi sandığı yerde bir siluet bırakın; arkadan dolanma oyununu test edin.
[zor]ADSR algı yöneticisi — Crysis 2 tarzı: uyaranlar, hedef izleri, uyaran türüne göre ADSR zarfları; birden çok hedef arasında seçim.
[araştırma]Adalet anketi — Aynı seviyeyi evet/hayır koni ve bölge modeliyle iki gruba oynatın; “yakalanmam adildi” puanlarını karşılaştırın.
Neler öğrendik? 🎒
Algı = YZ’nin bilgisini bilerek kısıtlamak; dört şart: adalet, tutarlılık, geri bildirim, inandırıcılık.
Görme: mesafe → açı → ışın; evet/hayır yerine kesinlik; bölgeler, tabut kutular, mesafeyle daralan açı; ışık ve duruş.
Farkındalık: sayaçlar, seviyeler, son bilinen konum, ADSR, hafıza ve ilgi kaynakları.
Duyma: gürültü yarıçapı; mesafe kapılar üzerinden (TEAS / navmesh yolu).
Sosyal bilgi, ortam değişiklikleri; adil ve adil olmayan hile (TLOU).
Hikâyeler: Thief, Splinter Cell: Blacklist, The Last of Us, Crysis 2, Mark of the Ninja.
Araçlar: Unreal AI Perception, Unity raycast, Godot RayCast, Yuka.
Sonraki: taktik YZ — siper, etki haritaları, konum seçimi.
🎮 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.
Thief: The Dark Project1998 · gizlilik
Gölgelerde saklanan hırsız Garrett; ışık ve ses üzerine kurulu ilk gizlilik oyunlarından.
Adı geçen oyunu tanımıyorsanız: oyuncuların kullandığı wiki sayfası ve oyunu kısaca gösteren bir video. ▶ video slaydın üstünde açılır (Esc ile kapanır); 🎯 işaretli bağlantılar doğrudan bu sunumdaki konuya gider.
Mark of the Ninja2012 · 2B gizlilik
Yandan görünümlü ninja gizlilik oyunu; görüş konileri ve ses halkaları ekranda çizilir.