더북(TheBook)

그림 5-9에서 t = 0일 때 P0(t = 0)을 보냅니다. 마찬가지로 t = 1일 때 P0(t = 1)을 보냅니다. 그러면 저쪽 기기에서는 P(t = 0 + a), P(t = 1 + a), P(t = 2 + a)를 받습니다. 여기서 a는 레이턴시입니다.

저쪽 기기에서 이동 정보를 받았을 때는 이미 a만큼 시간이 지난 상태이기 때문에 캐릭터의 정확한 위치는 a만큼의 미래가 되어야 합니다. 이를 계산해 봅시다. 저쪽 기기에서는 t = 0 시점에서 위치뿐만 아니라 속도도 이미 받은 상태입니다. t = 0 + a 시점에서 실제 캐릭터 위치를 다음과 같이 예측해 봅시다.

P(t + a) = P0(t) + a * V0(t)

여기서 V0은 P0과 함께 보냈던 속도 벡터입니다. 저쪽에서 캐릭터의 실제 위치는 a만큼 미래로 계산했습니다. 이 캐릭터는 이미 속도 값을 받은 상태입니다. 따라서 받은 속도에 따라 계속해서 이동을 해야 하겠습니다.

이제 P0(t = 1)을 받습니다. 앞서 설명한 방법대로 예측해 봅시다.

P(t = 1 + a) = P0(t = 1) + a * V0(t = 1)

그런데 아직 문제가 있습니다. 새로 계산된 P(t = 1 + a)는 기존에 이동하고 있던 P(t = 0 + a + ?)와 위치가 동떨어져 있습니다. 이를 그대로 화면에 보여 주면 기기 B에서는 메시지를 받을 때마다 캐릭터가 살짝 점프하는 것처럼 보일 것입니다. 보기 좋지 않죠.

이를 개선하는 방법은 P 대신 P를 계속해서 쫓아가는 또 다른 위치 값을 정의하는 것입니다. P는 쫓아가야 하는 대상이므로 타깃(target)이라고 합시다. P를 쫓아가는 개체를 팔로워(follower)라고 칭하겠습니다.

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