GameKit으로 멀티 플레이어 게임을 만들고 있습니다. 내 문제는 두 개의 장치가 연결되면 게임이 약간의 시간 차이로 실행되기 시작한다는 것입니다. 장치가 켜지면 조금 후에 게임이 시작됩니다. 그러나 이것은 내가 원하는 것이 아닙니다. 두 기기에서 동시에 시작하고 싶습니다. 그래서 내가 제일 먼저 내가이 같은 두 장치에 시작의 시간을 확인할 수 있습니다 :멀티 플레이어 게임의 시작 시간 균형을 유지하는 방법은 무엇입니까?
startTime = [NSDate timeIntervalSinceReferenceDate];
를이는 모습입니다 :
이361194394.193559
가 그럼 난 다른 장치에 startTime
값을 전송 수신 된 값을 다른 장치의 startTime과 비교합니다.
- (void)balanceTime:(double)partnerTime
{
double time_diff = startTime - partnerTime;
if (time_diff < 0)
startTimeOut = -time_diff;
}
그래서 두 시작 시간 사이의 차이가 음수 인 경우에는이 기기는 앞서 개시되는 것을 의미하고, 따라서 그것은
double
인
startTimeOut
변수에 할당 정확하게 차이 기다려야 통상
2.602417
같은 것이다. 그럼 내 업데이트 방법으로 내 게임을 일시 중지합니다.
- (void)update:(ccTime)dt
{
if (startTimeOut > 0)
{
NSLog(@"START TIME OUT %f", startTimeOut);
startTimeOut -= dt;
return;
}
}
하지만 불행히도 도움이되지 않습니다. 또한 장치 시작 시간의 차이를 연장 할 수 있습니다. 나는 이유를 알 수 없다. 내가하는 모든 일이 합리적이라고 생각해. 내가 도대체 뭘 잘못하고있는 겁니까? 어떻게 수정합니까? 너는 무엇을 할 것이냐? 고마워요
두 장치의 시간은 완전히 다를 수 있으므로이 솔루션은 효과가 없습니다. –
하지만 왜? 나는 [NSDate timeIntervalSinceReferenceDate]를 참조한다; 두 장치 모두 절대적입니다. 따라서 작동해야합니다. –
어떻게 얻었습니까? "수신자와 2001 년 1 월 1 일 GMT의 첫 번째 순간 사이의 간격을 반환합니다." – TheAmateurProgrammer