0

私はゲーム開発を学んでおり、Android 用のリアルタイム 2 プレーヤー ゲームを作成することを考えていました。次のような 2 つの Android デバイスで 2 人のプレイヤーが同時にゲームをプレイする必要があります: Gurrilla bob

今私が知りたいのは、2 つのデバイスで実行されているゲームを同期させるために、2 つのデバイス間で何をリアルタイムで共有する必要があるかについてのチュートリアルがあることです。ネットワークの実装を知りたくありません。

あれですか

? ゲームは 1 つのメイン デバイスで実行され、画面は他のデバイスで共有され、入力イベントをメイン ゲームに報告するだけです。

2 つのデバイスは、物理的な世界の詳細 (身体の位置、身体にかかる力、身体の位置) または同様のもの (私は推測しています) を共有していますか?

それとも全く違うものですか?

4

1 に答える 1

1

「共有するデータ」の範囲は、希望するセキュリティのレベルによって異なります。大規模マルチプレイヤー オンライン ゲーム (プレイヤー間にサーバーがあるため、これは少し異なります) では、共有されるデータは、最も安全なものから次の範囲に及ぶ可能性があります。

  • ユーザー入力自体。クライアントは、ユーザーが何をしたかをサーバーに送信します。ユーザーは画面をタップして撮影したり、画面をスワイプして移動したりします。サーバーは入力を処理し、それに応答するか (正当な入力である場合)、または応答しないか (変更されている、IE のハックとチート)。これにより、サーバーに多くの作業が発生します。すべての処理はサーバー上で行われ、何がいつ発生したかをすべてのクライアントに報告する必要があります。ただし、すべてではないにしてもほとんどのハッキング/悪意のある入力オプションをブロックし、ゲームを非常に安全にします.

最も不安な方へ

  • ユーザー入力の結果: クライアント自体が入力を処理し、入力が引き起こした結果とその結果をサーバーに報告します。例えば、ユーザーが撃つために画面をタップした場合、クライアントは弾丸の方向を計算し、「この時点でその方向に弾丸を撃った」をサーバーに送信します。これにより、クライアントは誤った情報を送信できます - クライアントは「I shot 100 bullets」を送信できます。これは、プレイヤーがチートしないようにするために、サーバーに多くのチェックを追加する必要があることを意味します

さて、あなたは MMO についても、セキュリティが重要なゲームについても話していないので (結局のところ、それは Android 上で実行され、アプリケーションをハッキングする方法を知っている人はほとんどいません。とにかくそれを公開しようとしていませんでした) 、 必要ないのにそこまで書くのはちょっとばかげていると思いますが、少しでもわかっていただければ幸いです。

問題に戻る - 特に電話での 2 人用ゲームについて話す場合、リアルタイムとネットワークの効率が最も重要な要素です。したがって、ストリーミングビデオはそれほど高速ではないか、ネットワーク効率が悪いため、「画面の共有」のオプションを削除できます.

最良の解決策は、両方のデバイスが入力に応答し、結果を相互に送信することだと思います。このようにして、ユーザーは待ち時間を経験しないか、ほとんど経験しません。遅延が引き起こす可能性のある特殊なケースを処理する必要があります (たとえば、シューティング ゲームについて話すとき - プレーヤー A がプレーヤー B を撃って殺した場合、プレーヤー B は遅れてその結果を受け取るのに 5 秒かかり、その間彼の死の前に彼はプレイヤー A を撃ち殺した場合、プレイヤー A は死ぬべきではありません。)

于 2013-07-09T16:06:18.910 に答える