2011-12-18 4 views
1

を変更し、私は私のゲームがローカルに軌道に乗ることができると私はそれに多数のオブジェクトや動作を追加することができます。アプレットのゲーム更新画面ネットワークgamestate私は現在、シンプルgameloopについての記事を、次の午前

資料では、このです:http://www3.ntu.edu.sg/home/ehchua/programming/java/J8d_Game_Framework.html

私のゲームは他のプレイヤーには、いくつかの単純な四角形を変更することができ、グリッド、です。これは最速の方法である必要はありませんが、何とか私のサーバーに接続する新しいスレッドが必要で、画面に描画されるgamestateを変更します。アプレットスレッドをハングさせることなく、実装方法を知ることができません。

誰かがこの解決策を見ることができますか?

答えて

2

あなたがスレッドの問題を抱えている、またはあなたがどのようにサーバとクライアント間の通信を設計するために求めていますか?通信の問題については

は、ここでは単純なアプローチです:サーバが定期的かどうかを常に接続されているTCP接続を介して、または単に定期的な昔ながらの信頼性のないUDPパケット、各プレイヤーの更新を送信しています。どちらを使用するかは、アプリケーション要件によって異なります。 TCPとUDPの違いについて読んでください - SO(単なる検索)を含む多くの場所があり、トレードオフについて議論しています。サーバーの状態を更新した後、サーバーにスクリプトの状態を従わせることでこれが動作することを確認すると、別の方法でデータを送信することもできます。あなたのアプリケーションに応じて、プレーヤーの行動についてサーバに嘘をつけることができるかどうか、セキュリティについて注意する必要があります。

Javaでは、接続はしばしばSocketクラスまたはServerSocketクラス、またはDatagramPacketおよびDatagramSocketクラスです。

+0

それは明確ではありませんでした申し訳ありません。私はクライアントの設計方法を尋ねています。私はサーバーを持っていて、telnetのような簡単なツールで状態を操作したり更新したりすることができます。しかし、私はGUIを使ってクライアントをどのように設計すべきか、本当に分かりません。 –

+0

あなたはどんな問題を抱えていますか?データを受け取ったときに画面を更新する必要がありますが、それには時間がかかりますし、画面を再描画している間に他の更新を見逃したくないのですか? – Gravity

+0

私はシステムの設計方法を理解する助けが必要です。私は、サーバーからgamestateについての情報を取得し、スレッドが必要だと思うし、それがgamestateを取得したときに、それが何らかの形でアプレットを伝える必要があります:ねえ、私はあなたのための更新プログラムを持って、これを描画してください。 私は描画中に更新を見逃したくありません。 –

1

アプレットスレッドをハングさせることなく、実装方法がわかりません。

ActionListenerを実装して、サーバーのアップデート/チェックを実行します。 Swing Timerを使用してループ内のリスナーを呼び出します。詳細は、How to Use Swing Timersを参照してください。

+0

それは、ゲームが変更されたデータがあるときはいつも、x回だけ更新するのではないでしょうか? –

+0

ゲームのデザインによって異なります。例えば。サーバーが新しいコマンドを送信するまで「敵の船」が特定の方向に移動し続ける場合、アプレットは別の方法で指示されるまで船を移動させ続けることができます。ゲームが何をしているのか、それがどのように機能するのかについては、拡張することをお勧めします。 –

関連する問題