- 다른 플레이어와의 위치 정보를 소켓을 통해서 공유하여 그 위치를 렌더링 해봤습니다.
Client A
> 서버
> Client B
- 그런데 이렇게되면 키보드 누를때마다 나의 위치 정보가 계속해서 다른 클라이언트의 소켓을 통해서 들어가게 되는데 이 때문에 네트워크탭을 보면 엄청나게 많은 패킷이 쌓이더라구요
- 그런데 zepp의 경우에는 네트워크 탭을 보더라도 아무것도 쌓이지 않았고 한편 플레이어 위치정보 공유는 잘 되던데 무슨차이가 있는 것일까요?
그냥 지나가던 캠퍼의 답변

zep 역시 각 클라이언트가 1칸씩 이동될 때마다 서버를 거쳐서 다른 클라이언트로 일일이 쏴 주는 형식을 취하고 있습니다. 그래서 zep도 네트워크탭을 보면 엄청나게 많은 패킷이 쌓입니다.
zep에 들어간 뒤 게임에 접속하기 전 개발자 도구의 네트워크탭을 보면 game 웹소켓이 존재하는데 이걸 보면 패킷이 엄청나게 많이 찍히는 걸 볼 수 있을 겁니다. 쉽게 말해 그냥 개발자 도구를 늦게 열어서 아무것도 안 쌓인 것처럼 보이는 것 뿐입니다.
⇒ 오 찾아보니까
WS
탭을 눌러보니 나오네요 감사합니다플레이어간 이동을 동기화하는 기법에는 여러가지가 있는데, 클라이언트가 이벤트를 발생시키면 서버에서 처리한 뒤 모든 클라이언트에게 뿌려주는 방식과(LOL에서 쓰이는 방식), 클라이언트가 이벤트를 발생시키면 클라이언트에서 먼저 이동을 한 뒤 서버에서는 클라이언트의 이벤트 발생 시점으로 돌아간 뒤 실제 이동방향을 적용시키는 방식(FPS에서 쓰이는 방식)이 존재합니다.
→ 동기화를 조금 나중에 한다.
소켓을 서버로 전송할 때 클라이언트가 방향키를 누르고 있는 도중에도 계속 보내는 방식을 사용하기보다는 클라이언트는 방향키를 누르는 시점, 떼는 시점에만 서버로 소켓을 보내고, 소켓 통신이 안 오는 동안에는 각 클라이언트/서버가 알아서 직전 이동을 이용해서 위치를 계산하는 방식을 사용하면 패킷의 수를 줄일 수 있을 겁니다.
→ good 아이디어