문제

나는 독서 이 문서 벨브에서 보이는 설명하는 건 그들의 멀티 플레이 시스템입니다.그것은 그들이 지연의 렌더링에 의해 부부 틱 클라이언트에서는 그래서 그들은 처리할 수 있는 패킷 삭제이지만,그들은 또한 패킷을 전송하는"델타 스냅샷"(사이의 차이는 두 개의 인접한국).

가 있다고 가정하겠습니다 배 A,B,C,클라이언트 시간에 정확하지만 패킷을 삭제하에,그리고 다음을 받은 하나 C.어떻게 그것이 제대로 추론된 상태에서 시 C?패킷에서만 말한(I)생각하는 사 states B,C,하고 클라이언트는 국가에서 A.나는 무엇을 놓치까요?

도움이 되었습니까?

해결책

델타야 하지 않는 이전에 상대적으로 메시지가 전송되었(delta 또는 스냅샷).대신,그들은 상대하 마지막 상태입니다.그래서 위의 예에서,업데이트 C 될 수 있는 델타 상대 A.을 잃는 메시지 B 따라가는 불편으로 삼각주들은 점점 더 큰(및 잠재적 오류를 축적하는)하지만 결국에 메시지를 통해 얻을 것이고 인정되고 서버가 시작할 수 있습을 보내 델타 상대적인 업데이트 상태입니다.

다른 팁

완전한 상태가 동기화되는 주기적으로는 클라이언트 요청을 합니다. Interpolation/외삽 사용될 수 있습을 보상하기 위해 패킷 손실을 기다리는 동안 전체에 대한 위치를 업데이트합니다.일부 이벤트가 필요 reliabe 배달의 방법을 인정하는 영수증을 추가할 수 있습니다.

글렌 Fiedler 부 우수한 기사 에 대한 네트워크 게임에서 그의 블로그.

이 오래된 문서에 대해진 3 개의 네트워킹 소리와 비슷합니다.Delta 국을 대표의 변화에서 마지막 클라이언트 인정되는 상태를 받았습니다.그래서,는 경우 서버가 클라이언트는 다음 뒤에는 다음 델타에서 만들어지는 차이가 클라이언트 간의 상태와 현재 서버 상태입니다.

에서 보지 않고 구현,내가 상상하는 패킷 C 도 포함되어 있 id 의 패킷 그것은 델타에서(이 경우,패킷 B).

클라이언트가 수신하면 패킷 C 다음과 같은 패킷은,그것이 알고 있는 본 적이 없는 패킷 B 직 및 이에 따라 요청에서 전체 업데이트 서버입니다.

난 매번 그들을 보내 가득합니다.이런 이유 랙 게임 포함한 실행하는 사람들에 잘못된 속도로 델타 프레임을 삭제한 다음,"이동"올바른 위치 때에는 풀 스냅니다.

에서 링크된 문서

일반적으로 완전히(delta)스냅샷만 보내 게임이 시작되면 또는 클라이언트을 앓고 무거운 패킷 손실에 대한 부부의 초입니다.클라이언트 요청할 수 있는 풀 수동으로 스냅샷으로 cl_fullupdate 명령입니다.

서버는 아마 보내는 완전히 동기화(예 아 델타)주기적으로 하지만 자주 있습니다.는 내가 무슨 하고,적어도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top