더북(TheBook)

1.2.4 이벤트 관리자

이벤트 관리자(event manager)는 게임 시뮬레이션 중 발생하는 이벤트의 대기열을 관리한다. 이들 이벤트는 일종의 간이 RPC(Remote Procedure Call, 원격 프로시저 호출)로 여기면 된다. RPC란 호출 시 원격 머신에서 실행되는 함수 또는 프로시저를 뜻한다. RPC에 대한 상세한 내용은 5장 객체 리플리케이션에서 다룬다.

예를 들어 플레이어가 총을 쏠 때 관련 시스템이 player_fired라는 이벤트를 이벤트 관리자에 보낸다. 그러면 관리자가 서버에 해당 이벤트를 보내는데, 서버는 이를 받아 검증한 후 실제 사격을 처리한다. 이벤트의 우선순위를 매기는 것은 이벤트 관리자의 권한으로, 가장 우선순위가 높은 이벤트부터 기록해 나가다가 특정 조건이 되면 처리를 중단한다. 구체적으로는 패킷이 꽉 차거나 이벤트 큐가 비었을 때 혹은 현재 계류 중인 이벤트가 너무 많은 경우가 여기에 해당한다.

이벤트 관리자는 각 이벤트의 전송 기록을 추적하여 이벤트의 확실한 전달을 보장한다. 이때 전달을 보장하는 방법은 아주 간단하다. 보장하려는 이벤트의 확인응답이 없으면 대기열 맨 앞에 해당 이벤트를 다시 한번 끼워 넣어 보내면 된다. 물론 전달을 굳이 보장할 필요가 없는 이벤트도 있을 텐데, 이런 이벤트는 아예 전송 기록 추적조차 하지 않는다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.