Roblox में स्मार्ट एनिमी बनाने के लिए एक स्पष्ट निर्णय प्रणाली आवश्यक है। एक ही स्क्रिप्ट में ढेर सारी if-else शर्तें लिखने से गेम लैग करता है और सर्वर स्लो हो जाता है।
प्रोफेशनल गेम्स फाइनाइट स्टेट मशीन (FSM) और बिहेवियर ट्री का संयोजन उपयोग करते हैं। इस गाइड में ब्लैकबोर्ड डेटा, विज़न रेकास्ट और AI LOD के बारे में विस्तार से बताया गया है।
गेम के अनुसार सही आर्किटेक्चर चुनें:
बिना लैग के देखने की क्षमता देना:
-- 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
प्राथमिकता तय करने के नियम:
100+ दुश्मनों के साथ 60 FPS बनाए रखना:
हर फ्रेम पर रेकास्ट करने से सीपीयू भर जाता है; AI LOD का प्रयोग करें।
सिर से खिलाड़ी के शरीर तक रेकास्ट करके दीवार की जांच करें।
नहीं, चीटिंग से बचने के लिए निर्णय हमेशा सर्वर पर होने चाहिए।
यह जटिल फैसलों को बिना कोड उलझाए जोड़ने की सुविधा देता है।
DopaBrain पर अपने संज्ञानात्मक कौशल का परीक्षण करें।
DopaBrain टेस्ट शुरू करें