私はonline real-time multiplayer game using Google Play Game Service and Cocos2D-X
を開発中です。ゲームには2人のプレーヤーがあり、各プレーヤーが自分のボールをコントロールします。ピアツーピアオンラインマルチプレイヤーゲームでのゲームの同期
各プレーヤーは、own ball’s velocity and position
を他の接続されたデバイスに送信します。私の試合では、すべての物理計算が行われますlocally on each devices
つまり、物理計算後のボールの速度は各デバイスでローカルに計算されます。
問題:高速移動ボールは相手のボールWTH衝突すると
、相手のボールのno change in the movement velocity
があります。 (現実世界の物理学によると、動きの速いボールが相手のゆっくり移動するボールをプッシュすることができるはずです。)
理由:私のコード分析の際
、私は速度が地元の物理学で計算することを理解エンジンは、相手の装置から受信したデータによって上書きされる。
を問題を解決するには、ボール同士の衝突が、私はクライアントとして、サーバや他のデバイスのようなデバイスのいずれかを作成しています発生するたびに:私が試した
ソリューション。すべての物理計算はサーバデバイス上で行われ、データはクライアントデバイスに送信されます。
I以下の質問を持っている:
- 私が試した解決策は、問題を解決する最適なソリューションがありますか?
このような種類の問題を解決するために他にどのような方法を試すことができますか?
このトピックに関するご意見・ご感想はありがとうございます。ありがとうございました。
ありがとうございます。私は、ツールを変更する代わりに、問題の論理的なコーディングソリューションを探しています。あなたのケースでは、 –
あなたが1つのデバイスのサーバを作るなら、サーバデバイスはレイテンシの利益を得て、他のデバイスはそのために苦しむでしょう。 – Karacken
サーバーDBを使用して、すべてのゲームが公正であることを確認する必要があります。あなたはopensourceソリューションhttps://realm.io/products/realm-mobile-database/を試して、あなたのサーバにセットアップすることができます。 – Karacken