3

私は、マルチプレイヤーゲームの詳細を学ぶために、楽しみのために2Dゲームの作成に取り組んでいます。ゲーム自体は、戦略的なターン制の戦いで2人のプレイヤーの軍隊を互いに戦わせます。私はそれをスタンドアロンのデスクトップクライアントとして開発しています(そして最終的には電話アプリになるかもしれません)。

私はJavaでゲームを書いていますが、クライアントを信頼していないので、セキュリティを考慮に入れています。プレイヤーは、サーバー上に存在する軍隊リストやその他のものを含む個人アカウントを持ちます。さらに、mySQLを使用してこの種のデータをサーバーに保存する予定です。

ただし、これを実装する方法はよくわかりません。Webサーバーのようなものを使用しますか?これは間違っているように見えますが、クライアントが信頼されていないJavaフロントエンドとバックエンドにどのテクノロジーを使用すればよいかわかりません。私はこれを行うための最良の方法についての議論を探しているのではないことに注意してください。概念、おそらくいくつかのサンプルテクノロジー、そしておそらくチュートリアルへのリンクを知る必要があります。

助けてくれてありがとう!

4

2 に答える 2

5

これをブラウザ ゲームにする予定がない限り、Web サーバーを使用するのが最善の方法だとは思いません。

ソケットはあなたが探している答えかもしれません。ソケットを使用すると、クライアントを信頼しない独自の通信プロトコルを作成できます。

サーバーはサーバーソケットを使用し、複数のクライアントを受け入れる必要があります。

クライアント UI にSwingを使用することもできます。

デフォルトの Java Sockets チュートリアルは次のとおりです

たとえば、プロトコルに次のコマンドを含めることができます: (Client to Server) Move(UnitGroup, Point) - グループをポイントに移動することをサーバーに通知すると、サーバーは計算を実行して、移動にかかる時間を決定します。ユニットが到着し、そこに移動し始めます。

(サーバーからクライアントへ) PositionUpdated(UnitGroup, Point) - グループがどこかに移動し、表示を更新する必要がある可能性があることをクライアントに通知します

プロトコルを公開すると、プレイヤーは自分のクライアントを作成して、好きなようにゲームを表示することさえできます。サーバーは、クライアントが「見る」べきものだけを提供することで、公平を保ちます。

ただし、これがレイテンシにどのように影響するかはわかりません。

于 2013-02-05T02:36:57.690 に答える
3

Psetmajの役立つ回答に少し追加するだけです:

ゲーム クライアントとゲーム サーバーは、非常に Java 中心の方法で使用する構造 (リストなど) を処理します。まだ経験していない部分は、これらのコマンドと構造を TCP または UDP でのトランスポート用にパッケージ化し、反対側でアンパックする方法を理解することです。これは、「マーシャリング」(ペイロードをパックする場合) および「デマーシャリング」(アンパックして Java が理解できるものに戻す場合) と呼ばれます。実際、これに関する「難しい」部分は、非常に面倒であり、やり取りするさまざまなメッセージごとに発生する必要があることです。

私のアドバイスは、ヘルパー関数のライブラリに取り組むことです。これは、使用する構造を、ネットワークを介して送受信するときに使用する表現に変換したり、その表現から変換したりする役割を果たします。その表現は、AJAX のようなテキストベースでも、Java の RMI のようなバイナリベースでも、どちらを試してもかまいません。

于 2013-02-05T03:08:19.003 に答える