0

2 人のプレーヤーがリアルタイムでボールをプレーする iOS(iPhone) サッカー スタイルのゲーム (cocos2d と box2D を使用) を作成しています。私は同期に長い間苦労しており、十分にスムーズに行うことができません。

わかりましたので、クライアント/サーバー モデルを使用することにしました。1 つはホスト (サーバー) として選択され、もう 1 つはクライアントです。サーバーとクライアントは、物理を実行し続ける必要があります。そして、クライアントはサーバーの物理を「ミラーリング」するだけです。その結果、サーバーではスムーズなゲームが得られ、クライアント側では実際には非物理的なゲームが得られます -> たとえば、ボールを速く打った後、ボールが上がるように計算されますが、次の更新ではサーバーはまだボールが上がるべきだと考えています。降りる。クライアント側で位置と速度を適切に同期できるように、クロック同期を使用します。ボールを打つなどの物理イベントにクライアント側の予測を使用できないことはわかっています。そして、衝突を適切に検出できるように、両側に物理学を持たせたいと思っています。

誰かがこの問題について彼の経験を共有してくれれば、本当に感謝しています。

4

1 に答える 1

3

ネットワーク経由で同期する必要があるゲーム オブジェクトの物理現象は、かなり難しい問題です。それを避けるのが最善です。

この課題に取り組むほとんどのゲームは、サーバー上でゲームと物理の世界をシミュレートし、クライアントに動きを予測させます。はい、物理オブジェクトの場合でも、通常、サーバーがゲームと物理ワールドの更新された状態を送信するまで、物理シミュレーションを実行するだけです (衝突なし、または少なくとも「ブロック」衝突なし)。

もちろん、サーバーへの接続が速ければ速いほど、ゲームプレイはよりスムーズになります。デバイスサーバーを実行している場合、サーバー プレーヤーに人為的なラグを導入して同じ予測を実行しない限り、常に他のプレーヤーより優位に立つことができます。これはまた、2 つの物理世界を実行し、「サーバー デバイス」で両方を更新することを意味します。

于 2012-10-10T22:22:01.753 に答える