以下、図面を参照しつつ、本発明の様々な実施形態について説明する。ただし、本発明の技術的範囲はそれらの実施形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
(1)本実施形態の概略
本実施形態では、ユーザは、予めゲームシステムに登録された複数のゲーム媒体から構成されるゲーム媒体群を使用するゲームを実行する。ゲーム媒体とはゲームに使用されるデジタルコンテンツのことをいう。本実施形態では、ゲーム媒体としてカードを使用し、ゲーム媒体群として複数のカードから構成されるカード群であるデッキを使用するゲームについて説明する。携帯端末は、ユーザの操作に応じて、デッキを変更するとともに変更履歴に記憶し、携帯端末が振られた場合は、デッキの状態を、変更履歴に記憶された特定の状態に復元する。これにより、デッキを使用するゲームを実行するユーザが端末を操作する際のUXを向上させることを図る。なお、「デッキの状態」とは、デッキを構成するカード及びそのカードの配置の状態を意味する。また、本実施形態では、「デッキを変更する」ことの例として、デッキを構成するカードの配置を変更することについて説明する。
(2)ゲームシステム1の構成
図1は、ゲームシステム1の概略構成の一例を示す図である。
ゲームシステム1は、少なくとも一台の携帯端末2と、サーバ3とを備える。携帯端末2とサーバ3とは、通信ネットワークを介して相互に接続され、例えば、基地局4、移動体通信網5、ゲートウェイ6、及びインターネット7を介して相互に接続される。携帯端末2で実行されるプログラム(例えば、閲覧プログラム)と、サーバ3で実行されるプログラム(例えば、ゲームプログラム)とは、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol, HTTP)等の通信プロトコルを用いて通信を行う。
(2.1)携帯端末2の構成
図2(a)は、携帯端末2の概略構成の一例を示す図である。
携帯端末2は、基地局4、移動体通信網5、ゲートウェイ6、及びインターネット7を介してサーバ3に接続し、サーバ3と通信を行う。携帯端末2は、複数のゲーム媒体から構成されるゲーム媒体群を使用するゲームを実行するとともに、そのゲーム媒体群を編成する。前述したように、ゲーム媒体とは、ゲームに使用されるデジタルコンテンツのことをいい、例えば、カード、フィギア、アバター、アイテム等である。本実施形態では、携帯端末2は、ゲーム媒体として予めゲームシステムに登録されたカードを使用し、ゲーム媒体群として複数のカードから構成されるカード群であるデッキを使用するゲームを実行する。携帯端末2は、操作部23を介したユーザの操作に応じて、デッキの状態を変更するとともに、変更履歴に記憶する。また、携帯端末2は、携帯端末2の振動を検出すると、デッキの状態を、変更履歴に記憶された特定の状態に復元する。そのために、携帯端末2は、端末通信部21と、端末記憶部22と、操作部23と、表示部24と、加速度センサ25と、端末処理部26とを備える。
なお、本実施形態では、携帯端末2として、多機能携帯電話(所謂「スマートフォン」)を想定するが、本発明はこれに限定されるものではない。携帯端末2は、本発明が適用可能であればよく、例えば、携帯電話(所謂「フィーチャーフォン」)、携帯情報端末(Personal Digital Assistant, PDA)、携帯ゲーム機、携帯音楽プレーヤ、タブレットPC等でもよい。
端末通信部21は、所定の周波数帯を感受帯域とするアンテナを含む、通信インターフェース回路を備え、携帯端末2を無線通信ネットワークに接続する。端末通信部21は、基地局4により割り当てられるチャネルを介して、基地局4との間でCDMA(Code Division Multiple Access)方式等による無線信号回線を確立し、基地局4との間で通信を行う。そして、端末通信部21は、端末処理部26から供給されたデータをサーバ3等に送信する。また、端末通信部21は、サーバ3等から受信したデータを端末処理部26に供給する。
端末記憶部22は、例えば、半導体メモリ、磁気ディスク装置、又は光ディスク装置のうちの少なくともいずれか一つを備える。端末記憶部22は、端末処理部26での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、端末記憶部22は、ドライバプログラムとして、操作部23を制御する入力デバイスドライバプログラム、表示部24を制御する出力デバイスドライバプログラム等を記憶する。また、端末記憶部22は、アプリケーションプログラムとして、ユーザの指示に従ってデッキにおけるカードの構成を作成し、変更し、復元する閲覧プログラム等を記憶する。また、端末記憶部22は、データとして、デッキの過去の状態を記憶する変更履歴を管理する履歴管理テーブル(図2(b))、デッキを構成するカード等に係る表示データ、映像データ、画像データ等を記憶する。なお、前述したように、「デッキの状態」とは、デッキを構成するカード及びそのカードの配置の状態を意味する。さらに、端末記憶部22は、所定の処理に係る一時的なデータを一時的に記憶してもよい。
図2(b)には、デッキの過去の状態を記憶する変更履歴を管理する履歴管理テーブルが示されている。履歴管理テーブルは、各変更履歴について、当該変更履歴の識別番号(以下、履歴IDと称する)、当該変更履歴自体等を記憶する。なお、変更履歴として、先頭にデッキの初期状態が記憶され、以降、デッキの状態を変更した各時点での、デッキの変更後の状態が記憶される。または、変更履歴として、先頭にデッキの初期状態が記憶され、以降、直前の時点での状態からの変更内容が記憶されてもよい。
操作部23は、携帯端末2の操作が可能であればどのようなデバイスでもよく、例えば、タッチパッド、キーボード等である。ユーザは、操作部23を用いて、文字、数字等を入力することができる。操作部23は、ユーザにより操作されると、その操作に対応する信号を発生する。そして、発生した信号は、ユーザの指示として、端末処理部26に供給される。
表示部24も、映像、画像等の表示が可能であればどのようなデバイスでもよく、例えば、液晶ディスプレイ、有機EL(Electro−Luminescence)ディスプレイ等である。表示部24は、端末処理部26から供給された映像データに応じた映像、画像データに応じた画像等を表示する。
加速度センサ25は、加速度センサ25に加わる加速度を3軸方向毎に検出するセンサである。加速度センサ25は、例えば、ピエゾ抵抗効果を利用したピエゾ抵抗型の3軸加速度センサ、又は静電容量の変化を利用した静電容量型の3軸加速度センサとすることができる。加速度センサ25は、端末処理部26からの要求に応じて、携帯端末2の画面の水平方向(X方向)、垂直方向(Y方向)及び画面に対して直交する方向(Z方向)の加速度を示す加速度情報を一定時間(例えば、10msec)ごとに出力する。なお、加速度センサ25の代わりに、携帯端末2の回転角速度を検出するジャイロセンサを利用し、加速度情報の代わりに回転角速度を示す回転角速度情報を一定時間ごとに出力してもよい。
端末処理部26は、一又は複数個のプロセッサ及びその周辺回路を備える。端末処理部26は、携帯端末2の全体的な動作を統括的に制御するものであり、例えば、CPU(Central Processing Unit)である。端末処理部26は、携帯端末2の各種処理が端末記憶部22に記憶されているプログラム、操作部23の操作、加速度センサ25からの加速度情報等に応じて適切な手順で実行されるように、端末通信部21、表示部24等の動作を制御する。端末処理部26は、端末記憶部22に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、端末処理部26は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
(2.1.1)端末処理部26の構成
端末処理部26は、少なくとも閲覧実行部261を備える。閲覧実行部261は、ゲーム実行部262と、デッキ作成部263と、デッキ変更部264と、デッキ復元部265と、振動検出部266とを含む。これらの各部は、サーバ処理部33が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとしてサーバ3に実装されてもよい。
閲覧実行部261は、操作部23を介したユーザからの指示に応じて、特定の表示データの取得要求を端末通信部21を介してサーバ3に送信する。また、閲覧実行部261は、対応する表示データを、サーバ3から端末通信部21を介して受信する。閲覧実行部261は、受信した表示データに基づいて描画データを作成する。即ち、閲覧実行部261は、受信した表示データを解析して制御データ及び内容データを特定し、特定した制御データに従って同じく特定した内容データをレイアウトし、描画データを作成する。そして、閲覧実行部261は、作成した描画データを表示部24に出力する。表示データは、例えばHTML5(HyperText Markup Language 5)、CSS3(Cascading Style Sheets 3)、及びJavaScript(登録商標)等の言語を利用して作成することができる。
ゲーム実行部262は、操作部23を介したユーザからの指示に応じて、サーバ3により提供されるゲームを実行する。ゲーム実行部262は、操作部23を介してユーザからゲームの開始指示を受け付けると、さらに操作部23を介してユーザからユーザID及びパスワードを受け付け、受け付けたユーザID及びパスワードを含むユーザ認証要求を端末通信部21を介してサーバ3に送信する。サーバ3が認証処理に成功すると、ゲーム実行部262は、端末通信部21を介してサーバ3から取得したゲーム画面を表示部24に表示するとともに、操作部23を介してユーザからの操作を受け付け、以降、そのゲームのための処理を実施する。
デッキ作成部263は、操作部23を介したユーザからの指示に応じて、ユーザが所有する所有カードを表示する所有カード画面を表示部24に出力する。そのために、デッキ作成部263は、所有カード画面に係る表示データの取得を要求する所有カード表示データ取得要求を端末通信部21を介してサーバ3に送信する。所有カード表示データ取得要求には、そのユーザのユーザIDが含まれる。デッキ作成部263は、対応する表示データを端末通信部21を介してサーバ3から取得し、取得した表示データに基づいて描画データを作成し、作成した描画データを表示部24に出力する。
サーバ3から送信される表示データには、内容データとして、サーバ3に記憶されたそのユーザが所有する所有カードについての識別番号(以下、カードIDと称する)、攻撃力、守備力等のカードの特徴を表す特徴情報、画像データ等が含まれ、制御データとして、各カードについての情報を表示するための情報が含まれる。
デッキ作成部263は、操作部23を介してユーザから、デッキ内の各位置へ配置するカードの指定を受け付けて、デッキを作成し、作成したデッキの構成を示すデッキ構成情報を端末通信部21を介してサーバ3に送信する。デッキ構成情報には、デッキ内の各位置と、その位置に配置されたカードのカードIDとが関連付けて示される。なお、デッキの作成には、デッキ内においてカードがまだ配置されていない位置にカードを配置することと、カードが既に配置されている位置に他のカードを配置して、カードを交換することとが含まれる。
デッキ変更部264は、操作部23を介したユーザからの指示に応じて、作成したデッキを変更するデッキ編成画面を表示部24に出力する。そのために、デッキ変更部264は、デッキ編成画面に係る表示データの取得を要求するデッキ表示データ取得要求を端末通信部21を介してサーバ3に送信する。デッキ表示データ取得要求には、そのユーザのユーザIDが含まれる。デッキ変更部264は、対応する表示データを端末通信部21を介してサーバ3から取得し、取得した表示データに基づいて描画データを作成し、作成した描画データを表示部24に出力する。
サーバ3から送信される表示データには、内容データとして、そのユーザのデッキ内の各位置ごとに、その位置に配置されたカードのカードID、特徴情報及び画像データ等が示され、制御データとして、その内容データを表示するための情報が含まれる。
また、デッキ変更部264は、ゲーム媒体群変更部の一例であり、操作部23を介したユーザの操作に応じて、デッキを変更する。以下では、「デッキを変更する」ことの例として、デッキを構成するカードの配置を変更することについて説明する。デッキ変更部264は、デッキ変更処理を開始する時に、そのデッキについてのデッキ構成情報を作成し、デッキを構成するカードが変更されるごとにその変更にあわせてデッキ構成情報を変更する。そして、デッキ変更部264は、デッキ変更処理が完了した時に、変更されたデッキについてのデッキ構成情報をそのユーザのユーザIDと関連付けて端末通信部21を介してサーバ3に送信する。
デッキ変更部264は、操作部23によって、デッキを構成するカードのうちの二つのカードがタップされた場合、タップされた二つのカードの位置を交換する。また、デッキ変更部264は、操作部23によって、デッキを構成するカードのうちの一つのカードが、他のカードの位置までスライドされた場合、その一つのカードと他のカードの位置を交換する。
まず、デッキ変更部264は、操作部23を介したユーザのタップ操作に応じて、タッチパネルが接触を感知し始めた位置である始点(touch1)を示す始点位置情報を操作部23から取得する。また、デッキ変更部264は、操作部23から始点位置情報を取得した時刻を、接触を感知し始めた時刻(time1)を示す始点時刻情報として取得する。デッキ変更部264は、始点(touch1)がデッキにおけるカードのうちのどのカードの表示領域内に位置するかを判定し、始点が表示領域内に位置するカードを入れ替え対象カードとして特定する。次に、デッキ変更部264は、現在、ユーザのスライド操作に応じた接触を感知している位置である現在位置(touch2)を示す現在位置情報を操作部23から取得する。また、デッキ変更部264は、操作部23から現在位置情報を取得した時刻を、現在時刻(time2)を示す現在時刻情報として取得する。
なお、始点位置情報及び現在位置情報により示される位置は、例えば、表示部24の画面の左上を基準(すなわち、(x ,y ,z)=(0, 0, 0))としたときの水平方向の位置を示すx座標及び垂直方向の位置を示すy座標の値で表される。デッキ変更部264は、例えば、JavaScript(登録商標)のtouchmoveイベントを利用することにより、始点位置情報、始点時刻情報、現在位置情報及び現在時刻情報を取得できる。また、デッキ変更部264は、getComputedStyleメソッドを利用することにより、カードの表示領域に関する情報(幅(width)、高さ(height)、水平方向に隣接するカードの表示領域との間の余白(margin1)、垂直方向に隣接するカードの表示領域との間の余白(margin2)等)を取得できる。
次に、デッキ変更部264は、現在位置情報に示される位置と始点位置情報に示される位置から、始点から現在位置までの移動距離(distance1)を算出する。また、デッキ変更部264は、現在時刻情報に示される時刻から始点時刻情報に示される時刻を減算し、携帯端末が接触を感知している接触時間(time3 = time2 - time1)を算出する。デッキ変更部264は、移動距離(distance1)が所定距離(例えば、40pixel)以上である場合、又は接触時間(time3)が所定時間(例えば、400msec)以上である場合、ユーザによりカードのスライド操作がされたと判定する。一方、デッキ変更部264は、移動距離(distance1)が所定距離以上、又は接触時間(time3)が所定時間以上になる前に、ユーザの接触を感知し終えた場合、スライド操作がされなかったと判定する。
デッキ変更部264は、スライド操作がされたと判定すると、そのスライド操作に応じて入れ替え対象カードの表示位置を移動させる。なお、デッキ変更部264は、css3のwebkitTransform = translate3d(x, y, z)を利用して、入れ替え対象カードの表示位置を移動させることができる。
そして、デッキ変更部264は、ユーザのスライド操作に応じた接触を感知し終えた位置である終点(touch3)を示す終点位置情報を操作部23から取得する。デッキ変更部264は、終点(touch3)がデッキにおけるカードのうちのどのカードの表示領域内に位置するかを判定し、終点が表示領域内に位置するカードを入れ替え先カードとして特定する。
例えば、終点(touch3)のx座標から始点(touch1)のx座標を減じた差分値が「(幅(width)+水平方向の余白(margin1))×(1/2+n)」以上であり、且つ「(幅+水平方向の余白)×(3/2+n)」未満である場合、水平方向において入れ替え対象カードのn個右側に位置するカードが入れ替え先カードとなる。一方、差分値が「(幅+水平方向の余白)×(−1/2−n)」より大きく、且つ「(幅+水平方向の余白)×(1/2+n)」未満である場合、水平方向において入れ替え対象カードと同じ位置に位置するカードが入れ替え先カードとなる。また、差分値が「(幅+水平方向の余白)×(−1/2−n)」以下であり、且つ「(幅+水平方向の余白)×(−3/2−n)」より大きい場合、水平方向において入れ替え対象カードのn個左側に位置するカードが入れ替え先カードとなる。
同様に、終点(touch3)のy座標から始点(touch1)のy座標を減じた差分値が「(高さ(height)+垂直方向の余白(margin2))×(1/2+n)」以上であり、且つ「(高さ+垂直方向の余白)×(3/2+n)」未満である場合、垂直方向において入れ替え対象カードのn個下側に位置するカードが入れ替え先カードとなる。一方、差分値が「(高さ+垂直方向の余白)×(−1/2−n)」より大きく、且つ「(高さ+垂直方向の余白)×(1/2+n)」未満である場合、垂直方向において入れ替え対象カードと同じ位置に位置するカードが入れ替え先カードとなる。また、差分値が「(高さ+垂直方向の余白)×(−1/2−n)」以下であり、且つ「(高さ+垂直方向の余白)×(−3/2−n)」より大きい場合、垂直方向において入れ替え対象カードのn個上側に位置するカードが入れ替え先カードとなる。
そして、水平方向及び垂直方向の両方において入れ替え対象カードと同じ位置に位置するカードが入れ替え先カードとなる場合は、デッキ変更部264は、カードの配置を交換しない。
一方、デッキ変更部264は、スライド操作がされなかったと判定すると、入れ替え対象カードが選択されたことをユーザが判別できるように、入れ替え対象カードを他のカードと異ならせて表示(例えば、カードの枠を強調表示)する。そして、デッキ変更部264は、操作部23を介したユーザの新たなタップ操作に応じて、タッチパネルが接触を再度感知し始めた位置である第2始点(touch4)を示す第2始点位置情報を操作部23から取得する。デッキ変更部264は、第2始点(touch4)がデッキにおけるカードのうちのどのカードの表示領域内に位置するかを判定し、第2始点が表示領域内に位置するカードを入れ替え先カードとして特定する。
デッキ変更部264は、入れ替え先カードを特定すると、入れ替え対象カードと入れ替え先カードの配置を交換する。つまり、デッキ変更部264は、デッキ構成情報において、入れ替え対象カードに関連付けられていた位置に入れ替え先カードのカードIDを関連付け、入れ替え先カードに関連付けられていた位置に入れ替え対象カードのカードIDを関連付ける。デッキ変更部264は、例えば、JavaScript(登録商標)のreplaceChildメソッドを利用することにより、二つのカードの配置を交換することができる。
デッキ変更部264は、デッキを変更するごとに、端末記憶部22の履歴管理テーブルに変更履歴を記憶する。デッキ変更部264は、操作部23を介したユーザの操作に応じて、デッキを変更する処理を開始するときのカードの状態を、そのデッキの初期状態として履歴管理テーブルの先頭に記憶し、他の領域をクリアする。そして、デッキ変更部264は、デッキを変更した場合に、デッキの変更後の状態、つまり変更後のデッキ構成情報を変更履歴として端末記憶部22に記憶する。つまり、デッキ変更部264は、過去の状態として、デッキの一つ前の状態を端末記憶部22に記憶する。なお、デッキ変更部264は、直前の時点でのデッキの状態からの変更内容(例えば、入れ替え対象カードと入れ替え先カードを交換したこと)を変更履歴として記憶してもよい。
図3(a)、(b)は、表示部24に表示されるデッキ編成画面の一例を示す図である。
図3(a)は、デッキ編成画面の初期画面300を示す。図3(a)に示されるように、初期画面300には、複数のデッキのうちの一つを選択するための選択ボタン301と、選択されたデッキを構成する各カード302と、選択されたデッキについて特定の制御を実行する制御ボタン303と、デッキ編成画面の表示を終了させる「戻る」ボタン304が表示される。なお、図3(a)に示す初期画面300では、選択ボタン301のうちデッキ1に係る選択ボタンが選択されている。
図3(a)に示されるゲームでは、ユーザごとに、三つのデッキを設定することが可能であり、選択ボタン301がタップされると、タップされた選択ボタン301に対応するデッキを構成するカード302が表示され、そのデッキを変更することが可能となる。ユーザは、設定された三つのデッキのうちの一つを用いて、ゲームにおける戦闘等の特定の処理を実行できる。
また、図3(a)に示されるゲームでは、各デッキは、縦2列、横5列の合計10枚のカードで構成され、位置ごとに異なる特徴を持つ。例えば、上側の列に配置されたカードは敵からの攻撃を受けやすいが、敵を攻撃しやすく、一方、下側の列に配置されたカードは敵からの攻撃を受けにくいが、敵を攻撃しにくいという特徴を持つ。同様に、左右方向の中央に配置されたカードは敵からの攻撃を受けやすいが、敵を攻撃しやすく、一方、両端に配置されたカードは敵からの攻撃を受けにくいが、敵を攻撃しにくいという特徴を持つ。
また、制御ボタン303には、デッキの構成をコンピュータに自動的に決定させるための「自動編成」ボタンと、デッキ内のカードの並び替えを実施するための「並び替え」ボタンと、デッキの構成を他のデッキの構成と同一にするための「コピー」ボタンとが表示される。さらに、制御ボタン303には、デフォルトで使用するデッキを設定するための「メインに設定」ボタンと、デッキを削除するための「デッキを削除」ボタンと、デッキの名称を変更するための「デッキ名を変更」ボタンとが表示される。
図3(b)は、デッキを編集するための編集画面310を示す。図3(a)に示される編集画面300において「並び替え」ボタンがタップされると、編集画面310が表示され、デッキにおけるカードの並び替えが可能となる。編集画面310では、「並び替え」ボタンは、カードの並び替えが完了したことを指定するための「完了」ボタンに変更され、「完了」ボタン以外の各ボタンは、アクティブでないことを表すように変更されてユーザによる選択ができなくなる。デッキ変更部264は、「並び替え」ボタンがタップされた時に、そのデッキについてのデッキ構成情報を作成する。
図4(a)、(b)は、タップ操作によるデッキの変更について説明するための図である。
図4(a)の編集画面310は、カードの配置の初期状態を示している。図4(a)に示されるように、編集画面310において、まずカード311がタップされ、次にカード312がタップされると、図4(b)に示されるように、カード311とカード312の配置が交換される。この時、デッキ変更部264は、デッキ構成情報を更新し、変更履歴として端末記憶部22に記憶する。
図5(a)、(b)は、スライド操作によるデッキの変更について説明するための図である。
図5(a)の編集画面310は、図4(b)に示した、タップ操作によるカードの配置の交換後の編集画面を示している。図5(a)に示されるように、編集画面310において、カード311がカード313の位置までスライドされると、図5(b)に示されるように、カード311とカード313の配置が交換される。この時も、デッキ変更部264は、デッキ構成情報を更新し、変更履歴として端末記憶部22に記憶する。
以下、図5(b)を用いて、図5(b)に示す各カードの「幅(width)+水平方向の余白(margin1)」が60pixelであり、「高さ(width)+垂直方向の余白(margin2)」が80pixelである場合を例に、デッキ変更部264のカード交換の判定例を示す。デッキ変更部264は、上記した始点(touch1)が上列の最も左側に位置するカード312の表示領域内にあり、終点(touch3)までの水平方向の移動距離が+30pixel以上且つ+90pixel未満であり、垂直方向の移動距離が+40pixel未満である場合、カード312をカード312の右隣のカード321と交換する。一方、デッキ変更部264は、水平方向の移動距離が+90pixel以上且つ+150pixel未満であり、垂直方向の移動距離が+40pixel未満である場合、カード312をカード312の二つ右隣のカード322と交換する。また、デッキ変更部264は、水平方向の移動距離が-30pixel超且つ30pixel未満であり、垂直方向の移動距離が+40pixel以上である場合、カード312をカード312の下隣のカード323と交換する。
図4(b)又は図5(b)に示されるように、カードの配置が変更され、「完了」ボタンがタップされると、デッキ変更部264は、そのデッキについての最新のデッキ構成情報を端末通信部21を介してサーバ3に送信する。
デッキ復元部265は、ゲーム媒体群復元部の一例であり、振動検出部266による携帯端末2の振動の検出結果に基づいて、デッキを、端末記憶部22の履歴管理テーブルに記憶された過去の状態に復元する。
デッキ復元部265は、所定時間(例えば、3秒)内に、振動検出部266から携帯端末2の振動を検出したことが一回通知された場合、履歴管理テーブルに記憶された変更履歴に基づいて、デッキを現在の状態の一つ前の状態に復元する。一方、デッキ復元部265は、所定時間内に、振動検出部266から携帯端末2の振動を検出したことが所定回数(例えば1回より多い回数であり、例えば3回)以上通知されると、デッキを初期状態に復元する。初期状態とは、操作部23を介してユーザにより「並び替え」ボタンがタップされ、デッキ変更部264がデッキを構成するカードの変更処理を開始した時点の状態を意味する。なお、デッキ復元部265は、振動検出部266から携帯端末2の振動を検出したことが一回通知された場合も、デッキを構成するカードを初期状態に復元してもよい。デッキ復元部265は、例えば、JavaScript(登録商標)のremoveChildを利用することにより、現在のデッキにおけるカードを消去し、appendChildを利用することにより、現在の状態の一つ前の状態に係るカード又は初期状態に係るカードを配置することができる。
デッキ復元部265は、デッキを構成するカードを現在の状態の一つ前の状態に復元すると、端末記憶部22の履歴管理テーブルから現在の状態に係る変更履歴を削除する。また、デッキ復元部265は、デッキを構成するカードを初期状態に復元すると、端末記憶部22の履歴管理テーブルから初期状態に係る変更履歴以外の変更履歴を削除する。
図6(a)、(b)は、デッキの状態の復元について説明するための図である。
図6(a)は、図5(b)に示された状態において、振動検出部266から携帯端末2の振動を検出したことが一回通知された場合の編集画面310を表す。図6(a)に示されるように、デッキを構成するカードは、図5(b)に示された状態の一つ前の状態である、図5(a)に示された状態に復元される。図6(b)は、図5(b)に示された状態において、所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが所定回数以上通知された場合の編集画面310を表す。図6(b)に示されるように、デッキを構成するカードは、初期状態である、図3(b)に示された状態(「並び替え」ボタンがタップされた直後の状態)に復元される。
振動検出部266は、加速度センサ25が出力する加速度情報に基づいて、携帯端末2の振動を検出する。振動検出部266は、携帯端末2の振動を検出すると、携帯端末2が振動したことをデッキ復元部265に通知する。振動検出部266は、加速度情報に示されるX方向の加速度が所定回数以上連続して正の所定値以上となり、その後、所定回数以上連続して負の所定値未満となった場合に、携帯端末2の振動を検出する。この場合、「携帯端末2の振動」とは、携帯端末2がユーザにより画面の水平方向に1往復だけ振られたことを意味する。例えば、所定値は携帯端末2を1往復だけ振る実験により得られる加速度の最低値に定められ、所定回数はその最低値以上の加速度が連続して検出される最低数に定められる。
なお、X方向の加速度は、例えばJavaScript(登録商標)のdevicemotionイベントにより与えられるe.accelerationIncludingGravityオブジェクトのxプロパティから取得することができる。
(2.2)サーバ3の構成
図7(a)は、サーバ3の概略構成の一例を示す図である。
サーバ3は、所定のゲームを携帯端末2に提供する。また、サーバ3は、そのゲームで使用される、各ユーザが所有する所有カードについての情報、及び各ユーザが使用するデッキについてのデッキ構成情報等を記憶し、携帯端末2からの要求に応じて、各情報を携帯端末2に送信して携帯端末2に表示させる。そのために、サーバ3は、サーバ通信部31と、サーバ記憶部32と、サーバ処理部33とを備える。
サーバ通信部31は、サーバ3をインターネット7に接続するための通信インターフェース回路を備え、インターネット7との間で通信を行う。そして、サーバ通信部31は、携帯端末2等から受信したデータを、サーバ処理部33に供給する。また、サーバ通信部31は、サーバ処理部33から供給されたデータを、携帯端末2等に送信する。
サーバ記憶部32は、例えば、磁気テープ装置、磁気ディスク装置、又は光ディスク装置のうちの少なくともいずれか一つを備える。サーバ記憶部32は、サーバ処理部33での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、サーバ記憶部32は、アプリケーションプログラムとして、所有カード画面に係る表示データ、デッキ編成画面に係る表示データを作成するゲームプログラム等を記憶する。また、サーバ記憶部32は、データとして、ユーザを管理するユーザ管理テーブル(図7(b))、ゲームで使用されるカードについての情報を管理するカード管理テーブル(図7(c))等を記憶する。さらに、サーバ記憶部32は、所定の処理に係る一時的なデータを一時的に記憶してもよい。
図7(b)、図7(c)は、各管理テーブルのデータ構造の一例を示す図である。
図7(b)には、ユーザを管理するユーザ管理テーブルが示されている。ユーザ管理テーブルは、各ユーザについて、当該ユーザの識別番号(ユーザID)、名前、パスワード、当該ユーザが所有する所有カードのカードID、当該ユーザの各デッキについてのデッキ構成情報等を記憶する。
図7(c)には、ゲームで使用されるカードについての情報を管理するカード管理テーブルが示されている。カード管理テーブルは、各カードについて、当該カードのカードID、攻撃力、守備力等の特徴を表す特徴情報、画像データのファイル名等を記憶する。
サーバ処理部33は、一又は複数個のプロセッサ及びその周辺回路を備える。サーバ処理部33は、サーバ3の全体的な動作を統括的に制御するものであり、例えば、CPUである。サーバ処理部33は、サーバ3の各種処理がサーバ記憶部32に記憶されているプログラム等に応じて適切な手順で実行されるように、サーバ通信部31等の動作を制御する。サーバ処理部33は、サーバ記憶部32に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、サーバ処理部33は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
(2.2.1)サーバ処理部33の構成
サーバ処理部33は、少なくともゲーム制御部331を備える。ゲーム制御部331は、サーバ処理部33が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、ゲーム制御部331は、ファームウェアとしてサーバ3に実装されてもよい。
ゲーム制御部331は、ゲームの進行を制御する。ゲーム制御部331は、携帯端末2からサーバ通信部31を介して、ユーザ認証要求を受信した場合に、受信したユーザ認証要求を解析してユーザID及びパスワードを特定する。そして、ゲーム制御部331は、特定したユーザID及びパスワードをパラメータとして、ユーザ認証部(不図示)に処理の実行を指示する。
ゲーム制御部331は、ユーザ認証部による認証が成功した場合、そのゲームを実施するためのゲーム画面をサーバ通信部31を介して携帯端末2に送信し、以降、そのゲームのための処理を実施する。
ゲーム制御部331は、サーバ通信部31を介して各携帯端末2から所有カード表示データ取得要求を取得する。ゲーム制御部331は、所有カード表示データ取得要求に含まれるユーザIDに対応する所有カードのカードIDをサーバ記憶部32のユーザ管理テーブルから読み出し、読み出したカードIDに対応する特徴情報及び画像データをカード管理テーブルから読み出す。ゲーム制御部331は、内容データとして、各所有カードのカードID、特徴情報、画像データ等を含み、制御データとして、各所有カードについての各情報を表示するための情報を含む表示データを作成し、サーバ通信部31を介して各携帯端末2に送信する。
また、ゲーム制御部331は、サーバ通信部31を介して各携帯端末2からデッキ表示データ取得要求を取得する。ゲーム制御部331は、デッキ表示データ取得要求に含まれるユーザIDに対応するデッキ構成情報をサーバ記憶部32のユーザ管理テーブルから読み出す。ゲーム制御部331は、読み出したデッキ構成情報に含まれる各カードIDに対応する特徴情報及び画像データをカード管理テーブルから読み出す。ゲーム制御部331は、内容データとして、デッキ構成情報に含まれる各カードID、そのカードの特徴情報及び画像データ等を含み、制御データとして、その内容データを表示するための情報を含む表示データを作成し、サーバ通信部31を介して各携帯端末2に送信する。ゲーム制御部331は、この表示データにより、携帯端末2に、ユーザの操作に応じてデッキを構成するカードを変更するとともに変更履歴を記憶し、振動検出部266の検出結果に基づいて、デッキを構成するカードを初期状態または変更履歴の所定の状態に復元する処理を実施させる。
また、ゲーム制御部331は、サーバ通信部31を介して各携帯端末2から、各携帯端末2が変更したデッキについてのデッキ構成情報及びユーザIDを取得すると、取得したデッキ構成情報をそのユーザIDと関連付けてサーバ記憶部32のユーザ管理テーブルに記憶する。
(3)ゲームシステム1の動作
図8は、ゲームシステム1の動作シーケンスの一例を示す。なお、以下に説明する動作シーケンスは、予め端末記憶部22及びサーバ記憶部32に記憶されているプログラムに基づいて、主に端末処理部26及びサーバ処理部33により、携帯端末2及びサーバ3の各要素と協働して実行される。なお、図8に示す動作シーケンスが実行される前に、デッキは作成されているものとする。
まず、ユーザにより、携帯端末2の操作部23を介して端末処理部26に、閲覧プログラムの実行が指示される。端末処理部26は、閲覧プログラムに基づいて処理を開始する。即ち、閲覧プログラムにより実現される閲覧実行部261のゲーム実行部262は、操作部23を介してユーザからゲームの開始指示を受け付けると、さらに操作部23を介してユーザからユーザID及びパスワードを受け付ける。そして、ゲーム実行部262は、ユーザID及びパスワードを含むユーザ認証要求を端末通信部21を介してサーバ3に送信する(ステップS101)。
サーバ3のゲーム制御部331は、サーバ通信部31を介して携帯端末2からユーザ認証要求を受信すると、受信したユーザ認証要求を解析してユーザID及びパスワードを特定する。そして、ゲーム制御部331は、特定したユーザID及びパスワードをパラメータとして、ユーザ認証部(不図示)に認証処理の実行を指示する(ステップS102)。
ゲーム制御部331は、ユーザ認証部による認証が成功した場合、そのゲームを実施するためのゲーム画面をサーバ通信部31を介して携帯端末2に送信する(ステップS103)。
携帯端末2のゲーム実行部262は、端末通信部21を介してサーバ3から取得したゲーム画面を表示部24に表示し、以降、そのゲームのための処理を実施する(ステップS104)。
次に、デッキ変更部264は、操作部23を介してユーザからデッキの編成指示を受け付けると(ステップS105)、携帯端末2のユーザのユーザIDを含むデッキ表示データ取得要求を端末通信部21を介してサーバ3に送信する(ステップS106)。
サーバ3のゲーム制御部331は、サーバ通信部31を介して各携帯端末2からデッキ表示データ取得要求を取得すると、デッキ表示データ取得要求に含まれるユーザIDに対応する所有カードのカードIDをサーバ記憶部32のユーザ管理テーブルから読み出す。ゲーム制御部331は、読み出したカードIDに対応する特徴情報及び画像データをカード管理テーブルから読み出す。次に、ゲーム制御部331は、各所有カードのカードID、特徴情報、画像データ等を含み、制御データとして、各所有カードについての各情報を表示するための情報を含む表示データを作成する(ステップS107)。次に、ゲーム制御部331は、作成した表示データをサーバ通信部31を介して各携帯端末2に送信する(ステップS108)。
携帯端末2のデッキ変更部264は、表示データを端末通信部21を介してサーバ3から取得すると、取得した表示データに基づいて、デッキ編成画面に係る描画データを作成し、表示部24に表示する(ステップS109)。
次に、デッキ変更部264は、操作部23を介してユーザからデッキの並べ替え指示を受け付けると(ステップS110)、デッキを変更するデッキ変更処理を実施する(ステップS111)。
図9は、デッキ変更部264によるデッキ変更処理の動作フローの一例を示す図である。
まず、デッキ変更部264は、デッキ変更処理を開始するときのカードの状態を、そのデッキの初期状態として履歴管理テーブルの先頭に記憶し、他の領域をクリアする(ステップS201)。
次に、デッキ変更部264は、操作部23を介したユーザのタップ操作によりデッキ内の特定の位置が指定されたか否かを判定する(ステップS202)。デッキ変更部264は、デッキ内の特定の位置が指定された場合(ステップS202−Yes)、ユーザにより指定されたカードを特定するカード特定処理を実施する(ステップS203)。
図10は、デッキ変更部264によるカード特定処理の動作フローの一例を示す図である。
まず、デッキ変更部264は、操作部23を介したユーザのタップ操作に応じて、始点位置情報及び始点時刻情報を取得し(ステップS301)、入れ替え対象カードを特定する(ステップS302)。次に、デッキ変更部264は、現在位置情報及び現在時刻情報を取得し(ステップS303)、始点位置情報及び現在位置情報から移動距離を算出し(ステップS304)、始点時刻情報及び現在時刻情報から接触時間を算出する(ステップS305)。
次に、デッキ変更部264は、移動距離が所定距離以上、又は接触時間が所定時間以上であるか否かを判定する(ステップS306)。デッキ変更部264は、移動距離が所定距離以上、又は接触時間が所定時間以上である場合(ステップS306−Yes)、ユーザによりカードのスライド操作がされたと判定する(ステップS307)。その場合、デッキ変更部264は、終点位置情報を取得し(ステップS308)、終点が表示領域内に位置するカードを入れ替え先カードとして特定する(ステップS309)。
一方、デッキ変更部264は、移動距離が所定距離未満、且つ接触時間が所定時間未満である場合(ステップS306−No)、操作部23がユーザの接触を感知し終えたか否かを判定する(ステップS310)。操作部23がユーザの接触を感知し終えていない場合(ステップS310−No)、デッキ変更部264は、処理をステップS306に戻し、再度、移動距離が所定距離以上、又は接触時間が所定時間以上であるか否かを判定する。一方、操作部23がユーザの接触を感知し終えた場合(ステップS310−Yes)、デッキ変更部264は、ユーザによりカードのスライド操作がされなかったと判定する(ステップS311)。その場合、デッキ変更部264は、第2始点位置情報を取得し(ステップS312)、タッチパネルが接触を再度感知し始めた第2始点が表示領域内に位置するカードを入れ替え先カードとして特定する(ステップS313)。
図9に戻って、デッキ変更部264は、入れ替え対象カードと入れ替え先カードの配置を交換し(ステップS204)、端末記憶部22の履歴管理テーブルに変更履歴を記憶し(ステップS205)、処理をステップS202へ戻す。
一方、ステップS202において、デッキ内の特定の位置が指定されていない場合、デッキ復元部265は、振動検出部266から携帯端末2の振動を検出したことが通知されているか否かを判定する(ステップS206)。振動検出部266から携帯端末2の振動を検出したことが通知されている場合(ステップS206−Yes)、デッキ復元部265は、所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが所定回数以上通知されたか否かを判定する(ステップS207)。
所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが所定回数以上通知されていた場合(ステップS207−Yes)、デッキ復元部265は、デッキを初期状態に復元する(ステップS208)。次に、デッキ復元部265は、端末記憶部22の履歴管理テーブルから初期状態に係る変更履歴以外の変更履歴を削除し(ステップS209)、処理をステップS202へ戻す。
一方、所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが所定回数以上通知されていなかった場合(ステップS207−No)、デッキ復元部265は、所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが一回通知されたか否かを判定する(ステップS210)。所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが一回通知されていた場合(ステップS210−Yes)、デッキ復元部265は、デッキを、現在の状態の一つ前の状態に復元する(ステップS211)。次に、デッキ復元部265は、端末記憶部22の履歴管理テーブルから、最新の変更履歴を削除し(ステップS212)、処理をステップS202へ戻す。
一方、所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが通知された回数が一回でなかった場合(ステップS210−No)、デッキ復元部265は、ユーザが操作を誤ったと判定し、特に処理を実施せず、処理をステップS202へ戻す。
なお、ステップS207で所定時間以内に、振動検出部266から携帯端末2の振動を検出したことが所定回数以上通知されていなかった場合、デッキ復元部265は、デッキを、現在の状態より携帯端末2の振動を検出したことが通知された回数だけ前の状態に復元してもよい。その場合、デッキ復元部265は、端末記憶部22の履歴管理テーブルから、最新の携帯端末2の振動を検出したことが通知された回数分の変更履歴を削除する。
一方、ステップS206において、振動検出部266から携帯端末2の振動を検出したことが通知されていない場合(ステップS206−No)、デッキ変更部264は、操作部23を介したユーザのタップ操作により「完了」ボタンがタップされたか否かを判定する(ステップS213)。デッキ変更部264は、「完了」ボタンがタップされていない場合(ステップS213−No)、処理をステップS201へ戻し、一方、「完了」ボタンがタップされた場合(ステップS213−Yes)、一連のステップを終了する。
図8に戻り、デッキ変更部264は、変更したデッキについてのデッキ構成情報をユーザIDと関連付けて端末通信部21を介してサーバ3に送信する(ステップS112)。
サーバ3のゲーム制御部331は、サーバ通信部31を介して携帯端末2から、携帯端末2が変更したデッキについてのデッキ構成情報及びユーザIDを取得すると、取得したデッキ構成情報をそのユーザIDと関連付けてサーバ記憶部32のユーザ管理テーブルに記憶する(ステップS113)。
以上説明してきたように、ユーザの操作に応じてデッキを変更し、携帯端末が振られた場合はデッキを過去の状態に復元させることにより、デッキを使用するゲームを実行するユーザが端末を操作する際のUXを向上させることが可能となる。
なお、本発明は、本実施形態に限定されるものではない。例えば、本実施形態では、携帯端末2がデッキ変更処理を実施する例を示したが、サーバ3がデッキ変更処理を実施してもよい。その場合、サーバ3のサーバ記憶部32が履歴管理テーブルを記憶し、ゲーム制御部331がデッキ変更部及びデッキ復元部として機能する。携帯端末2のデッキ変更部264は、タッチパネルの接触感知に係る各位置情報及び各時刻情報をサーバ3に通知し、サーバ3のゲーム制御部331は、受信した位置情報及び時刻情報に従ってデッキを変更するとともに、履歴管理テーブルを更新する。また、携帯端末2のデッキ復元部265は、携帯端末2の振動を検出した内容をサーバ3に通知し、サーバ3のゲーム制御部331は、受信した内容に従ってデッキを復元するとともに履歴管理テーブルを更新する。サーバ3のゲーム制御部331は新たなカードの配置に従ったデッキについての表示データを作成して携帯端末2に送信し、携帯端末2は受信した表示データに従ってデッキ編成画面を更新する。
また、本実施形態では、デッキ作成部263がデッキを作成する例を示したが、デッキ変更部264が新たにデッキを作成してもよい。その場合、デッキを作成することも「デッキを変更する」ことの一例とみなすことができる。デッキ変更部264は、デッキを作成する処理を開始するときのデッキの状態、すなわちカードが全く配置されていないデッキの状態をデッキの初期状態として履歴管理テーブルの先頭に記憶し、他の領域をクリアする。そして、デッキ変更部264は、デッキに新たにカードを配置するごと、又はデッキ内のカードを交換するごとに、デッキの変更後の状態を履歴管理テーブルに変更履歴として記憶する。デッキ復元部265は、振動検出部266の検出結果に基づいて、デッキを履歴管理テーブルに記憶された過去の状態に復元する。
また、デッキ変更部264は、デッキ編成画面を用いてデッキを作成してもよい。その場合、デッキ変更部264は、図3(a)に示したデッキ編成画面の初期画面において、操作部23を介したユーザの操作により、まだ作成されていないデッキについて任意の位置がタップされると、デッキ作成部263による処理と同様にして、所有カード画面を表示部24に出力する。そして、デッキ変更部264は、操作部23を介したユーザの操作により、所有カード画面内の何れかのカードがタップされると、タップされたカードをデッキ編成画面においてタップされていた位置に配置する。デッキ変更部264は、操作部23を介したユーザの操作により、カードが既に配置された位置がタップされた場合も同様に、所有カード画面を表示部24に出力する。そして、デッキ変更部264は、操作部23を介したユーザの操作により、所有カード画面内の何れかのカードがタップされると、タップされたカードをデッキ編成画面においてタップされていた位置に配置して、カードを交換する。デッキ復元部265は、振動検出部266の検出結果に基づいて、デッキを履歴管理テーブルに記憶された過去の状態に復元する。
この場合も、デッキ変更部264は、デッキを作成する処理を開始するときのデッキの状態をデッキの初期状態として履歴管理テーブルの先頭に記憶し、他の領域をクリアする。そして、デッキ変更部264は、そして、デッキ変更部264は、デッキに新たにカードを配置するごと、又はデッキ内のカードを交換するごとに、デッキの変更後の状態を履歴管理テーブルに変更履歴として記憶する。
また、デッキ変更部264は、デッキ編成画面と所有カード画面を用いてデッキを構成するカード自体を変更してもよい。その場合、デッキを構成するカード自体を変更することも「デッキを変更する」ことの一例とみなすことができる。デッキ変更部264は、図3(a)に示したデッキ編成画面の初期画面において、操作部23を介したユーザの操作により、既に作成されたデッキについて、カードがまだ配置されていない位置、又はカードが既に配置されている位置がタップされると、所有カード画面を表示部24に出力する。そして、デッキ変更部264は、操作部23を介したユーザの操作により、所有カード画面内の何れかのカードがタップされると、タップされたカードをデッキ編成画面においてタップされていた位置に配置する。デッキ編成画面においてタップされていた位置にカードが既に配置されている場合は、カードが交換される。
デッキ変更部264は、デッキを構成するカード自体を変更する処理を開始するときのカードの状態、すなわちデッキ内の何れかのカード又はカードが配置されていないマスが最初にタップされたときのカードの状態を、デッキの初期状態として、履歴管理テーブルの先頭に記憶し、他の領域をクリアする。そして、デッキ変更部264は、デッキを変更した場合に、デッキの変更後の状態を履歴管理テーブルに変更履歴として記憶する。デッキ復元部265は、振動検出部266の検出結果に基づいて、デッキを履歴管理テーブルに記憶された過去の状態に復元する。
また、デッキ復元部265がデッキを復元する状態は、過去の状態に限定されない。例えば、携帯端末2は、携帯端末2又はサーバ3が定めた所定のデッキの状態を端末記憶部22に記憶しておき、デッキ復元部265は、振動検出部266の検出結果に基づいて、デッキを端末記憶部22に記憶していた所定のデッキの状態に復元してもよい。
また、携帯端末2が実行するゲームで使用されるゲーム媒体は、カードに限定されず、本発明は、ゲーム媒体としてフィギア、アバター、アイテム等のカード以外の媒体を使用し、複数のゲーム媒体から構成されるゲーム媒体群を使用するゲームに適用することができる。この場合も、携帯端末2は、ゲーム媒体群の特定の状態(例えば過去の状態)を端末記憶部22に記憶しておく。デッキ変更部264は、操作部23を介したユーザの操作に応じて、ゲーム媒体群を変更し、デッキ復元部265は、振動検出部266による振動の検出結果に基づいて、ゲーム媒体群を、端末記憶部22に記憶された特定の状態に復元する。
また、サーバ3を省略し、携帯端末2がゲームを制御してもよい。その場合、端末記憶部22は、ユーザ管理テーブルのうちその携帯端末2のユーザについての情報及びカード管理テーブル等を記憶し、端末処理部26は、図2に示した各部に加えて、サーバ3のサーバ処理部33の各部と同様の機能を持つ各部を有する。端末処理部26は、各情報を端末通信部21及びサーバ通信部31を介して送受信することに代えて、端末処理部26内で送受信する。
また、端末処理部26及びサーバ処理部33が備える各機能をコンピュータに実現させるためのコンピュータプログラムは、磁気記録媒体、光記録媒体等のコンピュータにより読み取り可能な記録媒体に記録された形で提供されてもよい。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換、及び修正をこれに加えることが可能であることを理解されたい。