学校プロジェクトでは、Javaでマルチプレイヤーゲームを作成することになっています(クライアント/サーバーでなければなりません)。宿題ではない)。ゲームは順番に行われますが、リアルタイムでチャットが行われる必要があります。しかし、私たちの誰もネットワークプログラミングの経験はありません。私が読んだことが多くなればなるほど、私の持つ疑問が増えています。Javaマルチプレイヤーゲーム - ネットワーキングの概念
私の最初の考えは、マルチプレイヤー部分を実装するためにソケットAPIを使用することでした。サーバーは、クライアントからの新しいデータを待ちます。ただし、チャットメッセージや移動などのように、受信するデータは複数あります。また、サーバーへの接続が確立されると、プレーヤー名などの初期データが送信される必要があります。サーバーは受信したメッセージの種類を確認できるはずですが、どうすればよいでしょうか?私は文字列フィールドtype
でクラスMessage
を作成することを考えていました。しかし、私のサーバーコードで、私はこのようなコードを取得します:
は(とがあるでしょう)送信するデータの種類が多い場合には、これが最も効率的な方法のようには見えません。また、これは、サーバーとクライアントの両方がこのMessage-class/interface(重複コード)を持つ必要があることを意味します。
他のゲームの内容はどうですか?例えば、プレイヤ1は、キャラクタを他のキャラクタを倒す位置に移動させる。プレーヤ1のクライアントは、この敗北を計算し、正しい動作を適用する。しかし、何をサーバーに送るべきですか?新しい選手の位置だけでなく、敗北か?最初のオプションでは、他のすべてのクライアントが計算を行う必要があることを意味します。これは何のトラブルを引き起こすことはできませんでしたか?私は以前のネットワークプログラミング経験がないので、これらのことをどうやって行うのかちょっと混乱しています。
私はここでもStackoverflowの別のスレッドでRMIが良い選択肢かもしれないと読んでいます。これに関するいくつかの情報を読んで、私はRMIが何であるかを理解していますが、それがこのプロジェクトにとって良い選択かどうかまだ分かりません。これについてのヒント?
ご覧のとおり、私はこのプロジェクトのネットワーキングの部分から始めるには少し混乱します。私はいくつかのゲームプログラミングブック(Java forcourse用)を検索しましたが、それらのどれもネットワーキングの部分に焦点を当てていません。私はJavaネットワーキングブックも検索しましたが、これは良いコードプラクティスではなく、技術に焦点を当てているようです。
誰かが良い本を知っていたり、適切な服薬についてアドバイスをいただければ、大変感謝しています。
おかげ
"...これを学校でプログラミングするので、 。クラシック。 – CPerkins
少なくとも彼はコードを望んでいません。 –
@CPerkins:私たちはこのプロジェクトを学校でやっています。私は誰にも私の仕事をするよう求めているわけではなく、単にこれをどうやって実装するのかアドバイスを求めるだけです。 – Bv202