〔実施形態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以上のオブジェクトによって編成された各ユーザのデッキの強さが、少なくとも、対戦の進行に作用する。オブジェクトは、例えば、選手などのキャラクタであり、本ゲームでは、選手は、一例として、カードという表示態様で表される。
本野球ゲームにおいて、ユーザによって対人の対戦がプレイされることにより、プレイ内容に対する評価結果(勝敗、成績、スコアなどの対戦成績)が出力される。また、該ゲームにおいては、ユーザが対戦をプレイしたことに対して報酬が付与される。該報酬は、例えば、上述のオブジェクトを1以上取得できる権利をユーザに与えるための権利データである。具体的には、選手のカードが所定枚数封入されたパックである。パックを開封することにより、ユーザは、該パックに封入されたカードを入手することができる。そして、入手したカードをデッキに組み入れて、該カードが表している選手を対戦で利用できるようになる。
本野球ゲームでは、一例として、報酬として与えられたパックは、ユーザに獲得されただけでは開封されない。パックは、ユーザが所有するスロットにセットされた上で、該パックに関連付けてカウントされているポイントが所定値に到達した場合に開封可能となる。ポイントは、ユーザが対戦をプレイする度に、これも対戦をプレイしたことの報酬として、該ユーザに付与され、該ユーザが所有する各パックに割り振られる。
ユーザは、対戦をプレイするほどに多くのパックを入手し、また、多くのポイントを獲得する。すなわち、ユーザは、対戦を数多くプレイするほど、より多くのパックを開封し、より多くのカード(選手)を所有することができる。そして、より強い選手をデッキに組み入れることによりデッキ全体を強化して、対戦を有利に進めることが可能となる。
本野球ゲームは、1イニングにつき、表と裏でチームの攻守が入れ替わりつつ進行する。以下では、あるイニングの表または裏において、守備側のチームを操作するユーザ端末100と、攻撃側のユーザ端末100とを互いに区別する必要がある場合、前者を投球側ユーザ端末100A、後者を打撃側ユーザ端末100Bと称する。両者を区別する必要がない場合には、単に、ユーザ端末100と称する。投球側ユーザ端末100Aのユーザを、投球側ユーザ、打撃側ユーザ端末100Bのユーザを、打撃側ユーザと称する。ただし、両ユーザを特に区別する必要がない場合、および、その区別が明らかな場合には、単にユーザと称する。投球側ユーザは、投球側ユーザ端末100Aを用いて、投手キャラクタによる投球を操作し、攻撃側ユーザは、打撃側ユーザ端末100Bを用いて、打者キャラクタによる打撃を操作する。
投球側ユーザ端末100Aは、投球側ユーザから受け付けた投球操作に応じて投球結果を決定し、該投球結果を含むデータ(図1に示す投球結果D1)を生成し、サーバ200に送信する。投球結果D1は、サーバ200を介して、対戦相手の打撃側ユーザ端末100Bに送信される。投球操作とは、投球側ユーザが、投手キャラクタに投球させるために、投球側ユーザ端末100Aの入力部151に対して実施する操作のことである。
打撃側ユーザ端末100Bは、打撃側ユーザから受け付けた打撃操作に応じて打撃結果を決定し、該打撃結果を含むデータ(図1に示す打撃結果D2)を生成し、サーバ200に送信する。打撃結果D2は、サーバ200を介して、対戦相手の投球側ユーザ端末100Aに送信される。打撃操作とは、打撃側ユーザが、打者キャラクタにボールを打撃させるために、打撃側ユーザ端末100Bの入力部151に対して実施する操作のことである。
本野球ゲームにおいて、ユーザは、自身でキャラクタを制御することを希望しない場合に、ユーザ端末100を操作して、サーバ200に対してその旨を通知することができる。サーバ200は、このような通知をユーザ端末100から受信すると、ゲームプログラムにしたがって、進行している対戦に関わる各種情報に基づいて、該キャラクタの動作結果(投球結果または打撃結果)を決定する。そして、決定した動作結果を対戦相手のユーザ端末100に送信する。すなわち、サーバ200は、ユーザ端末100に代わり、該キャラクタを制御する。
<各装置のハードウェア構成要素>
プロセッサ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部品を含む各種のオブジェクトの制御態様に基づいて、各オブジェクトのモーションを示すアニメーションを生成する。例えば、投手の投球動作のアニメーション、打者の打撃動作のアニメーション、該打者が振るバットのアニメーション、投手によって投げられたボールのアニメーション、打者によって打たれたボールのアニメーション、走者が盗塁するアニメーション等を生成してもよい。上述の投手、打者、および、走者は、デッキに編成されたカード(選手)に基づいて規定される。
表示制御部112は、タッチスクリーン15の表示部152に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。表示制御部112は、アニメーション生成部114によって生成されたアニメーションを含むゲーム画面を表示部152に表示してもよい。また、表示制御部112は、上述の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は、場合によって、レーティングに加えて、さらに別のユーザ情報133に基づいて、マッチングを実行する構成であってもよい。該構成については、後に詳述する。対戦支援部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に基づく本野球ゲームを実行するときの処理の流れを示すフローチャートである。概して、本野球ゲームのゲームプログラム131をサーバ200が実行する方法は、対戦の結果に基づいて増減させる評価値 を各ユーザに付与するステップ(後述するステップS2またはS10)と、ユーザの少なくとも評価値に基づいて、該ユーザの対戦相手を探索するステップ(後述するS5)とを含む。探索するステップでは、ゲームの非熟練者であるユーザについては、該ユーザの評価値に加えて、該ユーザのデッキの強さの指標に基づいて、対戦相手を探索する。本実施形態では、評価値は、一例としてレーティングである。レーティングの詳細については後述する。
本実施形態では、熟練者は、本ゲームにおける対戦のプレイを数多くこなし、かつ、対戦に係る操作に慣れていて、腕前が上達しているユーザを指す。熟練者には、比較的高いレーティングが付与されている。非熟練者は、上述の熟練者に該当しないユーザを指す。具体的には、非熟練者には、対戦のプレイ回数が少ない初心者、および、プレイ回数は多くとも、対戦に係る操作に習熟できず、腕前が上達していない未熟者などが含まれる。非熟練者には、比較的低いレーティングが付与されている。
ステップS1において、ユーザ端末100のユーザが、初めて本ゲームをプレイするとき、ユーザ端末100の対戦進行部115は、ユーザの入力操作にしたがって、ゲーム開始要求をサーバ200に送信する。
ステップS2において、サーバ200の対戦支援部211は、要求元のユーザが初回の対戦のプレイを開始するときに、該ユーザに、所定のレーティングを、初期値として付与する。具体的には、対戦支援部211は、ユーザ情報133の一部として、暫定的にレーティングの初期値を、送信元のユーザ端末100を操作するユーザのユーザIDに関連付けて設定する。レーティングの初期値は、例えば、1500である。したがって、本実施形態では、レーティング1500周辺のユーザ層には、多くの初心者と未熟者とが含まれている。レーティングを含むユーザ情報133が作成されたユーザは、自身のユーザ端末100を用いて、サーバ200を介して他のユーザ端末100と通信し、本野球ゲームにおける対戦をプレイすることが可能となる。
ステップS3において、対戦進行部115は、ユーザの入力操作にしたがって、マッチング要求をサーバ200に送信する。マッチング要求とは、他のユーザ端末100のユーザと対戦をプレイできるように、対戦相手となる他のユーザ端末100を探索することをサーバ200に対して要求するメッセージである。
ステップS4において、対戦支援部211は、対戦相手のマッチングをサーバ200に要求したユーザ端末100を操作するユーザが、本ゲームの非熟練者であるか否かを、該ユーザのユーザ情報133に基づいて判定してもよい。本実施形態では、ユーザ情報133には、該ユーザのレーティング、および、該ユーザの本ゲームのプレイ履歴の少なくともいずれか一方が含まれている。対戦支援部211は、ユーザ情報133に基づいて、該ユーザが非熟練者であるか否かを判定する。
ステップS5において、対戦支援部211は、マッチングの要求元のユーザが非熟練者であるか否かに応じて、異なる方法で対戦相手を探索する。具体的には、本ゲームの非熟練者であるユーザについては、該ユーザのレーティングに加えて、該ユーザの前記デッキの強さの指標に基づいて、対戦相手を探索する。
ステップS6において、対戦支援部211は、マッチング結果をユーザ端末100に返信する。対戦相手が見つかってマッチングが成立した場合には、対戦支援部211は、要求元のユーザが操作するユーザ端末100と、対戦相手のユーザが操作するユーザ端末100とのそれぞれにマッチング結果を配信する。マッチング結果には、対戦相手の情報が含まれている。対戦相手が見つからずにタイムアウトした場合には、対戦支援部211は、要求元のユーザのユーザ端末100に、対戦相手が見つからなかった旨の通知を含むマッチング結果を送信する。
ステップS7において、対戦進行部115は、サーバ200を介して対戦相手のユーザ端末100と通信し、対戦を進行させる。ステップS8において、対戦支援部211は、対戦する複数のユーザ端末100間の同期制御を行ったり、投球結果D1および打撃結果D2のやりとりを仲介したりして、各ユーザ端末100の対戦の進行を支援する。
ステップS9でYESの場合、ステップS10において、対戦支援部211は、対戦結果つまり対戦の勝敗に応じて、各ユーザのレーティングを更新する。そして、更新後のレーティングを各ユーザに付与する。具体的には、更新後のレーティングを各ユーザのユーザIDに関連付けて記憶部220に格納する。
ステップS11において、対戦支援部211は、対戦結果に応じて、各ユーザに獲得させる報酬を決定し、決定した報酬を各ユーザに獲得させる。報酬は、選手を表したカードを封入したパック、および、パックを開封するために必要なポイントなどのデジタルコンテンツである。デジタルコンテンツをユーザに付与することは、一例として、ユーザに対応付けて管理されているデジタルコンテンツのステータスを、使用不可から使用可能に遷移させることであってもよい。あるいは、デジタルコンテンツを、ユーザ識別情報またはユーザIDに対応付けて、ゲームシステム1に含まれる少なくともいずれかのメモリ(メモリ11、メモリ21)に記憶させることであってもよい。これにより、対戦支援部211は、対戦をプレイしたユーザに、1以上のカード(オブジェクト)を報酬として獲得させることができる。
ステップS12において、対戦進行部115は、表示部152に対戦結果を表示する。そして、1回の対戦のプレイを終了させる。
以下では、非熟練者同士のマッチングにおいて参照される「デッキの強さ」がどのようにして特定されるのかについて、本野球ゲームの例に沿って、ゲーム画面を参照して説明する。以下で参照する各ゲーム画面は、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および図6は、ユーザ端末100の表示部152に表示されるデッキ編成画面の一例を示す図である。本実施形態では、デッキは、対戦に参加させるチームを編成するためのUIである。ユーザは、手持ちのカード中から所望のカードをデッキに組み入れることにより、対戦するチームを編成することができる。本野球ゲームにおけるデッキは、一例として、守備のポジション区分に基づいて、野手デッキおよび投手デッキの2種類のデッキで構成されている。また、本実施形態では、それぞれの区分のデッキを、メインとサブという概念を採用してさらに区分してもよい。本野球ゲームでは、一例として、野手デッキのメインデッキを野手スタメンデッキ、野手デッキのサブデッキを野手ベンチデッキ、投手デッキのメインデッキを投手先発デッキ、および、投手デッキのサブデッキを投手リリーフデッキと称する。
図5に示すデッキ編成画面は、野手デッキを編成するためのデッキ編成画面500である。デッキ編成画面500は、一例として、野手スタメンデッキ501および野手ベンチデッキ502を含む。野手スタメンデッキ501は、投手を除く8つの守備ポジションのそれぞれに対応する枠F2〜F9と、指名打者に対応する枠F10とを有する。野手ベンチデッキ502は、一例として、控えの選手5人分に相当する5つの枠を有してもよい。
図6に示すデッキ編成画面は、投手デッキを編成するためのデッキ編成画面550である。デッキ編成画面550は、一例として、投手先発デッキ551および投手リリーフデッキ552を含む。投手先発デッキ551は、一例として、先発投手5人分に相当する5つの枠を有してもよい。投手リリーフデッキ552は、一例として、リリーフ投手6人分に相当する6つの枠を有してもよい。
ユーザは、それぞれのデッキ編成画面を表示部152に表示させて、手持ちの所望のカードを、それぞれの枠に紐付けるための入力操作を入力部151を用いて行う。対戦進行部115は、上述の入力操作を操作受付部111を介して受け付け、枠とカードとを対応付けて、その対応関係をデッキ情報として生成する。
<デッキ情報>
図7は、デッキ情報のデータ構造の一例を示す図である。デッキ情報は、ユーザ端末100の対戦進行部115によって生成され、ゲーム情報132として、ユーザ端末100の記憶部120、および、サーバ200の記憶部220に保存される。
デッキ情報は、カードを配置することが可能な各枠と、カードとの対応関係を示す情報である。一例として、デッキ情報は、デッキを構成する各枠を識別するための枠識別番号と、カードを識別するためのカードIDとが関連付けられたデータ構造を有する。さらに、デッキ情報は、カードIDに関連付けて、総合パラメータ、および、希少度の各項目を含んでいてもよい。総合パラメータについては詳細を後述する。
希少度は、カードが表している選手の希少価値を等級で表したものである。一般に、ゲーム上、特に、プレイパートにおいて良好な結果をもたらす選手、すなわち、野球の試合に係る能力の高い選手には、上級の希少度が設定されている。本実施形態では、希少価値の高い等級から順に、「S」、「A」、「B」、および、「C」のアルファベットにより希少度が設定される。
なお、希少度は、例えば、カードの入手困難性、より具体的には、ミッションのクリア報酬として入手される場合のミッションの難易度、または、有償入手の場合の価格などと相関があってもよい。カードの希少度が高いほど、該カードの入手困難性は高くなる。
<デッキの強さについて>
(能力値について)
本野球ゲームでは、選手のそれぞれには、能力値が設定されている。能力値には、スキル別身体パラメータと、総合パラメータとがある。スキル別身体パラメータは、対戦において発揮される選手の身体能力を表す値である。具体的には、スキル別身体パラメータは、野球で必要とされるスキルごとに、選手の技量を数値化したものである。本実施形態では、例えば、スキル別身体パラメータとして、打撃力、命中力、最速球速、制球力、変化球力、走力、守備力、送球速度、および、送球精度などがある。
(総合パラメータについて)
これに対して、総合パラメータは、スキルの種別に関係なく、カードが表す選手の、対戦進行上の総合的な強さを数値化したものであり、カードごとに設定される。総合パラメータは、対戦の進行時、対戦進行部115および対戦支援部211によって参照され、対戦の進行に影響を与える。具体的には、本野球ゲームは、デッキに組み入れられている選手の総合パラメータが高いほど、対戦が有利に進行する仕様である。
ユーザの入力操作にしたがって、対戦進行部115が生成したデッキ情報が記憶部に保存されると、次に、対戦進行部115は、デッキ情報に基づいて、デッキメタ情報を生成する。デッキメタ情報には、少なくとも、後述のデッキ総合パラメータが含まれている。
(デッキメタ情報のデータ構造)
図8は、デッキメタ情報のデータ構造の一例を示す図である。デッキメタ情報は、ゲーム情報132として、ユーザ端末100の記憶部120、および、サーバ200の記憶部220に保存される。デッキメタ情報は、一例として、デッキ総合パラメータ、平均値、および、Sレア枚数の各項目を含んでいる。これらの各項目は、先に生成されたデッキ情報に基づいて、対戦進行部115によって決定される。
デッキ総合パラメータは、デッキ内の各選手の総合パラメータに基づいて算出される値である。デッキ内の各選手の総合パラメータが高いほど、デッキ総合パラメータも高く算出される。各選手は総合パラメータが高いほど対戦に強いということができるので、デッキ総合パラメータが高いほどデッキ(チーム全体)が対戦において強いということができる。平均値は、デッキ内の各選手の総合パラメータの平均値である。平均値が高いほど、強い選手のカードが多くデッキに配置されていることになる。Sレア枚数は、カードの希少度が最高ランクである「S」のカードがデッキ内に何枚あるのかを示す値である。希少度がSランクのカードの選手には高い能力値が設定されており、対戦を有利に進めることができる。そのようなSランクの選手を多くデッキに配置すれば、それだけデッキを強化することができる。
以上のとおり、デッキ総合パラメータ、平均値、および、Sレア枚数は、デッキの強さを表す指標(以下、デッキ強度指標)として採用できる。
(デッキ総合パラメータについて)
本実施形態では、対戦進行部115は、デッキに組み入れられた各選手の総合パラメータに基づいて、デッキ総合パラメータを算出する。
例えば、対戦進行部115は、デッキ内の各選手の総合パラメータを合計し、そうして得られた総合パラメータの合計値をデッキ総合パラメータを算出してもよい。対戦進行部115は、4種類すべてのデッキ内の選手の総合パラメータを合計してデッキ総合パラメータを求めてもよいし、メインデッキ内の選手の総合パラメータだけを合計してデッキ総合パラメータを求めてもよい。メインデッキとは、例えば、野手スタメンデッキ501、および、投手先発デッキ551である。
さらに、対戦進行部115は、デッキに組み入れられている選手に設定されている他のパラメータに基づいて、選手同士の相関関係を特定してもよい。そして、対戦進行部115は、特定した相関関係に基づいて、上述の合計値にプラスまたはマイナスの補正を行ってデッキ総合パラメータを算出してもよい。例えば、相性が良いという相関関係にある2人の選手がデッキに編成されることにより、対戦進行部115は、上述の合計値にさらに所定の値を加算してデッキ総合パラメータを算出してもよい(いわゆる、コンボ)。デッキ総合パラメータは、加算条件をうまくそろえることによって高騰させやすい値であり、このような加算条件をそろえることも、ゲーム、とりわけ、デッキ編成の興趣性を向上させることに貢献している。本野球ゲームでは、上述のようにして設定されている総合パラメータおよびデッキ総合パラメータは、以下のように活用される。
(総合パラメータおよびデッキ総合パラメータの活用例)
図9は、対戦が開始される直前にユーザ端末100の表示部152に表示される対戦開始画面の一例を示す図である。本実施形態では、上述のとおり、対戦進行部115は、対戦を開始する前に、自チームと相手チームとの間の強さを比較する。具体的には、対戦進行部115は、ユーザ自身のデッキのデッキ総合パラメータと、対戦相手のデッキのデッキ総合パラメータとを比較する。図9に示す対戦開始画面600は、デッキ総合パラメータの比較結果を含む。
対戦進行部115は、対戦前に、自チームのデッキ総合パラメータと、相手チームのデッキ総合パラメータとを比較する。そして、該対戦が進行する期間、デッキ総合パラメータが低い方のチームにおける各選手の能力値をマイナス補正する。図9に示す例では、自チームのデッキ総合パラメータ601が、相手チームのデッキ総合パラメータ602を下回っている。そこで、対戦進行部115は、該対戦の間、自チームの選手の能力値を下げる。例えば、対戦進行部115は、自チームの選手のスキル別身体パラメータを、それぞれ、例えば10%減算する。上述のとおり、スキル別身体パラメータは、打席の結果の良否を大きく作用する要因である。したがって、対戦を有利に進める上では、総合パラメータがより高い選手をより多くデッキに組み入れることが必要となる。
別の例では、対戦進行部115は、デッキ総合パラメータの比較で負けた方のユーザについて、野手スタメンデッキ501に組み入れられている各野手の走力、守備力、送球速度、および、送球精度を所定値だけ減算してもよい。
選手個々に設定されている総合パラメータは、投手と打者とが対決する場面において参照されてもよい。対戦進行部115は、1つの打席開始時に、打者の総合パラメータと、投手の総合パラメータとを比較する。そして、該打席が進行する期間、総合パラメータが低い方の選手のスキル別身体パラメータをマイナス補正する。例えば、総合パラメータの比較で投手が負けた場合、対戦進行部115は、該打席の間、投手の投球に関わるスキル別身体パラメータ(最高球速および制球力)を、それぞれ、例えば10%減算する。このように、総合パラメータがより高い選手を起用することが、各打席を有利に進行させることにつながる。別の例では、総合パラメータの比較で投手が負けた場合、打者のスキル別身体パラメータ(打撃力および命中力)を、それぞれ、例えば10%加算してもよい。
以上のとおり、強い、すなわち、総合パラメータが高い選手のカードを豊富に持ち、強いデッキを編成しているユーザは対戦が有利に進む。初心者は、プレイ回数が少ないために、手持ちのカードが弱く、種類も少ないので、対戦を有利に進める強いデッキを編成することが難しい。一方、熟練者および腕前は拙劣であってもプレイ経験の長い未熟者は、カードを豊富に所有しているので強いデッキを編成しやすい。
従来、初心者と未熟者とは、デッキの強さに格差があるが、レーティングが近いために、マッチングされる可能性が大いにあった。デッキの強さの格差は、例えば、図9に示したような対戦開始画面600において如実に示される。初心者は、対戦相手が未熟者である場合、たとえレーティングが近くても、デッキの強さの格差を見てマッチングの理不尽さを感じ、対戦する意欲が萎える虞がある。本実施形態では、詳細には以下のようにマッチングを実施して、このような理不尽なマッチングを回避する。
<処理フロー:探索>
図10は、サーバ200の対戦支援部211が実行するマッチングの処理の流れを示すフローチャートである。図10に示す一連の処理のうち、ステップS103は、図4に示すステップS4に対応する。ステップS104〜S117は、図4に示すステップS5に対応する。なお、本実施形態では、ステップS101およびS102を実行しない。これらの各ステップについては別の実施形態において詳述する。
ステップS103において、対戦支援部211は、マッチング要求の要求元であるユーザ端末100のユーザが非熟練者であるか否かを判定する。例えば、ステップS103では、対戦支援部211は、所定値以下のレーティングが付与されているユーザを非熟練者であると判定してもよい。具体的には、対戦支援部211は、レーティングの初期値(例えば、1500)以下のレーティングが付与されているユーザを非熟練者であると判定してもよい。
ステップS103でYESの場合、対戦支援部211は、ステップS104において、非熟練者であるユーザのレーティングと、デッキの強さとに基づいて、該ユーザの対戦相手を探索する。例えば、ステップS104では、非熟練者であるユーザについては、該ユーザのレーティングとの差が所定範囲以内、かつ、該ユーザのデッキの強さとの差が所定範囲以内の対戦相手を探索する。デッキの強さは、例えば、上述のデッキ強度指標であり、より具体的には、デッキ総合パラメータである。対戦支援部211は、ステップS104では、レーティングに加えて、ユーザのデッキにおけるデッキ総合パラメータとの差が所定範囲以内の対戦相手を探索してもよい。例えば、対戦支援部211は、要求元のユーザのレーティングとの差が±50以内、かつ、要求元のユーザのデッキ総合パラメータとの差が±1000以内という条件に合致する対戦相手を探索する。
ステップS105でNOの場合、対戦支援部211は、ステップS106〜S108に遷移する。つまり、対戦支援部211は、上述の条件を満足する対戦相手が見つからなかった場合、レーティングに係る条件およびデッキの強さに係る条件の少なくともいずれか一方を緩和して対戦相手を再度探索する。
例えば、対戦支援部211は、まず、ステップS106において、デッキ強度指標であるデッキ総合パラメータに係る条件を優先して緩和して再探索する。それでも対戦相手が見つからない場合に(ステップS107でNO)、ステップS108において、レーティングに係る条件を緩和して再探索する。
ステップS109でNOの場合、対戦支援部211は、ステップS110において、対戦相手は見つからなかったと判断し、マッチング不成立の結果を出力する。ステップS109でYESの場合、ステップS111において、マッチング成立の結果とともに、対戦相手の情報を出力する。
一方、ステップS103でNOの場合、対戦支援部211は、ステップS112〜S117に遷移して、レーティングに基づくマッチングを実施する。ここでは、公知のマッチング技術が採用されてもよい。
なお、対戦支援部211は、探索中に時間制限を採用してもよい。例えば、ステップS105、S107、S109、S113およびS115において、10秒以内に条件に合致する対戦相手が見つからなかった場合に、対戦支援部211は、「対戦相手が見つからなかった」と判断してもよい。
<本実施形態により解決される課題>
上述のとおり、非熟練者が多く集まっているユーザ層(レーティング初期値周辺のユーザの集団)には、始めたばかりの初心者と、プレイ経験は豊富だが上達しないためにレーティングの上位集団に抜け出せない未熟者とが混在している。経験豊富な未熟者は、ゲームの腕前が拙劣であるとはいえ、多くの回数のプレイをこなすことにより、多くの報酬を獲得し、強い選手を豊富に所有している可能性が高い。したがって、強いデッキを編成することが可能である。一方、ゲームを始めたての初心者は、開始当初の手持ちの選手が限られており、強いデッキを編成することが難しい。上述の事情から、デッキの強さの格差は、初心者が多く集まるレーティング初期値周辺のユーザ層において顕著である。
このような非熟練者の集団においては、レーティングにのみ基づいてマッチングが行われると、初心者と、経験豊富な未熟者とがマッチングされる可能性がある。そして、このようなマッチングにより、デッキの強さに関して、非常に大きな格差が生じる可能性が高い。
編成されたデッキの強さが対戦の進行に何らかの作用を及ぼすような対戦ゲームにおいては、ユーザのゲームの腕前だけでなくデッキの強さが、対戦結果を左右する重要な要素となり得る。したがって、デッキの強さの格差を引き起こす理不尽なマッチングは、対戦を行う前から、デッキの強さが劣勢のユーザのプレイ意欲を萎えさせてしまう。また、実際に対戦が進行しても、ワンサイドゲームになる可能性があり、ゲームの興趣性を著しく低下させる。
<作用効果>
上述の構成および方法によれば、サーバ200の対戦支援部211は、熟練者のユーザについては、レーティングに基づいて対戦相手を探索し、非熟練者については、レーティングに加えて、デッキの強さの指標を考慮して対戦相手を探索する。
これにより、デッキの格差が顕著な非熟練者においては、レーティングだけでなく、デッキの強さが近いユーザ同士がマッチングされる。結果として、理不尽なマッチングを回避して、ゲームの興趣性が損なわれることを防止することが可能となる。
具体的には、理不尽なマッチングを回避し、デッキの強さにおいて劣勢のユーザがプレイする前から意欲を損なうことが回避されるという効果を奏する。特に、本野球ゲームのように、対戦の開始前に、デッキの強さの比較結果が提示されるゲームでは、この効果は特にメリットがある。対戦が開始される直前にデッキの強さの比較結果が提示される場合、デッキの強さがほぼ互角のユーザ同士の対決では、各ユーザは、互いのデッキの強さがほぼ互角であると理解できる。そして、各ユーザは、腕前によって勝敗が決まると理解して対戦を開始することになるから、ユーザのプレイへの意欲を向上させることができる。
〔実施形態2〕
本実施形態では、対戦支援部211は、連勝中のユーザに関して、連勝中であることを加味して、付与されているレーティングを補正する。そして、対戦支援部211は、補正によって得られたみなしレーティングを用いて対戦相手のマッチングを行う。これにより、理不尽なマッチングを回避し、ゲームの興趣性が損なわれることを防止する。以下、図10を参照して、本実施形態に係る対戦支援部211の動作を説明する。
ステップS101でYESの場合、つまり、要求元のユーザが連勝中である場合に、ステップS102において、対戦支援部211は、例えば、ステップS10にて該ユーザに付与されたレーティングに対して、所定の補正値を加算する。これにより、元のレーティングに補正値が加算されたみなしレーティングが得られる。加算する補正値は、固定であってもよいし、連勝数に応じて変動してもよい。
要求元のユーザが非熟練者であると判定された場合には、対戦支援部211は、ステップS104において、みなしレーティングとデッキ強度指標とに基づいて対戦相手を探索する。要求元のユーザが熟練者であると判定された場合には、対戦支援部211は、ステップS112において、みなしレーティングに基づいて対戦相手を探索する。
これにより、連勝中であるユーザについては、実際に付与されているレーティングよりも高く見積もられたみなしレーティングに基づいてマッチングがなされる。そのため、より強い対戦相手とあたり易くなる。連勝しているユーザは、実際のレーティングで推測される腕前よりも上達していると考えられる。したがって、上述の構成および方法によれば、真の腕前に基づいて合理的なマッチングが実現される。
なお、本実施形態では、ステップS103では、対戦支援部211は、熟練者か非熟練者かの判定を、補正前のレーティングに基づいて実行する。また、図4に示すステップS10では、対戦支援部211は、補正前のレーティングに基づいて、該補正前のレーティングに対して値の増減の更新を行う。すなわち、みなしレーティングは、対戦相手の探索の目的で一時的に用いられる。
さらに、本実施形態では、対戦支援部211は、マッチングが成立した後、対戦することになった両ユーザのそれぞれのユーザ端末100に対して、対戦相手の情報として、補正前のレーティングとともに連勝数を配信し、これを互いに共有させる。これにより、ユーザ本人および対戦相手のそれぞれの補正値が加算される前のレーティングは、それぞれのユーザの連勝数とともに、各ユーザ端末100の表示部152において表示される。
図11は、マッチングが成立したときにユーザ端末100の表示部152に表示されるマッチング成立画面の一例を示す図である。マッチング成立画面800は、マッチングが成立した旨の結果をユーザに通知するとともに、その対戦相手の情報を対戦開始前にユーザに提供するためのゲーム画面である。
マッチング成立画面800は、一例として、ユーザ本人のユーザ名801、対戦相手のユーザ名802、ユーザ本人のレーティング803、および、対戦相手のレーティング804を含んでいる。加えて、マッチング成立画面800は、連勝中のユーザについて、その連勝数を示すための連勝数アイコン805を含む。
上述したレーティングの算出式によれば、連勝数は考慮されていない。そこで、連勝数を考慮した「みなしレーティング」に基づいてマッチングを行うことよって、本当に実力が拮抗するユーザ同士のマッチングが可能となる。しかし、みなしレーティングは、ユーザには開示されず、開示されるのは、上述の算出式に基づいて算出された通常のレーティングである。したがって、マッチング成立画面800において、ユーザ本人のレーティング803、および、対戦相手のレーティング804だけを見ると、ユーザは、レーティングに格差のある理不尽なマッチングが行われたと感じてしまう虞がある。
そこで、対戦支援部211は、各ユーザ端末100において互いの連勝数を共有させて、上述のように連勝数アイコン805を併せてユーザ端末100の表示部152に表示させる。これにより、連勝数が表示されているユーザは、強いユーザであるということが各ユーザによって認知される。結果として、表示されているレーティングのみから理不尽なマッチングであるとユーザが判断することを回避することができる。
<本実施形態により解決される課題>
従来、場合によっては、真の腕前よりも低いレーティングがユーザに付与されることが起こり得る。例えば、ゲームの腕前が未知数のプレイ経験が少ないユーザについては、初期値として付与されているレーティングが、該ユーザの真の腕前に合致しないケースもある。また、熟練者が、ゲームをダウンロードしなおしてゼロから始める場合に、付与された初期値は当然ながら、熟練者の真の腕前を表していない。また、ユーザが、わざと敗北を繰り返して、意図的に自身に付与されているレーティングを下げるケースもある。このように、実際の腕前よりも低いレーティングが付与されたユーザとマッチングされた対戦相手は、真の腕前では敵わない強敵と対戦することを強いられる。つまり、腕前の格差が大きい、理不尽なマッチングがなされる虞がある。
<作用効果>
本実施形態によれば、連勝中のユーザについては、真の腕前よりも低いレーティングが付与されていると判断し、該レーティングに所定の補正値を加算し、加算後のみなしレーティングに基づいてマッチングを行う。よって、腕前の格差による理不尽なマッチングを回避できる。
〔変形例〕
対戦支援部211は、図3に示すプレイ履歴に基づいて、ユーザが熟練者であるか非熟練者であるかを判定してもよい。例えば、対戦支援部211は、プレイ開始日が、所定日より前であるユーザを熟練者、所定日以降であるユーザを非熟練者と判定してもよい。対戦支援部211は、総プレイ時間が所定時間以上のユーザを熟練者、所定時間未満のユーザを非熟練者と判定してもよい。対戦支援部211は、ログイン日数が所定日数以上のユーザを熟練者、所定日数未満のユーザを非熟練者と判定してもよい。対戦支援部211は、対戦のプレイ回数またはパック開封回数が所定回数以上のユーザを熟練者、所定回数未満のユーザを非熟練者と判定してもよい。対戦支援部211は、ユーザのクリア済ミッションに基づいて、所定難易度以上のミッションをクリアしたユーザを熟練者、該ミッションをクリアしていないユーザを非熟練者と判定してもよい。
別の実施形態では、ゲームの興趣性を高める目的で、デッキにコストの概念が導入されてもよい。コストとは、オブジェクト(選手)をデッキに組み入れる対価として消費される値であり、オブジェクトごとに設定されている。オブジェクトが持つゲーム内の価値が高いほど、つまり高い能力値が設定されている選手ほど、コストは高く設定されている。ユーザには、デッキの編成のために消費できるコストの上限値が設定されており、ユーザは、自分に設定された上限値の範囲内で、オブジェクトをデッキに組み入れることができる。
つまり、コストの上限値が高いユーザほど強いデッキを編成できる。したがって、対戦支援部211は、ユーザに設定されているコストの上限値を、マッチングで用いるデッキ強度指標として採用してもよい。
コストの高いカードをより多くデッキに配置することは、強い選手をより多くデッキに組み入れることを指している。したがって、対戦支援部211は、デッキ内の選手のコストの合計(以下、デッキコスト合計)を、デッキ強度指標として採用してもよい。
本別の実施形態では、図7に示すデッキ情報は、さらに、カードIDに対応付けてコストの項目を含んでいてもよい。図8に示すデッキメタ情報は、さらに、デッキコスト合計の項目を含んでいてもよい。
対戦支援部211は、ステップS104において、レーティングの差が所定範囲内、かつ、デッキコスト合計の差が所定範囲内の対戦相手を探索してもよい。あるいは、対戦支援部211は、ステップS104において、レーティングの差が所定範囲内、かつ、デッキ内の希少度がSのカードの枚数の差が所定範囲内の対戦相手を探索してもよい。
〔ソフトウェアによる実現例〕
制御部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) ゲームプログラム(131)について説明した。本開示のある局面によると、ゲームプログラムは、プロセッサ(20)およびメモリ(21)を備えるコンピュータ(サーバ200)により実行される。該ゲームプログラムに基づくゲームは、各ユーザが操作する各クライアントが通信することにより、1以上のオブジェクト(選手)によって編成された各ユーザのデッキに基づいて対戦が進行する通信対戦ゲームである。ゲームプログラムは、プロセッサに、対戦の結果に基づいて増減させる評価値(レーティング)を各ユーザに付与するステップ(S2、S10)と、ユーザの少なくとも評価値に基づいて、該ユーザの対戦相手を探索するステップ(S5、S104〜S117)とを実行させ、探索するステップでは、ゲームの非熟練者(初心者、未熟者)であるユーザについては、該ユーザの評価値に加えて、該ユーザのデッキの強さの指標(デッキ強度指標、デッキ総合パラメータ)に基づいて、対戦相手を探索する(S104)。これにより、ゲームの興趣性を向上させるという効果を奏する。
(項目2) (項目1)において、ゲームプログラムは、プロセッサに、対戦相手のマッチングをサーバに要求したクライアントを操作するユーザが、ゲームの非熟練者であるか否かを、該ユーザの評価値、および、該ユーザの該ゲームのプレイ履歴の少なくともいずれか一方に基づいて、判定するステップを実行させてもよい。
(項目3) (項目2)において、判定するステップでは、所定の値以下の評価値が付与されているユーザを非熟練者であると判定してもよい。
(項目4) (項目3)において、所定の値は、ユーザに付与される評価値の初期値であってもよい。これにより、ゲームを始めたばかりの初心者と、初期値周辺の評価値が付与されている未熟者との理不尽なマッチングを回避することができる。
(項目5) (項目1)から(項目4)までのいずれか1項目において、記ゲームプログラムは、プロセッサに、対戦をプレイしたユーザに、1以上のオブジェクトを報酬として獲得させるステップを実行させてもよい。
(項目6) (項目1)から(項目5)までのいずれか1項目において、探索するステップでは、非熟練者であるユーザについては、該ユーザの評価値との差が所定範囲以内、かつ、該ユーザのデッキの強さの指標との差が所定範囲以内という条件を満足する対戦相手を探索してもよい。
(項目7) (項目6)において、各オブジェクトには、ゲームの進行上の総合的な強さを示す総合パラメータがそれぞれ設定されており、デッキの強さの指標は、デッキに組み込まれている各オブジェクトの総合パラメータに基づいて算出された、デッキ総合パラメータであってもよい。これにより、デッキ総合パラメータの格差によって、腕前と関係なく一方のユーザに極端に有利な状況が対戦において引き起こされることを回避することができる。
(項目8) (項目6)または(項目7)において、探索するステップでは、条件を満足する対戦相手が見つからなかった場合、評価値に係る条件およびデッキの強さの指標に係る条件の少なくともいずれか一方を緩和して対戦相手を再度探索してもよい。
(項目9) (項目1)から(項目8)までのいずれか1項目において、ゲームプログラムは、プロセッサに、ユーザが複数の対戦に連勝して連勝中である場合に、付与するステップにて該ユーザに付与された評価値に対して、所定の補正値を加算するステップ を実行させ、探索するステップでは、連勝中のユーザについて、補正値が加算された後のみなし評価値に少なくとも基づいて、対戦相手の探索を行い、補正値が加算される前の連勝中のユーザの評価値は、該ユーザの連勝数とともに、各クライアントにおいて表示されてもよい。
(項目10) ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラムは、プロセッサおよびメモリを備えるサーバにより実行される。該方法は、プロセッサが(項目1)に記載の各ステップを実行する方法である。(項目10)に係る方法は、(項目1)に係るゲームプログラムと同様の作用効果を奏する。
(項目11) 情報処理装置を説明した。本開示のある局面によると、該情報処理装置は、(項目1)に係るゲームプログラムを記憶する記憶部(220)と、該ゲームプログラムを実行することにより、情報処理装置(サーバ200)の動作を制御する制御部(210)とを備える。(項目11)に係る情報処理装置は、(項目1)に係るゲームプログラムと同様の作用効果を奏する。