本開示に係るゲームシステムは、複数のユーザにゲームを提供するためのシステムである。以下、ゲームシステムについて図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
<ゲームシステム1のハードウェア構成>
図1は、ゲームシステム1のハードウェア構成を示す図である。ゲームシステム1は図示の通り、複数のユーザ端末100と、サーバ200とを含む。各ユーザ端末100は、サーバ200とネットワーク2を介して接続する。ネットワーク2は、インターネットおよび図示しない無線基地局によって構築される各種移動通信システム等で構成される。この移動通信システムとしては、例えば、所謂3G、4G移動通信システム、LTE(Long Term Evolution)、および所定のアクセスポイントによってインターネットに接続可能な無線ネットワーク(例えばWi-Fi(登録商標))等が挙げられる。
サーバ200(コンピュータ、情報処理装置)は、ワークステーションまたはパーソナルコンピュータ等の汎用コンピュータであってよい。サーバ200は、プロセッサ20と、メモリ21と、ストレージ22と、通信IF23と、入出力IF24とを備える。サーバ200が備えるこれらの構成は、通信バスによって互いに電気的に接続される。
ユーザ端末100(コンピュータ、情報処理装置)は、スマートフォン、フィーチャーフォン、PDA(Personal Digital Assistant)、またはタブレット型コンピュータ等の携帯端末であってよい。ユーザ端末100は、ゲームプレイに適したゲーム装置であってもよい。ユーザ端末100は図示の通り、プロセッサ10と、メモリ11と、ストレージ12と、通信インターフェース(IF)13と、入出力IF14と、タッチスクリーン15(表示部)と、カメラ17と、測距センサ18とを備える。ユーザ端末100が備えるこれらの構成は、通信バスによって互いに電気的に接続される。なお、ユーザ端末100は、タッチスクリーン15に代えて、または、加えて、ユーザ端末100本体とは別に構成されたディスプレイ(表示部)を接続可能な入出力IF14を備えていてもよい。
また、図1に示すように、ユーザ端末100は、1つ以上のコントローラ1020と通信可能に構成されることとしてもよい。コントローラ1020は、例えば、Bluetooth(登録商標)等の通信規格に従って、ユーザ端末100と通信を確立する。コントローラ1020は、1つ以上のボタン等を有していてもよく、該ボタン等に対するユーザの入力操作に基づく出力値をユーザ端末100へ送信する。また、コントローラ1020は、加速度センサ、および、角速度センサ等の各種センサを有していてもよく、該各種センサの出力値をユーザ端末100へ送信する。
なお、ユーザ端末100がカメラ17および測距センサ18を備えることに代えて、または、加えて、コントローラ1020がカメラ17および測距センサ18を有していてもよい。
ユーザ端末100は、例えばゲーム開始時に、コントローラ1020を使用するユーザに、該ユーザの名前またはログインID等のユーザ識別情報を、該コントローラ1020を介して入力させることが望ましい。これにより、ユーザ端末100は、コントローラ1020とユーザとを紐付けることが可能となり、受信した出力値の送信元(コントローラ1020)に基づいて、該出力値がどのユーザのものであるかを特定することができる。
ユーザ端末100が複数のコントローラ1020と通信する場合、各コントローラ1020を各ユーザが把持することで、ネットワーク2を介してサーバ200などの他の装置と通信せずに、該1台のユーザ端末100でマルチプレイを実現することができる。また、各ユーザ端末100が無線LAN(Local Area Network)規格等の無線規格により互いに通信接続する(サーバ200を介さずに通信接続する)ことで、複数台のユーザ端末100によりローカルでマルチプレイを実現することもできる。1台のユーザ端末100によりローカルで上述のマルチプレイを実現する場合、ユーザ端末100は、さらに、サーバ200が備える後述する種々の機能の少なくとも一部を備えていてもよい。また、複数のユーザ端末100によりローカルで上述のマルチプレイを実現する場合、複数のユーザ端末100は、サーバ200が備える後述する種々の機能を分散して備えていてもよい。
なお、ローカルで上述のマルチプレイを実現する場合であっても、ユーザ端末100はサーバ200と通信を行ってもよい。例えば、あるゲームにおける成績または勝敗等のプレイ結果を示す情報と、ユーザ識別情報とを対応付けてサーバ200に送信してもよい。
また、コントローラ1020は、ユーザ端末100に着脱可能な構成であるとしてもよい。この場合、ユーザ端末100の筐体における少なくともいずれかの面に、コントローラ1020との結合部が設けられていてもよい。該結合部を介して有線によりユーザ端末100とコントローラ1020とが結合している場合は、ユーザ端末100とコントローラ1020とは、有線を介して信号を送受信する。
図1に示すように、ユーザ端末100は、外部のメモリカード等の記憶媒体1030の装着を、入出力IF14を介して受け付けてもよい。これにより、ユーザ端末100は、記憶媒体1030に記録されるプログラム及びデータを読み込むことができる。記憶媒体1030に記録されるプログラムは、例えばゲームプログラムである。
ユーザ端末100は、サーバ200等の外部の装置と通信することにより取得したゲームプログラムをユーザ端末100のメモリ11に記憶してもよいし、記憶媒体1030から読み込むことにより取得したゲームプログラムをメモリ11に記憶してもよい。
以上で説明したとおり、ユーザ端末100は、該ユーザ端末100に対して情報を入力する機構の一例として、通信IF13、入出力IF14、タッチスクリーン15、カメラ17、および、測距センサ18を備える。入力する機構としての上述の各部は、ユーザの入力操作を受け付けるように構成された操作部と捉えることができる。
例えば、操作部が、カメラ17および測距センサ18の少なくともいずれか一方で構成される場合、該操作部が、ユーザ端末100の近傍の物体1010を検出し、当該物体の検出結果から入力操作を特定する。一例として、物体1010としてのユーザの手、予め定められた形状のマーカーなどが検出され、検出結果として得られた物体1010の色、形状、動き、または、種類などに基づいて入力操作が特定される。より具体的には、ユーザ端末100は、カメラ17の撮影画像からユーザの手が検出された場合、該撮影画像に基づき検出されるジェスチャ(ユーザの手の一連の動き)を、ユーザの入力操作として特定し、受け付ける。なお、撮影画像は静止画であっても動画であってもよい。
あるいは、操作部がタッチスクリーン15で構成される場合、ユーザ端末100は、タッチスクリーン15の入力部151に対して実施されたユーザの操作をユーザの入力操作として特定し、受け付ける。あるいは、操作部が通信IF13で構成される場合、ユーザ端末100は、コントローラ1020から送信される信号(例えば、出力値)をユーザの入力操作として特定し、受け付ける。あるいは、操作部が入出力IF14で構成される場合、該入出力IF14と接続されるコントローラ1020とは異なる入力装置(図示せず)から出力される信号をユーザの入力操作として特定し、受け付ける。
<各装置のハードウェア構成要素>
プロセッサ10は、ユーザ端末100全体の動作を制御する。プロセッサ20は、サーバ200全体の動作を制御する。プロセッサ10および20は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、およびGPU(Graphics Processing Unit)を含む。
プロセッサ10は後述するストレージ12からプログラムを読み出し、後述するメモリ11に展開する。プロセッサ20は後述するストレージ22からプログラムを読み出し、後述するメモリ21に展開する。プロセッサ10およびプロセッサ20は展開したプログラムを実行する。
メモリ11および21は主記憶装置である。メモリ11および21は、ROM(Read Only Memory)およびRAM(Random Access Memory)等の記憶装置で構成される。メモリ11は、プロセッサ10が後述するストレージ12から読み出したプログラムおよび各種データを一時的に記憶することにより、プロセッサ10に作業領域を提供する。メモリ11は、プロセッサ10がプログラムに従って動作している間に生成した各種データも一時的に記憶する。メモリ21は、プロセッサ20が後述するストレージ22から読み出した各種プログラムおよびデータを一時的に記憶することにより、プロセッサ20に作業領域を提供する。メモリ21は、プロセッサ20がプログラムに従って動作している間に生成した各種データも一時的に記憶する。
本実施形態においてプログラムとは、ゲームをユーザ端末100により実現するためのゲームプログラムであってもよい。あるいは、該プログラムは、該ゲームをユーザ端末100とサーバ200との協働により実現するためのゲームプログラムであってもよい。なお、ユーザ端末100とサーバ200との協働により実現されるゲームは、一例として、ユーザ端末100において起動されたブラウザ上で実行されるゲームであってもよい。あるいは、該プログラムは、該ゲームを複数のユーザ端末100の協働により実現するためのゲームプログラムであってもよい。また、各種データとは、ユーザ情報およびゲーム情報などのゲームに関するデータ、ならびに、ユーザ端末100とサーバ200との間または複数のユーザ端末100間で送受信する指示または通知を含んでいる。
ストレージ12および22は補助記憶装置である。ストレージ12および22は、フラッシュメモリまたはHDD(Hard Disk Drive)等の記憶装置で構成される。ストレージ12およびストレージ22には、ゲームに関する各種データが格納される。
通信IF13は、ユーザ端末100における各種データの送受信を制御する。通信IF23は、サーバ200における各種データの送受信を制御する。通信IF13および23は例えば、無線LAN(Local Area Network)を介する通信、有線LAN、無線LAN、または携帯電話回線網を介したインターネット通信、ならびに近距離無線通信等を用いた通信を制御する。
入出力IF14は、ユーザ端末100がデータの入力を受け付けるためのインターフェースであり、またユーザ端末100がデータを出力するためのインターフェースである。
入出力IF14は、USB(Universal Serial Bus)等を介してデータの入出力を行ってもよい。入出力IF14は、例えば、ユーザ端末100の物理ボタン、カメラ、マイク、または、スピーカ等を含み得る。サーバ200の入出力IF24は、サーバ200がデータの入力を受け付けるためのインターフェースであり、またサーバ200がデータを出力するためのインターフェースである。入出力IF24は、例えば、マウスまたはキーボード等の情報入力機器である入力部と、画像を表示出力する機器である表示部とを含み得る。
ユーザ端末100のタッチスクリーン15は、入力部151と表示部152とを組み合わせた電子部品である。入力部151は、例えばタッチセンシティブなデバイスであり、例えばタッチパッドによって構成される。表示部152は、例えば液晶ディスプレイ、または有機EL(Electro-Luminescence)ディスプレイ等によって構成される。
入力部151は、入力面に対しユーザの操作(主にタッチ操作、スライド操作、スワイプ操作、およびタップ操作等の物理的接触操作)が入力された位置を検知して、位置を示す情報を入力信号として送信する機能を備える。入力部151は、図示しないタッチセンシング部を備えていればよい。タッチセンシング部は、静電容量方式または抵抗膜方式等のどのような方式を採用したものであってもよい。
図示していないが、ユーザ端末100は、該ユーザ端末100の保持姿勢を特定するための1以上のセンサを備えていてもよい。このセンサは、例えば、加速度センサ、または、角速度センサ等であってもよい。ユーザ端末100がセンサを備えている場合、プロセッサ10は、センサの出力からユーザ端末100の保持姿勢を特定して、保持姿勢に応じた処理を行うことも可能になる。例えば、プロセッサ10は、ユーザ端末100が縦向きに保持されているときには、縦長の画像を表示部152に表示させる縦画面表示としてもよい。一方、ユーザ端末100が横向きに保持されているときには、横長の画像を表示部に表示させる横画面表示としてもよい。このように、プロセッサ10は、ユーザ端末100の保持姿勢に応じて縦画面表示と横画面表示とを切り替え可能であってもよい。
カメラ17は、イメージセンサ等を含み、レンズから入射する入射光を電気信号に変換することで撮影画像を生成する。
測距センサ18は、測定対象物までの距離を測定するセンサである。測距センサ18は、例えば、パルス変換した光を発する光源と、光を受ける受光素子とを含む。測距センサ18は、光源からの発光タイミングと、該光源から発せられた光が測定対象物にあたって反射されて生じる反射光の受光タイミングとにより、測定対象物までの距離を測定する。測距センサ18は、指向性を有する光を発する光源を有することとしてもよい。
ここで、ユーザ端末100が、カメラ17と測距センサ18とを用いて、ユーザ端末100の近傍の物体1010を検出した検出結果を、ユーザの入力操作として受け付ける例をさらに説明する。カメラ17および測距センサ18は、例えば、ユーザ端末100の筐体の側面に設けられてもよい。カメラ17の近傍に測距センサ18が設けられてもよい。カメラ17としては、例えば赤外線カメラを用いることができる。この場合、赤外線を照射する照明装置および可視光を遮断するフィルタ等が、カメラ17に設けられてもよい。これにより、屋外か屋内かにかかわらず、カメラ17の撮影画像に基づく物体の検出精度をいっそう向上させることができる。
プロセッサ10は、カメラ17の撮影画像に対して、例えば以下の(1)~(5)に示す処理のうち1つ以上の処理を行ってもよい。(1)プロセッサ10は、カメラ17の撮影画像に対し画像認識処理を行うことで、該撮影画像にユーザの手が含まれているか否かを特定する。プロセッサ10は、上述の画像認識処理において採用する解析技術として、例えばパターンマッチング等の技術を用いてよい。(2)また、プロセッサ10は、ユーザの手の形状から、ユーザのジェスチャを検出する。プロセッサ10は、例えば、撮影画像から検出されるユーザの手の形状から、ユーザの指の本数(伸びている指の本数)を特定する。プロセッサ10はさらに、特定した指の本数から、ユーザが行ったジェスチャを特定する。例えば、プロセッサ10は、指の本数が5本である場合、ユーザが「パー」のジェスチャを行ったと判定する。また、プロセッサ10は、指の本数が0本である(指が検出されなかった)場合、ユーザが「グー」のジェスチャを行ったと判定する。また、プロセッサ10は、指の本数が2本である場合、ユーザが「チョキ」のジェスチャを行ったと判定する。(3)プロセッサ10は、カメラ17の撮影画像に対し、画像認識処理を行うことにより、ユーザの指が人差し指のみ立てた状態であるか、ユーザの指がはじくような動きをしたかを検出する。(4)プロセッサ10は、カメラ17の撮影画像の画像認識結果、および、測距センサ18の出力値等の少なくともいずれか1つに基づいて、ユーザ端末100の近傍の物体1010(ユーザの手など)とユーザ端末100との距離を検出する。例えば、プロセッサ10は、カメラ17の撮影画像から特定されるユーザの手の形状の大小により、ユーザの手がユーザ端末100の近傍(例えば所定値未満の距離)にあるのか、遠く(例えば所定値以上の距離)にあるのかを検出する。なお、撮影画像が動画の場合、プロセッサ10は、ユーザの手がユーザ端末100に接近しているのか遠ざかっているのかを検出してもよい。(5)カメラ17の撮影画像の画像認識結果等に基づいて、ユーザの手が検出されている状態で、ユーザ端末100とユーザの手との距離が変化していることが判明した場合、プロセッサ10は、ユーザが手をカメラ17の撮影方向において振っていると認識する。カメラ17の撮影範囲よりも指向性が強い測距センサ18において、物体が検出されたりされなかったりする場合に、プロセッサ10は、ユーザが手をカメラの撮影方向に直交する方向に振っていると認識する。
このように、プロセッサ10は、カメラ17の撮影画像に対する画像認識により、ユーザが手を握りこんでいるか否か(「グー」のジェスチャであるか、それ以外のジェスチャ(例えば「パー」)であるか)を検出する。また、プロセッサ10は、ユーザの手の形状とともに、ユーザがこの手をどのように移動させているかを検出する。また、プロセッサ10は、ユーザがこの手をユーザ端末100に対して接近させているのか遠ざけているのかを検出する。このような操作は、例えば、マウスまたはタッチパネルなどのポインティングデバイスを用いた操作に対応させることができる。ユーザ端末100は、例えば、ユーザの手の移動に応じて、タッチスクリーン15においてポインタを移動させ、ユーザのジェスチャ「グー」を検出する。この場合、ユーザ端末100は、ユーザが選択操作を継続中であると認識する。選択操作の継続とは、例えば、マウスがクリックされて押し込まれた状態が維持されること、または、タッチパネルに対してタッチダウン操作がなされた後タッチされた状態が維持されることに対応する。また、ユーザ端末100は、ユーザのジェスチャ「グー」が検出されている状態で、さらにユーザが手を移動させると、このような一連のジェスチャを、スワイプ操作(またはドラッグ操作)に対応する操作として認識することもできる。また、ユーザ端末100は、カメラ17の撮影画像によるユーザの手の検出結果に基づいて、ユーザが指をはじくようなジェスチャを検出した場合に、当該ジェスチャを、マウスのクリックまたはタッチパネルへのタップ操作に対応する操作として認識してもよい。
<ゲームシステム1の機能的構成>
(サーバ200の機能的構成)
図2は、サーバ200の機能的構成を示すブロック図である。サーバ200は、ゲームを実現するために必要な各種データおよびプログラムを、各ユーザ端末100に提供する機能を有する。サーバ200は、各ユーザ端末100からゲームに関するデータを収集し管理する機能を有する。サーバ200は、複数のユーザ端末100間の同期処理を行う機能を有する。
なお、本実施形態では、サーバ200は事前に登録されたゲームのアカウントで各ユーザおよびユーザ端末100を識別する。アカウントの登録方法は特に限定されない。例えば、ユーザ端末100またはパーソナルコンピュータ等の他の装置が、ユーザの操作に従って、ユーザのアカウントの登録に必要な情報をサーバ200に送信すればよい。そして、サーバ200は、受信した情報に基づいて各ユーザのアカウントを作成および保存すればよい。
ユーザ端末100がいずれかのアカウントを用いてゲームシステム1のネットワーク2にログインすると、サーバ200はログインしたユーザ端末100を認識する。なお、ログインの方法およびログインに係る処理については特に限定しない。サーバ200およびユーザ端末100は、従来知られたログインの方法およびログインに係る各種処理を行えばよい。
サーバ200は、プロセッサ20、メモリ21、ストレージ22、通信IF23、入出力IF24等の協働によって、制御部210および記憶部220として機能する。
記憶部220は、制御部210が使用する各種データを格納する。記憶部220はゲームプログラム221と、ゲーム情報222と、ユーザ情報223とを格納している。
ゲームプログラム221は、ゲームを実現するためのプログラムである。ゲーム情報222およびユーザ情報223は、ゲームプログラム221が実行されるときに参照されるデータである。
なお、ゲームプログラム221は、サーバ200側で実行するゲームプログラムに加えて、ユーザ端末100に送信しユーザ端末100側で実行するプログラム(後述するゲームプログラム121)を含んでいてもよい。もしくは、記憶部220は、サーバ200側で実行するゲームプログラム221と、ユーザ端末側で実行するプログラムとの両方を格納していてもよい。
ゲーム情報222は、アカウント間で共通の情報である。ゲーム情報222は、例えば各種ゲーム空間を規定するための情報を含み得る。「ゲーム空間」とは、ユーザが操作可能な操作キャラクタのオブジェクトが配置される空間である。ゲーム情報222は、ゲーム空間内に配置される木・岩・建物等の背景オブジェクトやノンプレイヤキャラクタ(non player character:NPC)のオブジェクトの配置位置、大きさ、色、形状等、アカウント間で共通のオブジェクトに関する各種設定情報を含み得る。ゲーム情報222は、ノンプレイヤキャラクタの各種パラメータの設定値を含み得る。ゲーム情報222はクエストに係る情報を含み得る。ゲーム情報222は、ゲーム空間内において行われる抽選の当選確率に関する情報を含み得る。クエストとは、達成条件が設定されたゲーム内のイベントである。クエスト毎に、達成条件が設定されていてもよい。なお、クエストには達成条件に加え失敗条件が設定されていてもよい。また、以下では、ゲーム空間に配置されたキャラクタのオブジェクトを指して、単に「キャラクタ」と呼称する場合がある。
ユーザ情報223は、ゲームのアカウント毎に管理される情報である。ユーザ情報223は例えば、操作可能なキャラクタ(以下、操作キャラクタと称する)に関する情報、保有資産に関する情報、およびゲームの進行度合いを示す情報等を含み得る。ここで、保有資産の例としては、例えばゲーム内通貨、アイテム、キャラクタの装備品などが挙げられる。
制御部210は、記憶部220に格納されたゲームプログラム221を実行することにより、ゲームに関する各種処理を制御する。制御部210は、ゲームプログラム221を実行することにより、送受信部211、データ管理部213、およびサーバ処理部212として機能する。
送受信部211は各種データを送受信する。例えば、送受信部211は、ユーザ端末100からの各種データおよびプログラムの送信要求や、マルチプレイ機能に対応するための同期の要求および同期のためのデータ等を受信し、サーバ処理部212に送る。例えば、送受信部211は、サーバ処理部212からの指示に従って、ユーザ端末100に各種データおよびプログラムを送信する。
本実施形態において「マルチプレイ機能」とは、複数のアカウントにおけるゲームの進行を同期させた状態でゲームを進行させる機能である。ゲームシステム1のサーバ200およびユーザ端末100は、ゲームシステム1にログインしているアカウントが複数存在する場合には、マルチプレイ機能に対応するための各種処理を行う。
サーバ処理部212は、ゲーム進行に係る各種判定処理を行う。サーバ処理部212は、ゲームを提供するために必要な演算処理を行う。サーバ処理部212は、ユーザ端末100からの要求等に応じて、ゲームプログラム221に記述された演算処理を実行する。
例えば、サーバ処理部212は、データ管理部213にゲーム情報222またはユーザ情報223のレコードの追加、更新、または削除を指示する。例えば、サーバ処理部212は送受信部211に各種データまたはプログラムの送信を指示する。例えば、サーバ処理部212は、送受信部211を介しユーザ端末100からマルチプレイ機能に対応するための同期の要求および同期のためのデータを受け取ると、同期処理部214にマルチプレイ機能に対応するための同期処理を行うよう指示する。
データ管理部213は、記憶部220に格納されている各種データをサーバ処理部212の指示に従って管理する。例えば、データ管理部213は、サーバ処理部212からの指示に応じてゲーム情報222またはユーザ情報223のレコードを、追加、更新、または削除する。
例えば、データ管理部213は、サーバ処理部212からの指示に従って、ゲーム情報222およびユーザ情報223の少なくとも一方を記憶部220から読み出し、送受信部211を介しユーザ端末100に送信する。
例えば、データ管理部213は、サーバ処理部212からの指示に従って、ゲームプログラム221のうち、ユーザ端末100側で実行する分のプログラムを記憶部220から読み出し、送受信部211を介しユーザ端末100に送信する。
同期処理部214は、サーバ処理部212の指示に従って、ゲームのマルチプレイ機能に対応するための同期処理を行う。同期処理部214は、各アカウントに対応するユーザ端末100から受信する何らかの情報を、他のユーザ端末100に送信することでユーザ端末間の同期を行う。同期処理部214はサーバ200から複数のユーザ端末100に何らかの情報を送信する場合も、各ユーザ端末100に同期して情報を送信する。なお、同期処理部214は、同期のタイミングや同期すべき情報等をサーバ処理部212から受信すればよい。これにより、例えばあるユーザ端末100において行われた入力操作によって引き起こされるゲーム内の作用が、他のユーザ端末100において同期されて示される。
(ユーザ端末100の機能的構成)
図3は、ユーザ端末100の機能的構成を示すブロック図である。ユーザ端末100は、ユーザの入力操作を受け付ける入力装置としての機能と、ゲームの画像や音声を出力する出力装置としての機能を有する。ユーザ端末100は、プロセッサ10、メモリ11、ストレージ12、通信IF13、および入出力IF14等の協働によって、制御部110および記憶部120として機能する。
記憶部120は、ゲームプログラム121と、ゲーム情報122と、ユーザ情報123とを格納する。ゲームプログラム121は、ユーザ端末100側で実行するゲームプログラムである。ゲーム情報122は、制御部110がゲームプログラム121を実行する際に参照するデータであって、サーバ200のゲーム情報222と同様の情報を含んでいる。ユーザ情報123は、ユーザ端末100のユーザのアカウントに関するデータであって、サーバ200のユーザ情報223と同様の情報を含んでいる。
制御部110は、記憶部120に格納されたゲームプログラム121を実行することにより、ユーザ端末100を統括的に制御する。例えば、制御部110は、ゲーム情報122に記憶された、ゲーム空間を規定するための情報を参照してゲーム空間を規定する。制御部110は、各種データを送受信する。例えば、制御部110はサーバ200から各種データ、プログラム、およびマルチプレイ機能に対応するための同期のためのデータ等を受信する。例えば、制御部110は、ゲーム情報122またはユーザ情報123の一部または全部や、マルチプレイ機能に対応するための同期の要求をサーバ200に送信する。
制御部110は、ゲームプログラム121の記述に応じて、ゲーム進行処理部111、入力操作受付部112、カメラ配置制御部113、表示制御部114、およびオブジェクト制御部115として機能する。
入力操作受付部112は、入力部151に対するユーザの入力操作を検知し受け付ける。入力操作受付部112は、タッチスクリーン15およびその他の入出力IF14を介したコンソールに対してユーザが及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部110の各要素に出力する。
例えば、入力操作受付部112は、入力部151に対する入力操作がなされた場合、入力位置の座標および操作の種類を検知する。例えば、入力操作受付部112は、タッチ操作、スライド操作、スワイプ操作、およびタップ操作等を検知する。入力操作受付部112は、連続して検知されていた入力が途切れると、タッチスクリーン15から接触入力が解除されたことを検知する。
ゲーム進行処理部111は、ゲームの進行に係る各種処理を行う。例えば、ゲーム進行処理部111は、入力操作受付部112が受け付けた入力操作の入力位置の座標と操作の種類とから示されるユーザの指示内容を解釈する。例えば、ゲーム進行処理部111は、ゲーム情報122またはユーザ情報123の追加、更新、または削除を行う。例えば、ゲーム進行処理部111は、ゲームの進行に係る各種判定処理を行う。
カメラ配置制御部113は、ゲーム空間のうちユーザに提示する領域を指定するための仮想カメラを規定する。カメラ配置制御部113は、仮想カメラのゲーム空間内での位置および向きを規定することにより、仮想カメラをゲーム空間に仮想的に配置する。さらに、カメラ配置制御部113は、仮想カメラで規定される視野領域および当該視野領域に配置されているオブジェクトを描画した画像を作成するよう、表示制御部114に指示する。
なお、カメラ配置制御部113は、仮想カメラの位置および向きを、ゲーム空間毎に適宜決定してよい。例えば、カメラ配置制御部113は特定のオブジェクトの位置や向きを基準として、当該オブジェクトが特定の向きで視野領域の中央に写るように、当該オブジェクトから一定の方向、距離、および角度で仮想カメラを配置してもよい。特定のオブジェクトとは、例えばユーザ端末100で操作キャラクタのオブジェクトであってもよいし、ノンプレイヤキャラクタ等他のキャラクタを示す動的なオブジェクトであってもよいし、建物や木、石などを示す静的なオブジェクトであってもよい。ここで、ゲーム空間における動的なオブジェクトには、ゲームプログラム121および221に基づいて動作するキャラクタ(例えば、ノンプレイヤキャラクタ、敵キャラクタなど)とユーザによる操作に基づいて動作する操作キャラクタとが含まれる。
表示制御部114は、表示部152に画像を表示させる。例えば、表示制御部114は、ゲーム空間のうち、カメラ配置制御部113が規定する仮想カメラの視野の領域と、当該領域に存在するオブジェクトとを描画した画像を生成し、表示部152に表示させる。さらに、表示制御部114は、このような画像に、アイコン、ボタン、各種パラメータを示すメニュー等、ゲームの種々の操作に必要なUI(user interface)に係るオブジェクトを重畳して描画してもよい。
オブジェクト制御部115は、ゲーム情報122に含まれる、オブジェクトの設定情報に基づきゲーム空間にオブジェクトを配置する。オブジェクト制御部115は、ゲーム空間に配置したオブジェクトを制御する。例えば、オブジェクト制御部115は、オブジェクトのゲーム空間内での位置、向き、形状、色等を変更したり、オブジェクトに所定の一連の動作を行わせたりする。
なお、ゲームシステム1は、ユーザ端末100が備える機能の少なくとも一部をサーバ200が備えるように構成されていてもよい。ゲームシステム1は、サーバ200が備える機能の少なくとも一部をユーザ端末100が備えるように構成されていてもよい。さらに、ユーザ端末100およびサーバ200以外の他の装置をゲームシステム1の構成要素とし、該ハードウェアにゲームシステム1における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラム121および221を実行するコンピュータは、ユーザ端末100、サーバ200、および他の装置の何れであってもよい。
<ゲーム概要>
(ゲーム空間とオブジェクトおよび仮想カメラの配置)
図4は、テニスゲームにおけるゲーム空間の一種である、試合空間の一例を示す図である。テニスゲームの試合は、X軸、Y軸、Z軸の3軸を座標軸とする3次元の試合空間で進行する。図4の状態(A)は、試合空間をXZ平面と平行な視点から見た場合の、各種オブジェクトおよび仮想カメラ330の配置例を示している。図4の状態(B)は、試合空間をZY平面と平行な視点から見た場合の、各種オブジェクトおよび仮想カメラ330の配置例を示している。なお、以降の説明では、一度部材番号を付して説明したオブジェクトについて再び言及する際は「オブジェクト」という文言を極力省略して記載する。例えば「操作キャラクタのオブジェクト310」について再び言及する際は、単に「操作キャラクタ310」と称する。
オブジェクト制御部115は、テニスコートを示す略平面状のオブジェクト300を、試合空間のXZ平面と略平行に配置する。また、オブジェクト制御部115は、テニスコート300を長手方向に二分するように、ネットを示すオブジェクト303を配置する。オブジェクト制御部115は、自ユーザにより操作される操作キャラクタのオブジェクト(第1オブジェクト)310と、対戦相手である他ユーザにより操作される相手キャラクタのオブジェクト(他のオブジェクト)320とを、テニスコート300に配置する。例えば、オブジェクト制御部115は、操作キャラクタ310を、コート301およびその周辺領域(第1の領域)に配置する。また、オブジェクト制御部115は、相手キャラクタ320をコート302およびその周辺領域(第2の領域)に配置する。換言すると、第1の領域は、操作キャラクタ310が移動可能な領域であり、第2の領域は、相手キャラクタ320が移動可能な領域である。コート301およびコート302の周辺領域は、例えばそれぞれのコートのベースラインの外側およびサイドラインの外側の、所定の範囲である。
カメラ配置制御部113は、ゲーム空間内に仮想カメラ330を配置する。仮想カメラ330の位置および角度は特に限定されない。例えば、カメラ配置制御部113は、テニスコート300全体と、全てのキャラクタが写るような位置および角度で仮想カメラ330を配置する。
なお、対戦相手のユーザ端末100においては、当該対戦相手により操作されるキャラクタが操作キャラクタ310となる一方、自ユーザにより操作されるキャラクタが相手キャラクタ320となって、本実施形態のテニスゲームが当該対戦相手のユーザ端末100により実行される。
(試合時の基本動作)
テニスゲームは、実際のテニスの試合と同様に、1ゲームが複数のポイントから成る。1ポイントは、操作キャラクタ310または相手キャラクタ320のサーブから始まる。操作キャラクタ310と相手キャラクタ320とはボールのオブジェクト(第2オブジェクト)340を相手コートに向けて交互に打球し、いずれかのキャラクタが返球に失敗すると、対戦相手に得点が付与される。
図5は、テニスゲームでの試合中にタッチスクリーン15に表示される表示画面のうちの一部のオブジェクトを示している。また、図5では、ユーザがタッチスクリーン15に対して行う入力操作を模式的に示している。タッチスクリーン15にはゲーム画面として、例えばテニスコート300全体、操作キャラクタ310、ならびに相手キャラクタ320を含む画像が表示される。タッチスクリーン15に対し所定の入力操作が行われると、オブジェクト制御部115は、ゲームの進行状況に応じてサーブ開始位置の移動操作、トス動作、サーブ動作、操作キャラクタ310と相手キャラクタ320とがボール340を交互に打ち合うラリー中における移動動作、打球動作等の各種動作を操作キャラクタ310に行わせる。以下、操作キャラクタ310を例にとり、ラリー中における操作キャラクタ310の各種動作について説明する。
なお、タッチスクリーン15に対するタッチ操作の履歴は、図示しない履歴情報テーブルにより管理される。タッチ操作の位置、操作態様(タップ操作、ロングタップ操作、フリック操作、ドラッグ操作等)等は、当該履歴情報テーブルに基づいて特定される。ここで、タップ操作とは、ユーザがタッチスクリーン15に対して手指等を接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。ロングタップ操作とは、ユーザがタッチスクリーン15を押し続ける操作である。フリック操作とは、ユーザがタッチスクリーン15において接近操作を維持しつつ、接近操作をした位置を短時間で移動させてリリース操作を行う一連の操作である。ドラッグ操作とは、ユーザがタッチスクリーン15に手指等を接近させた状態を維持したまま、当該手指等をスライドさせる操作である。
なお、タッチスクリーン15に対し入力操作を行うための指示体は特に限定されない。例えば、指示体はユーザの手指であっても、スタイラスペン等であってもよい。本実施形態では、指示体としてユーザの手指(指A1)を用いることとする。また、本実施形態では、入力操作受付部112は、特別に記載しない限り、タッチスクリーン15上のあらゆる位置で行われた入力操作を受け付けることとする。
図5は、ラリー中におけるユーザの入力操作と操作キャラクタ310の動作とを示す。ラリーは、操作キャラクタ310または相手キャラクタ320がボール340をサーブすることにより開始され、操作キャラクタ310または相手キャラクタ320が返球に失敗(例えば、ボール340を返球できなかった場合、返球したボール340がネットあるいはアウトとなった場合など)することにより終了する。
図5の状態(A)は、ユーザの入力操作に応じて、オブジェクト制御部115が操作キャラクタ310を移動させる場面を示す。操作キャラクタ310または相手キャラクタ320のサーブの後に入力操作受付部112がドラッグ操作(図中の指A1を矢印方向にスライドさせる操作)を受け付けた場合、ゲーム進行処理部111は、当該ドラッグ操作を操作キャラクタ310を移動させる指示を示すと特定する。ゲーム進行処理部111は、ドラッグ操作から移動方向および移動速度を指定する。オブジェクト制御部115は、ゲーム進行処理部111の指定内容に従って操作キャラクタ310を移動させる(図中の操作キャラクタ310の近傍に示す矢印参照)。
ラリー時において、カメラ配置制御部113は、タッチスクリーン15のユーザから見て手前側となる辺から画面の中央に向かう所定の領域A2を空けて操作キャラクタ310が表示されるように、仮想カメラ330の位置および角度を決定する。これにより、入力操作を行うユーザの指A1でテニスコート300、相手キャラクタ320、操作キャラクタ310、またはボール340等が隠れてしまうことを防ぐことができる。したがって、ユーザはゲームの状況を見つつ、容易に入力操作を行うことができる。
また、カメラ配置制御部113は仮想カメラ330を、コート301とコート302とが縦方向(図4におけるZ軸と平行な方向)に見渡せるような位置および角度で配置する。これにより、ユーザにサーブを打つ操作キャラクタ310と、ボール340の打ち込み先である相手キャラクタ320側のコートと、サーブされたボール340の軌跡とを視認性良く見せることができる。
図5の状態(B)は、ユーザの入力操作に応じて、オブジェクト制御部115が操作キャラクタ310に打球動作(操作キャラクタ310がラケットをスイングする動作)を行わせる場面を示す。ゲーム進行処理部111は、ラリー時に入力操作受付部112がタッチ操作を受け付けた場合、当該タッチ操作を、操作キャラクタ310に打球動作を行わせる指示であると特定する。オブジェクト制御部115は、当該指示に従って操作キャラクタ310に打球動作を行わせる。すなわち、オブジェクト制御部115は、操作キャラクタ310にラケットを振る動作を行わせるとともに、ボール340を第2の領域に移動させる。
(打球エリア)
ゲーム進行処理部111は、操作キャラクタ310に打球動作を行わせる場合、当該打球動作でボール340を打球することができたか否かを判定する(打球成否判定)。また、オブジェクト制御部115は、打球成否判定の基準となる打球エリア350を、操作キャラクタ310とともにゲーム空間に配置する。なお、打球エリア350は、操作キャラクタの種類によってその大きさおよび形状の少なくとも一方が異なっていてもよい。ゲーム進行処理部111は、打球動作時にボール340が打球エリア350内に位置している場合は打球成功と判定し、当該打球動作時にボール340が当該打球エリア350外に位置している場合は打球失敗と判定する。
ゲーム進行処理部111は打球成功と判定した場合、さらに、ボール340が打球エリア350のどの領域に位置しているかに応じて、操作キャラクタ310とボール340との位置関係の良好度合いを決定し、オブジェクト制御部115に返球をさせるよう指示する。打球可能となる操作キャラクタ310とボール340との位置関係は、操作キャラクタ310とボール340との距離が異なる複数の位置関係を含み、例えば、位置関係以外の条件が同条件であれば、両者の距離が第1の距離となる第1の位置関係である場合には、良好度合いが低く、操作キャラクタ310は弱い返球しか打つことができない。これに対して、両者の距離が第2の距離となる第2の位置関係である場合には、第1の位置関係であるときよりも良好度合いが高く、その結果、操作キャラクタ310は第1の位置関係であるときよりも強い返球を打つことができる。なお、ここで言う「返球」は、後述するスキルショット(スーパーショット(Super Shot、以下SSとも略す)および特殊ショット)、ギアショットを除いた返球、即ちノーマルショットを示す。第2の距離とは、ボール340と操作キャラクタ310との距離が適切な所定範囲内の距離をいう。第1の距離とは、ボール340と操作キャラクタ310との距離が打球可能な距離ではあるが、上記所定範囲外となる距離をいう。
このように、ゲーム進行処理部111は、打球動作時における打球エリア350とボール340との位置関係の良好度合い、すなわち操作キャラクタ310とボール340との位置関係の良好度合いに応じて、打球の成否、および打球時の球の強さを決定する。例えば、ゲーム進行処理部111は、操作キャラクタ310からボール340までの方向、および操作キャラクタ310からボール340までの距離の少なくとも一方に応じて、位置関係の良好度合いを決定する。
これにより、ユーザに対し、相手キャラクタ320側のコートから飛来するボール340のコースを想定させること、および、打球により良い位置に操作キャラクタ310を移動させる(位置取りさせる)ことを促すことができる。コースの想定および打球前の位置取りは、現実のテニスゲームでも重要な要素である。したがって、ゲームシステム1は、テニスゲームにおいて実際のテニスの戦略での対戦を実現させることができ、ゲームの興趣性を向上させることができる。
(UI配置)
表示制御部114は、図5で示した表示画面に、さらにユーザの入力操作に係るUI画像を重畳させて表示させることができる。図6および図7には、表示制御部114がタッチスクリーン15に表示させるラリー時の表示画面の一例を示す図である。表示制御部114は、ゲーム空間内のオブジェクトを描画した画像に、ギアショットボタン(第3のアイコン)380、スーパーショットボタン(第2のアイコン)360、球種選択ボタン(第1のアイコン)370、パラメータ510ならびに交代ボタン401および402の画像を重畳させた画像を作成し、タッチスクリーン15に表示させてよい。なお、当該UI画像は、ラリー中に限らず、対戦中においてコートに重畳させて常に表示されるようにしてもよい。
本実施形態においては、操作キャラクタ310が行うショットの種類を、ボタンアイコンに対するタッチ操作により選択できる。当該ショットの種類としては、ノーマルショットとスキルショット、および、ギアショットとが設けられている。
ノーマルショットには、スピン系のショット、ロブ系のショット、およびスライス系のショットが設けられている。スピン系のショットとは、ボール340を縦方向に正回転させながら相手キャラクタ320に向かって返球するショットをいう。ロブ系のショットとは、相手キャラクタ320の後方へ落ちるように高く緩いボールを山なりで返球するショットをいう。スライス系のショットとは、ボール340を縦方向に逆回転させながら相手キャラクタ320に返球するショットをいう。
ノーマルショットの種類は、球種選択ボタン370に対するタッチ操作を行うことにより、スピン/ロブまたはスライスのうちから選択される。その後、打球動作のためのタッチ操作を行うと、当該選択されている種類のノーマルショットが行われる。球種選択ボタン370に対するタッチ操作により選択された球種は、その後も維持され、タッチ操作を行うことにより選択された球種のノーマルショットが行われる。
一方、スキルショットは、複数種類のキャラクタのうちから操作キャラクタ310として選択しているキャラクタの種類に応じて予め関連付けられているスキル発動に伴って行われるショットである。スキルには、当該スキルの発動を許可するための発動許可条件が予め定められている。選択したキャラクタに関連付けられているスキルの発動許可条件が成立しているときにおいて、当該スキルに対応するボタンアイコンに対してタッチ操作を行うことにより、当該スキル発動に伴うスキルショットを行うことができるスタンバイ状態となる。スキルショットは、当該スタンバイ状態においてノーマルショットと同様に打球動作のためのタッチ操作により行うことができる。スキルショットは、ノーマルショットよりもユーザにとって有利度合いが高いショットとなる。有利度合いが高いショットとは、例えば、返球の際のボールのスピードが速いショットや、ボールが重いために対戦相手が返球し難いショットなどをいう。
スキルショットとしては、キャラクタの種類に応じて、例えば、特殊ショット(第1スキル)および、スーパーショット(第2スキル)が設けられている。また、ギア(ラケット)の種類に応じて、ギアショットが設けられている。
スーパーショットとは、例えば、当該スーパーショットに関連付けられている発動許可条件(第1の条件)が成立している状態において、スーパーショットボタン360へのタッチ操作を受け付けることによりスーパーショットスタンバイ状態となるスキルショットである。スーパーショットに関連付けられている発動許可条件(第1の条件)は、例えば、ラリーの進行(返球回数等)に応じて更新されるスーパーショットゲージG1の値が予め定められた値に到達することにより成立する。スーパーショットは、当該スーパーショットスタンバイ状態においてユーザから打球動作のためのタップ操作またはフリック操作を受け付けることにより発動される。
スーパーショットが発動されると、操作キャラクタ310にとって有利な態様でボール340が打ち返される。例えば、ボール340は、ノーマルショット時には発生しない特殊な軌道で、相手キャラクタ320側のコートに移動する。
ギアショットとは、例えば、当該ギアショットに関連付けられている発動許可条件(第2の条件)が成立している状態において、ギアショットボタン380へのタッチ操作を受け付けることによりギアショットスタンバイ状態となるショットである。ギアショットに関連付けられている発動許可条件(第2の条件)は、例えば、1回の対戦中における発動回数が予め定められている上限回数(例えば、3回)に到達していないことにより成立する。ギアショットは、当該ギアショットスタンバイ状態においてユーザから打球動作のためのタップ操作またはフリック操作を受け付けることにより発動される。
ギアショットが発動されると、打ち返した後のボール340の動きが操作キャラクタ310にとって有利な態様で変化する。例えば、ボール340は、相手キャラクタ320側のコートへの着弾時にイレギュラーバウンドする。
特殊ショットは、キャラクタに応じて複数種類存在し、特殊ショット毎に発動許可条件が異なる。特殊ショットの一例として、スペシャルショットがあり、スペシャルショットに関連付けられている発動許可条件(第3の条件)が成立している状態において、球種選択ボタン370へのタッチ操作によるスペシャルショットへの球種変更を受け付けていることによりスペシャルショットスタンバイ状態となる。スペシャルショットに関連付けられている発動許可条件(第3の条件)は、スペシャルショットを所持していることにより成立する。スペシャルショットは、スペシャルショットスタンバイ状態においてユーザから打球動作のためのタップ操作又はフリック操作を受け付けることにより発動される。スペシャルショットは、試合開始時に所定数(例えば2つ)獲得する。また、スペシャルショットの獲得方法として、その他に、例えば、スーパーショット発動時又は後述する特殊状態中にラリーが開始されると所定数(例えば2つ)獲得する。ただし、スペシャルショットは、その所持数に上限(例えば2つ)が設けられており、その上限以上はスペシャルショットを所持できない。ここで、スペシャルショットを所定数獲得する例として、2つを挙げているが、特にこれに限定されるものではなく、所定数を1~3の間で設定してもよく、3以上にしてもよい。また、スペシャルショットの所持数の上限の例として2つを挙げているが、特にこれに限定されるものではなく、所定数の上限を1~3の間で設定してもよく、3以上にしてもよい。
スペシャルショットが発動されると、打ち返した後のボール340は相手キャラクタ320にとって不利な作用を及ぼす。例えば、ボール340は、相手キャラクタ320に不利な作用を及ぼすオブジェクトを相手コート302に設置する。スペシャルショットが発動された場合には、その他にも、打ち返した後のボール340の打球にバフがかかる(球威が増すなど)、打ち返した後のボール340の打球の球速が速くなるなど操作キャラクタ310にとって有利な作用を及ぼすことにより、その結果、相手キャラクタ320に対して不利な作用を及ぼすものであってもよい。
(スーパーショットボタン)
図6(A)に表示されているUIを参照して、スーパーショットボタン360について説明する。スーパーショットボタン360は、操作キャラクタ310にスーパーショットを打たせるための入力操作を受け付けるボタンである。当該スーパーショットボタン360の外縁には、スーパーショットゲージG1が設けられる。ゲーム進行処理部111は、ラリーの進行に応じて、スーパーショットゲージG1のゲージ値を増大させる。具体的には、ゲーム進行処理部111は、打球動作のためのタップ操作またはフリック操作に応じてノーマルショットが発動される毎に、スーパーショットゲージG1のゲージ値を増大させる。ここで、当該ゲージ値の増大量は、ノーマルショット時における操作キャラクタ310とボール340との位置関係の良好度合いが高いほど多くする。表示制御部114は、スーパーショットゲージG1の表示態様を、増大後のゲージ値が特定可能な表示態様に変更する(図6(B)参照)。
入力操作受付部112は、当該ゲージ値が最大値に到達しているときに、スーパーショットボタン360に対するタップ操作を受付け可能にする。ゲーム進行処理部111は、当該タップ操作が入力操作受付部112により受け付けられたとき、スーパーショットスタンバイ状態を設定する。表示制御部114は、スーパーショットボタン360の表示態様をスーパーショットが発動可能であることを特定可能な表示態様に変更する。例えば、スーパーショットボタン360の明るさを低減させる(図7(A)参照)。
ゲーム進行処理部111は、スーパーショットに対応するスーパーショットスタンバイ状態において操作キャラクタ310の打球動作が成功したと判定した場合、オブジェクト制御部115にスーパーショットを発動させるよう指示する。この結果、ボール340は、ノーマルショット時には発生しない特殊な軌道で打ち返される。
ゲーム進行処理部111は、スーパーショットが発動された後、スーパーショットに対応するスーパーショットスタンバイ状態を解除し、スーパーショットゲージG1を初期化する。また、表示制御部114は、スーパーショットボタン360の明るさを元に戻し、スーパーショットゲージG1の表示態様を初期化されたことを特定可能な表示態様に変更する。
なお、スーパーショットが発動されることなくラリーが終了した場合、ゲーム進行処理部111は、ラリー終了時におけるスーパーショットゲージG1のゲージ値を維持する。次回のラリーが開始されると、ゲーム進行処理部111は、当該維持されたゲージ値を起点として、ノーマルショットが行われる毎に当該ゲージ値を増大させる。
(ギアショットボタン)
ギアショットボタン380は、操作キャラクタ310にギアショットを打たせるための入力操作を受け付けるボタンである。ギアショットについては、1回の試合において発動可能な上限回数が予め定められている。ギアショットの発動可能回数は試合開始時に当該上限回数に設定され、ギアショットが発動される毎に1ずつ減じられる。当該発動可能回数が1以上であれば、入力操作受付部112は、ギアショットボタン380に対するタップ操作を受付け可能にする。ゲーム進行処理部111は、当該タップ操作が入力操作受付部112により受け付けられたとき、ギアショットに対応するギアショットスタンバイ状態を設定する。
表示制御部114は、ギアショットボタン380の表示態様をギアショットが発動可能であることを特定可能な表示態様に変更する。例えば、ギアショットボタン380の明るさを低減させる。ゲーム進行処理部111は、ギアショットに対応するギアショットスタンバイ状態において操作キャラクタ310の打球動作が成功したと判定した場合、オブジェクト制御部115にギアショットを発動させるよう指示する。この結果、ボール340は、相手キャラクタ320側のコートへの着弾時にイレギュラーバウンドする。
ゲーム進行処理部111は、ギアショットが発動された後、ギアショットに対応するギアショットスタンバイ状態を解除し、ギアショットの発動可能回数を1だけ減少させる。また、表示制御部114は、ギアショットボタン380の表示態様を元に戻す。
(球種選択ボタン)
球種選択ボタン370は、操作キャラクタ310の打球動作により実行されるノーマルショットの種類を示すとともに、当該種類を変更するための入力操作を受け付けるボタンである。球種選択ボタン370に対するタップ操作が入力操作受付部112により受け付けられると、ゲーム進行処理部111は、操作キャラクタ310が行うノーマルショットの種類をスピン/ロブとスライスとの間で変更する。表示制御部114は、球種選択ボタン370の表示態様を、変更後の種類を特定可能な表示態様に変更する。例えば、変更後の種類がスピン/ロブであれば「スピン/ロブ」の文字を球種選択ボタン370に表示し、変更後の種類がスライスであれば「スライス」の文字を球種選択ボタン370に表示する。また、特殊(スペシャル)ショットが使用可能な状態であれば、「スペシャル」の文字を球種選択ボタン370に表示する。さらに、オブジェクト制御部115は、変更後の種類と、打球動作のためのタッチ操作の態様とに応じて、相手キャラクタ320側のコートにボール340を移動させる。
具体的には、変更後のノーマルショットの種類としてスピン/ロブが選択されている状態で、打球動作のためにタップ操作が行われると、オブジェクト制御部115は、当該タップ操作時のボール340の位置に基づいて返球方向を特定し、縦方向に正回転するボール340を当該返球方法に返球するアクションを操作キャラクタ310に行わせる。また、スピン/ロブが選択されている状態で、打球動作のために右フリック操作(右方向へのフリック操作)が行われると、オブジェクト制御部115は、縦方向に正回転するボール340をタップ操作時の返球方向よりも右側の方向に返球するアクションを操作キャラクタ310に行わせる。
さらに、スピン/ロブが選択されている状態で、打球動作のために左フリック操作(左方向へのフリックする操作)が行われると、オブジェクト制御部115は、縦方向に正回転するボール340をタップ操作時の返球方向よりも左側の方向に返球するアクションを操作キャラクタ310に行わせる。また、スピン/ロブが選択されている状態で、打球動作のために下フリック操作(下方向へのフリックする操作)が行われると、オブジェクト制御部115は、タップ操作が行われた場合の返球方向に、ロブでボール340を返球するアクションを操作キャラクタ310に行わせる。
また、変更後のノーマルショットの種類としてスライスが選択されている状態では、オブジェクト制御部115は、打球動作のためのタッチ操作時のボール340の位置に基づいて返球方向を特定する。オブジェクト制御部115は、縦方向に逆回転するボール340を当該返球方向に返球するアクションを操作キャラクタ310に行わせる。なお、スライスを伴う返球は、打球動作のためのタッチ操作がタップ操作であるかフリック操作であるかに関係なく実行される。これにより、スライス系のショットを行う際の操作が複雑化することを極力防止できる。
(交代ボタン)
交代ボタン401および402は、操作キャラクタ310を、交代ボタン401または402にそれぞれ対応付けられた控えキャラクタと交代させるための入力操作を受け付けるためのボタンである。表示制御部114は、控えキャラクタの数に合わせた数の交代ボタンを表示させてもよい。ただし、表示制御部114が表示させる交代ボタンの数が多くなると、テニスゲームの対戦を表示させる領域が狭くなってしまう。それゆえ、操作キャラクタと同じグループに所属可能な他のキャラクタの数に上限を設けたり(例えば、2人)、あるいは表示する交代ボタンの数に上限(例えば、2つ)を設けたりしてもよい。なお、控えキャラクタの数よりも表示させる交代ボタンの数が少ない場合には、表示制御部114は、予めユーザに設定させた優先順位に従って、交代ボタンに対応付ける控えキャラクタを決定してもよい。
ゲーム進行処理部111は、ユーザによる交代指示を受け付ける。交代指示は、交代ボタン401または402に対するタッチ操作により入力される。例えば、交代ボタン401に対するタッチ操作が検出された場合、ゲーム進行処理部111は、交代ボタン401に対応付けられているキャラクタが選択されたこと、および操作キャラクタ310を、選択されたキャラクタと交代させること、をオブジェクト制御部115に指示する。オブジェクト制御部115は、操作キャラクタ310に代えて、選択されたキャラクタを配置(表示)する。交代指示によって操作キャラクタ310から控えキャラクタとなったキャラクタは、交代ボタン401と対応づけられてもよい。この場合、交代ボタン401に対するタッチ操作が再度検出されれば、操作キャラクタ310に復帰することが可能である。
(有利な動作)
操作キャラクタ310の足元に示されるパラメータ510は、当該操作キャラクタ310に有利な動作(ユーザ・プレイヤにとって有利度合いが高い動作)を実行させることができる回数を報知するものである。パラメータ510は、試合開始時において、予め定められた回数(例えば5回)分のメモリが存在する(図6(A)参照)。操作キャラクタ310は、パラメータ510が所定値以上ある(1メモリ以上ある)ときには、有利な動作を実行できる。
当該有利な動作には、例えば、ユーザからの入力操作時に制御部110によって特定された所定時間経過後のボール位置520と所定の位置関係(ボール位置520と移動先位置540との位置関係においてボール位置520にあるボール340を操作キャラクタ310が打球できる位置となる位置関係)にある移動先位置540まで、当該ユーザの入力操作に応じて、操作キャラクタ310を所定時間で移動させることが可能となる動作(自動移動ともいう)を含む。また、有利な動作には、通常であれば届かない高いボール(Y軸方向に高い打球)に対して操作キャラクタ310が打球することが可能となる動作(ハイジャンプスマッシュ)を含む。
(有利な動作の一例である自動移動について)
パラメータ510が存在する(所定値以上ある)ときは、打球可能となる位置に操作キャラクタ310を自動移動させることができる。制御部110は、ユーザが入力操作した時点から所定時間経過後のボール340のボール位置520を特定する。「所定時間」とは、一定時間のことであり、例えば0.25秒を示すが、特にこれに限定されず、例えば、0.1秒~0.5秒までの間で設定されてもよく、0.1秒未満または0.5秒以上であってもよい。ボール位置520は、相手キャラクタ320が打球を行ったとき(瞬間)に、軌道や速度(相手キャラクタ320により返球される際に特定されるベクトルなど)に基づいて事前に計算され確定している。このため、制御部110は、ユーザが入力操作した時点から所定時間経過後のボール340の位置を取り出す(読み出す)ことで、ユーザが入力操作した時点から所定時間経過後のボール340のボール位置520を特定する。次いで、ボール位置520と所定の位置関係となる移動先位置540を特定する。そして、操作キャラクタ310の現在位置530から移動先位置540へ移動できるベクトルを求め、直線移動(自動移動)を開始する。当該自動移動では、操作キャラクタ310を現在位置530から移動先位置540まで当該所定時間で移動させる。自動移動を行う所定時間が0.25秒であるときに、始めの0・05秒間においては、操作キャラクタ310をその場から移動させずに所定のモーション(例えば、自動移動特有の動作・アクションなど)を行わせ、残りの0.2秒間において当該操作キャラクタ310を直線移動(自動移動)させるようにしてもよい。ここで、「所定の位置関係」とは、ボール位置520と移動先位置540との位置関係においてボール位置520にあるボール340を操作キャラクタ310が打球できる位置となる位置関係であって、前述した第2の位置関係をいう。また、自動移動中の操作キャラクタ310は、その移動経路上に操作キャラクタ310に不利な効果を及ぼすオブジェクト(障害物等)が存在してもその効果(不利益)を受けない。また、当該自動移動時には、自動移動特有の動作・アクションを伴わせて移動してもよいし、当該自動移動時には、移動方向にエフェクトを表示する特殊な演出を行ってもよい。
次に、図6を用いて自動移動を説明する。図6(A)では、ラリー中において相手キャラクタ320が返球した直後の様子が示されている。返球したボール340は、未だ相手のコートに存在している。また、図6(A)では、操作キャラクタ310のパラメータとして、パラメータ510に示されるように5メモリ所持している例を示している。パラメータを所持している場合であって、相手キャラクタ320が返球した後(直後)においてユーザからのタップ操作またはフリック操作の入力を受け付けることにより、制御部110は、相手キャラクタ320の打球(ボール340)の所定時間経過後のボール位置520を特定し、ボール位置520から所定の位置関係となる移動先位置540を特定する。図6(A)では、グレー表示により、特定された所定時間経過後のボール位置520、および特定された移動先位置540が示されている。
所定時間経過後のボール位置520および移動先位置540を特定すると、制御部110は、所定時間経過後において操作キャラクタ310を移動先位置540まで移動させる表示(自動移動表示)を行う。図6(B)では、矢印で示すように、操作キャラクタ310を特定した移動先位置540まで直線移動させている様子が示され、また、ボール340についても特定されていたボール位置520まで移動している様子が示されている。これにより、操作キャラクタ310と、ボール340との位置関係が所定の位置関係となる。所定の位置関係となっている間においてタップ操作またはフリック操作することにより、操作キャラクタ310は、ボール340を相手コート302に向けて打球することができる。図6(C)では、移動先位置540まで移動した後の所定のタイミングでタップ操作またはフリック操作することにより、ボール340を相手コート302に向けて打球した様子が示されている。また、パラメータ510は、打球することにより1メモリ消費する(パラメータ510は、5メモリから4メモリに減少する)。なお、自動移動せず相手キャラクタ320からの打球を返球した場合にもパラメータ510を1メモリ消費する。
次に、図7を用いてパラメータ回復処理について説明する。図7(A)において、操作キャラクタ310は、パラメータ510を1メモリ所持している。図7(A)においては、スーパーショットボタン360の明るさを低減させたスーパーショットスタンバイ状態であり、操作キャラクタ310は、現在位置530において、所定時間経過後のボール340を打球することができる。図7(B)においては、スーパーショットを発動して返球した状態を示している。操作キャラクタ310は、スーパーショットを発動させたことにより所定時間に亘って特殊状態となる。また、スーパーショットを発動させたときには、キャラクタの種類や特殊状態の種類にかかわらずパラメータ510を回復させる。その際には、キャラクタの種類や特殊状態の種類、パラメータ510の残量にかかわらずパラメータ510を7メモリまで回復させる。さらに、パラメータ510は、サーブ打球前(ラリー開始前)のタイミングにおいて、操作キャラクタ310の状態が特殊状態であると所定メモリ回復する(図示せず)。特殊状態におけるパラメータ510の回復処理は、後述の特殊状態の説明において詳説する。記憶部120は、ポイント(ラリー)間でのパラメータ510のメモリの増減を記憶して、その結果を表示画面に表示する。
(特殊状態)
操作キャラクタ310は、スーパーショットが発動されると、所定時間に亘って特殊状態となる。「特殊状態」とは、操作キャラクタ310に対して特殊な効果を生じさせる状態(操作キャラクタ310の能力が強化された状態)をいう。特殊状態としては、生じさせる特殊な効果が異なる複数種類の特殊状態が設けられている。例えば、「移動速度を向上させる状態(例えば特殊状態A)」、「打球等を行ったとしてもパラメータを消費させない状態(特殊状態B、後述する特定の特殊状態)」、「ジャストタイミングで打つと球種に応じた特殊ショットを発動させる状態(特殊状態C、後述する所定の特殊状態)」等が挙げられる。特殊状態Cでは、例えば、スマッシュを打つと、打球の速度が向上した特殊ショットを打つことができる一方、それ以外の球種、例えば、スピンを打つと打球が低バウントするショットを打つことができる。また、特殊状態となる時間については、複数の時間のうちのいずれかとなる。いずれの特殊状態となるか、および特殊状態となる時間は、操作キャラクタ310として選択されているキャラクタの種類(あるいはスキル等)に応じて異なるように定められている。なお、特殊状態となる時間は、特殊状態の種類に応じた時間に定められているものであってもよい。また、特殊状態は、キャラクタの種類に応じて、複数の特殊状態をタイミング的に重畳させて(重ね合わせて)発動し得る。例えば、キャラクタAによるスーパーショット発動後においては、40秒間に亘って特殊状態Aになるとともに、15秒間に亘って特殊状態Bになり得るようにしてもよい。また、キャラクタBによるスーパーショット発動後においては、60秒間に亘って特殊状態Bになるとともに、30秒間に亘って特殊状態Cになり得るようにしてもよい。
また、いずれの特殊状態であっても、操作キャラクタ310に対して共通の特殊な効果を生じさせる。共通の特殊な効果としては、例えば、サーブ打球前(ラリー開始前)のタイミングにおいて、パラメータ510を所定メモリ(例えば2メモリ)回復させることなどが挙げられる。特殊状態となったときには、キャラクタの種類や特殊状態の種類にかかわらず、サーブ打球前(ラリー開始前)のタイミングにおいてパラメータ510を回復させるが、その回復量は、キャラクタによって異なる。だだし、パラメータ510が既に上限に到達しているとき(7メモリあるとき)や、キャラクタがパラメータ510を消費していない状態であるときは、パラメータ510を回復しない。
<移動処理フロー>
図8は、ラリー時に実行される操作キャラクタ関連処理を説明するフローチャートである。なお、この処理は、ゲーム進行処理部111、入力操作受付部112、表示制御部114等によって実行される。また、以下の説明において、フローチャートを用いて説明する一連の処理ステップの流れは、ユーザ端末100によって実行されるものとして記載しているが、これらの処理ステップの少なくとも一部が、サーバ200によって実行されてもよい。
ステップS01では、タッチスクリーン15への入力操作(タッチ操作)が検出されたか否かを、入力部151に対する入力操作に基づいて判定する。当該入力操作が検出されたと判定されなかったときはステップS02に進まない。当該入力操作が検出されたと判定されたときはステップS02に進む。
ステップS02では、当該入力操作がタップ操作またはフリック操作であるか否かを履歴情報テーブルに基づいて判定する。当該入力操作がタップ操作またはフリック操作であると判定されたときは、ステップS04に進む。当該入力操作がタップ操作またはフリック操作であると判定されなかったとき(例えば、ドラッグ操作、スワイプ操作等、比較的長期間に亘って検出される操作)は、ステップS03に進み、入力操作に応じた処理を実行する。この場合におけるステップS03では、当該入力操作が例えばドラッグ操作であれば、当該ドラッグ操作から移動方向および移動速度を指定し、当該指定内容に従い操作キャラクタ310を移動させる。また、当該入力操作がロングタップ操作であれば、操作キャラクタ310を現在位置530に留まらせる。
ステップS04では、パラメータ510が所定値以上あるか判定する。パラメータ510が所定値以上と判定されたときは、ステップS05に進む。具体的には、図6(A)で示すように、パラメータ510は、ラリー開始時に5メモリ所持した状態で開始される。パラメータ510は、メモリを1メモリ以上所持している場合に所定値以上と判定される。パラメータ510が所定値以上と判定されなかったときはステップS03に進む。具体的には、当該メモリが存在しない状態(パラメータ510が消滅した状態)になるとパラメータ510は所定値以上と判定されない。パラメータ510が所定値以上と判定されなかったときには、自動移動を行うことができないため、ステップS03において操作キャラクタ310はステップS02のタップ操作またはフリック操作に基づいて現在位置530においてラケットをスイングする動作を行う。この際の打球処理おいて、所定の位置関係の要件を満たし、かつ特殊ショット(スペシャルショット)の発動許可条件を満たしていれば、スペシャルショットを発動可能である。
ステップS05では、ボール340の一定時間経過後のボール位置520を特定する。具体的には、ボール位置520は、相手キャラクタ320が打球を行ったとき(瞬間)に、軌道や速度(相手キャラクタ320により返球される際に特定されるベクトルなど)に基づいて事前に計算され確定している。このため、制御部110は、ステップS01の入力操作時点から一定時間経過後のボール340の位置を取り出す(読み出す)ことで、ステップS01の入力操作時点から一定時間経過後のボール340のボール位置520を特定する。ステップS05の処理が完了すると、ステップS06に進む。
ステップS06では、特定したボール位置520と操作キャラクタ310の現在位置530とがすでに所定の位置関係にあるか否かを判定する。当該所定の位置関係にあると判定されなかったときは、ステップS07に進む。当該所定の位置関係にあると判定されなかったときとは、ボール位置520が、現在位置530における打球エリア350内に位置しないときである。一方、ボール位置520が、現在位置530における打球エリア350内に位置するときは、当該所定の位置関係にあると判定され、ステップS03に進む。この場合のステップS03においては、現在位置530における打球エリア350内にボール位置520が位置しており移動させる必要がないため、操作キャラクタ310は自動移動を行わず、ステップS02のタップ操作又はフリック操作に基づいて現在位置530でラケットをスイングする動作を行う。この際の打球処理おいて、所定の位置関係の要件を満たし、かつ特殊ショット(スペシャルショット)の発動許可条件を満たしていれば、スペシャルショットで返球を発動可能である。
なお、ステップS06における所定の位置関係の判定の際に、操作キャラクタ310の打球エリア350の範囲が変化しているときは、変化した打球エリア350の範囲を考慮し、当該変化した打球エリア350の範囲を基準として当該所定の位置関係の判定がなされる。打球エリア350の範囲の変化とは、打球エリア350の範囲が拡大したり縮小したりすることをいう。例えば、操作キャラクタ310が保有するスキルや装備するアイテム(ギアなど)の効果などによって拡大条件が成立しているときに、打球エリア350の範囲は拡大する。また、操作キャラクタ310が異常状態(例えば感電状態、縮小状態など)であることなどにより縮小条件が成立しているときに、打球エリア350の範囲は縮小する。
ステップS07では、一定時間経過後のボール位置520に対して操作に応じた側の移動先位置540を特定する。具体的には、ステップS02で検出されたフリック操作の方向によって、操作キャラクタ310のボール位置520に対する移動先位置540を特定する(図6(A))。この場合、ボール位置520と所定の位置関係となる移動先位置540は、いずれの側においても位置関係が第2の位置関係となる。フリック操作の方向が、右方向(右上、右下などを含む)であったときは、操作キャラクタ310の右側にボール340が位置するように移動先位置540を特定する(図6(A))。この際、操作キャラクタ310が右利きであるときは、フォアハンドで返球する位置となり、操作キャラクタ310が左利きであるときは、バックハンドで返球する位置となる。逆に、フリック操作の方向が、左方向(左上、左下などを含む)であったときは、操作キャラクタ310の左側にボール340が位置するように移動先位置540を特定する(図示しない)。この際、操作キャラクタ310が右利きであるときは、バックハンドで返球する位置となり、操作キャラクタ310が左利きであるときは、フォアハンドで返球する位置となる。なお、ステップS02で検出された入力操作がタップ操作など操作方向を特定できない操作であるときは、例えば右方向(右上、右下などを含む)にフリック操作されたときと同じ側の移動先位置540を特定する。ステップS07の処理が完了すると、ステップS08に進む。なお、ステップS07における移動先位置540の特定の際に、操作キャラクタ310の打球エリア350の範囲が変化しているときは、ステップS06と同様に変化した打球エリア350の範囲を考慮して移動先位置540が特定される。
ステップS08では、移動先位置540が所定領域内であるかを判定する。所定領域は、操作キャラクタ310が移動可能な領域をいう。移動先位置540が所定領域内と判定されたときは、ステップS09に進む。移動先位置540が所定領域内と判定されたときとは、操作キャラクタ310の移動先位置540が、コート301およびその周辺領域(第1の領域)、すなわち、移動先位置540が操作キャラクタ310の移動可能な領域内であるときである。移動先位置540が所定領域内と判定されなかったときは、ステップS03に進む。移動先位置540が所定領域内と判定されなかったときとは、特定された移動先位置540が例えば相手コート302およびその周辺領域(第2の領域)などであり移動できないため、自動移動を行わない。この場合におけるステップS03においては、ステップS02のタップ操作又はフリック操作に基づいて現在位置530でラケットをスイングする動作を行う。なお、ステップS08においては、移動先位置540を基準にして、移動先位置540の位置する領域が操作キャラクタ310の移動可能な領域内であるときに自動移動を行う例について説明した。しかし、ステップS05において特定されたボール位置520を基準にして、当該ボール位置520の位置する領域が操作キャラクタ310の移動可能な領域内であるときに自動移動を行うようにしてもよい。
ステップS09では、移動先位置540に操作キャラクタ310を一定時間で移動させる自動移動表示を開始する。具体的には、現在位置530に位置する操作キャラクタ310を一定時間で、移動先位置540まで移動させる表示を開始する(図6(B))。また、その際、移動時の操作キャラクタに特別な演出効果を付与する。特別な演出効果としては例えば、当該自動移動時には、自動移動特有の動作・アクションを行いつつ移動してもよいし、当該自動移動時には、移動方向にエフェクトを表示する特殊な演出を行ってもよい。当該自動移動中の操作キャラクタ310は、その移動経路上に操作キャラクタ310に不利な効果を及ぼすオブジェクトが存在してもその効果(不利益)を受けない。ステップS09の処理が完了すると、ステップS10に進む。
ステップS10では、移動後の所定のタイミングにおいてタップ操作またはフリック操作を検出したかを判定する。移動後の所定のタイミングにおいてタップ操作またはフリック操作を検出したと判定されたときは、ステップS11に進む。当該所定のタイミングとは、移動先位置540において、タップ操作またはフリック操作が検出されることにより一定期間経過後のボール位置520にあるボール340を操作キャラクタ310が返球することができるタイミング(打球可能なタイミング、所定の位置関係にあるタイミング)である。移動後の所定のタイミングにおいてタップ操作又はフリック操作を検出したと判定されなかったときは、ステップS16に進む。
ステップS11では、球種に応じた返球をする。球種に応じた返球とは、球種選択ボタン370に表示された球種に応じて返球することである。ステップS11の処理が完了すると、ステップS12に進む。
ステップS12では、返球がダイレクト返球であるかを判定する。返球がダイレクト返球であると判定されるとステップS13に進む。ダイレクト返球とは、通常、相手キャラクタ320の返球をノーバウンドで返球することを指す。ダイレクト返球の場合、通常であれば、返球した打球の勢いは弱くなる。しかし、自動移動後のダイレクト返球時においては、ステップS13においてダイレクト返球を特定のショットに上書きされる。具体的には、ダイレクト返球時のボールに勢いを付与する。このため、自動移動後の返球がダイレクト返球である場合であっても、勢いが付与されたボールを返球することができる。なお、自動移動後のダイレクト返球については、ボールに勢いを付与(増大)して例えばダイレクト返球ではなくバウンドさせた後の通常の返球時よりも勢いが強いボールを返球するものであってもよく、また、ダイレクト返球であってもバウンドさせた後の通常の返球と同様に勢いを弱めずにボールを返球するもの(ボールにダイレクト返球の効果(打球が弱くなる)を付与しないもの)であってもよい。自動移動における一定時間は、前述したとおり比較的短い時間であることから、特定されるボール位置がネットを超えた領域付近となる頻度が高い。そのため自動移動した場合には、ダイレクト返球する頻度が高まる。しかし、ステップS13の処理が行われるため、ダイレクト返球による不利益を生じさせず、バウンドさせた後の通常の返球と同等以上の球威を有することとなる。ステップS13の処理が完了すると、ステップS14に進む。一方、返球がダイレクト返球であると判定されなかったときは、ステップS14に進む。
なお、打球の勢いが弱くなる場合として、ダイレクト返球時を例示した。しかし、打球の勢いが弱くなる場合としては、これに限らず、例えば、「相手のトップスピンの打球をノーバウンドでトップスピンで返球した時」「操作キャラクタ310に特定のデバフ(弱体化の効果)が掛かっている時」「ヘビーショットに対してジャストで返球できなかった時」等が遅い球となる例として挙げられる。
ステップS14では、所定の特殊状態に基づいた所定の球種であるか判定する。当該所定の特殊状態とは、前述した特殊状態Cであって、一定の期間に亘って、特殊ショットの発動条件を成立させる状態である。当該所定の特殊状態に基づいた所定の球種であると判定されたときは、ステップS15に進み、自動移動後の返球を特定のショット(特殊ショット)に上書きして、ステップS16に進む。一方、当該所定の特殊状態に基づいた所定の球種であると判定されなかったときは、ステップS16に進む。ステップS16では、打球を行ったかを判定する。打球を行ったと判定されたときは、ステップS17に進む。一方、打球を行ったと判定されなかったときは、リターンする。
ステップS17では、特定の特殊状態であるか判定する。当該特定の特殊状態であると判定されなかったときは、ステップS18に進む。当該特定の特殊状態とは、前述した特殊状態Bであって、一定の期間に亘って、打球してもパラメータを消費しない状態である。当該特定の特殊状態であると判定されたときは、パラメータ510を消費することなく、リターンする。ステップS18では、パラメータ510を一つ消費する。ステップS18におけるパラメータ510は、自動移動が行われたか否かにかかわらず、ステップS16で示すように打球を行うことによって消費されることになる。ステップS18の処理を完了すると、リターンする。
<パラメータ回復関連処理フロー>
図9は、ラリー時に実行されるパラメータ回復関連処理を説明するフローチャートである。なお、この処理は、ゲーム進行処理部111、入力操作受付部112、表示制御部114等によって実行される。また、以下の説明において、フローチャートを用いて説明する一連の処理ステップの流れは、ユーザ端末100によって実行されるものとして記載しているが、これらの処理ステップの少なくとも一部が、サーバ200によって実行されてもよい。
ステップS21では、スーパーショット(SS)の発動が検出されたか判定する。当該スーパーショット(SS)の発動が検出されたと判定されたときには、ステップS22に進む。一方、当該スーパーショット(SS)の発動が検出されたと判定されなかったときは、ステップS24に進む。
ステップS22では、パラメータ510を回復する。具体的には、スーパーショットを発動させたことにより、パラメータ510は、7メモリまで回復する。ステップS22の処理が完了すると、ステップS23に進む。
ステップS23では、所定時間に亘って特殊状態に移行する。特殊状態は、前述したように複数存在し、例えば、操作キャラクタの種類に応じた時間に亘って、当該操作キャラクタの種類に応じた特殊状態に移行される。ステップS23の処理が完了すると、ステップS24に進む。
ステップS24では、サーブ打球前であるか判定する。具体的には、ラリー開始時においてサーブが打球される前であるか否かを判定する。サーブ打球前であると判定されたときは、ステップ25に進む。サーブ打球前と判定されなかったときは、パラメータ回復処理を終了する。
ステップS25では、サーブ打球前の同ポイント間(今回の間)でパラメータが回復済みであるか判定する。同ポイント間でパラメータが回復済みであると判定されなかったときは、ステップS26に進む。一方、同ポイント間でパラメータが回復済みであると判定されたときは、パラメータ回復処理を終了する。なお、同ポイント間で操作キャラクタ310を交代した場合はこの限りでない。同ポイント間でパラメータが回復済みであると判定されたときは、例えば、制御部110は、パラメータ回復時に回復済を示すフラグを1Ptの生存時間で付与する(1Pt間に亘りフラグを保持)。このフラグがあるときを同Pt間でパラメータが回復済とみなす。この「1Ptの生存時間」は対象キャラクタが操作キャラクタ310として出場している状態で、得失点となったときに1Ptの生存時間がなくなる。これにより、得失点後においてもパラメータが回復済であると判断されてしまうことを防止できる。
ステップS26では、特殊状態であるか判定する。特殊状態と判定されたときは、ステップ27に進む。特殊状態であると判定されなかったときは、パラメータ回復処理を終了する。ステップS27では、パラメータを回復する。具体的には、キャラクタの種類に応じて定められたメモリ数を回復する。ステップS27の処理が完了すると、パラメータ回復処理を終了する。
<本実施形態の効果>
本実施形態によれば、ユーザからのタップ操作またはフリック操作の入力時点から所定時間経過後のボール340のボール位置520が特定される。ユーザからの当該タップ操作または当該フリック操作に応じて、ボール位置520と所定の位置関係となる移動先位置540まで、操作キャラクタ310を所定時間で移動させる。これにより、ゲームを中断させることなくゲーム展開を保ったまま(継続させたまま)、ユーザが操作キャラクタ310を移動させるための操作を行ってボール340の返球ができる位置まで移動させることなく、タップ操作またはフリック操作のみで操作キャラクタ310をボール340の返球ができる移動先位置540に所定時間で移動させるといった有利な動作を行わせることができ、ゲームの面白みを向上させることができる。
また、本実施形態によれば、所定時間は、一定時間であり、所定の位置関係は、ボール340と操作キャラクタ310とが所定の距離内に位置する関係であり、パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときには一定時間経過後にボール340と操作キャラクタ310とが所定の距離内に位置する関係となるように操作キャラクタ310を移動させる。これにより、操作キャラクタ310は、ボール340と操作キャラクタ310の現在位置との間の距離にかかわらず、必ず一定時間でボール340と所定の距離内となる位置まで操作キャラクタ310を移動させることができる。このため、自動移動の契機となったタップ操作等から、自動移動後における打球のためのタップ操作等を行うまでの間隔が一定時間となるため、時間が都度異なる場合よりもタイミングが取りやすく、自動移動後の打球を容易に行うことができる。
さらに、本実施形態によれば、所定時間経過後のボール位置520とユーザの入力操作時の操作キャラクタ310の現在位置530との距離に応じて、操作キャラクタ310の移動速度を変化させる。これにより、ユーザは、操作キャラクタ310の本来の移動速度(能力に応じた移動速度)に左右されずに操作キャラクタ310を移動させることができるため、選択する操作キャラクタの種類に応じて差を生じさせてしまうことを防止できる。
また、本実施形態によれば、所定の位置関係となる位置は、所定時間経過後のボール位置520を基準として右方向に位置する第1位置と、左方向に位置する第2位置とを含む。特別条件が成立しているときであって、ユーザからの入力操作が、第1入力態様となる右方向のフリック操作等であるときには第1位置に操作キャラクタを移動させる一方、第2入力態様となる左方向のフリック操作等であるときには第2位置に操作キャラクタ310を移動させる。これにより、ユーザの入力操作によって、操作キャラクタ310がボール340を打球する位置を選択することができ、自動移動後の動作に対してユーザの意思を反映させることができゲームの面白みを向上させることができる。
さらに、本実施形態によれば、パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときであっても、操作キャラクタ310の現在位置530が所定時間経過後のボール位置520とすでに所定の位置関係となる位置であるときには移動させる必要がないため、操作キャラクタ310は自動移動を行わず、ユーザからのタップ操作等に基づいて現在位置530で打球を行うための動作を行う。これにより、無駄に自動移動が行われてしまうことを防止できる。
また、本実施形態においては、パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときであっても所定時間経過後のボール位置520と所定の位置関係となる移動先位置540が、コート301およびその周辺領域(第1の領域)、すなわち、移動先位置540が操作キャラクタ310の移動可能な領域内でないときには操作キャラクタ310を移動させず、移動先位置540が操作キャラクタ310の移動可能な領域内であるときに操作キャラクタ310を移動させる。これにより、操作キャラクタ310が本来移動できない領域(例えば相手コート302)にまで移動を試みてしまうことで発生するタイムロスによりユーザに不利益を起こす操作を未然に防止できる。
なお、前述したように、パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときであっても所定時間経過後のボール位置520が、コート301およびその周辺領域(第1の領域)、すなわち、ボール位置520が操作キャラクタ310の移動可能な領域内でないときには操作キャラクタ310を移動させず、ボール位置520が操作キャラクタ310の移動可能な領域内であるときに操作キャラクタ310を移動させることもできる。この場合にも、操作キャラクタ310が本来移動できない領域(例えば相手コート302)にまで移動を試みてしまうことで発生するタイムロスによりユーザに不利益を起こす操作を未然に防止できる。
また、本実施形態においては、ゲームの進行に応じてパラメータ510を更新させる。特別条件は、パラメータ510のメモリを1メモリ以上所持している場合に成立する。パラメータ510のメモリを1メモリ以上所持しているときには、所定時間経過後のボール位置520と所定の位置関係にある移動先位置540まで、当該ユーザの入力操作に応じて、操作キャラクタ310を所定時間で移動させることが可能となる動作(自動移動)のみならず、通常であれば届かない高いボール(Y軸方向に高い打球)に対して操作キャラクタ310が打球することが可能となる動作(ハイジャンプスマッシュ)などの有利な動作を行うことができる。これにより、パラメータ510のメモリが存在しない(パラメータ510が消滅した状態の)ときよりもユーザにとって有利な作用を及ぼし得る。これにより、ユーザは、パラメータ510の存在の有無によって、ゲームの有利度合いが左右されることとなり、ゲームの面白みを向上させることができる。
さらに、本実施形態においては、操作キャラクタ310を自動移動させた後にダイレクト返球したときは、特別条件が成立しておらずユーザの入力操作に応じて操作キャラクタ310を移動させた後にダイレクト返球したときに比べ、打球に勢いが付与される。これにより、操作キャラクタ310に自動移動を行わせた後においては、単に、操作キャラクタ310をユーザの入力操作に応じて移動させた後よりも、ユーザにとっての有利度合いを高めることができ、自動移動をユーザに促すことができる。
また、本実施形態においては、パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときにおいて、操作キャラクタ310を自動移動させるときには、当該自動移動中の操作キャラクタ310に、自動移動特有の動作・アクションを行わせつつ移動させる。これにより、視覚的にゲーム演出を盛り上げることができる。
さらに、本実施形態においては、自動移動中の移動経路上に操作キャラクタ310に不利な効果を及ぼすオブジェクトが存在しても、当該オブジェクトによる効果(不利益)を受けない。これにより、自動移動中には、操作キャラクタ310に不利な効果を及ぼすオブジェクトが存在してもその効果(不利益)を受けないといった通常移動にはない有利な動作を行わせることができ、ゲームの面白みを向上させることができる。
また、本実施形態においては、所定の位置関係は、ボール位置520と操作キャラクタ310との距離が異なる第1の位置関係と第2の位置関係とを含む。所定の位置関係は、第1の位置関係であるときよりも、第2の位置関係であるときの方が、ユーザにとって有利度合いが高い作用を及ぼす。パラメータ510のメモリが存在するときにフリック操作等が行われることにより特別条件が成立しているときには操作キャラクタ310を自動移動させることにおり第2の位置関係となる位置に操作キャラクタ310を移動させる。これにより、自動移動後は第2の位置関係となる位置に操作キャラクタ310を移動させることができるといった有利な動作を行わせることができ、ゲームの面白みを向上させることができる。
<変形例>
以上説明した実施形態の変形例などを以下に列挙する。
(1) 上記実施形態においては、特殊ショットは、球種選択ボタン370でスペシャルショットスタンバイ状態にした後に、タップ操作またはフリック操作に基づいて打球することにより発動する例を説明した。しかし、特殊ショットは、特定の特殊状態中の自動移動後に所定のタイミングで行ったタップ操作またはフリック操作に基づいて打球することにより発動してもよい。
(2) 上記実施形態においては、パラメータ510を使用回数に対応するメモリで表示されていた。しかし、パラメータ510は、使用回数を数字で表してもよい。
(3) 上記実施形態においては、球種選択ボタン370に対するタップ操作と、打球動作のためのタップ操作とに基づいて、スペシャルショットが発動される。しかし、球種選択ボタン370に対するタップ操作が行われたか否かにかかわらず、打球動作のためのダブルタップ操作に応じてスペシャルショットを発動させるようにしてもよい。この場合、当該ダブルタップ操作を受け付けるタイミングは、相手キャラクタ320により返球されたボール340が打球エリア350に入るまでの任意のタイミングであってもよい。
(4) 上記実施形態における自動移動は、操作キャラクタ310の現在位置530から移動先位置540まで一定時間で移動させる例について説明した。しかし、自動移動は、操作キャラクタ310の現在位置530から移動先位置540まで、一定時間ではなく、例えば操作キャラクタ310の現在位置530から移動先位置540までの距離に応じてその都度異なる時間で移動させるものであってもよい。
(5) 上記実施形態においては、自動移動後の打球は、自動移動を開始するための入力操作後、さらに所定のタイミングで入力操作することにより行われる例について説明した。しかし、自動移動後の打球(作用を及ぼす処理)は、自動移動するための入力操作後にさらなる入力操作を必要とすることなく自動で行われるようにしてもよい。
(6) 上記実施形態においては、打球(返球)する毎にその都度パラメータ510を1メモリ消費させるが、自動移動することのみによってはパラメータ510を消費させない例について説明した。しかし、自動移動することによりその後において打球せずともパラメータ510を1メモリ消費させるようにしてもよい。あるいは、自動移動することによりパラメータ510を1メモリ消費させ、その後に打球(返球)することによってさらにパラメータ510を1メモリ消費させるようにしてもよい。
(7) 上記実施形態においては、自動移動に関する技術的事項を、移動するボール340(所定のオブジェクト)に対して打球させる(作用を及ぼさせる)ように操作キャラクタ310を移動させるテニスゲームに適用した例について説明した。しかし、自動移動に関する技術的事項は、移動する所定のオブジェクトに対して、移動して作用を及ぼすゲームであれば、テニスゲームに限らず適用でき、例えば、バレーボール、ビーチバレーボール、卓球、サッカーなどのスポーツゲームに適用するものであってもよく、また、スポーツゲームに限らず格闘ゲームやアクションゲームなどに適用するものであってもよい。例えば、格闘ゲームにおいては、パラメータが存在しかつユーザが特定の入力操作(必殺技に対応するコマンド入力)することなどにより特別条件が成立していることにより、所定時間経過後の相手キャラクタ(所定のオブジェクト)の位置を特定し、所定時間経過後の相手キャラクタに対して攻撃できる所定の位置関係となる位置にユーザが操作するキャラクタを自動的に移動させるといった有利な動作を行うようにしてもよい。
<付記>
以上の各実施形態で説明した事項を、以下に付記する。
(付記1):
本開示に示す一実施形態のある局面によれば、プロセッサ、メモリおよびタッチスクリーンを備えるコンピュータにおいて実行されるゲームプログラムであって、前記ゲームプログラムは、プロセッサに、所定のオブジェクトを所定のゲーム領域内において移動させるステップと、ユーザの入力操作に応じて、操作キャラクタを前記ゲーム領域内において移動させるステップ(ステップS09)と、前記所定のオブジェクトと前記操作キャラクタとが所定の位置関係である場合に、前記操作キャラクタが前記所定のオブジェクトに対して作用を及ぼすステップ(ステップS10)とを実行させ、前記操作キャラクタを移動させるステップは、ユーザの入力操作に応じて、特別条件が成立しているときには所定時間経過後の前記所定のオブジェクトの位置を特定し、当該所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置に前記操作キャラクタを移動させる。
(付記2):
(付記1)において、前記所定時間は、一定時間であり、前記所定の位置関係は、前記所定のオブジェクトと前記操作キャラクタとが所定の距離内に位置する関係であり、前記操作キャラクタを移動させるステップ(ステップS09)は、前記特別条件が成立しているときには前記一定時間経過後に前記所定のオブジェクトと前記操作キャラクタとが前記所定の距離内に位置する関係となるように前記操作キャラクタを移動させる。
(付記3):
(付記1)または(付記2)において、前記操作キャラクタを移動させるステップ(ステップS09)は、前記所定時間経過後の前記所定のオブジェクトの位置と前記ユーザの入力操作時の前記操作キャラクタの位置との距離に応じて、前記操作キャラクタの移動速度を変化させる。
(付記4):
(付記1)から(付記3)のいずれかにおいて、前記所定の位置関係となる位置は、前記所定時間経過後の前記所定のオブジェクトの位置を基準として第1の方向に位置する第1位置と、第2の方向に位置する第2位置とを含み、前記操作キャラクタを移動させるステップ(ステップS09)は、前記特別条件が成立しているときであって、前記ユーザからの入力操作が、第1入力態様であるときには前記第1位置に前記操作キャラクタを移動させる一方、第2入力態様であるときには前記第2位置に前記操作キャラクタを移動させる。
(付記5):
(付記1)から(付記4)のいずれかにおいて、前記操作キャラクタを移動させるステップ(ステップS09)は、前記特別条件が成立しているときであっても、前記操作キャラクタの位置が前記所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置であるときには前記操作キャラクタを移動させない。
(付記6):
(付記1)から(付記5)のいずれかにおいて、前記操作キャラクタを移動させるステップ(ステップS09)は、前記ゲーム領域のうち第1領域内において前記操作キャラクタを移動可能であり、前記特別条件が成立しているときであっても前記所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置が、前記第1領域内の位置でないときには前記操作キャラクタを移動させず、前記第1領域内の位置であるときに前記操作キャラクタを移動させる。
(付記7):
(付記1)から(付記5)のいずれかにおいて、前記操作キャラクタを移動させるステップ(ステップS09)は、前記ゲーム領域のうち第1領域内において前記操作キャラクタを移動可能であり、前記特別条件が成立しているときであっても前記所定時間経過後の前記所定のオブジェクトの位置が、前記第1領域内の位置でないときには前記操作キャラクタを移動させず、前記第1領域内の位置であるときに前記操作キャラクタを移動させる。
(付記8):
(付記1)から(付記7)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、ゲームの進行に応じて所定のパラメータを更新するステップ(ステップS18、ステップS22、ステップS27)を実行させ、前記特別条件は、前記所定のパラメータが所定値以上であることにより成立し、前記作用を及ぼすステップは、前記所定のパラメータが所定値以上であるときには、前記所定のパラメータが所定値以上でないときよりもユーザにとって有利な作用を及ぼし得る。
(付記9):
(付記1)から(付記8)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、前記特別条件が成立しており前記操作キャラクタを移動させるステップによって前記所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置に前記操作キャラクタを移動させた後においては、前記特別条件が成立しておらず前記ユーザの入力操作に応じて前記操作キャラクタを移動させた後よりも、ユーザにとっての有利度合いを高めるステップを実行させる。
(付記10):
(付記1)から(付記9)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、前記特別条件が成立しており前記操作キャラクタを移動させるステップによって前記所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置に前記操作キャラクタを移動させるときに特別な演出効果を及ぼすステップ(ステップS09)を実行させる。
(付記11):
(付記1)から(付記10)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、前記ゲーム領域内において特定オブジェクトを配置するステップと、前記特定オブジェクト上を前記操作キャラクタが移動する際に、ユーザにとって不利な作用を及ぼすステップとを実行させ、前記不利な作用を及ぼすステップは、前記特定オブジェクト上を前記操作キャラクタが移動する場合であっても、当該操作キャラクタの移動が、前記特別条件が成立しており前記操作キャラクタを移動させるステップ(ステップS09)により前記所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置までの移動である場合には前記不利な作用を及ぼさない。
(付記12):
(付記1)から(付記11)のいずれかにおいて、前記所定の位置関係は、前記所定のオブジェクトと前記操作キャラクタとの距離が異なる第1の位置関係と第2の位置関係とを含み、前記作用を及ぼすステップ(ステップS10)は、前記第1の位置関係であるときよりも、前記第2の位置関係であるときの方が、ユーザにとって有利度合いが高い作用を及ぼし、前記操作キャラクタを移動させるステップ(ステップS09)は、前記特別条件が成立しているときには前記所定時間経過後の前記所定のオブジェクトと前記第2の位置関係となる位置に前記操作キャラクタを移動させる。
(付記13):
本開示に示す一実施形態のある局面によれば、プロセッサ、メモリおよびタッチスクリーンを備えるコンピュータにおいて実行されるゲーム方法であって、前記コンピュータが、所定のオブジェクトを所定のゲーム領域内において移動させるステップと、ユーザの入力操作に応じて、操作キャラクタを前記ゲーム領域内において移動させるステップ(ステップS09)と、前記所定のオブジェクトと前記操作キャラクタとが所定の位置関係である場合に、前記操作キャラクタが前記所定のオブジェクトに対して作用を及ぼすステップ(ステップS10)とを備え、前記操作キャラクタを移動させるステップ(ステップS09)は、ユーザの入力操作に応じて、特別条件が成立しているときには所定時間経過後の前記所定のオブジェクトの位置を特定し、当該所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置に前記操作キャラクタを移動させる。
(付記14):
本開示に示す一実施形態のある局面によれば、情報処理装置であって、ゲームプログラムを記憶する記憶部と、前記ゲームプログラムを実行することにより、前記情報処理装置の動作を制御する制御部を備え、前記制御部は、所定のオブジェクトを所定のゲーム領域内において移動させるステップと、ユーザの入力操作に応じて、操作キャラクタを前記ゲーム領域内において移動させるステップ(ステップS09)と、前記所定のオブジェクトと前記操作キャラクタとが所定の位置関係である場合に、前記操作キャラクタが前記所定のオブジェクトに対して作用を及ぼすステップ(ステップS10)とを実行させ、前記操作キャラクタを移動させるステップ(ステップS09)は、ユーザの入力操作に応じて、特別条件が成立しているときには所定時間経過後の前記所定のオブジェクトの位置を特定し、当該所定時間経過後の前記所定のオブジェクトと前記所定の位置関係となる位置に前記操作キャラクタを移動させる。
〔ソフトウェアによる実現例〕
ユーザ端末100およびサーバ200の各々における制御は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
後者の場合、ユーザ端末100およびサーバ200は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば1つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばCPU(Central Processing Unit)を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ROM(Read Only Memory)等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するRAM(Random Access Memory)などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。