2
ターンベースのクライアントサーバーカードゲーム-ユニキャスト(TCP)またはマルチキャスト(UDP)
私は現在、クライアントがソケットを介して送信されるメッセージを使用してターンベースの同期的な方法でサーバーと通信するカードゲームプロジェクトを作成することを計画しています。私が抱えている問題は、次のシナリオの処理方法です。 (クライアントは順番を取り、そのアクションをサーバーに送信します) クライアントはサーバーにそのターンの動きを伝えるメッセージを送信します(たとえば、テーブルに置く必要があるその手からカード5を再生します) サーバーはメッセージを受信し、ゲームの状態を更新します(サーバーはすべてのゲームの状態を保持します)。 サーバーは接続されたクライアントのリストを反復処理し、状態の変化を通知するメッセージを送信します クライアントはすべてリフレッシュして状態を表示します これはすべてTCPの使用に基づいており、今見てみると、それはObserverパターンのように見えます。これが私にとって問題であるように思われる理由は、このメッセージが他のクライアントのようにポイントツーポイントではないようであり、すべてのクライアントに送信したいためであり、同じメッセージをそのように。 メッセージをすべてのクライアントに送信できるように、UDPでマルチキャストを使用することを考えていましたが、これは、クライアントが理論的に相互にメッセージを送信できることを意味しませんか?もちろん、同期の側面もありますが、これは私が推測しているUDPの上に置くこともできます。 基本的に、このプロジェクトは本当にすべて学習に関するものなので、何が良い習慣になるのかを知りたいと思います。これからパフォーマンスの問題が発生するほど大きくない場合でも、とにかく検討したいと思います。 ただし、メッセージ指向ミドルウェアをソリューションとして使用することに関心がないことに注意してください(MOMの使用経験があり、TCPソケットが不適切な場合はMOMを除く他のオプションを検討することに興味があります!)。