4

私は現在、Javaで開発および動作しているマルチプレイヤーカードゲームを持っており、コンソールで動作しています。ゲームの形式は、入札プロセスを除いて、ブリッジとスペードに似ています。これは4人用のゲームで、プレーヤーは交代でカードをプレイします。

私は現在、これをブラウザーベースのWebアプリに変換する作業を行っており、Spring MVCを追加し、UIとバックエンドとの通信にHTML、JavaScript、およびAJAXを使用しています。これをAIに対してシングルプレイヤーで機能させ、ユーザーがカードをプレイできるようにし、AJAX呼び出しを使用してサーバーから次の3つのプレイを取得できるようにするために、私が採用したいアプローチについては良い考えがあります。

しかし、これがマルチプレイヤーになるためには、どのようなアプローチを取る必要があるのだろうかと思います。なじみのない「ソケットプログラミング」への言及を見たことがありますが、それらはブラウザベースのアプリではなく、Javaアプレットを中心に展開しているようです。

基本的に、ユーザーがゲームを開始して他の誰かが参加したときに、それらが同じゲームに接続され、お互いのプレイを見ることができるようにするにはどうすればよいですか?マルチプレイヤー機能をサポートするための完全な再設計を避けたいので、シングルプレイヤー用にUIを完全に開発する前に、これを求めています。

4

1 に答える 1

6

マルチプレイヤー ゲームを作成しているため、クライアントが接続するサーバーが少なくとも 1 つ必要です。このブラウザをベースにしたいので、(クライアントの 1 つをサーバーにするのではなく) 独自のサーバーが必要になる可能性が高くなります。ユーザーがゲームに参加すると、そのユーザーがいるサーバーにログオンします。プレーヤーがアクションを実行すると、サーバーはそのアクションを処理し、そのルームに接続されている他の各クライアントに通知を送信します。その時点で、クライアントの UI が更新されます。

以前は、ソケットを開くことができないため、純粋な HTML / JavaScript ではこれを行うことができませんでした。つまり、サーバーはクライアントに通知できませんでした。ただし、HTML5 では、WebSocket を使用して、途中でサーバーで行っていることを実現できるはずです。WebSocket API

ただし、HTML5 の WebSocket を使用したくない場合は、JavaScript で Socket を模倣する別の手法があります。つまり、サーバーはクライアントと通信できます。この手法はロング ポーリングと呼ばれます。クライアントは更新を要求するリクエストをサーバーに送信します。利用可能な更新がない場合、サーバーは更新が利用可能になるまでリクエストを保持し、クライアントに送り返します。クライアントは別の更新リクエストを作成します。簡単なロング ポーリングの例

もう 1 つのオプションとして、Java に精通している場合は、Google Web Toolkitをチェックしてみてください。GWT は、フロント エンド用に HTML および JavaScript にコンパイルされる Java のサブセットであり、必要に応じて、TomCat または別の Web サービスで使用できるサーバー サイド Java 実行可能ファイルを作成します。このオプションでは、Long Polling JavaScript にコンパイルされるソケット スタイルのコードを記述できるライブラリがいくつかあります。

頑張ってください!

于 2012-11-05T17:49:48.193 に答える