〔実施形態1〕
本開示に係るゲームシステムは、複数のユーザにゲームを提供するためのシステムである。以下、ゲームシステムについて図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
<ゲームシステム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が備えるこれらの構成は、通信バスによって互いに電気的に接続される。また、図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とは異なる入力装置(図示せず)から出力される信号をユーザの入力操作として特定し、受け付ける。
<ゲーム概要>
ゲームシステム1は、ゲームプログラムに基づいて、各ユーザが操作する各ユーザ端末100が通信して対戦を進行させる通信対人対戦ゲームを実行するためのシステムである。
ゲームシステム1は、特定のジャンルに限らず、あらゆるジャンルのゲームを実行するためのシステムであってもよい。例えば、テニス、卓球、ドッジボール、野球、サッカーおよびホッケーなどのスポーツを題材としたゲーム、パズルゲーム、クイズゲーム、RPG、アドベンチャーゲーム、シューティングゲーム、シミュレーションゲーム、育成ゲーム、ならびに、アクションゲームなどであってもよい。
ゲームシステム1は、一例として、通信対人対戦ゲームとして、野球の試合を進行させる、通信対人対戦型の野球ゲーム(以下、本ゲーム、本野球ゲームと称することがある)を実行する。具体的には、ゲームシステム1が実行する野球ゲームでは、サーバ200(情報処理装置)を介して通信する第1のユーザ端末100と第2のユーザ端末100とによって、それぞれのチームが操作される。一例として、ゲームシステム1は、第1のユーザ端末100のユーザが操作する1以上のキャラクタが属する自チームと、第2のユーザ端末100のユーザ(相手ユーザ)が操作する1以上のキャラクタが属する相手チームとを対戦させる。
本野球ゲームにおいて、ユーザによって対人の対戦がプレイされることにより、プレイ内容に対する評価結果(勝敗、成績、スコアなどの対戦成績)が出力される。また、該ゲームにおいては、ユーザが対戦をプレイしたことに対して報酬が付与される。報酬の詳細については後述する。
本野球ゲームは、1イニングにつき、表と裏でチームの攻守が入れ替わりつつ進行する。以下では、あるイニングの表または裏において、守備側のチームを操作するユーザ端末100と、攻撃側のユーザ端末100とを互いに区別する必要がある場合、前者を投球側ユーザ端末100A、後者を打撃側ユーザ端末100Bと称する。両者を区別する必要がない場合には、単に、ユーザ端末100と称する。投球側ユーザ端末100Aのユーザを、投球側ユーザ、打撃側ユーザ端末100Bのユーザを、打撃側ユーザと称する。ただし、両ユーザを特に区別する必要がない場合、および、その区別が明らかな場合には、単にユーザと称する。
本野球ゲームにおける対戦は、各ユーザの操作によらずに進行するオート進行モード(第1モード)、または、各ユーザの操作に基づいて進行するマニュアル進行モード(第2モード)のいずれかで進行する。具体的には、本野球ゲームにおける対戦は、該対戦の状況が所定の条件を満たす状況となった場合、自動的に、オート進行モードからマニュアル進行モードに変更される。一方、本野球ゲームにおける対戦は、ユーザの操作によって、オート進行モードをマニュアル進行モードに変更することはできない。また、一例として、本野球ゲームにおける対戦は、オート進行モードで開始されてもよい。
また、本野球ゲームにおいて、ユーザは、自身でキャラクタを制御することを希望しない場合に、ユーザ端末100を操作して、対戦におけるモードを、マニュアル進行モードから、上記オート進行モードとは異なる第2のオート進行モードに変更することが可能であってもよい。この例の場合、ユーザは、ユーザ端末100を操作して、第2のオート進行モードからマニュアルモードに変更することが可能であることが望ましい。
マニュアル進行モードの場合、投球側ユーザは、投球側ユーザ端末100Aを用いて、投手キャラクタによる投球を操作し、攻撃側ユーザは、打撃側ユーザ端末100Bを用いて、打者キャラクタによる打撃を操作する。
また、マニュアル進行モードの場合、投球側ユーザ端末100Aは、投球側ユーザから受け付けた投球操作に応じて投球結果を決定し、該投球結果を含むデータ(図1に示す投球結果D1)を生成し、サーバ200に送信する。投球結果D1は、サーバ200を介して、対戦相手の打撃側ユーザ端末100Bに送信される。投球操作とは、投球側ユーザが、投手キャラクタに投球させるために、投球側ユーザ端末100Aの入力部151に対して実施する操作のことである。
また、マニュアル進行モードの場合、打撃側ユーザ端末100Bは、打撃側ユーザから受け付けた打撃操作に応じて打撃結果を決定し、該打撃結果を含むデータ(図1に示す打撃結果D2)を生成し、サーバ200に送信する。打撃結果D2は、サーバ200を介して、対戦相手の投球側ユーザ端末100Aに送信される。打撃操作とは、打撃側ユーザが、打者キャラクタにボールを打撃させるために、打撃側ユーザ端末100Bの入力部151に対して実施する操作のことである。
一方、オート進行モード、または、第2のオート進行モードの場合、ユーザ端末100は、ゲームプログラムにしたがって、進行している対戦に関わる各種情報に基づいてキャラクタの動作結果(投球結果または打撃結果)を決定する。そして、決定した動作結果をサーバ200へ送信する。
<各装置のハードウェア構成要素>
プロセッサ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の協働により実現するためのゲームプログラムであってもよい。また、各種データとは、ユーザ情報およびゲーム情報などのゲームに関するデータ、ならびに、ユーザ端末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の機能的構成>
図2は、ゲームシステム1に含まれるサーバ200およびユーザ端末100の機能的構成を示すブロック図である。サーバ200およびユーザ端末100のそれぞれは、図示しない、一般的なコンピュータとして機能する場合に必要な機能的構成、および、ゲームにおける公知の機能を実現するために必要な機能的構成を含み得る。
ユーザ端末100は、ユーザの入力操作を受け付ける入力装置としての機能と、ゲームの画像や音声を出力する出力装置としての機能を有する。ユーザ端末100は、プロセッサ10、メモリ11、ストレージ12、通信IF13、および入出力IF14等の協働によって、制御部110および記憶部120として機能する。
サーバ200は、各ユーザ端末100と通信して、各ユーザ端末100が通信対戦ゲームを進行させるのを支援する機能を有する。サーバ200は、プロセッサ20、メモリ21、ストレージ22、通信IF23、および入出力IF24等の協働によって、制御部210および記憶部220として機能する。
記憶部120および記憶部220は、ゲームプログラム131、ゲーム情報132およびユーザ情報133を格納する。ゲームプログラム131は、ユーザ端末100およびサーバ200で実行するゲームプログラムである。ゲーム情報132は、制御部110および制御部210がゲームプログラム131を実行する際に参照するデータである。ユーザ情報133は、ユーザのアカウントに関するデータである。記憶部220において、ゲーム情報132およびユーザ情報133は、ユーザ端末100ごとに格納されている。
(サーバ200の機能的構成)
制御部210は、記憶部220に格納されたゲームプログラム131を実行することにより、サーバ200を統括的に制御する。例えば、制御部210は、ユーザ端末100に各種データおよびプログラム等を送信する。制御部210は、ゲーム情報もしくはユーザ情報の一部または全部をユーザ端末100から受信する。ゲームがマルチプレイゲームである場合には、制御部210は、ユーザ端末100からマルチプレイの同期の要求を受信して、同期のためのデータをユーザ端末100に送信してもよい。
制御部210は、ゲームプログラム131の記述に応じて、対戦支援部211として機能する。制御部210は、実行するゲームの性質に応じて、ユーザ端末100におけるゲームの進行を支援するために、図示しないその他の機能ブロックとしても機能することができる。
対戦支援部211は、各ユーザ端末100が通信対戦ゲームを進行させるのを支援する。具体的には、対戦支援部211は、対戦する各ユーザ端末100と通信して、ユーザ端末100同士のやりとりを仲介する。さらに、対戦支援部211は、対戦相手のマッチング、対戦の進行状況の同期をとるための同期制御などを実行する。
(ユーザ端末100の機能的構成)
制御部110は、記憶部120に格納されたゲームプログラム131を実行することにより、ユーザ端末100を統括的に制御する。例えば、制御部110は、ゲームプログラム131およびユーザの操作にしたがって、ゲームを進行させる。また、制御部110は、ゲームを進行させている間、必要に応じて、サーバ200と通信して、情報の送受信を行う。
制御部110は、ゲームプログラム131の記述に応じて、操作受付部111、表示制御部112、UI制御部113、アニメーション生成部114、および、対戦進行部115として機能する。制御部110は、実行するゲームの性質に応じて、ゲームを進行させるために、図示しないその他の機能ブロックとしても機能することができる。
操作受付部111は、入力部151に対するユーザの入力操作を検知し受け付ける。操作受付部111は、タッチスクリーン15およびその他の入出力IF14を介したコンソールに対してユーザが及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部110の各要素に出力する。
例えば、操作受付部111は、入力部151に対する入力操作を受け付け、該入力操作の入力位置の座標を検出し、該入力操作の種類を特定する。操作受付部111は、入力操作の種類として、例えばタッチ操作、スライド操作、スワイプ操作、およびタップ操作等を特定する。また、操作受付部111は、連続して検知されていた入力が途切れると、タッチスクリーン15から接触入力が解除されたことを検知する。
UI制御部113は、UIを構築するために表示部152に表示させるUI部品を制御する。UI部品は、ユーザが、ゲームの進行上必要な入力をユーザ端末100に対して行うためのツール、または、ゲームの進行中に出力される情報をユーザ端末100から得るためのツールである。UI部品は、これには限定されないが、例えば、アイコン、ボタン、リスト、メニュー画面などである。
また、マニュアル進行モードにおける対戦進行中、とりわけ、投球操作、または、打撃操作を支援するためのUI部品の表示態様を制御する。打撃操作を支援するUI部品としては、例えば、打撃の良好なタイミングを示すタイミングヒントオブジェクト、投手キャラクタから投げられたボール、投球の進行方向の変化を示す方向ヒントオブジェクト、投球の到達予定位置を示す位置ヒントオブジェクト、および、バットとボールとの当たりを判定するためのミートカーソル等がある。投球操作を支援するUIオブジェクトとしては、例えば、球種選択オブジェクト、コース提示オブジェクト、コース選択オブジェクト、および、投球タイミングオブジェクト等がある。
アニメーション生成部114は、上述のUI部品を含む各種のオブジェクトの制御態様に基づいて、各オブジェクトのモーションを示すアニメーションを生成する。例えば、投手の投球動作のアニメーション、打者の打撃動作のアニメーション、該打者が振るバットのアニメーション、投手によって投げられたボールのアニメーション、打者によって打たれたボールのアニメーション、走者が盗塁するアニメーション等を生成してもよい。
対戦進行部115は、サーバ200との間でデータの送受信を行って、相手ユーザとの対戦を進行させる。また、対戦進行部115は、UI制御部113、アニメーション生成部114および表示制御部112を制御して、ユーザが本野球ゲームをプレイするために必要な上述のUIをユーザに提供する。対戦進行部115は、UI制御部113またはアニメーション生成部114に、UI部品を含むゲーム画面を生成させる。対戦進行部115は、表示制御部112に、生成された該ゲーム画面を表示部152に表示させる。これにより、ユーザが本野球ゲームをプレイするためのUIが実現される。
なお、図2に示すサーバ200およびユーザ端末100の機能は一例にすぎない。サーバ200は、ユーザ端末100が備える機能の少なくとも一部を備えていてもよい。また、ユーザ端末100は、サーバ200が備える機能の少なくとも一部を備えていてもよい。さらに、ユーザ端末100およびサーバ200以外の他の装置をゲームシステム1の構成要素とし、該他の装置にゲームシステム1における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、ユーザ端末100、サーバ200、および他の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
<ユーザ情報のデータ構造>
図3は、ユーザ情報133のデータ構造の一例を示す図である。ユーザ情報133は、本ゲームを始めてプレイするユーザのユーザ端末100から、ゲーム開始要求が送信された場合に、サーバ200の対戦支援部211によって生成される。あるいは、ユーザ情報133は、ユーザ端末100によって生成されて、サーバ200に提供されてもよい。対戦支援部211は、各ユーザの各ユーザ情報133を参照することにより、合理的なマッチングを実現することができる。
本実施形態では、ユーザ情報133は、一例として、ユーザID、プロフィール、および、プレイ履歴を含む。ユーザIDは、ゲームシステム1においてユーザを一意に識別するためのユーザ識別情報である。プロフィールは、ユーザに関する各種の基本情報である。プレイ履歴は、ユーザが本ゲームをプレイした履歴を示す情報である。
プロフィールは、一例として、ユーザ名、ユーザレベル、および、レーティングの各項目で構成される。ユーザ名は、ゲームシステム1をプレイするユーザ本人を指す名称である。ユーザ名は、例えば、ユーザ本人および他のユーザが、該ユーザ本人を識別するために用いられる。ユーザレベルは、ユーザが本ゲームプレイしたことに応じて獲得された経験値に基づいて算出される値である。例えば、本ゲームのプレイ回数が多いほど、あるいは、クリアされたクエストまたはミッションなどの難易度が高いほど、多くの経験値がユーザに付与され、ユーザレベルは上昇する。レーティングは、対戦におけるユーザの強さを表す指標である。レーティングは、所定の演算式に基づき、ユーザ同士の対戦の結果(例えば、勝敗)と、各ユーザの対戦前のレーティングの差分とに基づいて更新される。具体的には、対戦に勝利したユーザのレーティングは増加され、敗北したユーザのレーティングは、減じられる。したがって、レーティングが高いほどそのユーザが対戦に強いという推測が成り立つ。
プレイ履歴は、一例として、プレイ開始日、総プレイ時間、ログイン日数、プレイ回数、パック開封回数、および、クリア済ミッションの各項目で構成される。プレイ開始日は、ユーザ端末100からゲーム開始要求が送信されサーバ200宛てに送信され、サーバ200が該要求を受け付けた日を示す。総プレイ時間は、ユーザ端末100が、本ゲームのゲームプログラム131を起動し、サーバ200とオンライン接続されている時間の総計を示す。総プレイ時間は、プレイ開始日から計測される。ログイン日数は、プレイ開始日から計測して、ユーザ端末100がサーバ200とオンライン接続された日が何日あるのかを示す。プレイ回数は、本野球ゲームの対戦が何試合プレイされたかを示す。クリア済ミッションは、本ゲーム提供されるミッションのうち、ユーザがクリアしたミッションを示す。なお、パック開封回数については後述する。この他にも、直近1か月のログイン日数、最後のログイン時点からの経過時間、などが、プレイ履歴の項目として含まれていてもよい。
<レーティングについて>
本実施形態では、対戦相手のマッチングは、ユーザに付与されているレーティング(評価値)に少なくとも基づいて、サーバ200の対戦支援部211によって実行される。具体的には、対戦支援部211は、レーティングが近いユーザ同士をマッチングする。レーティングは、対戦結果に応じて更新される値である。したがって、レーティングを参照することにより、対戦支援部211は、基本的には、実力が拮抗するユーザ同士をマッチングすることができる。対戦支援部211は、一例として、対戦の勝敗に応じて、以下のようにレーティングを増減させる。
レーティングの算出および更新の処理は、サーバ200の対戦支援部211が実行してもよいし、ユーザ端末100(クライアント、コンピュータ)の対戦進行部115が実行してもよい。いずれにしても、ユーザに付与されている最新のレーティングは、サーバ200とユーザ端末100との間で共有されている。
以下では、一例として、ユーザに付与されているレーティングの更新は、サーバ200によって行われるものとして説明する。
対戦支援部211は、対戦相手をマッチングするために参照するレーティングをユーザごとに管理する。対戦支援部211は、例えば、マッチングにより対戦をプレイしたユーザ同士について、対戦前の各ユーザのレーティングの差分値と、対戦の勝敗とに基づいて、対戦後の各ユーザのレーティングを更新する。
対戦支援部211は、例えば、初期値として値「1500」を各ユーザに設定する。ユーザXとユーザYとが対戦し、ユーザXが勝利し、ユーザYが敗北した場合に、以下の式1および式2に従って、対戦後のレーティングが更新される。
〔式1〕 対戦後の勝利側のユーザ(ユーザX)のレーティング = 勝利側のユーザ(ユーザX)の対戦前のレーティング + 32 + (敗北した側(ユーザY)のレーティング − 勝利した側(ユーザX)のレーティング)×0.04
〔式2〕 対戦後の敗北側のユーザ(ユーザY)のレーティング = 敗北側のユーザ(ユーザY)の対戦前のレーティング − 32 + (敗北した側(ユーザY)のレーティング − 勝利した側(ユーザX)のレーティング)×0.04
対戦前後において変動するレーティングに幅(上限値および下限値)を設けてもよい。例えば、変動するレーティングの幅として、最大値「64」、最小値「4」などと設定してもよい。対戦するユーザ間のレーティングの差が過度に大きい場合、式1または式2に従ってレーティングを計算すると、レーティングが高い方のユーザが、勝利したにもかかわらずレーティングが減少し、勝利したユーザが納得できないという事態が生じ得る。そこで、対戦前のレーティングから変動する幅に最大値および最小値を設定することで、そのような事態を回避し、ユーザの納得感を向上させることができる。
<処理フロー>
図4は、ゲームシステム1が、ゲームプログラム131に基づく本野球ゲームを実行するときの処理の流れを示すフローチャートである。なお、図示のフローチャートは、対戦において先攻のユーザのユーザ端末100における処理の流れを示している。サーバ200を介したユーザ端末100同士の通信処理の概略は、先攻のユーザのユーザ端末100と、後攻のユーザのユーザ端末100とで共通しており、後攻のユーザのユーザ端末100における処理の流れと重複するため説明を繰り返さない。
ステップS101において、対戦進行部115は、ユーザの入力操作に従って、マッチング要求をサーバ200へ送信する。マッチング要求とは、他のユーザ端末100のユーザと対戦を行なえるように、対戦相手となる他のユーザ端末100を探索することを、サーバ200に対して要求するメッセージである。
ステップS201において、対戦支援部211は、ユーザのレーティングに基づいてマッチングを行う。続いて、ステップS202において、対戦支援部211は、マッチング結果をユーザ端末100に返信する。対戦相手が見つかってマッチングが成立した場合には、対戦支援部211は、要求元のユーザが操作するユーザ端末100と、対戦相手のユーザが操作するユーザ端末100とのそれぞれにマッチング結果を配信する。マッチング結果には、対戦相手の情報が含まれている。対戦相手が見つからずにタイムアウトした場合には、対戦支援部211は、要求元のユーザのユーザ端末100に、対戦相手が見つからなかった旨の通知を含むマッチング結果を送信する。
ステップS102において、対戦進行部115は、サーバ200を介して対戦相手のユーザと通信し、対戦を開始させる。このとき、対戦進行部115は、オート進行モードで対戦を開始させる。ステップS103において、対戦進行部115は、オート進行モードで対戦を開始させたことに基づき、オート進行画面を表示部152に表示させる。オート進行画面とは、対戦の状況をユーザに認識させるための画面である。オート進行画面が表示されることにより、各ユーザは、対戦の状況を認識することができる。また、マニュアル進行モードとなったときに、どのようにプレイすべきかを容易に決定することができる。
ステップS104において、対戦進行部115は、オート進行モードで対戦を進行させる。また、ステップS203において、対戦支援部211は、ユーザ端末100にて実行される対戦の進行にあわせて、対戦の進行を支援する。具体的には、対戦支援部211は、対戦する複数のユーザ端末100間の同期制御を行ったり、投球結果D1および打撃結果D2のやりとりを仲介したりする。対戦支援部211は、対戦が終了するまで、対戦の支援を継続する(ステップS204でNO)。また、ステップS104にて対戦が進行するにしたがって、対戦進行部115は、オート進行画面を更新する。
ステップS105において、対戦の状況が所定の条件を満たす状況となった場合、対戦進行部115は、ステップS105のYESからステップS106へ進む。そして、対戦進行部115は、ステップS106において、対戦のモードをマニュアル進行モードに変更し、ステップS107において、操作画面を表示させる。操作画面とは、マニュアル進行モードにおいて、ユーザの操作を受け付けるための画面である。ユーザの操作とは、例えば、投球操作および打撃操作である。
ステップS108において、対戦進行部115は、マニュアル進行モードで対戦を進行させる。ステップS109において、所定の条件を満たす状況ではなくなった場合、対戦進行部115は、ステップS109のNOからステップS110へと進む。ステップS110において、対戦が終了していない場合、対戦進行部115は、ステップS110のNOからステップS111へ進む。ステップS111において、対戦進行部115は、対戦のモードをオート進行モードに変更し、ステップS103へ戻る。すなわち、対戦進行部115は、所定の条件を満たす状況ではなくなった場合、対戦が終了していなければ、該対戦を再度オート進行モードで進行させる。
なお、ステップS105にて所定の条件を満たす状況となっていない場合、対戦進行部115は、ステップS105のNOからステップS104へ戻る。すなわち、この場合、対戦進行部115は、オート進行モードによる対戦の進行を継続させる。
また、ステップS109にて所定の条件を満たす状況が継続している場合、対戦進行部115は、ステップS109のYESからステップS108へ戻る。すなわち、この場合、対戦進行部115は、マニュアル進行モードによる対戦の進行を継続させる。
ステップS204において、対戦が終了すると、対戦支援部211は、ステップS204のYESからステップS205へ進む。対戦支援部211は、ステップ205において、マニュアル進行モードの結果に応じて、各ユーザのレーティングを更新する。対戦支援部211は、更新後のレーティングを各ユーザのユーザ端末100へ送信する。
一例として、対戦支援部211は、ユーザが対戦に勝利した場合、マニュアル進行モードの結果が良好な結果であるほど、レーティングの増加量を大きくする。一方、対戦支援部211は、ユーザが対戦に敗北した場合、マニュアル進行モードの結果が良好な結果であるほど、レーティングの減少量を小さくする。一例として、対戦支援部211は、上述した式1および式2の「32」を、マニュアル進行モードの結果に応じて、より大きい値にしたり、小さい値にしたりする。
マニュアル進行モードの結果とは、すなわち、マニュアル進行モードにおけるユーザの操作に応じたキャラクタの動作である。マニュアル進行モードの結果が良好な結果であるとは、例えば、攻撃側の場合、キャラクタが打撃操作に応じて打撃した結果が安打であった、打撃した結果得点が入ったなどである。前者の場合、対戦支援部211は、単打、二塁打、三塁打、本塁打の順にレーティングの増加量を大きくしてもよい。後者の場合、対戦支援部211は、得点が多いほどレーティングの増加量を大きくしてもよい。
一方、守備側の場合、対戦相手が操作するキャラクタが打撃した結果が凡打であった、無得点に抑えたなどである。前者の場合、対戦支援部211は、ゴロ、フライに比べて三振の場合のレーティングの増加量を大きくしてもよい。
ステップS206において、対戦支援部211は、マニュアル進行モードの結果に応じて、各ユーザに獲得させる報酬を決定し、決定した報酬を各ユーザに付与する。一例として、対戦支援部211は、マニュアル進行モードの結果が良好な結果であるほど、本野球ゲームの進行において価値の高い報酬をユーザに付与する。本野球ゲームにおいて、報酬はデジタルコンテンツである。デジタルコンテンツをユーザに付与することは、一例として、ユーザに対応付けて管理されているデジタルコンテンツのステータスを、使用不可から使用可能に遷移させることであってもよい。あるいは、デジタルコンテンツを、ユーザ識別情報またはユーザIDに対応付けて、ゲームシステム1に含まれる少なくともいずれかのメモリ(メモリ11、メモリ21)に記憶させることであってもよい。これにより、ユーザは、対戦をプレイすることにより報酬を獲得することができる。
ステップS112において、対戦進行部115は、表示部152に対戦結果を表示する。該対戦結果は、勝敗を示す情報に加えて、更新後のユーザのレーティングを示す情報、および、ユーザが獲得した報酬を示す情報の少なくとも一方を含んでいてもよい。以上で、ゲームシステム1は、1回の対戦のプレイを終了させる。
<画面例>
以下では、上述した処理フローの各ステップにおいて、ユーザ端末100の表示部152に表示されるゲーム画面について説明する。図5から図10は、該ゲーム画面の一具体例である。各ゲーム画面は、UI制御部113が生成するUI部品、アニメーション生成部114が生成するアニメーション、または、これらを組み合わせによって構成される。UI制御部113またはアニメーション生成部114によって生成されたゲーム画面は、表示制御部112によって、ユーザ端末100の表示部152に表示される。表示制御部112、UI制御部113およびアニメーション生成部114は、対戦進行部115の制御下で、ゲーム画面を表示部152に表示するための処理を実行する。よって、「対戦進行部115が、ゲーム画面を表示部152に表示する」という記載は、「対戦進行部115が、UI制御部113またはアニメーション生成部114を制御して、UI部品またはアニメーションを生成させ、表示制御部112を制御して、生成されたUI部品またはアニメーションを含むゲーム画面を表示部152に表示させる」ことを意味する。
(マッチング結果画面)
図5は、ステップS202にて対戦支援部211から送信されたマッチング結果に基づき、対戦進行部115が表示部152に表示するマッチング結果画面の一具体例を示す図である。図示のマッチング結果画面300は、一例として、ユーザ本人のユーザ名301、対戦相手のユーザ名302、ユーザ本人のレーティング303、および、対戦相手のレーティング304を含んでいる。
(オート進行画面)
図6は、ステップS103にて対戦進行部115が表示部152に表示するオート進行画面の一具体例を示す図である。図6の(A)に示すオート進行画面400は、対戦の状況が所定の条件を満たす状況となっていない場合のオート進行画面である。オート進行画面400は、一例として、各チームの各イニングの得点、並びに、各チームの現在の得点、ヒットの数、およびエラーの数をユーザに認識させるためのスコアボード401を含む。なお、本野球ゲームにおいて、対戦は、図示のスコアボード401が示すように、9イニングで行われてもよい。
また、オート進行画面400は、各チームの現在の得点を示す得点表示402、ユーザ本人のユーザ名403、対戦相手のユーザ名404、ユーザ本人が操作するチームのチーム名405、対戦相手が操作するチームのチーム名406を含んでいてもよい。
また、オート進行画面400は、その他のUIを含んでいてもよい。例えば、現在打席に立っている打者キャラクタのキャラクタ名、画像、および打撃結果、現在投球している投手キャラクタのキャラクタ名および画像、ボールカウントおよびアウトカウントを示す画像、現在のイニングを示す画像、各塁の走者の有無を示す画像などを含んでいてもよい。
対戦進行部115は、オート進行モードで対戦が進行するに従い、図示のスコアボード401および得点表示402を更新する。
具体的には、対戦進行部115は、ユーザの操作するチームが守備側である場合、現在投球している投手キャラクタのステータスに基づき、投球結果D1を生成する。一例として、対戦進行部115は、現在投球している投手キャラクタのステータスに基づき、投手キャラクタに投球させる球種、球速、およびコース(内角高め、低めなど)を決定し、投球結果D1に含める。そして、対戦進行部115は、該投球結果D1を、サーバ200を介して対戦相手のユーザ端末100へ送信する。
対戦進行部115は、投球結果D1の送信に対する応答として、打撃結果D2を受信する。対戦進行部115は、打撃結果D2に応じて対戦を進行させる。対戦を進行させた結果、得点が入った場合、対戦進行部115は、スコアボード401および得点表示402を更新する。また、対戦進行部115は、打撃結果D2がヒットあるいはエラーである場合、または、スリーアウトとなった場合、スコアボード401を更新する。
一方、ユーザの操作するチームが攻撃側である場合、対戦進行部115は、対戦相手のユーザ端末100から送信される投球結果D1を待機する。投球結果D1を受信すると、対戦進行部115は、投球結果D1と、現在打席に立っている打者キャラクタとに基づき、打撃結果D2を生成する。一例として、対戦進行部115は、投球結果D1が示す球種、球速、およびコースに対する、打者キャラクタの得意不得意を示すステータス、並びに、打者キャラクタの打撃および走塁に関するステータスに基づき、打撃結果D2を生成し、該打撃結果D2を、サーバ200を介して対戦相手のユーザ端末100へ送信する。また、対戦進行部115は、打撃結果D2に応じて対戦を進行させる。なお、打撃に関するステータスとは、例えば、ボールをバットに当てる巧さ(命中力)や、ボールを遠くに飛ばす力(打撃力)などである。また、走塁に関するステータスとは、例えば、足の速さ(走力)である。
また、対戦進行部115は、打撃結果D2を生成するとき、投球結果D1および打者キャラクタのステータス以外の情報を用いてもよい。該情報の具体例としては、現在のボールカウント、アウトカウント、走者の有無、現在の各チームの得点などが挙げられる。
対戦進行部115は、以上の処理を、オート進行モードが終了するまで繰り返すことで、対戦を進行させる。
図6の(B)に示すオート進行画面400は、対戦の状況が所定の条件を満たす状況となった場合のオート進行画面である。図示のオート進行画面400は、さらに、対戦の状況の概要を示す概要表示407、対戦の状況の詳細を示す詳細表示408、および、ゲーム画面を操作画面に変更することを示す変更表示409を含む。詳細表示408は、一例として、アウトカウント、走者の有無および走者がいる塁、並びに打者キャラクタの名前を含む。
図示の例において、所定の条件は、概要表示407が示すように、ユーザが操作するチームが得点するチャンスとなったことである。得点するチャンスとは、例えば、ユーザが操作するチームが攻撃側である場合に、詳細表示408が示すように、得点圏(二塁または三塁の少なくとも一方)に走者がいることである。図6の(B)に示すオート進行画面400が表示部152に表示された場合、対戦進行部115は、操作画面を表示可能となったとき、オート進行画面を操作画面に変更する。
図7は、対戦の状況が所定の条件を満たす状況となった場合のオート進行画面の別の例を示す図である。図7の(A)の例において、所定の条件は、概要表示407Aが示すように、ユーザが操作するチームがピンチ、すなわち失点する可能性がある状況となったことである。失点する可能性がある状況とは、例えば、ユーザが操作するチームが守備側である場合に、詳細表示408が示すように、得点圏に走者がいることである。つまり、図7の(A)は、図6の(B)に示すオート進行画面400が一方のユーザ端末100に表示されたときの、他方のユーザ端末100に表示されるオート進行画面400である。
また、図7の(B)の例において、所定の条件は、概要表示407Bが示すように、最後のバッターとなったことである。換言すれば、所定の条件は、9回の攻撃において、詳細表示408Bが示すように、ツーアウトとなったことである。なお、所定の条件は、図6の(B)および図7に示すものに限定されない。
(操作画面1;投球画面)
図8から図10は、ステップS107にて対戦進行部115が表示部152に表示する操作画面の一具体例を示す図である。図8および図9に示す操作画面600は、投球側ユーザ端末100Aに表示される投球画面である。操作画面600は、マニュアル進行モードにおいて、投球側ユーザによる投球操作を受け付けるための、以下に説明する投球操作UIを含む。
本実施形態において、投球結果D1を決定するための投球操作には、一例として、球種を指定するためのスライド操作と、コースを指定するためのドラッグ操作と、制球の良否を決定するためのタイミングを投球側ユーザに指定させるタップ操作とが含まれる。タップ操作の入力タイミングの良否に応じて、投球の良否が決定される。つまり、投球側ユーザにとって、対戦、特に、守備の回を有利に進めることができるか否かは、マニュアル進行モードの場合、タップ操作の巧拙にかかっている。
マニュアル進行モードが開始されると、投球側ユーザ端末100Aの対戦進行部115は、まず、図8の(A)に示す操作画面600を、UI制御部113に生成させて、表示部152に表示させる。なお、以降、図8の(A)に示す操作画面600を第1の投球画面600と称する場合がある。
操作画面600は、仮想空間に配置されている各種オブジェクトを含む。具体的には、相手ユーザが操作する打者キャラクタ601、バット602、ユーザ自身が操作する投手キャラクタ603、ホームベース607、および、捕手キャラクタ605を含む。
操作画面600は、マニュアル進行モードと第2のオート進行モードとを切り替えるための切替ボタン613を含んでいてもよい。図8の(A)に示す例では、マニュアル進行モードにて進行しているため、切替ボタン613は、マニュアル進行モードを第2のオート進行モードに切り替えるためのボタンとして操作画面600に重畳表示されている。
操作画面600は、対決中の各キャラクタのステータス情報を含んでいてもよい。一例として、操作画面600は、自チームの投手キャラクタのステータス情報611と、相手チームの打者キャラクタのステータス情報612とを含んでいてもよい。
操作画面600は、対戦における現在の状況を示す状況情報を含んでいてもよい。一例として、状況情報は、現在のイニングを示すイニング情報631、各塁における走者の有無を示す走者情報632、現在の各チームの得点を示す得点情報633、現在のボールカウントおよびアウトカウントを示すカウント情報634を含んでもよい。
第1の投球画面600は、投球操作を支援するUIオブジェクトとして、投手キャラクタ603に投げさせる球種を投球側ユーザが指定するための球種指定オブジェクト610を含んでいてもよい。
対戦進行部115は、球種指定オブジェクト610に対するユーザのスライド操作に基づいて、球種を決定する。図8の(A)に示すとおり、球種指定オブジェクト610において、ボールアイコンの周囲を囲うように、球種が1対1で対応付けられた球種アイコンが配置されている。球種アイコンは、対応付けられている球種を示すテキストまたはイラストなどを含んでいる。UI制御部113は、球種指定オブジェクト610において一覧される球種の種類を、投手キャラクタ603の能力に基づいて異ならせてもよい。
操作受付部111は、ボールアイコンに対する所定方向のスライド操作を、球種を指定するための操作として受け付ける。対戦進行部115は、スライド操作の方向に配置されている球種アイコンに対応する球種を、投手キャラクタ603に投げさせる球種として決定する。例えば、図8の(A)に示す例では、ユーザがボールアイコンを上方向にスライドさせた場合、対戦進行部115は、投手キャラクタ603にストレートを投げさせると決定する。球種にはボール604の移動経路、球速等を特定するためのパラメータが対応付けられている。球種のパラメータは、球速、変化量、および変化の方向を示す情報を含む。また、球種のパラメータは、投手キャラクタ603の識別情報に対応付けられて、記憶部120に記憶されている(不図示)。対戦進行部115は、投手キャラクタ603の識別情報に対応付けられた球種のパラメータのうち、決定した球種のパラメータを記憶部120から読み出し、投球結果D1に含める。
球種が決定されると、次に、対戦進行部115は、図8の(B)に示す操作画面600を表示部152に表示させる。なお、以降、図8の(B)に示す操作画面600を第2の投球画面600と称する場合がある。第2の投球画面600は、球種指定オブジェクト610に代えて、コース指定オブジェクト614を含む。コース指定オブジェクト614は、カーソル615と組み合わせて、投球側ユーザに、投手キャラクタ603に投球させるコースを指定させるためのUIオブジェクトとして機能する。
コース指定オブジェクト614は、一例として、ストライクゾーンに対応する矩形を9つのマスに分割したものである。各マスは、投手キャラクタ603の能力、具体的には、得意なコースおよび不得意なコースに基づいて、色分けして表示されてもよい。
コース指定オブジェクト614は、投げられたボールの到達予定位置を示す標識であるカーソル615を含む。第2の投球画面600が表示されている間、操作受付部111は、カーソル615の位置を指定するためのドラッグ操作を受け付ける。操作受付部111がカーソル615を移動させるためのドラッグ操作を受け付けると、UI制御部113は、該ドラッグ操作に関して検出されたタッチ位置に基づいて、カーソル615を移動させる。
操作受付部111は、タッチスクリーン15に対するユーザの最初の接触位置(初期タッチ座標)と、カーソル移動操作後の接触位置(タッチナウ座標)とを取得する。UI制御部113は、取得された各座標を比較した結果得られた変化方向、および、変化量に基づいて、カーソル615の位置の変化方向、および、変化量をそれぞれ決定する。これにより、UI制御部113は、カーソル615が直接タッチされなくても、また、コース指定オブジェクト614の表示領域外でドラッグ操作が受け付けられても、該ドラッグ操作に連動して、カーソル615を移動させることができる。このようにすれば、ユーザの指によってカーソル615の視認が妨げられることを回避できる。表示制御部112は、UI制御部113によって実行されているカーソル615の移動に連動して、移動するカーソル615を第2の投球画面600上に表示させる。
対戦進行部115は、コースの確定を、任意の方法で行う。例えば、ユーザが上述のドラッグ操作に基づく接触が維持された状態で、所定閾値以上の圧力で強く押し込む操作を続けて行ったとする。対戦進行部115は、押し込む操作が受け付けられた時点におけるカーソル615の位置を、最終的なコースとして確定させる。あるいは、「コース確定」などのボタン(不図示)が別途、第2の投球画面600に設けられてもよい。対戦進行部115は、該ボタンがタップ操作されたときのカーソル615の位置に基づいてコースを確定させてもよい。
コースが確定すると、次に、対戦進行部115は、図9の(A)に示す操作画面600を表示部152に表示させる。なお、以降、図9の(A)に示す操作画面600を第3の投球画面600と称する場合がある。第3の投球画面600は、良否判定オブジェクト620を含む。良否判定オブジェクト620は、投手キャラクタ603の制球の良否を決定するためのタイミングを投球側ユーザに指定させるためのUIオブジェクトとして機能する。
一例として、良否判定オブジェクト620は、弓形の帯状のゲージで構成される。良否判定オブジェクト620は、該ゲージ内に、帯の長手方向にスライドするスライドバー621と、スライドバー621が停止する帯上の位置を定義する第1領域622および第2領域623とを含む。
該帯状のゲージは、投手キャラクタ603の位置(以下、第1位置)から、捕手キャラクタ605の位置(以下、第2位置)に向かって伸びている。
UI制御部113は、スライドバー621を、初期位置である第1位置(例えば、図7の破線枠)から、最終位置である第2位置(例えば、図9の(A)のカーソル615の位置)に向かって、帯の長手方向(矢印の方向)に移動させる。アニメーション生成部114は、スライドバー621が、移動の開始から所定時間後に第2領域623を通過し、第1領域622を通過して、最終的にカーソル615の位置に到達するように、アニメーションを生成する。
ユーザは、スライドバー621が帯上の所望の位置に到達した時、その位置でスライドバー621を停止させるよう、タッチスクリーン15に対してタップ操作を行う。UI制御部113は、操作受付部111によってタップ操作が受け付けられた時の位置にて、スライドバー621を停止させる。対戦進行部115は、スライドバー621の停止位置に応じて、制球の良否を判定する。一例として、本実施形態では、対戦進行部115は、スライドバー621が第1領域622で停止した場合に、投手キャラクタ603が制球に完全に成功したと判定し、スライドバー621が第2領域623で停止した場合、成功に近い投球がなされたと判定し、それ以外の領域で停止した場合に、制球に失敗したと判定する。ここで、「制球に完全に成功した」とは、投手キャラクタ603が好投し、投球側ユーザによって指定された球種およびコースどおりに該ボールが仮想空間上を移動することを意味する。「成功に近い投球がなされた」とは、投球側ユーザによって指定された球種およびコースどおりにとはいかないが、それに近い球種およびコースに基づいて該ボールが仮想空間上を移動することを意味する。「制球に失敗した」とは、投手キャラクタ603が失投し、投球側ユーザによって指定された球種およびコースとはかけ離れた球種およびコースにて、該ボールが仮想空間上を移動することを意味する。
別の実施形態では、好投であると判定された場合には、打撃側ユーザ端末100Bは、打撃画面(図10にて後述)に表示される、打撃操作を支援するUIオブジェクトを非表示にしたり、見えにくくしたり、表示するタイミングを遅くしたりしてもよい。これにより、投球側ユーザが、上述の一連の投球操作をうまく実施して制球に成功した場合には、打撃側ユーザが打撃を成功させにくくなる。このように、ユーザのゲームの操作に対する習熟度が対戦の進行に直接影響をおよぼすため、対戦ゲームの興趣性がより一層高まる。
制球の良否が判定されると、次に、対戦進行部115は、図9の(B)に示す操作画面600を表示部152に表示させる。なお、以降、図9の(B)に示す操作画面600を第4の投球画面600と称する場合がある。第4の投球画面600は、良否判定結果624を含む。また、第4の投球画面600においては、投手キャラクタ603が投球を開始するアニメーションが付与され、これまで投手キャラクタ603のグローブに収まっていたボール604が描出されてもよい。これにより、投球側ユーザは、第3の投球画面600に対して行った自身の操作に関して、フィードバックを即時に受け取ることができる。
なお、良否判定オブジェクト620の帯状のゲージは、弓、アーチなど形状を有し、投げられたボールが描く放物線を模していることが好ましい。また、良否判定オブジェクト620の帯の幅は、第1位置から第2位置へ移動するにつれて、細くなるように定められていることが好ましい。また、該ゲージにおいて、第2位置に最も近く、最も帯の幅が細くなっている部分、すなわち、ゲージの先端が、ボールの到達予定位置として確定したカーソル615に重なるように、良否判定オブジェクト620が配置されることが好ましい。これにより、ユーザは、直観的に、帯状のゲージを、投手キャラクタ603から投げられたボールが、画面奥に配置されている捕手キャラクタ605に向かって移動する経路であるかのように理解する。以上のことから、本実施形態に係る良否判定オブジェクト620は、現実の野球を再現するという目的に反して、ゲームの興趣性を高める目的で追加されたUIでありながら、投球画面600を現実の投球シーンから乖離させることなく、見た目に違和感のない投球シーンを演出することに貢献している。
(操作画面2;打撃画面)
図10に示す操作画面700は、打撃側ユーザ端末100Bに表示される打撃画面である。なお、以降、操作画面700を打撃画面700と称する場合がある。打撃画面700は、マニュアル進行モードにおいて、打撃側ユーザによる打撃操作を受け付けるための、以下に説明する打撃操作UIを含む。
対戦相手である投球側ユーザが投球操作を実施すると、それに応じて投球側ユーザ端末100Aにて生成された投球結果D1が、打撃側ユーザ端末100Bに供給される。打撃側ユーザ端末100Bが、投球結果D1を受信すると、打撃側ユーザ端末100Bの対戦進行部115は、例えば、図10に示す打撃画面700を、UI制御部113に生成させて、表示部152に表示させる。
対戦進行部115は、仮想空間としての球場における第1位置と第2位置との間に、ホームベース607を配置する。対戦進行部115は、ホームベース607上に、第1位置から第2位置に向かう方向に交差する方向に延在する交差面を設定する。対戦進行部115は、交差面に基づいて、打者キャラクタ601がボール604を打撃したか否かを判定する。上述したとおり、交差面は、例えば、ストライクゾーン701と、該ストライクゾーンの外側に配置されるボールゾーン702とを含んでいてもよい。
操作受付部111が、投手キャラクタ603が投球したボール604が交差面に到達したタイミングで、ユーザからスイングのタイミングを指定する操作を受け付けると、打者キャラクタ601は、バット602をスイングすることによって、ボール604を打ち返す作用をボール604に与えることができる。図10に示すボール604は、投手キャラクタ603によって投球された後、交差面に向かって移動している途中のボール604の一例を示す。
図10に示すとおり、打撃画面700は、上述の他にも、各種オブジェクトを含んでいてもよい。特に、ユーザの打撃操作を支援するためのUIオブジェクトを含んでいることが好ましい。打撃操作を支援するUIオブジェクトとしては、例えば、タイミングヒントオブジェクト703、ミートカーソル704、位置ヒントオブジェクト705、方向ヒントオブジェクト706等がある。
タイミングヒントオブジェクト703は、打者キャラクタ601にバット602をスイングさせる良好なタイミングをユーザに示す。ミートカーソル704は、バット602がスイングされた際に交差面においてボール604に作用を与え得る領域として、スイングされたバット602の到達予定位置をユーザに示す。また、ミートカーソル704は、バット602とボール604との当たりを判定するために、対戦進行部115によって参照される領域でもある。位置ヒントオブジェクト705は、投手キャラクタ603によって投げられたボール604の、交差面における到達予定位置をユーザに示す。方向ヒントオブジェクト706は、投げられたボール604の進行方向の変化をユーザに示す。
本実施形態において、打撃結果D2を決定するための打撃操作には、一例として、ミートカーソル704の位置を指定するためのスライド操作と、決定したミートカーソル704の位置に向けてバット602を振るタイミングを指定するためのフリック操作とが含まれる。つまり、スライド操作が、投球に対して打撃を行う位置を指定する操作であり、フリック操作が、打撃を行うタイミング、つまりバット602を振るタイミングを指定する操作である。つまり、打撃側ユーザにとって、対戦、特に、攻撃の回を有利に進めることができるか否かは、マニュアル進行モードの場合、スライド操作とフリック操作との両方の巧拙にかかっている。
投手キャラクタ603からボール604が投げられると、打撃画面700において、操作受付部111は、上述の打撃操作を待機する状態に遷移する。操作受付部111が、タッチスクリーン15に対するユーザのスライド操作を受け付けると、該スライド操作にしたがって、UI制御部113は、ミートカーソル704を移動させる。なお、ユーザは、ミートカーソル704のベストの位置を、位置ヒントオブジェクト705を参考にして決定してもよい。
続いて、対戦進行部115は、投手キャラクタ603より投げられたボール604が交差面を基準とする所定の範囲内に到達したか否かを判定する。つまり、投げられたボール604が、ホームベース607上に設定された交差面に所定距離未満まで近づいてきたか否かを判定する。ボール604が交差面から所定距離未満まで到達したと判定された場合、UI制御部113は、ミートカーソル704の移動の少なくとも一部を制限してもよい。移動が制限されたことを示すように、UI制御部113はミートカーソル704の色または模様などの表示態様を変化させてもよい。
打撃画面700において、投げられたボール604には、ストライクゾーン701に向かって移動してくるアニメーションが、アニメーション生成部114によって付与される。ユーザは、移動してくるボール604を目で追い、ボール604がホームベース607上に到達したと思うベストのタイミングで、打者キャラクタ601が行うスイングの開始タイミングを指定するためにフリック操作を行うことができる。
ユーザは、フリック操作のベストのタイミングを計るために、さらに、タイミングヒントオブジェクト703を参考にすることができる。タイミングヒントオブジェクト703は、ボール604の投球が開始されたときから表示が開始され、ボール604がホームベース607上の交差面に近づくにつれてボール604の中心に向かって収縮するようなアニメーションが、アニメーション生成部114によって付与されている。さらに、該アニメーションは、ボール604が交差面に到達したタイミングで、ちょうどボール604の輪郭と同じ大きさにまで縮小するアニメーションである。ユーザは、タイミングヒントオブジェクト703の大きさを確認することにより、良好な打撃結果が得られるベストタイミングを計ることができる。
操作受付部111がフリック操作を受け付けると、対戦進行部115は、その時の交差面におけるボール604とミートカーソル704との位置関係に少なくとも基づいて、打者キャラクタ601がボール604に打撃を与えたか否かを判定する。つまり、ユーザのスライド操作とフリック操作とに基づいて、打者キャラクタ601によってスイングされたバット602が、ボール604に当たったか否かを判定する。例えば、交差面においてボール604がミートカーソル704と少なくとも部分的に重畳している場合には、打者キャラクタ601がボール604を打撃したと判定してもよい。
さらに、対戦進行部115は、操作受付部111が特定したフリック操作のタイミングに基づいて、打撃を与えたか否かの判定を実行してもよい。例えば、交差面におけるボール604およびミートカーソル704が打撃に適合した位置関係にある場合であっても、フリック操作のタイミングがボール604への打撃に適合したタイミングに対して、早過ぎたり遅すぎたりする場合には、対戦進行部115は、打者キャラクタ601がボール604を打撃しなかったと判定してもよい。
また、対戦進行部115は、上述の位置関係に少なくとも基づいて、打撃が与えられたボール604が仮想空間において移動する際の移動経路を算出する。具体的には、対戦進行部115は、上述の位置関係に基づいて、バット602とボール604との衝突を力学的にモデル化する。この場合、バット602に衝突した直後のボール604の速度ベクトル、回転軸、回転量等を、ボール604を移動させるための初期条件として取得すればよい。例えば、ボール604の下部をミートカーソル704の上部で打撃した場合には、打球の角度が上がりフライとなる。また、ボール604の上部をミートカーソル704の下部で打撃した場合には、打球の角度が下がりゴロとなる。また、例えば、対戦進行部115は、ミートカーソル704の中央の位置(図10の芯707)でボール604の中央を打撃する等の所謂ジャストミートの場合には、ライナーでボール604が飛ぶような移動経路を算出する。一方、ジャストミート以外の場合には凡打と判定して、凡打に対応する移動経路を算出してもよい。
対戦進行部115が算出した移動経路にしたがって、アニメーション生成部114は、算出された移動経路を飛んでいくボール604のアニメーションを生成する。表示制御部112は、生成された、飛翔するボール604のアニメーションを、表示部152に表示する。
こうしてボール604がフィールド上に移動した後は、対戦進行部115は、ゲームプログラム131にしたがって、仮想空間における、ボール604の移動、守備をする野手キャラクタの動き、および、進塁する走者キャラクタの動きなどをそれぞれ計算する。そして、計算結果に基づいて、各オブジェクトを移動させ、フィールドプレイシーンを進行させる。UI制御部113およびアニメーション生成部114は、計算されたフィールドプレイシーンに対応する画像またはアニメーションを生成して、表示部152に表示させてもよい。
なお、対戦進行部115は、打者キャラクタ601がボール604に打撃を与えなかったと判定した場合には、ボール604の移動経路の算出を省略してもよい。この場合、打者キャラクタ601がボール604を空振りするアニメーションがアニメーション生成部114によって生成され、該アニメーションが表示制御部112によって表示部152に表示される。
打撃画面700は、進行しているフェーズにおいて対決中の各キャラクタのステータス情報を含んでいてもよい。一例として、自チームの打者キャラクタ601のステータス情報708と、相手チームの投手キャラクタ603のステータス情報709とを含んでいてもよい。また、打撃画面700は、上述した切替ボタン613、および、状況情報を含んでいてもよい。
<作用効果>
上述したように、本実施形態に係る構成および方法によれば、ユーザ端末100の対戦進行部115は、対戦を、オート進行モードで開始し、進行させる。そして、対戦進行部115は、所定の条件を満たした場合、例えば、得点するチャンス、失点の可能性がある状況(ピンチ)、9回2アウトなどの状況となった場合、対戦をマニュアル進行モードに変更する。
つまり、ユーザ自身が操作をユーザ端末100に入力してゲームを進行させる場面は、対戦全体の一部のみとなる。よって、対戦全体においてユーザ自身が操作を入力してゲームを進行させ得る野球ゲームに比べて、1回の対戦にかかる時間が短くなる。従来の野球ゲームには、イニング数を少なくすることで1回の対戦の短時間化を実現するゲームもあるが、本実施形態に係る構成および方法によれば、より短い時間での対戦終了を望むユーザの要望にも応えることができる。
また、ユーザによっては、打撃操作および投球操作を繰り返し入力してゲームを進行させることに飽きを感じる場合がある。これに対して、本実施形態に係る構成および方法によれば、打撃操作および投球操作を入力する場面は限られているため、このようなユーザを飽きさせず、ユーザのプレイ意欲を維持することができる。
〔実施形態2〕
対戦支援部211は、対戦相手のマッチングを、レーティングに加えて、さらに別のユーザ情報133に基づいて、マッチングを実行する構成であってもよい。
本野球ゲームにおけるチームは、1または複数のオブジェクトを、ユーザがデッキに組み入れることにより生成される。オブジェクトは、本ゲームにおいて、対戦の進行に何らかの作用を及ぼすデジタルコンテンツであり、1以上のオブジェクトによって編成された各ユーザのデッキの強さが、少なくとも、対戦の進行に作用する。オブジェクトは、例えば、選手などのキャラクタであり、本ゲームでは、選手は、一例として、カードという表示態様で表される。
本実施形態では、対戦支援部211がマッチングを実行するために参照する別のユーザ情報133は、デッキの強さの指標である。一例として、対戦支援部211は、マッチングの要求元のユーザが非熟練者である場合、該ユーザのレーティングに加えて、該ユーザのデッキの強さの指標に基づいて、対戦相手を探索する。一方、該ユーザが熟練者である場合、対戦支援部211は、該ユーザのレーティングのみに基づいて対戦相手を探索する。デッキの強さの指標とは、例えば、後述するデッキ総合パラメータである。
なお、本ゲームにおける熟練者とは、本ゲームにおける対戦のプレイを数多くこなし、かつ、対戦に係る操作に慣れていて、腕前が上達しているユーザを指す。熟練者には、比較的高いレーティングが付与されている。非熟練者は、上述の熟練者に該当しないユーザを指す。具体的には、非熟練者には、対戦のプレイ回数が少ない初心者、および、プレイ回数は多くとも、対戦に係る操作に習熟できず、腕前が上達していない未熟者などが含まれる。非熟練者には、比較的低いレーティングが付与されている。
一例として、対戦支援部211は、マッチングの要求元のユーザが非熟練者であるか否かを、該ユーザのユーザ情報133に基づいて判定する。具体的には、対戦支援部211は、ユーザ情報133を参照して、該ユーザのレーティングが所定値以下である場合、該ユーザを被熟練者であると判定してもよい。所定値とは、レーティングの初期値(例えば1500)であってもよい。
以下では、「ユーザのデッキの強さの指標」の具体例として、デッキ総合パラメータを詳細に説明する。まず、該指標の前提となるデッキについて詳細に説明する。
<デッキについて>
図11は、ユーザ端末100の表示部152に表示されるデッキ編成画面の一例を示す図である。本実施形態では、デッキは、対戦に参加させるチームを編成するためのUIである。ユーザは、手持ちのカード中から所望のカードをデッキに組み入れることにより、対戦するチームを編成することができる。本野球ゲームにおけるデッキは、一例として、守備のポジション区分に基づいて、野手デッキおよび投手デッキの2種類のデッキで構成されている。また、本実施形態では、それぞれの区分のデッキを、メインとサブという概念を採用してさらに区分してもよい。本野球ゲームでは、一例として、野手デッキのメインデッキを野手スタメンデッキ、野手デッキのサブデッキを野手ベンチデッキ、投手デッキのメインデッキを投手先発デッキ、および、投手デッキのサブデッキを投手リリーフデッキと称する。
図11の(A)に示すデッキ編成画面は、野手デッキを編成するためのデッキ編成画面800である。デッキ編成画面800は、一例として、野手スタメンデッキ801および野手ベンチデッキ802を含む。野手スタメンデッキ801は、投手を除く8つの守備ポジションのそれぞれに対応する枠F2〜F9と、指名打者に対応する枠F10とを有する。野手ベンチデッキ802は、一例として、控えの選手5人分に相当する5つの枠を有してもよい。
図11の(B)に示すデッキ編成画面は、投手デッキを編成するためのデッキ編成画面850である。デッキ編成画面850は、一例として、投手先発デッキ851および投手リリーフデッキ852を含む。投手先発デッキ851は、一例として、先発投手5人分に相当する5つの枠を有してもよい。投手リリーフデッキ852は、一例として、リリーフ投手6人分に相当する6つの枠を有してもよい。
ユーザは、それぞれのデッキ編成画面を表示部152に表示させて、手持ちの所望のカードを、それぞれの枠に紐付けるための入力操作を入力部151を用いて行う。対戦進行部115は、上述の入力操作を操作受付部111を介して受け付け、枠とカードとを対応付けて、その対応関係をデッキ情報として生成する。
<デッキ情報>
図12は、デッキ情報のデータ構造の一例を示す図である。デッキ情報は、ユーザ端末100の対戦進行部115によって生成され、ゲーム情報132として、ユーザ端末100の記憶部120、および、サーバ200の記憶部220に保存される。
デッキ情報は、カードを配置することが可能な各枠と、カードとの対応関係を示す情報である。一例として、デッキ情報は、デッキを構成する各枠を識別するための枠識別番号と、カードを識別するためのカードIDとが関連付けられたデータ構造を有する。さらに、デッキ情報は、カードIDに関連付けて、総合パラメータ、および、希少度の各項目を含んでいてもよい。総合パラメータについては詳細を後述する。
希少度は、カードが表している選手の希少価値を等級で表したものである。一般に、ゲーム上、特に、プレイパートにおいて良好な結果をもたらす選手、すなわち、野球の試合に係る能力の高い選手には、上級の希少度が設定されている。本実施形態では、希少価値の高い等級から順に、「S」、「A」、「B」、および、「C」のアルファベットにより希少度が設定される。
なお、希少度は、例えば、カードの入手困難性、より具体的には、ミッションのクリア報酬として入手される場合のミッションの難易度、または、有償入手の場合の価格などと相関があってもよい。カードの希少度が高いほど、該カードの入手困難性は高くなる。
つまり、本実施形態では、カードは報酬としてユーザに獲得され得る。具体的には、報酬は、選手のカードが所定枚数封入されたパックである。パックを開封することにより、ユーザは、該パックに封入されたカードを入手することができる。そして、入手したカードをデッキに組み入れて、該カードが表している選手を対戦で利用できるようになる。
本野球ゲームでは、一例として、報酬として与えられたパックは、ユーザに獲得されただけでは開封されない。パックは、ユーザが所有するスロットにセットされた上で、該パックに関連付けてカウントされているポイントが所定値に到達した場合に開封可能となる。ポイントは、ユーザが対戦をプレイする度に、これも対戦をプレイしたことの報酬として、該ユーザに付与され、該ユーザが所有する各パックに割り振られる。
ユーザは、対戦をプレイするほどに多くのパックを入手し、また、多くのポイントを獲得する。すなわち、ユーザは、対戦を数多くプレイするほど、より多くのパックを開封し、より多くのカード(選手)を所有することができる。そして、より強い選手をデッキに組み入れることによりデッキ全体を強化して、対戦を有利に進めることが可能となる。
なお、上述したように、ユーザ情報133には、プレイ履歴としてパック開封回数が含まれている(図3参照)。パック開封回数は、開封されたパックの数を示す。本実施形態では、パックに封入されているカードの枚数は固定であるので、パック開封回数に基づいて、ユーザが何枚のカードを獲得したのかが判明する。
<デッキの強さについて>
(能力値について)
本野球ゲームでは、選手のそれぞれには、能力値が設定されている。能力値には、スキル別身体パラメータと、総合パラメータとがある。スキル別身体パラメータは、対戦において発揮される選手の身体能力を表す値である。具体的には、スキル別身体パラメータは、野球で必要とされるスキルごとに、選手の技量を数値化したものである。本実施形態では、例えば、スキル別身体パラメータとして、打撃力、命中力、最速球速、制球力、変化球力、走力、守備力、送球速度、および、送球精度などがある。
(総合パラメータについて)
これに対して、総合パラメータは、スキルの種別に関係なく、カードが表す選手の、対戦進行上の総合的な強さを数値化したものであり、カードごとに設定される。総合パラメータは、対戦の進行時、対戦進行部115および対戦支援部211によって参照され、対戦の進行に影響を与える。具体的には、本野球ゲームは、デッキに組み入れられている選手の総合パラメータが高いほど、対戦が有利に進行する仕様である。
ユーザの入力操作にしたがって、対戦進行部115が生成したデッキ情報が記憶部に保存されると、次に、対戦進行部115は、デッキ情報に基づいて、デッキメタ情報を生成する。デッキメタ情報には、少なくとも、後述のデッキ総合パラメータが含まれている。
デッキメタ情報は、ゲーム情報132として、ユーザ端末100の記憶部120、および、サーバ200の記憶部220に保存される。デッキメタ情報は、一例として、デッキ総合パラメータ、平均値、および、Sレア枚数の各項目を含んでいる。これらの各項目は、先に生成されたデッキ情報に基づいて、対戦進行部115によって決定される。
デッキ総合パラメータは、デッキ内の各選手の総合パラメータに基づいて算出される値である。デッキ内の各選手の総合パラメータが高いほど、デッキ総合パラメータも高く算出される。各選手は総合パラメータが高いほど対戦に強いということができるので、デッキ総合パラメータが高いほどデッキ(チーム全体)が対戦において強いということができる。平均値は、デッキ内の各選手の総合パラメータの平均値である。平均値が高いほど、強い選手のカードが多くデッキに配置されていることになる。Sレア枚数は、カードの希少度が最高ランクである「S」のカードがデッキ内に何枚あるのかを示す値である。希少度がSランクのカードの選手には高い能力値が設定されており、対戦を有利に進めることができる。そのようなSランクの選手を多くデッキに配置すれば、それだけデッキを強化することができる。
以上のとおり、デッキ総合パラメータ、平均値、および、Sレア枚数は、デッキの強さを表す指標(以下、デッキ強度指標)として採用できる。
(デッキ総合パラメータについて)
本実施形態では、対戦進行部115は、デッキに組み入れられた各選手の総合パラメータに基づいて、デッキ総合パラメータを算出する。
例えば、対戦進行部115は、デッキ内の各選手の総合パラメータを合計し、得られた総合パラメータの合計値をデッキ総合パラメータとして算出してもよい。対戦進行部115は、4種類すべてのデッキ内の選手の総合パラメータを合計してデッキ総合パラメータを求めてもよいし、メインデッキ内の選手の総合パラメータだけを合計してデッキ総合パラメータを求めてもよい。メインデッキとは、例えば、野手スタメンデッキ501、および、投手先発デッキ551である。
さらに、対戦進行部115は、デッキに組み入れられている選手に設定されている他のパラメータに基づいて、選手同士の相関関係を特定してもよい。そして、対戦進行部115は、特定した相関関係に基づいて、上述の合計値にプラスまたはマイナスの補正を行ってデッキ総合パラメータを算出してもよい。例えば、相性が良いという相関関係にある2人の選手がデッキに編成されることにより、対戦進行部115は、上述の合計値にさらに所定の値を加算してデッキ総合パラメータを算出してもよい(いわゆる、コンボ)。デッキ総合パラメータは、加算条件をうまくそろえることによって高騰させやすい値であり、このような加算条件をそろえることも、ゲーム、とりわけ、デッキ編成の興趣性を向上させることに貢献している。本野球ゲームでは、上述のようにして設定されている総合パラメータおよびデッキ総合パラメータは、以下のように活用される。
(総合パラメータおよびデッキ総合パラメータの活用例)
本実施形態では、上述のとおり、対戦進行部115は、対戦を開始する前に、自チームと相手チームとの間の強さを比較する。具体的には、対戦進行部115は、ユーザ自身のデッキのデッキ総合パラメータと、対戦相手のデッキのデッキ総合パラメータとを比較する。
対戦進行部115は、対戦前に、自チームのデッキ総合パラメータと、相手チームのデッキ総合パラメータとを比較する。そして、該対戦が進行する期間、デッキ総合パラメータが低い方のチームにおける各選手の能力値をマイナス補正する。一例として、自チームのデッキ総合パラメータが、相手チームのデッキ総合パラメータを下回っている場合、対戦進行部115は、該対戦の間、自チームの選手の能力値を下げる。例えば、対戦進行部115は、自チームの選手のスキル別身体パラメータを、それぞれ、例えば10%減算する。上述のとおり、スキル別身体パラメータは、打席の結果の良否を大きく作用する要因である。したがって、対戦を有利に進める上では、総合パラメータがより高い選手をより多くデッキに組み入れることが必要となる。
別の例では、対戦進行部115は、デッキ総合パラメータの比較で負けた方のユーザについて、野手スタメンデッキ501に組み入れられている各野手の走力、守備力、送球速度、および、送球精度を所定値だけ減算してもよい。
選手個々に設定されている総合パラメータは、投手と打者とが対決する場面において参照されてもよい。対戦進行部115は、1つの打席開始時に、打者の総合パラメータと、投手の総合パラメータとを比較する。そして、該打席が進行する期間、総合パラメータが低い方の選手のスキル別身体パラメータをマイナス補正する。例えば、総合パラメータの比較で投手が負けた場合、対戦進行部115は、該打席の間、投手の投球に関わるスキル別身体パラメータ(最高球速および制球力)を、それぞれ、例えば10%減算する。このように、総合パラメータがより高い選手を起用することが、各打席を有利に進行させることにつながる。別の例では、総合パラメータの比較で投手が負けた場合、打者のスキル別身体パラメータ(打撃力および命中力)を、それぞれ、例えば10%加算してもよい。
〔変形例〕
対戦進行部115は、対戦を、マニュアル進行モードで開始し、対戦の途中でオート進行モードに変更してもよい。一例として、対戦進行部115は、各ユーザの最初の打者キャラクタ(すなわち、1回表裏の攻撃における1番バッター)の打席が終了するまでマニュアル進行モードで対戦を進行させ、二人目の打者キャラクタの打席からオート進行モードに変更してもよい。
また、オート進行モードによる対戦の進行は、実施形態1で説明したものに限定されない。別の例では、対戦進行部115は、ユーザ端末100のユーザが攻撃側である場合、打撃結果を抽選によって決定してもよい。
具体的には、各キャラクタには、該キャラクタのパラメータに基づく打撃結果の確率のテーブル(不図示)が予め関連付けられている。打撃結果の確率のテーブルとは、レフトへの単打:5%、三振:7%、サードゴロ:4%・・・というように各打撃結果にその打撃結果が選択される確率が対応付けられているテーブルである。対戦進行部115は、ユーザが攻撃側である場合、打者キャラクタに関連付けられた打撃結果の確率のテーブルを読み出し、抽選を行うことで、該打者キャラクタの打撃結果を決定する。そして、対戦進行部115は、決定された打撃結果を、サーバ200を介して、対戦相手のユーザ端末100へ送信する。対戦相手のユーザ端末100の対戦進行部115は、受信した打撃結果に基づいて対戦を進行させる。このように構成することにより、打撃結果の決定にかかる時間をさらに短くすることができ、結果として、1回の対戦にかかる時間をさらに短くすることができる。
また、打撃結果の決定は、サーバ200の対戦支援部211が行い、各ユーザ端末100へ送信する構成であってもよい。
また、オート進行モードが採用されている対戦は、野球ゲームの1つのゲームモードであってもよい。この例の場合、別のゲームモードでは、例えば、マニュアル進行モードおよび第2のオート進行モードのみが採用されていてもよい。野球ゲームが該別のゲームモードを含むことにより、対戦を自身の操作のみで進行させたいユーザの希望を叶えることができる。なお、該別のゲームモードのイニング数は特に限定されないが、1回の対戦の短時間化を考慮すると、9イニングより少ないイニング数であることが望ましい。一例として、該別のゲームモードのイニング数は2イニングであってもよい。
また、実施形態2において、対戦支援部211は、図3に示すプレイ履歴に基づいて、ユーザが熟練者であるか非熟練者であるかを判定してもよい。例えば、対戦支援部211は、プレイ開始日が、所定日より前であるユーザを熟練者、所定日以降であるユーザを非熟練者と判定してもよい。対戦支援部211は、総プレイ時間が所定時間以上のユーザを熟練者、所定時間未満のユーザを非熟練者と判定してもよい。対戦支援部211は、ログイン日数が所定日数以上のユーザを熟練者、所定日数未満のユーザを非熟練者と判定してもよい。対戦支援部211は、対戦のプレイ回数またはパック開封回数が所定回数以上のユーザを熟練者、所定回数未満のユーザを非熟練者と判定してもよい。対戦支援部211は、ユーザのクリア済ミッションに基づいて、所定難易度以上のミッションをクリアしたユーザを熟練者、該ミッションをクリアしていないユーザを非熟練者と判定してもよい。
別の実施形態では、ゲームの興趣性を高める目的で、デッキにコストの概念が導入されてもよい。コストとは、オブジェクト(選手)をデッキに組み入れる対価として消費される値であり、オブジェクトごとに設定されている。オブジェクトが持つゲーム内の価値が高いほど、つまり高い能力値が設定されている選手ほど、コストは高く設定されている。ユーザには、デッキの編成のために消費できるコストの上限値が設定されており、ユーザは、自分に設定された上限値の範囲内で、オブジェクトをデッキに組み入れることができる。
つまり、コストの上限値が高いユーザほど強いデッキを編成できる。したがって、対戦支援部211は、ユーザに設定されているコストの上限値を、マッチングで用いるデッキ強度指標として採用してもよい。
コストの高いカードをより多くデッキに配置することは、強い選手をより多くデッキに組み入れることを指している。したがって、対戦支援部211は、デッキ内の選手のコストの合計(以下、デッキコスト合計)を、デッキ強度指標として採用してもよい。
〔ソフトウェアによる実現例〕
制御部210の制御ブロック(特に、対戦支援部211)、ならびに、制御部110の制御ブロック(特に、操作受付部111、表示制御部112、UI制御部113、アニメーション生成部114および対戦進行部115)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部210または制御部110、もしくはその両方を備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下のとおりである。
(項目1) プロセッサ(10)、メモリ(11)、操作部(151)および表示部(152)を備えるコンピュータ(ユーザ端末100)において実行されるゲームプログラム(131)について説明した。本開示のある局面によると、ゲームプログラムに基づくゲームは、一方のコンピュータを操作するユーザと、他方のコンピュータを操作する対戦相手のユーザとを、各コンピュータ間の通信を介して対戦させる対戦ゲームである。対戦ゲームにおいて、各ユーザには、対戦の結果に基づいて増減される評価値が付与され、評価値に基づいて対戦相手とのマッチングが実行される。ゲームプログラムは、プロセッサに、マッチングされた対戦相手との対戦を、ユーザおよび対戦相手のユーザの操作によらずに進行する第1モードで進行させるステップ(S103)と、第1モードで進行している対戦の状況が所定の条件を満たす状況となった場合、対戦を、ユーザおよび対戦相手のユーザの操作に基づいて進行する第2モードに変更するステップ(S106)と、第1モードが第2モードに変更された場合、ユーザの操作を受け付けるための操作画面を表示部に表示させるステップ(S107)と、を実行させる。これにより、1回の対戦にかかる時間を短くするとともに、短時間でもユーザが満足する対戦を提供することができるという効果を奏する。
(項目2) (項目1)において、対戦は、1以上のオブジェクトによって編成された各ユーザのデッキに基づいて進行するものである。マッチングは、評価値に加え、ユーザのデッキの強さの指標に基づいて実行されてもよい。これにより、適切なマッチングを実現することができ、ユーザが満足する対戦を提供することができる。
(項目3) (項目1)または(項目2)において、各オブジェクトには、ゲームの進行上の総合的な強さを示す総合パラメータがそれぞれ設定されている。デッキの強さの指標は、デッキに組み込まれている各オブジェクトの総合パラメータに基づいて算出されたデッキ総合パラメータであってもよい。これにより、適切なマッチングを実現することができ、ユーザが満足する対戦を提供することができる。
(項目4) (項目1)から(項目3)のいずれか1項目において、ゲームは、ユーザが操作する1以上のキャラクタが属する自チームと、対戦相手のユーザが操作する1以上のキャラクタが属する相手チームとを対戦させる対戦ゲームである。対戦が終了した後、第2モードにおけるユーザの操作に応じたキャラクタの動作に基づいて、ユーザに付与する報酬が決定されてもよい。これにより、ユーザにとって、第2モードにおける操作がより重要となるため、操作の機会が限られていてもユーザが満足する対戦を提供することができる。
(項目5) (項目1)から(項目4)のいずれか1項目において、ゲームは、ユーザが操作する1以上のキャラクタが属する自チームと、対戦相手のユーザが操作する1以上のキャラクタが属する相手チームとを対戦させる対戦ゲームである。対戦が終了した後、第2モードにおけるユーザの操作に応じたキャラクタの動作に基づいて、ユーザの評価値が更新されてもよい。これにより、ユーザにとって、第2モードにおける操作がより重要となるため、操作の機会が限られていてもユーザが満足する対戦を提供することができる。
(項目6) (項目1)から(項目5)のいずれか1項目において、対戦は第1モードで開始されてもよい。
(項目7) (項目1)から(項目6)のいずれか1項目において、第1モードで進行させるステップでは、対戦の状況をユーザに認識させるための画面を表示部に表示させてもよい。これにより、ユーザは第1モードでの進行中であっても、対戦の状況を認識することができる。
(項目8) (項目1)から(項目7)のいずれか1項目において、対戦ゲームは、野球の試合を進行させる対戦型野球ゲームである。所定の条件を満たす状況は、二塁または三塁の少なくとも一方に走者がいることであってもよい。これにより、一方のチームに得点が入る可能性が高い状況において、各ユーザがキャラクタを操作することとなるため、第2モードを興趣性の高いものとすることができる。よって、ユーザが満足する対戦を提供することができる。
(項目9) (項目1)から(項目8)のいずれか1項目において、対戦ゲームは、野球の試合を進行させる対戦型野球ゲームである。所定の条件を満たす状況は、最終回においてツーアウトとなることであってもよい。これにより、対戦のクライマックスにおいて各ユーザがキャラクタを操作することとなるため、第2モードを興趣性の高いものとすることができる。よって、ユーザが満足する対戦を提供することができる。
(項目10) (項目1)から(項目9)のいずれか1項目において、対戦ゲームは、野球の試合を進行させる対戦型野球ゲームである。対戦は9イニングで行われてもよい。これにより、現実の野球に則した対戦を短時間で行うことができる。
(項目11) ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラムは、プロセッサ、メモリ、操作部および表示部を備えるコンピュータにより実行される。該方法は、プロセッサが(項目1)に記載の各ステップを実行する方法である。(項目11)に係る方法は、(項目1)に係るゲームプログラムと同様の作用効果を奏する。
(項目12) 情報処理装置を説明した。本開示のある局面によると、該情報処理装置は、(項目1)に係るゲームプログラムを記憶する記憶部(120)と、該ゲームプログラムを実行することにより、情報処理装置(ユーザ端末100)の動作を制御する制御部(110)とを備える。(項目12)に係る情報処理装置は、(項目1)に係るゲームプログラムと同様の作用効果を奏する。