• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이동 패킷 동기화

22.08.09 16:49 작성 조회수 444

0

안녕하세요 이동패킷 동기화 관련해서 여쭤볼려고 합니다. 

다른 사람들 질문에 답하신것 처럼 이동패킷은 보통 1초에 4번 보낸다 라고 되어 있더라구요.

여기서 4번 보낸다 라는 뜻은 
4강 서버 강의 후반에서 배운것처럼
Server에서 JobTimer에 pendingList에 250ms 만큼 모아놓고 그리고 보낸다라는 뜻인가요??

즉 Client에서는 키 입력을 받게 되면 실시간으로 Server에 보내지만
반면에 Server쪽에서는 같은 방 안에 있는 다른 플레이어한테 BroadCast를 실시간으로 해주는게 아닌 0.250초 만큼 쌓아 놓은 패킷을 모아서 보낸다는 뜻인가요??  

또는 클라이언트에서 아예 0.250초마다 보낸다는 뜻인지 잘 모르겠어요...

답변 1

답변을 작성해보세요.

0

일반적으로 그렇다는 것이지 딱히 공식이 있진 않습니다.
클라가 키 입력을 통해 바꾸는걸 족족 보낼 경우,
왼-오른-왼-오른쪽 키를 스패밍하는 유저들이 생길 때 문제가 될 수 있습니다.
(혹은 클라 자동 툴을 이용해 1초에 100번씩 이동 패킷을 보낸다면?)

클라는 1초에 60프레임 이상으로 실행되기에 1/60초마다 연산이 가능하지만
서버는 애당초 빨라야 10프레임 정도로 실행되기 때문에
어차피 연산 주기에 차이가 있을 수 밖에 없습니다.
특히나 3D 게임이라면 클라가 소수점 단위로 지형 위에서 움직일텐데
그걸 서버에서 일일히 계산할 수도 없고요.
그러니 어느 정도는 서버가 러프하게 계산해서 보정을 하는건 필연적이고,
그 범위는 어색하게 보이지 않도록 한도를 테스트를 해보면서 찾아야겠지만
제가 본 프로젝트에선 대부분 0.25초 정도에 한 번이었습니다.

다른 클라 움직임을 0.25초에 한 번만 받아도, 클라에서 적당히 보정해주면
딱히 어색하게 보이지 않습니다.

LEETO님의 프로필

LEETO

질문자

2022.08.09

답변 감사합니다!!

모아서 보내는걸 구현해볼려고 하는데 

Client에서는 키 입력을 받게 되면 실시간으로 Server에 보내지만
Server쪽에서는 같은 방 안에 있는 다른 플레이어한테 BroadCast를 실시간으로 해주는게 아아니라 0.250초 만큼 쌓아 놓은 패킷을 모아서 보내는 방식이

로키스님이 생각하시는 방식이  맞을까요??


클라에서도 조금 텀을 두는게 일반적으로 좋습니다.
키를 누르고 있다고 이동 패킷을 프레임마다 계속 보낼 순 없겠죠.