2012-08-29 5 views
0

간단하게 말하자면 클라이언트가 그리는 클라우드와 클라우드를 이동하기위한 명령을 보내는 서버가 있습니다. 클라이언트 1이 60 fps에서 실행되고 클라이언트 2가 30 fps에서 실행되는 것으로 가정하고 다소 부드러운 클라우드 전환을 원합니다.기본 클라이언트 - 서버 동기화

첫 번째 문제 - 서버가 클라이언트와 다른 fps를 가지며 모든 틱이 이동 명령을 보내면 훨씬 빨리 스팸 명령을 시작하고 클라이언트가 그립니다.

가능한 해결책 1 - 클라이언트가 프레임을 완료 한 후 "i want update"명령을 보냅니다.

가능한 해결책 2 - 서버가 xms마다 이동 클라우드 명령을 전송하지만 클라우드가 원활하게 이동하지 않습니다. 솔루션 3과 결합 할 수 있습니다.

가능한 해결책 3 - 서버가 "x로 구름 이동"대신 "속도 x로 구름 이동 시작"및 "구름 방향 변경"을 전송합니다. 화면의 가장자리에 클라우드 디렉토리를 변경, 구름이 실제로 클라이언트에서 drawned 후 빠른 트리거합니다.

을 또한 클라이언트 2는 클라이언트 (1) 다음의 2 배 느린립니다,이 보상 방법?

어떻게 동기화 서버 로직을 클라이언트에 drawning와 기본 방법?

답변

1

해결 방법 3은 bes처럼 들립니다. 당신이 그것을 할 수 있다면, 멀리 하나. 다른 모든 솔루션은 너무 복잡합니다. 즉, 클라이언트와 서버 간의 통신이 극히 빈번해야합니다. 서버와 클라이언트간에 네트워크 연결이 잘되어 있지 않으면 너무 자주 발생합니다.

클라우드 이동이 모두 간단하여 벡터로 클라이언트에 보낼 수 있으므로 클라이언트가 새로운 지침을 받기 전에 한 프레임을 여러 벡터로 이동시킬 수 있습니다. 시작 위치 및 벡터) 서버에서 다음 확실히해야합니다. 클라우드 동작을 간단한 벡터로 표현하기가 쉽지 않은 경우보다 복잡한 모델 (예 : 벡터를 시간에 따라 변형시키는 지침 추가)을 선택하고 모델 매개 변수를 클라이언트에 보낼 수 있습니다.

클라우드가 더 큰 세계의 일부이고 클라이언트가 세계에서 시간을 추적하는 경우 서버의 각 명령 집합에는 모델의 초기 조건이 유효한 시간을 나타내는 타임 스탬프가 포함되어야합니다.

클라이언트 2를 클라이언트 1보다 2 배 느리게 보정하는 방법에 대한 질문은 두 클라이언트에서 일정한 속도로 세계 시계를 체크해야합니다. 이 비율은 각 클라이언트의 화면 새로 고침 빈도와 아무런 관계가 없습니다.

관련 문제