ゲームのフレームワーク

フレームワークなので、ゲーム共通機能として以下の機能を実装します。

  • ロビーへ入室

サーバとの接続を開始。

Cometの場合は、HttpServletRequest#startAsync()で取得するAsyncContextオブジェクトを、WebSocketの場合は、クライアントからのSessionオブジェクトを保持する。

ロビーに入室している間は、メンバーのロビーへの入退室、ルームの作成削除通知を受け取ることができる。

  • ルームへ入室

入室パターンは以下の3種類。

  1. ルームを作成して入室する
  2. 指定したルームに入室する
  3. 入室可能なルームがあれば入室する、なければ作成して入室する

3は、ゲームでよくあるオートマッチング。

どうマッチングするか(メンバーのレベル等)はゲーム次第なので、拡張できるように考慮が必要。

ルームに入室している間は、メンバーのルームへの入退室、メンバーからの通知を受け取ることができる。

  • ルームでの操作

ゲーム次第なので、各ゲームで実装。

チャット機能は共通で使えそうなので、フレームワーク側で実装しておく。

発言があったら、ルームの全メンバーに通知する感じ。

  • ルームから退室

ルームから退室して、ロビーに戻る。

  • ロビーから退室

サーバとの接続を終了。

Cometの場合は、保持していたAsyncContextオブジェクトをcompleteして破棄、WebSocketの場合は、保持していたSessionオブジェクトを破棄する。

そして、このフレームワークをServletまたはServerEndPointから呼び出す。

そんなイメージで進めていきます。

スポンサーリンク
レクタングル大1
レクタングル大1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大1