2017-03-21 6 views
0

나는 online real-time multiplayer game using Google Play Game Service and Cocos2D-X을 개발 중입니다. 이 게임에는 각 플레이어가 자신의 공을 컨트롤하는 두 명의 플레이어가 있습니다.피어 투 피어 온라인 멀티 플레이어 게임의 게임 동기화

각 플레이어는 own ball’s velocity and position을 다른 연결된 장치로 보냅니다. 내 게임에서 모든 물리 계산은 locally on each devices, 즉 물리적 계산 후의 볼 속도는 각 장치에서 로컬로 계산됩니다.

문제 :

빠르게 움직이는 볼이 상대의 볼을 WTH 충돌

는, 상대의 볼 no change in the movement velocity있다. (실제 물리학에 따르면, 빠르게 움직이는 볼이 상대의 천천히 움직이는 공을 밀어 할 수 있어야합니다.)

는 이유 : 내 코드 분석시

, 나는 속도가 로컬 물리학에 의해 계산 된 것으로 이해 엔진은 상대방 장치로부터 수신 한 데이터로 덮어 씁니다.

예 :
enter image description here

솔루션은 내가 시도 : 공 사이의 충돌이 나는 클라이언트와 서버 및 기타 장치와 같은 장치 중 하나 만드는 오전 발생할 때마다

이 문제를 해결하려면. 모든 물리 연산은 서버 장치에서 발생하며 데이터는 클라이언트 장치로 전송됩니다.

나는 다음과 같은 질문이 :

  1. 나에 의해 시도 솔루션이 문제를 해결하는 최적의 솔루션이 있습니까?
  2. 이러한 유형의 문제를 해결하기 위해 시도 할 수있는 다른 방법은 무엇입니까?

    이 주제에 대한 의견이나 제안을 보내 주시면 감사하겠습니다. 고맙습니다.

    참고 : - - :이 서비스는 무료

답변

0

가장 좋은 방법은 장치가 동기화 게임을 실행하기 위해 실시간 데이터베이스를 사용하는 것입니다 특정 사용 한도까지.

+0

답장을 보내 주셔서 감사합니다. 나는 도구를 변경하는 대신 문제에 대한 논리적 인 코딩 솔루션을 찾고있다. 귀하의 경우에 –

+1

한 장치의 서버를 만들면 서버 장치가 대기 시간의 이점을 얻고 다른 장치가 그로 인해 어려움을 겪게됩니다. – Karacken

+0

서버 db를 사용하여 게임이 모든 사람에게 공평한 지 확인해야합니다. opensource 솔루션 https://realm.io/products/realm-mobile-database/을 시도하고 서버에 설정할 수 있습니다. – Karacken