Oyun Geliştirme: Unity'de Yapay Zekâ ile Karakter Davranışı Oluşturma
Unity ile Oyun Geliştirme Kulanarak Yapay Zekâ ile Karakter Davranışı Oluşturma
Oyunlarda bir karakterin gerçekçi tepkiler verebilmesi, o oyunun dünyasını yaşayan bir evren hâline getirir.
Bir düşmanın seni fark edip saldırması, bir dost karakterin yardıma koşması ya da bir yaratığın tehlike anında kaçması...
Tüm bu davranışlar, yapay zekânın (AI) oyun dünyasına kattığı derinlik ve dinamizmin bir sonucudur.
-
NavMesh (Navigation Mesh) ile Akıllı Hareket Sistemi
Unity’nin en temel yapay zekâ bileşenlerinden biri NavMesh sistemidir.
Bu sistem, karakterlerin oyun alanında engelleri tanımasını, uygun yolları bulmasını ve hedefe ulaşmak için kendi rotasını belirlemesini sağlar.-
NavMesh Baking: Oyun sahnesi üzerinde “yürünebilir alanlar” tanımlanır.
-
NavMesh Agent: Karakter bu haritada otomatik olarak hareket eder; duvarlardan kaçınır, yolları optimize eder.
-
Dynamic Obstacles: Hareketli objeler (örneğin kapılar veya diğer NPC’ler) engel olarak tanımlanabilir, böylece karakter rota değiştirir.
Bu sistem sayesinde karakter, tıpkı bir oyuncu gibi düşünür ve çevresine tepki verir.
-
-
Hedef Algılama (Target Detection) ve Görüş Sistemi
Akıllı karakterlerin temelinde, oyuncuyu “fark etme” mekanizması vardır.-
Raycast veya SphereCast yöntemleriyle karakter, çevresinde bir “görüş alanı” oluşturur.
-
Oyuncu bu alanın içine girdiğinde, karakterin davranışı değişir.
-
Physics.OverlapSphere gibi fonksiyonlarla ses, ışık veya hareket gibi farklı uyarıcılara tepki vermek mümkündür.
Böylece düşmanlar sadece seni “görmekle” kalmaz, seni “duyar” veya “sezer”.
-
-
State Machine (Durum Makinesi) ile Davranış Yönetimi
Bir karakterin davranışlarını kontrol etmenin en verimli yollarından biri State Machine (Durum Makinesi) sistemidir.
Bu yapı sayesinde karakter, farklı durumlar arasında geçiş yapabilir:-
Idle (Bekleme): Oyuncu uzaktaysa karakter sabit durur.
-
Chase (Takip): Oyuncu algılama alanına girerse karakter koşarak yaklaşır.
-
Attack (Saldırı): Oyuncuya belli bir mesafede ulaştığında saldırıya geçer.
-
Flee (Kaçış): Sağlığı azaldığında güvenli bölgeye yönelir.
Bu durum geçişleri Animator Controller, C# Script veya Behavior Tree sistemleriyle yönetilebilir.
-
-
Animator Controller ile Gerçekçi Tepkiler
Yapay zekâ davranışlarını görselleştirmenin en etkili yolu, animasyon sistemini entegre etmektir.-
Her durum için (örneğin saldırı, koşu, bekleme) farklı animasyonlar tanımlanır.
-
Blend Tree yapısı ile karakter geçişleri yumuşak ve doğal hâle gelir.
-
AI tarafından tetiklenen olaylar (örneğin hedefe yaklaşma) animasyon değişimlerini otomatik başlatabilir.
Böylece karakter yalnızca kodla değil, “bedeniyle” de düşünür gibi görünür.
-
-
Davranış Ağaçları (Behavior Trees) ve Gelişmiş Karar Verme
Daha karmaşık yapay zekâ sistemlerinde Behavior Tree kullanılır.
Bu yapı, karakterin koşullara göre mantıksal kararlar almasını sağlar.-
“Oyuncuyu görüyorsan → yaklaş.”
-
“Sağlık düşükse → geri çekil.”
-
“Mühimmat azsa → cephane ara.”
Behavior Tree yapısı sayesinde AI yalnızca tepkisel değil, aynı zamanda stratejik bir zekâya dönüşür.
-
-
Makine Öğrenimi (Machine Learning Agents) ile Gelişen Davranışlar
Unity’nin ML-Agents aracı, karakterlerin deneme-yanılma yoluyla öğrenmesini sağlar.-
Ajanlar, belirli bir hedefe ulaşmak için binlerce simülasyon boyunca kendi stratejilerini geliştirir.
-
Bu sistem, özellikle dinamik düşman zekâsı, NPC alışkanlıkları veya kendini uyarlayan oyun senaryoları için kullanılır.
Sonuçta karakter, sadece kodlanmış tepkiler vermekle kalmaz; çevresinden öğrenir ve gelecekteki davranışlarını buna göre şekillendirir.
-
-
Sonuç: Düşünen, Tepki Veren, Öğrenen Karakterler
Unity’de yapay zekâ ile karakter davranışı oluşturmak, yalnızca teknik bir görev değil; bir dünyayı canlandırma sanatıdır.
Her NavMesh rotası, her State Machine geçişi, her animasyon değişimi bu dünyanın nefes almasını sağlar.
Akıllı bir karakter, oyuncuya yalnızca meydan okumaz — aynı zamanda oyunun hikâyesini derinleştirir, duygusunu güçlendirir.
Gerçek bir oyun dünyası, yaşayan karakterlerle anlam kazanır.
Kodla, düşündür ve geliştir — çünkü bir karakterin zekâsı, aslında oyunun ruhudur.