第7回 ネットワークiアプリのためのサーバサイド活用(2):90Xi専用ゲームiアプリ開発講座(2/4 ページ)
今回も引き続き、第5回までに作成した900i専用のトレーディングカードゲームを、ネットワーク対戦に対応させるために、アプリとサーバの間のインタフェースの設計および、実装を行う。
対戦相手を検索する
対戦相手検索の仕様は次の通りとなる。
アプリからPOSTメソッドで送られる値
UTN=ser********* | 端末ID |
ACTION=0 | 状態フラグ(検索) |
まずアプリから、HTTPのPOSTメソッドで、UTNとACTIONという2つのパラメータが送付される。
サーバはUTNをユーザーIDに変換して保持する。ACTIONの値が"0"であった場合、サーバはDBのWAITINGテーブルから、今対戦を待っているユーザーがいるかを検索する。待機中ユーザーがいれば、DUELテーブルを初期設定して、対戦IDを発行し、WAITINGテーブル内の対戦相手情報の対戦IDの項目を埋める。対戦IDを仲立ちさせることによって、互いに誰が対戦相手なのかを知らせるのだ。対戦相手のこれまでの戦績を取得して、アプリに返す。
待機中ユーザーがいなければ、10秒間、WAITINGテーブルの対戦ID情報が変更されるまで待ち続ける。その間に誰かに見つけられたら、DUELテーブルの初期設定と、対戦相手の戦績の取得を行い、アプリに返して終了する。見つけられなければ、エラーとしてアプリに伝える。
期待される返却値
成功時…1/対戦相手の名前/相手の勝数/引分数/負数
失敗時…0
データはURLエンコードした上で、"/"で区切って渡している。
対戦
アプリからPOSTメソッドで送られる値
UTN=ser********* | 端末ID |
ACTION=1 | 状態フラグ(対戦) |
CARD=xx | カードNO. |
アプリからは、端末IDやフラグに併せ、カードの値も送られてくるので、サーバはそれをDUELテーブルに格納する。そのときに現在のターンをDBに反映させておく。ターン番号と対戦IDをキーとして、相手のカード値を検索し、存在すればアプリに返却する。
相手のカード値が存在しない場合、待機状態に入る。待機状態に入って10秒たっても、相手のカード値が更新されない場合、タイムアウトとなり相手のカード値を"-1"としてアプリに返す。この場合、無条件で勝利となる。
期待される返却値
成功時 | 1/相手のカードの値 |
失敗時 | 0 |
Copyright © ITmedia, Inc. All Rights Reserved.