Menciptakan musuh yang pintar di Roblox memerlukan arsitektur keputusan yang terstruktur rapi. Menulis semua perilaku dalam satu skrip penuh kondisi if-else membuat musuh sering macet dan menyebabkan lag parah pada server.
Game komersial memadukan Finite State Machines (FSM) untuk status umum dan Behavior Trees untuk taktik tempur dinamis. Panduan ini membahas pola Blackboard, raycasting sudut pandang, dan pembagian beban tick melalui sistem LOD.
Menentukan pola arsitektur yang tepat:
Memberikan kesadaran ruang tanpa membebani prosesor server:
-- 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
Menyusun hierarki prioritas tindakan:
Menjaga performa tetap 60 FPS meski ada lebih dari 100 musuh:
Karena raycast dan kalkulasi jalur yang berjalan setiap frame membebani CPU. Terapkan AI LOD untuk membagi beban.
BT memungkinkan penambahan taktik baru secara modular tanpa merombak diagram transisi yang rumit.
Gunakan raycast dari kepala NPC ke tubuh pemain untuk memastikan jalur pandang terbebas dari rintangan.
Tidak, logika keputusan dan pemberian damage harus berada di server guna mencegah eksploitasi dan kecurangan.
Uji pola pikir teknis Anda dan optimalkan ketajaman konsentrasi di DopaBrain.
Mulai Tes di DopaBrain