엔터티의 상태가 enter (), execute () 및 exit ()를 완전히 활용하지 못하는 경우 설계 결함이 있습니까?


9

Mat Buckland의 Programming Game AI를 Example을 따르고 있으며 엔터티의 상태에서 enter (), execute () 및 exit ()를 항상 사용할 필요는 없습니다. 예를 들어, RPG에서 무기에는 장착 상태가있을 수 있으며 해당 상태에 enter () 및 exit ()를 사용하여 플레이어의 능력 수정자를 더하거나 뺄 수 있지만 실제로는 실행할 필요가 없습니다 ( ). 이것이 내 엔진의 설계 결함입니까, 아니면이 접근법의 단점입니까?

답변:


8

책을 읽지 않은 상태에서는 이러한 호출이 상태 시스템의 일반적인 진입 점처럼 들립니다. 전화를 이해하기 위해 그들이하는 일을 봅시다.

enter () -상태가 활성화 될 때 실행됩니다.

execute () - 상태가 활성화 된 동안 실행 됩니다.

exit () -상태가 비활성화되면 실행됩니다.

이들은 모든 종류의 상태 머신에 적합합니다. 일부 기계에는 '실행'호출 만 필요하고 다른 기계에는 '입력'과 '종료'가 필요하지만 다른 기계에는 세 가지 모두가 필요합니다.

예 1 : 기관총 트리거.

  • 실행 : 설정된 속도로 총알을 발사합니다.

예 2 : 힘 교량

  • 입력 : 브리지 표시
  • 출구 : 다리가 사라지다

예 3 : 개인 파워 아머.

  • 입력 : 플레이어에게 추가 보호 기능 제공
  • 실행 : 배터리 방전
  • 종료 : 추가 보호 제거

8

반드시 결함의 징후는 아닙니다. 모든 엔터 티나 주에서 사용 가능한 모든 방법을 사용할 수있는 것은 아닙니다. execute () 메소드를 비워두면 괜찮습니다. IMO.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.