그만큼 전통적인 게임 디자인은 내가 아는 한, 사용 다형성과 가상 함수를 업데이트 게임 상태를 객체에. 다시 말해, 동일한 가상 함수 세트가 게임의 모든 객체에 대해 규칙적인 (예 : 프레임 당) 간격으로 호출됩니다.
최근에 나는 또 다른 것이 있다는 것을 발견했다. 에 게임 객체의 상태를 업데이트 할 수있는 이벤트 중심 메시징 시스템이 있음을 . 여기서 개체는 일반적으로 프레임별로 업데이트되지 않습니다. 대신, 매우 효율적인 이벤트 메시징 시스템 이 구축되고 유효한 이벤트 메시지를 수신 한 후에 만 게임 개체가 업데이트됩니다.
이벤트 중심 게임 아키텍처 는 Mike McShaffry의 게임 코딩 완료 에 잘 설명되어 있습니다.
다음 질문에 대해 친절하게 도움을 요청할 수 있습니까?
- 두 가지 방법의 장점과 단점은 무엇입니까?
- 하나는 다른 것보다 더 나은 곳은 어디입니까?
- 이벤트 중심 게임 디자인은 모든 영역에서 보편적이고 더 좋습니까? 따라서 mombile 플랫폼에서도 사용하도록 권장됩니까?
- 어느 쪽이 더 효율적이고 어느 쪽이 개발하기 어려운가요?
명확히하기 위해, 내 질문은 게임 디자인에서 다형성을 완전히 제거하는 것에 관한 것이 아닙니다. 이벤트 차이 메시징과 일반 (프레임 당) 호출을 가상 함수에 사용하여 게임 상태를 업데이트 할 때의 차이점과 이점을 이해하고 싶습니다.
예 : 이 질문은 여기서 약간의 논쟁을 일으켰습니다. 예를 들어 보겠습니다. MVC에 따르면 게임 엔진은 세 가지 주요 부분으로 나뉩니다.
- 응용 프로그램 계층 (하드웨어 및 OS 통신)
- 게임 로직
- 게임 뷰
레이싱 게임에서 게임 뷰는 화면을 가능한 빨리 30fps로 렌더링하는 역할을합니다. 게임 뷰는 플레이어의 입력을 수신합니다. 이제 이런 일이 발생합니다.
- 플레이어가 연료 페달을 80 %까지 누름
- GameView는 "Car 2 Fuel Pedal Pressed to 80 %"라는 메시지를 작성하여 Game Logic으로 보냅니다.
- Game Logic은 메시지를 가져 와서 평가하고 새 차의 위치와 동작을 계산하고 GameView에 대해 "Draw Car 2 Fuel Pedal Pressed 80 %", "Car 2 Sound Acceleration", "Car 2 Coordinates X, Y"메시지를 생성합니다. .
- GameView는 메시지를 받고 그에 따라 처리합니다
update
수 있습니다). 두 번째는 다양한 이유로 메시징으로 할 수 있습니다.