더북(TheBook)

이에 대한 해결책은 바로, 턴 타이머(turn timer)를 추가하여 일정 기간마다 명령을 쌓아두는 것이다. 턴 타이머 방식으로 구현하기 위해선 먼저 턴의 길이를 정해 두어야 한다. 에이지 오브 엠파이어의 경우 턴의 기본 길이를 200밀리초로 잡았다. 이 200밀리초 동안 모든 명령은 대기열 버퍼에 쌓인다. 200밀리초가 지나면 턴이 완료되어 그동안 대기열에 쌓아둔 그 플레이어의 모든 명령이 다른 플레이어들에게 전송된다. 여기서 핵심은 수신 측이 명령 대기열을 받는 즉시 처리하지 않고, 이후 두 번의 턴이 지난 다음에 처리한다는 것이다. 예를 들어 50번째 턴에 내려진 명령들을 인스턴스가 저마다 받아서 가지고 있다가 52번째 턴에 실행하는 식으로 말이다. 200밀리초짜리 타이머의 경우 인풋 랙(input lag), 즉 입력 후 화면에 반영하기까지 지연시간이 모두 합쳐 최대 600밀리초가 되는 셈이다. 하지만 지연시간에도 불구하고 딱 두 턴만 기다려 주면 모든 플레이어가 명령을 받아 동시에 그 턴을 처리하는 데 큰 문제가 없게 된다. 이처럼 명색이 ‘실시간’인 RTS 게임이 알고 보니 턴제로 구현된다는 점이 역설적으로 느껴질지 모르지만, 턴 타이머 기법은 이미 스타크래프트 II 등 여러 RTS 게임에서 널리 검증된 기법이다. 물론 요즘 게임은 90년대 후반에 비해 대역폭과 레이턴시 면에서 우수한 네트워크 환경을 넉넉하게 활용 가능하므로 더 짧은 간격의 턴 타이머를 구동할 수 있다.

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