Skip to content

Latest commit

 

History

History
25 lines (13 loc) · 1.44 KB

File metadata and controls

25 lines (13 loc) · 1.44 KB

마무리

이동과 관련해서 발생한 버그

해당 위치로 이동이 가능한지 서버쪽에 체크를 받고 서버에서 보내준 이동 패킷을 수령한 다음에 이동을 하는 방식으로 수정을 하는 것도 하나의 방법이다.

무튼 현재 Job 시스템으로 변경을 하면서 클라에서 보낸 Move 패킷을 처리할 때 Push만 하기 때문에 운이 안좋으면 지정한 시간 뒤에 클라에게 다시 이동 패킷을 보내주게 된다. 따라서 싱크가 안맞게 되는 것

클라에서는 이미 이동을 시작해서 다음 좌표로 이동을 했는데 특정 시간이 지난 뒤에 서버가 클라에게 이동 패킷을 전달해준다.

즉 클라에서는 이동을 완료했지만 서버에서 응답을 늦게 주면 약간 가위 눌리는 것처럼 이전 좌표로 설정이 될 수도 있다.

보통 이런 경우에는 클라쪽에서 선 이동하고 서버에서 허락을 주는 경우에는 일반적으로 서버에서 Move 패킷을 클라에게 준다고 해도 내 플레이어에 대한 좌표는 S_MoveHandler에서 이동을 시키지 않는다.(다른 플레이어 말고 자기 자신!)

만약게 3D 게임이라면 이동 동기화를 어떻게 하게 될까?

3D 게임임에도 칸 단위로 이동하는 게임도 있기는 하다 (Ex. 리니지)

하지만 와우와 같은 게임은 축즉항법이라는 방법을 많이 사용한다.

플레이어가 특정 위치로 이동하고 싶다면 내가 이동하고 싶은 방향(목적지) 이동하겠다는 패킷을 서버에 보내서 해당 플레이어가 어디까지 이동하고 싶다는 것을 서버가 Broadcasting을 해준다.

그러면 나머지 클라에서는 해당 목적지를 바라보고 이동을 하게끔 고정을 해주는 방식으로 작업을 해준다.

무튼 기본적으로 클라에서 특정 방향으로 이동하겠다는 패킷을 서버에게 보내주고 서버쪽에서 해당 위치로 이동해도 된다는 것을 Broadcasting하는 부분은 거의 유사하다.