레이턴시 마스킹

less than 1 minute to read

개요

레이턴시 자체를 완벽하게 없앨 수 없지만 추측항법을 포함하여 다양한 방법을 사용해 레이턴시로 발생하는 문제를 감출 수 있음. 이러한 방법들을 레이턴시 마스킹이라고 함.

해결방법

추측항법

클라이언트 캐릭터의 위치 정보를 받은 시점에서는 이미 약간의 시간이 지났기 때문에 그 약간의 시간을 예측하여 처리하면 됨. 이러한 방법을 추측항법이라고 함.

추측항법이 제대로 동작하기 위해서는 몇 가지 배경지식이 필요함

  1. 두 기기 간의 레이턴시를 알고 있어야 함
  2. 캐릭터는 위치뿐만 아니라 속도도 가지고 있어야 함

사소한 것들은 클라이언트에서 처리

해킹 방지 방법-1
  1. 클라이언트는 플레이어 캐릭터의 이동 정보를 서버에 전송
  2. 서버는 이동 정보를 받아 정상적인 값 범위에 있는지 검사
해킹 방지 방법-2
  1. 클라이언트는 플레이어 캐릭터의 명령 정보를 서버에 전송, 클라이언트는 자기 캐릭터를 일방적으로 움직임
  2. 서버는 명령 정보에 따라 캐릭터 이동 처리, 이동 정보 메시지를 클라이언트에 전송
  3. 1번에서 움직인 캐릭터 위치를 무시하고 서버에서 메시지에 따라 캐릭터를 이동

-> 해킹을 막기에는 가장 좋지만 레이턴시가 100밀리초를 넘을 때마다 캐릭터 움직임이 손상됨.

먼저 보여주고 나중에 처리하기

  1. 플레이어의 행동에 대한 메시지를 서버에 전송. 동시에 행동을 연출하는 일부 모습을 클라이언트에서 즉시 시작
  2. 서버에서는 행동 명령을 받아 처리, 플레이어 캐릭터가 해야 할 행동을 클라이언트에 메시지로 전송
  3. 클라이언트는 메시지를 받아 연출해야 하는 나머지 부분을 클라이언트에 보여줌

이러한 방식은 디아블로3에서 사용하고 있으며, 플레이어는 심리적으로 이러한 방식을 더 마음에 들어한다고 함.

Categories:

Updated: