Roblox NPC Yapay Zeka Mimarisi: Behavior Trees, State Machines ve Görsel Algı

By DopaBrain Roblox AI Engineering Team • Updated: September 2026 • Reading Time: 9 min

Mühendislik ve Bilişsel Analiz Araçları

Roblox oyunlarında inandırıcı düşmanlar oluşturmak yapılandırılmış bir karar mekanizması gerektirir. Tüm davranışları iç içe geçmiş if-else bloklarıyla tek bir koda yazmak, yol bulma hatalarına ve sunucu çöküşlerine yol açar.

Profesyonel stüdyolar genel durumlar için Sonlu Durum Makinelerini (FSM), dinamik taktikler içinse Behavior Trees yapılarını kullanır. Bu rehber Blackboard hafıza modelini, görüş açısı raycast yöntemlerini ve AI LOD sistemini ele alır.

1. Sonlu Durum Makineleri (FSM) ve Behavior Trees (BT)

Oyun türüne göre mimari tercihi:

2. Blackboard Deseni ve Görsel Algılama

Sunucuyu yormadan uzamsal farkındalık sağlama:

3. Production Implementation Architecture

ServerScriptService.NPCFramework.StateMachine
-- Modular Finite State Machine for Roblox NPC
local StateMachine = {}
StateMachine.__index = StateMachine

function StateMachine.new(npcInstance, states, initialState)
    local self = setmetatable({}, StateMachine)
    self.NPC = npcInstance
    self.States = states
    self.CurrentState = nil
    self.Blackboard = {
        Target = nil,
        LastSeenPos = nil,
        Health = 100,
        PatrolPoints = {}
    }
    
    self:ChangeState(initialState)
    return self
end

function StateMachine:ChangeState(newStateName)
    if self.CurrentState and self.States[self.CurrentState].Exit then
        self.States[self.CurrentState]:Exit(self.NPC, self.Blackboard)
    end
    
    self.CurrentState = newStateName
    if self.States[newStateName] and self.States[newStateName].Enter then
        self.States[newStateName]:Enter(self.NPC, self.Blackboard)
    end
end

function StateMachine:Update(dt)
    if self.CurrentState and self.States[self.CurrentState].Update then
        local nextState = self.States[self.CurrentState]:Update(self.NPC, self.Blackboard, dt)
        if nextState and nextState ~= self.CurrentState then
            self:ChangeState(nextState)
        end
    end
end

return StateMachine

4. Behavior Tree Düğümleri: Seçiciler ve Sıralayıcılar

Hiyerarşik karar sıralaması:

5. Sunucu Ölçeklendirmesi: AI LOD ve Object Pooling

100'den fazla aktif düşmanla 60 FPS'i korumak:

Frequently Asked Questions

30 NPC sunucuyu neden yavaşlatır?

Her karede tüm düşmanlar için raycast ve rota hesabı yapmak CPU'yu kilitler. AI LOD kullanmalısınız.

Behavior Tree'nin FSM'e göre üstünlüğü nedir?

Karmaşık durumlarda kod bağlantılarını bozmadan araya yeni taktik düğümleri ekleme esnekliği sunar.

Düşmanların duvarların arkasını görmesi nasıl engellenir?

Göz hizasından oyuncuya raycast atılarak arada duvar olup olmadığı denetlenmelidir.

Yapay zeka istemcide çalıştırılabilir mi?

Hileleri önlemek adına hedef ve hasar kararları her zaman sunucuda verilmelidir.

Sistem Mühendisliği ve Mantıksal Becerilerinizi Artırın

Bilişsel profilinizi analiz edin ve DopaBrain araçlarıyla geliştirici yeteneklerinizi güçlendirin.

DopaBrain Bilişsel Testlerini Başlat