Android上のクライアントサーバーゲームのJavaコード


8

Androidでゲームを開発しました。今、それをwifiまたは3Gで再生したいと思います。クライアント(モバイル)からサーバーに送信し、次に別のクライアント(モバイル)に送信したいゲームパケットがあります。

playPacketsをサーバーに継続的に送信し、playPacketをサーバーからクライアントに継続的に受信するコードをJavaで作成する方法がわかりません。

送信用と受信用の2つのスレッドを使用する必要があると思います。

誰かがコード、またはコードを書く手順を手伝ってくれませんか?

回答:


2

最初から始めましょう。私はあなたが何をしていてどのようにしているかはわかりませんが、ネットワークを使用する場合は、リアクターパターンを試す必要があります。

基本的に reactorは、スレッドの使用を回避したり、スレッド化されたタスクがコアによってより分離されている場合はそれを延期する方法です。

リアクタの中心はselect関数です。イベントソースを登録し、それらのソースの1つで何かが発生したときにselectに戻るように要求します

ときに何かを付加し原子炉メインループは、単に見つかっappened何どのようなソース作成することにより、反応イベントおよびイベントのこれらの種類に興味のオブジェクトにこのイベントを送出します。

私はJavaの達人ではありませんが、ソケット(UDPのものも含む)をセットアップでき、それらを非ブロッキングとして設定できることを知っています。これに沿って、NIOというパッケージにSelectorというクラスがあることを知っています。これらのものは、多重化されたノンブロッキングI / O機能を定義することに同意します

必要なのは、2つのUDPチャネルをセットアップすることだけです。1つはサーバーリスニング用、もう1つはサーバートーキング用です。リスニングするものをリアクターに登録し、リアクターの反応ステップをメインループに統合します。

この種類のアプローチを使用すると、さまざまなチャネルと同時に接続できるため、ピアツーピアゲームの開発を検討できます(サーバーのボトルネックや分散型のデザインはありません...いいですね!)

PS

何らかのGUIの手段/機能を使用している場合は、おそらくすでにReactorを使用していることに注意してください...


1

学習が容易で、Javaゲーム開発で頻繁に使用/参照されるため、クライアント/サーバープログラミングの良いスタートはkryo netです。そのイベントベースなので、ここではスレッドは必要ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.