Concevoir des ennemis captivants et crédibles dans Roblox requiert une architecture décisionnelle structurée. Entasser tous les comportements dans un script géant rempli de conditions imbriquées mène inévitablement à des bugs de trajectoire et de lourds ralentissements serveur.
Les studios professionnels s'appuient sur deux approches complémentaires : les machines à états finis (FSM) pour la gestion macroscopique et les arbres de comportement pour les tactiques réactives. Ce guide aborde les blackboards, le raycasting de vision et la régulation des ticks par LOD.
Choisir le bon modèle en fonction du type d'ennemi :
Calculer la conscience spatiale sans surcharger le processeur :
-- 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
Hiérarchisation des priorités tactiques :
Conserver 60 FPS constants avec plus de 100 monstres en jeu :
Parce que répéter les raycasts et les calculs de pathfinding à 60 FPS sature le CPU. Appliquez un LOD d'IA pour espacer les requêtes.
Ils permettent d'insérer de nouveaux comportements modulaires sans reconstruire l'ensemble des liens de transition.
En lançant un raycast de la tête du PNJ vers le torse du joueur en vérifiant l'absence d'obstacle intermédiaire.
Non, les décisions capitales et les dégâts doivent demeurer sur le serveur afin d'éviter toute triche.
Évaluez votre profil technique et optimisez votre concentration grâce aux outils DopaBrain.
Découvrir les Tests DopaBrain