¿Existe una falla de diseño cuando el estado de una entidad no utiliza por completo enter (), execute () y exit ()?

9

Estoy siguiendo la IA del juego de programación de Mat Buckland por ejemplo, y encuentro que no siempre tengo uso para enter (), execute () y exit () en el estado de una entidad. Por ejemplo, en un juego de rol, un arma puede tener un estado equipado, y puedo usar enter () y exit () para ese estado para sumar o restar al modificador de habilidad de un jugador, pero realmente no hay necesidad de ejecutar ( ) ¿Es este un defecto de diseño en mi motor, o una deficiencia de este enfoque?

Charanor
fuente

Respuestas:

8

Al no haber leído el libro, esas llamadas suenan como puntos de entrada normales para una máquina de estado. Para entender las llamadas, veamos qué hacen.

enter () : se ejecuta cuando el estado está activado.

execute () : se ejecuta mientras el estado está activado.

exit () : se ejecuta cuando el estado está desactivado.

Estos se ajustan a cualquier tipo de máquina de estados. Algunas máquinas solo necesitan las llamadas 'ejecutar', otras necesitan 'entrar' y 'salir', y otras necesitan las tres.

Ejemplo 1 : gatillo de ametralladora.

  • Ejecutar: disparar balas a la velocidad establecida.

Ejemplo 2 : puente de fuerza

  • Entrar: hacer aparecer el puente
  • Salir: hacer desaparecer el puente

Ejemplo 3 : armadura de poder personal.

  • Entrar: dar protección adicional al jugador
  • Ejecutar: agotar las baterías
  • Salir: eliminar protección adicional
Jari Komppa
fuente
8

No es necesariamente una señal de ningún defecto. No todas las entidades o estados tendrán un uso para cada método disponible. Solo dejar el método execute () vacío estaría bien, en mi opinión.

Nathan Reed
fuente