Java RMI を使用して「Hearts」マルチプレイヤー ゲームを実装するためのベスト プラクティスは何かを理解しようとしています。
これが私がこれまでに考えたことです:
プレイヤーが要求する一般的なタスク (各プレイヤーにカードを配る、他のプレイヤーにカードを渡す、カードをプレイするなど) のメソッドを備えたリモート インターフェイス。
サーバーには、カードを含む 4 つの Player オブジェクト、現在の効果 (クラブの 2 つを追跡する、ハート カードをゲームにプレイすることが許可されているかどうかなど)、および現在のゲームの状態を定義する変数 (カードが既にプレイされている、現在のスーツがプレイされている) が含まれます。ハートカードをプレイできる場合などに使用されます)。
クライアント インスタンスは、GUI のみを処理します (リモート メソッド呼び出しによって提供される結果に基づいて変化します)。
まだわからないこと:
プレーヤーがカードをプレイした後、他のクライアントと効率的に通信して、アクションが完了した直後に GUI を更新するにはどうすればよいですか? (クライアントがサーバーを呼び出して何かを行う例のみを見つけましたが、その逆ではありません)
各 Player オブジェクトもリモート オブジェクトとして実装する必要がありますか? それともサーバーインスタンスへの通常のオブジェクトだけですか?
スレッドを使用して各クライアントの状態 (プレイ中、他のプレイヤーを待っている、ラウンドの終了など) を制御することは可能ですか? もしそうなら、どうすればこれを行うことができますか?
アプリケーション構造を改善する方法についての提案も歓迎します。