私は、アドホックネットワークとワイヤレスホットスポットの両方で機能する商用PSPレーシングゲームでこれを行いました。(または、必要に応じて、インターネット上の静的サーバーに)
ポイント2のため、システムは最適化に関して複雑である必要はありません
私の経験では、これは正しくありません。ワイヤレスデバイス(特に小型のポータブルデバイス)は、有線ネットワーク接続を備えたコンピューターのようなものではありません。スマートフォンやワイヤレスゲームコンソールは、ゲームの目的で低速のネットワークインターフェイスを持つ傾向があります。
誤解しないでください。それらのスループットは通常良好です(つまり、1秒あたりのデータ量です。映画のストリーミングなどに最適です)。特定のパケットの配信のレイテンシは非常に悪くなる可能性があります。非常に変動しやすいため、個々のパケットが配信されるまでにかかる時間を推定することも困難です。信号が互いに干渉し始めるため、より多くのワイヤレスデバイスが1つの一般的な領域にまとめられているため、この変動はさらに悪化します。この結果、送信する必要があるパケットの数を減らすためにかなりの時間を費やしたので、パケットの衝突が少なくなります。(これは、デバイスがアドホックネットワークを介して直接互いに通信するのではなく、受電ネットワークのホットスポットが関係している場合の問題の多少は少ないことに注意してください)
この種の最適化の例として、私たちのレースゲームは信号機のある世界で行われました。それらの何千もの。また、ネットワークセッションのすべてのプレーヤー間で信号が同期していることを確認する必要がありました。どのライトがどの状態にあるかを知らせるためにパケットを送信するのではなく、すべての信号機に静的なスケジュールを定義し、すべてのクライアントが現在の「ゲーム時間」に同意するようにしました。彼らはすべてゲーム時間を知っており、すべての信号機の状態はゲーム時間から判断できるため、実際に特別なデータを送信することなく、すべての状態データを同期しました。この1つの変更により、ネットワークパフォーマンスに大きな違いが生じました。
とはいえ、複数のワイヤレスデバイス間で信頼できるクロック同期を確立することは(パケット損失が原因でping時間が大きく変動するため)、大きな課題でした。あなたが興味を持っているなら、それについてもっと話して幸せです。
各クライアントは、自分自身と彼の直接の環境に関するデータの信頼できるソース(たとえば、弾丸)になることができます。
これは私たちがやったことであり、私たちの状況(車)でうまく機能しました。もちろん、問題のある部分は、オブジェクトがプレーヤー「b」よりもプレーヤー「a」に近づかなくなったときであり、そのため、その所有権は1つのプレーヤーから別のプレーヤーに移ります。
これは実際にはプレーヤー間の驚くほど複雑な交渉であり、ゲーム 'a'がゲーム 'b'に提案します。そして、ゲーム 'b'は、状況に対する独自の見解に基づいて、受け入れるか、または拒否することができます。「a」と「b」の間の知覚されたゲーム状態の違い、および要求と応答が送信されてから受信されるまでの時間の変化により、これは信頼性を得るために特に厄介な小さな交渉になり、簡単にゲームに変質する可能性があります「ホットポテト」。オブジェクトの所有権が複数のプレイヤー間で絶えず跳ね回ります。そして、ちゃんと動いても、ゲーム「c」の視点から見ると
私の直感は、この種の「オブジェクトの所有権」アプローチは、弾丸のような小さくて寿命の短いオブジェクトには扱いにくい可能性が高いということです。比較的長い間シミュレーションに住んでいたトラフィックカーやAIレーサーに使用しました。クライアントを信頼してもかまわない場合は、よりパフォーマンスの高いアプローチのように思われます。各プレーヤーのゲームに自分の位置と発射物を所有させ、そのプレーヤーが他の誰かの発射物に当たったときに宣言することになります。(「ゲームA」と同様に、私はプレーヤーAとプレーヤーAの発射物がどこにあるかを言う責任がありますが、プレーヤーBは私がプレーヤーBをヒットしたかどうかを言う責任があります)。優れた推測航法を使用すると、このようなシステムからかなり合理的な動作を得ることができるはずです。