GameKitでマルチプレイヤーゲームを作っています。私の問題は、2 つのデバイスが接続されているときに、ゲームがわずかな時間差で実行を開始することです。少し遅れて、デバイスの 1 つがゲームの実行を開始します。しかし、これは私が望むものではありません。両方のデバイスで同時に起動したい。だから私が最初にすることは、次のように両方のデバイスで開始時刻を確認することです:
startTime = [NSDate timeIntervalSinceReferenceDate];
そして、これはそれがどのように見えるかです:
361194394.193559
次に、他のデバイスに値を送信startTime
し、受信した値を他のデバイスの startTime と比較します。
- (void)balanceTime:(double)partnerTime
{
double time_diff = startTime - partnerTime;
if (time_diff < 0)
startTimeOut = -time_diff;
}
したがって、2 つの開始時間の差が負の場合は、このデバイスがより早く開始されていることを意味するため、startTimeOut
変数に割り当てられた差double
(通常は のようなもの) を正確に待機する必要があり2.602417
ます。それで、更新メソッドでゲームを一時停止します
- (void)update:(ccTime)dt
{
if (startTimeOut > 0)
{
NSLog(@"START TIME OUT %f", startTimeOut);
startTimeOut -= dt;
return;
}
}
しかし、残念ながらそれは役に立ちません。さらに、デバイスの開始時間の差も拡大します。理由がわかりません。私がしていることはすべて合理的なようです。私は何を間違っていますか?どうすれば修正できますか? あなたならどうしますか?どうもありがとう