Class GameDev* SheepAdult

움직임 동기화에 대해 겪었던 문제 본문

카테고리 없음

움직임 동기화에 대해 겪었던 문제

SheepAdult 2024. 8. 18. 21:21

탑다운 방식 멀티플레이 RPG 개발 중, 움직임 동기화 관련 작업에서 문제가 생겼다. 로스트 아크나 리그 오브 레전드와 같이 오른쪽 마우스로 맵을 클릭하면 그 자리로 캐릭터가 이동하는 방식이었는데, 움직이던 중 다시 오른쪽 마우스 클릭하면 캐릭터가 그 자리에 멈추지 않고 계속 움직이던 문제였다.

 

그 이유는 서버와 클라이언트 사이의 RTT(Round Trip Time) 때문이었다. 문제가 발생했을 당시 클라이언트는 서버에 캐릭터의 위치에서 클릭한 위치로의 벡터를 함께 보냈다. 하지만 이미 서버로부터 패킷을 다시 받았을 때는 캐릭터의 위치가 변했을 수 있기 때문에 약간의 차이가 벌어져 목표 위치로 도달할 수 없는 문제였다.

문제 발생 상황

 

그래서 목표 지점의 위치만 패킷에 담아 보낸 후 서버로부터 수신했을 때의 캐릭터 위치와 목표 위치와의 벡터를 계산하여 yaw값을 설정했다.

해결 상황

다행히 잘 동작했다