이벤트 핸들러를 정말 좋아하기로 결정했습니다. 분석 마비로 인해 약간의 고통을 겪을 수 있지만 디자인이 다루기 어려워 지거나 디자인 결정에 예기치 않은 다른 결과가 발생할 수 있습니다.
내 게임 엔진은 현재 패닝 오버 헤드 카메라로 기본 스프라이트 기반 렌더링을 수행합니다. 내 디자인은 다음과 같습니다.
SceneHandler
SceneListener 인터페이스를 구현하는 클래스 목록을 포함합니다 (현재 Sprite 만). 틱당 한 번 render ()를 호출하고 onCameraUpdate ()를 보냅니다. SceneListener에 메시지를 보냅니다.
입력 핸들러
틱당 한 번 입력을 폴링하고 간단한 "onKeyPressed"메시지를 InputListener에 보냅니다. SceneHandler 인스턴스를 보유하고 updateCamera ()를 트리거하는 Camera InputListener가 있습니다. 입력이 무엇인지에 따라 이벤트.
AgentHandler
틱당 한 번 모든 상담원 (AI)에 대한 기본 작업을 호출하고 등록 된 새 이벤트가 있는지 스택을 확인하여 필요에 따라 특정 상담원에게 전달합니다.
따라서 장면 주위를 이동하고 기본적인 조향 동작을 사용하여 이동할 수있는 기본 스프라이트 오브젝트가 있습니다. 충돌 감지에 착수했습니다. 여기가 제 디자인의 진행 방향이 확실하지 않은 곳입니다. 많은 작은 이벤트 처리기를 갖는 것이 좋은 방법입니까? 필자는 일종의 CollisionHandler를 구현해야한다고 생각합니다.
하나의 클래스에서 AI, 충돌 업데이트 및 기타 엔티티 상호 작용을 처리하는 더욱 통합 된 EntityHandler를 사용하는 것이 더 나을까요? 아니면 어떤 종류의 이벤트인지에 따라 서로에게 메시지를 전달하는 다양한 이벤트 처리 하위 시스템을 구현하는 것이 좋을까요? 이러한 모든 하위 이벤트 처리기를 조정하는 데 책임이있는 EntityHandler를 작성해야합니까?
InputHandler 및 SceneHandler와 같은 일부 경우에는 매우 구체적인 유형의 이벤트라는 것을 알고 있습니다. 내 게임 코드의 대부분은 입력에 신경 쓰지 않으며, 대부분은 장면 렌더링에서 발생하는 업데이트에 대해서는 신경 쓰지 않습니다. 따라서 나는 그 시스템의 고립이 정당하다고 생각한다. 그러나 나는이 질문을 구체적으로 게임 로직 유형 이벤트에 접근하고 있습니다.