Projeni Saklama. Yayınla.
Moonline Network ile hemen paylaş.
Katıl →

Unreal Engine 5’te Davranış Ağaçları (Behavior Trees) Kullanarak Gerçekçi Düşman Yapay Zekası Oluşturma Rehberi

Nisan 18, 2026
Geliştirici Günlükleri
18 Dakika Okuma Süresi
444 Görüntüleme
Projeni Saklama. Yayınla.
Moonline Network ile oyununu anında paylaş,
limitsiz içerik yükle, topluluğa ulaş.
Platforma Katıl →
> SİSTEM TARAMASI: İÇİNDEKİLER

Giriş: Oyun Geliştirmede Yapay Zeka ve Davranış Ağaçları

Oyun geliştirme, oyuncuyu içine çeken dünyalar yaratma sanatıdır. Bu dünyanın inandırıcılığını sağlayan en temel unsurlardan biri ise şüphesiz yapay zekadır (AI). Akıllı ve öngörülemez düşmanlar, dinamik NPC’ler ve yaşayan bir dünya hissi, başarılı bir yapay zeka implementasyonunun sonucudur. Unreal Engine 5, bu karmaşık sistemi yönetmek için bize güçlü bir araç sunar: Davranış Ağaçları (Behavior Trees).

Oyunlarda Gerçekçi Düşmanlar Neden Önemlidir?

Basitçe etrafta dolaşan veya oyuncuyu gördüğünde körü körüne saldıran düşmanlar, oyun deneyimini sığlaştırır. Gerçekçi düşmanlar ise oyuncuya meydan okur, strateji kurmaya zorlar ve zafer hissini paha biçilmez kılar. Bir düşmanın siper alması, takım arkadaşlarıyla iletişim kurması veya canı azaldığında geri çekilmesi, oyun dünyasının yaşadığını ve tepki verdiğini gösterir. Bu durum, oyuncu psikolojisi ve akış durumu (flow state) üzerinde doğrudan etkilidir, oyuncuyu oyuna daha fazla bağlar.

Unreal Engine 5’in Sunduğu Yapay Zeka (AI) Araçlarına Genel Bakış

Unreal Engine 5, yapay zeka geliştirmek için entegre bir ekosistem sunar. Bu ekosistemin temel taşları şunlardır:

Davranış Ağacı (Behavior Tree) Nedir ve Geleneksel Yöntemlerden Farkı Nedir?

Davranış Ağacı, bir yapay zekanın karar verme sürecini hiyerarşik bir düğüm (node) yapısı kullanarak modelleyen bir sistemdir. Geleneksel Durum Makineleri (State Machines) gibi yöntemlerde, her durumdan diğerine geçişler manuel olarak tanımlanır ve proje büyüdükçe ‘spagetti kodu’ dediğimiz karmaşık bir yapıya dönüşebilir. Davranış Ağaçları ise modüler ve okunabilir bir yapı sunar. Bir dal ‘devriye atma’ görevini üstlenirken, başka bir dal ‘savaşma’ mantığını içerir. Ağaç, belirli önceliklere göre bu dallar arasında dinamik olarak geçiş yapar. Bu modülerlik, özellikle büyük ölçekli oyunlarda performans ve ölçeklenebilirlik açısından hayati önem taşır.

Projeye Başlarken: Temel Kurulum ve Kavramlar

Teoriyi bir kenara bırakıp pratiğe geçme zamanı. İlk olarak, yapay zekamızın temelini oluşturacak bileşenleri hazırlayalım.

Gerekli Varlıklar (Assets): AI Karakteri ve Animasyonların Hazırlanması

Projenize bir düşman karakteri ekleyerek başlayın. Bu, Unreal Engine Marketplace’ten alınan bir karakter veya kendi modeliniz olabilir. Karakterin yürüme, bekleme, koşma ve saldırı gibi temel animasyonlara sahip olduğundan emin olun. Bu animasyonları bir Animation Blueprint içinde yönetmek, işinizi kolaylaştıracaktır.

AI Controller (Yapay Zeka Kontrolcüsü) Oluşturma ve Atama

Content Browser’da sağ tıklayarak yeni bir Blueprint Class oluşturun ve ana sınıf olarak ‘AI Controller’ı seçin. Bu, düşman karakterimizin beyni olacak. Ardından, düşman karakterinizin Blueprint’ini açın ve Details panelinde ‘Pawn’ ayarları altında ‘AI Controller Class’ olarak yeni oluşturduğunuz AI Controller’ı atayın.

Yapay zekanın haritada nerelerde yürüyebileceğini bilmesi gerekir. Bunun için ‘Place Actors’ panelinden bir ‘Nav Mesh Bounds Volume’ objesini sahnenize sürükleyin. Bu volümü, yapay zekanın hareket etmesini istediğiniz tüm alanı kaplayacak şekilde ölçeklendirin. Klavyeden ‘P’ tuşuna basarak yeşil renkte oluşturulan yürüme alanını görebilirsiniz. Bu alan, yapay zekanın yol bulma algoritmasının temelidir ve NavMesh ve Behavior Tree birlikteliğinin ilk adımıdır.

Blackboard (Kara Tahta) Nedir? AI’nin Hafızasını Yönetmek

Blackboard, Davranış Ağacının karar vermek için ihtiyaç duyduğu tüm verileri saklayan bir hafıza bileşenidir. Örneğin, ‘HedefOyuncu’ (bir Actor referansı), ‘HedefKonum’ (bir Vector) veya ‘OyuncuGorulduMu’ (bir Boolean) gibi anahtarlar (keys) tanımlayabiliriz. Davranış Ağacı, bu verilere bakarak hangi eylemi gerçekleştireceğine karar verir. Blackboard, AI’nin beyninin hafıza kısmıdır.

Davranış Ağacının Temelleri: Düğümleri (Nodes) Anlamak

Davranış Ağacı, farklı görevleri olan düğümlerin birleşiminden oluşur. Bu düğümleri anlamak, sistemi etkin kullanmanın anahtarıdır.

Davranış Ağacı ve Blackboard Varlıklarını Oluşturma

Content Browser’da sağ tıklayın, ‘Artificial Intelligence’ menüsü altından önce bir ‘Blackboard’ ve ardından bir ‘Behavior Tree’ varlığı oluşturun. Davranış Ağacını açtığınızda, sizden bir Blackboard atamanızı isteyecektir. Yeni oluşturduğunuz Blackboard’u seçin. Artık bu iki varlık birbirine bağlıdır.

Temel Akış Kontrol Düğümleri: Selector, Sequence ve Simple Parallel

Görevler (Tasks): Yapay Zekaya Ne Yapacağını Söylemek

Görevler (Tasks), ağacın yapraklarıdır ve asıl işi yapan düğümlerdir. ‘Move To’ (Bir yere git), ‘Wait’ (Bekle), ‘Play Animation’ (Animasyon Oynat) gibi yerleşik görevler bulunur. Ayrıca, kendi özel görevlerinizi Blueprint veya C++ ile oluşturabilirsiniz. Örneğin, ‘FindPatrolPoint’ veya ‘PerformAttack’ gibi.

Dekoratörler (Decorators): Davranışların Çalışma Koşullarını Belirlemek

Dekoratörler, bir dala veya göreve eklenen koşul ifadeleridir. Altındaki dalın çalışıp çalışamayacağını kontrol ederler. Örneğin, ‘Blackboard’ dekoratörü, Blackboard’daki bir değerin belirli bir koşulu (örn: ‘HedefOyuncu’ set edilmiş mi?) sağlayıp sağlamadığını kontrol eder. Sadece koşul sağlanırsa altındaki dal çalışır.

Servisler (Services): Arka Planda Sürekli Kontroller Yapmak

Servisler, bir dal aktif olduğu sürece belirli aralıklarla çalışan mini programcıklardır. Genellikle çevre kontrolü veya Blackboard’u güncellemek için kullanılırlar. Örneğin, bir servis her saniye oyuncunun görüş alanında olup olmadığını kontrol edebilir ve sonucu Blackboard’daki ‘OyuncuGorulduMu’ anahtarına yazabilir.

Adım Adım İlk Düşman Yapay Zekası: Devriye (Patrol) Davranışı

Şimdi temel bir devriye davranışı oluşturalım. AI, belirlediğimiz noktalar arasında gezinecek.

Blackboard Üzerinde Devriye Noktalarını Tanımlama

Blackboard’unuzu açın ve iki yeni anahtar (key) oluşturun: ‘TargetLocation’ (Vector) ve ‘PatrolPointIndex’ (Integer). ‘TargetLocation’, AI’nin gideceği mevcut devriye noktasını, ‘PatrolPointIndex’ ise devriye noktaları dizisindeki sırasını tutacak.

Yeni Bir Görev (Task) Oluşturma: ‘FindPatrolPoint’

Yeni bir Blueprint Task oluşturun (‘BTTask_BlueprintBase’). Bu görevin amacı, bir sonraki devriye noktasını bulup Blackboard’daki ‘TargetLocation’ anahtarını güncellemektir. Karakterinizin sahip olduğu devriye noktaları dizisinden ‘PatrolPointIndex’i kullanarak bir sonraki noktayı alın, bu konumu ‘TargetLocation’a yazın ve index’i bir artırın.

‘MoveTo’ Görevi ile Hedef Noktaya Hareket Etme

Davranış Ağacınızda bir ‘Sequence’ düğümü oluşturun. Altına ilk olarak yeni oluşturduğunuz ‘FindPatrolPoint’ görevini ekleyin. İkinci olarak ise Unreal’ın yerleşik ‘Move To’ görevini ekleyin. ‘Move To’ görevinin detaylarında, ‘Blackboard Key’ olarak ‘TargetLocation’ı seçin. Bu sayede AI, ‘FindPatrolPoint’ görevinin belirlediği konuma hareket edecektir.

‘Wait’ Görevi ile Devriye Noktalarında Bekleme Mantığı

‘Sequence’ düğümünün sonuna bir ‘Wait’ görevi ekleyin. Bu, AI’nin devriye noktasına ulaştıktan sonra bir süre beklemesini sağlar. Bekleme süresini (örn: 3 saniye) ve küçük bir rastgele sapma (random deviation) ekleyerek davranışı daha organik hale getirebilirsiniz.

Yapay Zekayı Geliştirme: Oyuncuyu Algılama ve Takip Etme

Sadece devriye atan bir AI sıkıcıdır. Şimdi ona oyuncuyu algılama ve peşine düşme yeteneği kazandıralım.

AI Perception Bileşeni ile Görme ve Duyma Hissiyatı Ekleme

AI Controller Blueprint’inize ‘AIPerception’ bileşenini ekleyin. Detaylar panelinden ‘Senses Config’ altında ‘AI Sight config’ ekleyin. Görme açısını, mesafesini ve hangi tür aktörleri (örn: oyuncu) ‘dost’ veya ‘düşman’ olarak algılayacağını ayarlayın. Bu bileşen, algıladığı hedefler hakkında otomatik olarak olaylar (events) tetikler.

Oyuncu Algılandığında Blackboard’u Güncelleyen Bir Servis Yazma

Yeni bir ‘BTService_BlueprintBase’ oluşturun. Bu servisi, Davranış Ağacının en kök (root) düğümüne yakın bir yere koyun ki sürekli çalışsın. Servisin ‘Event Receive Tick AI’ olayında, AI Perception sisteminden algılanan aktörleri sorgulayın. Eğer bir oyuncu algılandıysa, Blackboard’daki ‘TargetPlayer’ (yeni bir Actor anahtarı) anahtarını bu oyuncuyla güncelleyin. Oyuncu kaybolduysa bu anahtarı temizleyin.

Dekoratör Kullanımı: Oyuncu Görüş Alanındaysa Takip Et

Davranış Ağacınızın köküne bir ‘Selector’ düğümü koyun. Bu ‘Selector’ın sol dalına oyuncuyu takip etme mantığını, sağ dalına ise mevcut devriye mantığını koyacağız. Takip dalının başına bir ‘Blackboard’ dekoratörü ekleyin. Bu dekoratörü, ‘TargetPlayer’ anahtarının ‘Is Set’ (ayarlanmış mı?) durumunu kontrol edecek şekilde ayarlayın. Böylece, sadece Blackboard’da bir hedef oyuncu varsa bu dal çalışacaktır.

Moonline Network
Oyunlarını ve projelerini ücretsiz & sınırsız yayınla.
Hemen Yayınla →

Takip (Chase) Mantığı için Davranış Ağacı Dalını Oluşturma

Dekoratörün altına yeni bir ‘Sequence’ ekleyin. Bu ‘Sequence’ altında, ‘Move To’ görevini kullanarak ‘TargetPlayer’ anahtarındaki hedefe doğru hareket etmesini sağlayın. Bu kadar! Artık AI, oyuncuyu gördüğünde devriyeyi bırakıp peşinize düşecek, oyuncuyu kaybettiğinde ise ‘TargetPlayer’ anahtarı temizleneceği için ‘Selector’ sayesinde otomatik olarak devriye dalına geri dönecektir.

Savaş Mekanikleri: Saldırı ve Geri Çekilme Davranışları

Takip eden bir düşman iyidir, ama saldıran bir düşman daha iyidir. Şimdi savaş mantığını ekleyelim.

Saldırı Menzilini Kontrol Eden Bir Dekoratör Oluşturma

Takip (Chase) ‘Sequence’ düğümünün içine yeni bir ‘Selector’ ekleyin. Bu ‘Selector’ın soluna saldırı dalını, sağına ise takip etmeye devam etme (‘Move To’) görevini koyun. Saldırı dalının başına ‘Blueprint Base’ bir dekoratör ekleyin. Bu dekoratör, AI ile oyuncu arasındaki mesafeyi kontrol etsin. Eğer mesafe saldırı menzili içindeyse ‘true’ dönsün. Böylece AI, sadece yeterince yakınsa saldırı dalını çalıştırır.

Özel Bir Saldırı Görevi (Attack Task) ve Animasyon Entegrasyonu

Yeni bir ‘BTTask_BlueprintBase’ oluşturarak ‘Attack’ görevinizi yazın. Bu görev tetiklendiğinde, karakterinizin Animation Blueprint’i üzerinden saldırı animasyonunu oynatın. Görev, animasyon bitene kadar ‘In Progress’ durumunda kalmalı ve bittiğinde ‘Succeeded’ olarak kendini sonlandırmalıdır. Bu, AI’nin animasyon bitmeden başka bir eyleme geçmesini engeller.

Can Seviyesine Göre Geri Çekilme (Flee) Davranışı Ekleme

En baştaki ana ‘Selector’ düğümüne en yüksek öncelikli (en solda) yeni bir dal ekleyin. Bu dal, AI’nin can seviyesini kontrol eden bir dekoratörle başlasın (örn: Can < %30). Eğer koşul sağlanırsa, bu dal çalışır. Dalın içine, oyuncudan zıt yönde güvenli bir noktaya kaçmasını sağlayan bir mantık ekleyebilirsiniz.

Environment Query System (EQS) ile Akıllı Siper Alma Noktaları Bulma

Geri çekilme veya siper alma gibi daha karmaşık davranışlar için EQS devreye girer. EQS, çevrede bir dizi nokta oluşturur ve bu noktaları belirlediğiniz testlere (örn: oyuncudan en uzak, oyuncunun göremediği, siper arkasında olan) göre puanlar. En yüksek puanı alan nokta, AI’nin hareket edeceği en iyi stratejik konum olarak seçilir. Bu, yapay zekanıza inanılmaz bir taktiksel derinlik katabilir.

İleri Seviye İpuçları ve Optimizasyon

Davranış Ağacınız karmaşıklaştıkça, performans ve hata ayıklama önem kazanır.

Davranış Ağacında Hata Ayıklama (Debugging) Teknikleri

Unreal Engine’in görsel hata ayıklama araçları hayat kurtarır. Oyun çalışırken Davranış Ağacı editörünü açarsanız, hangi dalların aktif olduğunu, hangi dekoratörlerin başarısız olduğunu ve görevlerin mevcut durumunu anlık olarak yeşil, sarı ve kırmızı renklerle görebilirsiniz. Ayrıca, ‘Gameplay Debugger’ (Apostrof tuşu) ile AI’nin beynindeki verileri oyun ekranında görebilirsiniz.

Farklı Düşman Tipleri için Davranış Ağacı Kalıtımını (Inheritance) Kullanma

Tüm düşmanlarınız için sıfırdan ağaç yapmak yerine, bir ‘Base_Enemy_BT’ oluşturun. Ardından, bu ağaçtan kalıtım (inheritance) yoluyla yeni ağaçlar (örn: ‘Archer_BT’, ‘Swordsman_BT’) türetin. Bu yeni ağaçlar, temel ağacın tüm mantığını miras alır ve siz sadece farklılaşan kısımları (örn: saldırı görevi) değiştirirsiniz. Bu, projeyi yönetmeyi çok daha kolaylaştırır.

Performans için Yapay Zeka Optimizasyon Stratejileri

Onlarca yapay zekanın olduğu bir sahnede performans kritik hale gelir. Servislerin ‘tick’ aralıklarını artırın (her frame kontrol yapmak yerine 0.5 saniyede bir yapmak gibi). AI Perception’ın sorgulama sıklığını düşürün. Karmaşık EQS sorgularını daha az sıklıkla çalıştırın. Unreal’ın ‘AI Profiler’ aracını kullanarak darboğazları tespit edin ve optimize edin.

Sonuç: Unreal Engine 5’te Davranış Ağaçları ile Sınırları Zorlamak

Bu rehberde, Unreal Engine 5’in Davranış Ağaçları sistemini kullanarak basit bir devriyeden, algılama, takip, saldırı ve geri çekilme gibi karmaşık davranışlara sahip bir yapay zeka oluşturmanın temellerini attık.

Öğrenilenlerin Özeti ve Oluşturulan Yapay Zekanın Değerlendirmesi

Davranış Ağaçlarının modüler, okunabilir ve genişletilebilir yapısı sayesinde, karmaşık AI mantıklarını bile yönetilebilir parçalara ayırabildiğimizi gördük. Selector ve Sequence gibi temel akış kontrolcüleri ile davranışların önceliğini belirledik. Task, Decorator ve Service’ler ile AI’mize hem eylem yeteneği hem de durumsal farkındalık kazandırdık. Artık elimizde, oyun dünyasına tepki veren temel bir düşman prototipi var.

Geliştirme için Sonraki Adımlar ve Faydalı Kaynaklar

Buradan sonraki adımlar hayal gücünüzle sınırlı. Takım tabanlı yapay zeka davranışları, EQS ile dinamik siper alma, farklı karakter sınıfları için özel yetenekler gibi konuları araştırabilirsiniz. Kendi oyununuz için özelleştirilmiş görevler ve servisler yazarak yapay zekanızın benzersiz olmasını sağlayabilirsiniz. Bu yolda ilerlerken, Unreal Engine dokümantasyonu ve bağımsız geliştirici toplulukları en büyük yardımcınız olacaktır. Özellikle Moonline Network gibi platformlar, diğer geliştiricilerle bilgi alışverişi yapmak ve projelerinizi sergilemek için harika bir ortam sunar.

Sıkça Sorulan Sorular

Davranış Ağacı (Behavior Tree) ile Durum Makinesi (State Machine) arasındaki temel fark nedir?

Temel fark karar verme yapısındadır. Durum Makineleri, ‘durumlar’ (State) ve bu durumlar arasındaki ‘geçişler’ (Transition) üzerine kuruludur. Bir durumdan diğerine geçiş koşulları katı bir şekilde tanımlanır. Bu, az sayıda durumu olan basit AI’lar için iyidir ancak durum sayısı arttıkça yönetilemez hale gelebilir. Davranış Ağaçları ise hiyerarşik bir görev listesi gibidir. Her ‘tick’te ağacın kökünden başlayarak önceliklere göre hangi eylemin yapılacağını belirler. Bu, çok daha dinamik, modüler ve ölçeklenebilir bir yapı sunar.

Kendi görevlerimi (Tasks) C++ ile yazabilir miyim?

Kesinlikle evet. Blueprint’ler prototipleme ve daha basit görevler için harikayken, C++ en yüksek performansı ve motorun derinliklerine tam erişimi sunar. ‘UBTTask_BlueprintBase’ sınıfından kalıtım alan Blueprint görevleri gibi, ‘UBTTaskNode’ sınıfından kalıtım alan C++ görevleri oluşturabilirsiniz. Özellikle karmaşık hesaplamalar veya sık çalışması gereken görevler için C++ kullanmak performansı önemli ölçüde artırabilir.

Environment Query System (EQS) kullanmak zorunlu mudur?

Hayır, zorunlu değildir. Basit devriye, takip ve saldırı gibi davranışlar için EQS’e ihtiyacınız olmayabilir. EQS, yapay zekanın ‘çevresel farkındalığını’ artırmak ve daha akıllı, taktiksel kararlar almasını sağlamak için kullanılır. Örneğin, ‘en iyi siper noktası neresi?’, ‘oyuncuya saldırmak için en avantajlı pozisyon hangisi?’ veya ‘kaçmak için en güvenli rota neresi?’ gibi soruların cevabını bulmak için idealdir. Projenizin karmaşıklığına göre kullanıp kullanmamaya karar verebilirsiniz.

Moonline Network’e Katıl

Oyun geliştirme yolculuğu zorlu olabilir, ancak bu yolda yalnız olmak zorunda değilsiniz. Projelerinizde karşılaştığınız yapay zeka sorunlarını tartışmak, yeni teknolojiler hakkında fikir alışverişinde bulunmak veya sadece sizin gibi tutkulu geliştiricilerle tanışmak için bir topluluğa mı ihtiyacınız var? Moonline Network, bağımsız oyun geliştiricilerini bir araya getiren, tamamen ücretsiz bir platformdur.

Moonline Network, geliştiricilerden platformu kullanmak, stüdyo kaydı oluşturmak veya oyunlarını yayınlamak için hiçbir zaman ücret talep etmez ve gelirinizden pay almaz. Platform, tamamen geliştiricileri desteklemek ve onlara projelerini hayata geçirebilecekleri bir ekosistem sunmak üzerine kuruludur. Siz de bu büyüyen ve dinamik topluluğun bir parçası olun, deneyimlerinizi paylaşın ve hayalinizdeki oyunu birlikte inşa edelim.

Hemen şimdi aşağıdaki linkten topluluğa katılın!

Moonline Network’e Ücretsiz Katılın

LEVEL UP: MOONLINE
Projelerini yükle, portfolyonu oluştur.
START GAME
❮ Önceki Makale Oyununuzu Yayınlamaya Hazır Mısınız? Türkiye'nin İlk ve Tek Dijital Oyun Platformu Moonline Network'ü Keşfedin Sonraki Makale ❯ Yapay Zeka Oyun Geliştirmenin Geleceğini Nasıl Şekillendiriyor?
DİSCORD'A KATIL