더북(TheBook)

5.2.3 추측항법

자세히 보면 이것도 사실 원하는 결과가 아닙니다. 우리가 원하는 것은 이쪽에 있는 캐릭터 위치가 저쪽에 있는 컴퓨터에서도 정확하게 보이는 것입니다. 하지만 그림 5-8을 보면 저쪽에 있는 캐릭터 위치는 이쪽보다 한 템포 늦습니다.

여러분이 레이싱 게임이나 FPS 게임을 개발하고 있다면 이는 문제가 됩니다. 예를 들어 자동차 두 대가 결승 지점으로 똑같은 거리에서 똑같은 속도로 달리고 있다 가정합시다. 이쪽 자동차는 저쪽 자동차보다 조금 더 앞서 있는 것으로 보일 것입니다. 하지만 저쪽 자동차 입장에서는 저쪽 자동차가 이쪽 자동차보다 조금 더 앞서 있는 것으로 보일 것입니다. 똑같이 결승 지점에 도착했음에도 각자의 컴퓨터에서 보이는 승패 결과는 다릅니다. 끔찍하죠.

이 문제를 해결하려면 어떻게 해야 할까요? 이쪽에서 저쪽 캐릭터의 위치 정보를 받았을 때는 이미 약간의 시간이 지난 상태입니다. 그러면 답은 간단합니다. 저쪽 캐릭터의 위치 정보를 이미 지난 약간의 시간만큼 예측해 주면 되겠죠. 이렇게 하는 방법을 추측항법(dead reckoning)이라고 합니다.

추측항법이란 상대방 움직임을 어느 정도 예상해서 그 위치로 갈 수 있게 보정시키는 방법을 의미합니다. 추측항법이 제대로 작동하려면 몇 가지 배경지식이 필요합니다. 먼저 두 기기 간의 레이턴시를 알고 있어야 합니다. 레이턴시를 측정하는 방법에는 여러 가지가 있지만, 대표적인 것은 라운드 트립 레이턴시(round trip latency)를 측정하는 방법입니다. 라운드 트립 레이턴시를 측정하는 방법은 다음과 같습니다.

1. 기기 A에서 기기 B에 패킷을 보냅니다.

2. 기기 B는 이를 받으면 기기 A에 패킷을 보냅니다.

3. 기기 A는 1 과정의 시간과 현재 시간의 차이를 구하여 2로 나눕니다.

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