1.2.4 이벤트 관리자
이벤트 관리자(event manager)는 게임 시뮬레이션 중 발생하는 이벤트의 대기열을 관리한다. 이들 이벤트는 일종의 간이 RPC(Remote Procedure Call, 원격 프로시저 호출)로 여기면 된다. RPC란 호출 시 원격 머신에서 실행되는 함수 또는 프로시저를 뜻한다. RPC에 대한 상세한 내용은 5장 객체 리플리케이션에서 다룬다.
예를 들어 플레이어가 총을 쏠 때 관련 시스템이 player_fired라는 이벤트를 이벤트 관리자에 보낸다. 그러면 관리자가 서버에 해당 이벤트를 보내는데, 서버는 이를 받아 검증한 후 실제 사격을 처리한다. 이벤트의 우선순위를 매기는 것은 이벤트 관리자의 권한으로, 가장 우선순위가 높은 이벤트부터 기록해 나가다가 특정 조건이 되면 처리를 중단한다. 구체적으로는 패킷이 꽉 차거나 이벤트 큐가 비었을 때 혹은 현재 계류 중인 이벤트가 너무 많은 경우가 여기에 해당한다.
이벤트 관리자는 각 이벤트의 전송 기록을 추적하여 이벤트의 확실한 전달을 보장한다. 이때 전달을 보장하는 방법은 아주 간단하다. 보장하려는 이벤트의 확인응답이 없으면 대기열 맨 앞에 해당 이벤트를 다시 한번 끼워 넣어 보내면 된다. 물론 전달을 굳이 보장할 필요가 없는 이벤트도 있을 텐데, 이런 이벤트는 아예 전송 기록 추적조차 하지 않는다.