Crear enemigos realistas en Roblox requiere un sistema de toma de decisiones bien diseñado. Concentrar el comportamiento en un único script con decenas de condicionales anidados genera errores de movimiento, atascos lógicos y caídas graves en los servidores.
Los juegos profesionales combinan Máquinas de Estados Finitos (FSM) para estados globales y Árboles de Comportamiento para decisiones jerárquicas tácticas. Esta guía analiza la implementación de tablas Blackboard, detección de visión por raycasting y balanceo de ticks por LOD.
Selección del patrón según la complejidad del enemigo:
Conciencia espacial sin sobrecargar el procesador del servidor:
-- 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
Estructuración de prioridades dinámicas:
Sostener 60 FPS estables con más de 100 enemigos activos:
Porque calcular trazados de ruta y raycasts en cada frame satura el hilo principal. Debe escalonarse la frecuencia con IA LOD.
Permite alternar entre planes tácticos complejos de forma limpia sin crear una maraña inmanejable de flechas de transición.
Lanzando un raycast desde la cabeza del NPC hacia el torso del jugador y comprobando si impacta contra un muro.
No, la lógica de toma de decisiones y daño debe ser validada por el servidor para evitar trampas y desincronizaciones.
Descubre tu estilo cognitivo y optimiza tu concentración técnica con DopaBrain.
Comenzar Tests en DopaBrain