레이턴시 마스킹
개요
레이턴시 자체를 완벽하게 없앨 수 없지만 추측항법을 포함하여 다양한 방법을 사용해 레이턴시로 발생하는 문제를 감출 수 있음. 이러한 방법들을 레이턴시 마스킹이라고 함.
해결방법
추측항법
클라이언트 캐릭터의 위치 정보를 받은 시점에서는 이미 약간의 시간이 지났기 때문에 그 약간의 시간을 예측하여 처리하면 됨. 이러한 방법을 추측항법이라고 함.
추측항법이 제대로 동작하기 위해서는 몇 가지 배경지식이 필요함
- 두 기기 간의 레이턴시를 알고 있어야 함
- 캐릭터는 위치뿐만 아니라 속도도 가지고 있어야 함
사소한 것들은 클라이언트에서 처리
해킹 방지 방법-1
- 클라이언트는 플레이어 캐릭터의 이동 정보를 서버에 전송
- 서버는 이동 정보를 받아 정상적인 값 범위에 있는지 검사
해킹 방지 방법-2
- 클라이언트는 플레이어 캐릭터의 명령 정보를 서버에 전송, 클라이언트는 자기 캐릭터를 일방적으로 움직임
- 서버는 명령 정보에 따라 캐릭터 이동 처리, 이동 정보 메시지를 클라이언트에 전송
- 1번에서 움직인 캐릭터 위치를 무시하고 서버에서 메시지에 따라 캐릭터를 이동
-> 해킹을 막기에는 가장 좋지만 레이턴시가 100밀리초를 넘을 때마다 캐릭터 움직임이 손상됨.
먼저 보여주고 나중에 처리하기
- 플레이어의 행동에 대한 메시지를 서버에 전송. 동시에 행동을 연출하는 일부 모습을 클라이언트에서 즉시 시작
- 서버에서는 행동 명령을 받아 처리, 플레이어 캐릭터가 해야 할 행동을 클라이언트에 메시지로 전송
- 클라이언트는 메시지를 받아 연출해야 하는 나머지 부분을 클라이언트에 보여줌
이러한 방식은 디아블로3에서 사용하고 있으며, 플레이어는 심리적으로 이러한 방식을 더 마음에 들어한다고 함.