〔実施形態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が備えるこれらの構成は、通信バスによって互いに電気的に接続される。なお、ユーザ端末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によって実行されるゲーム(以下、本ゲーム)は、ユーザの操作内容(例えば、操作スピード、タイミング、およびテクニックなど)に応じて異なる結果が得られるゲームである。
本ゲームは、例えば、対戦ゲームであり、該対戦ゲームは、ユーザの操作内容に応じて、試合運び、スコア、および、対戦の勝敗などが変化する。本ゲームは、一例として、複数のユーザの間で、タイム、スコア、戦績などの観点で、優位性を競わせるゲームであってもよい。ユーザは通常、競争に勝ちたいと考えてゲームをプレイする。そのため、ゲームに競争の要素を含ませ、操作内容に応じて優位性が決するようにゲームシステム1を構築することにより、ユーザに操作の習熟を促すことができる。
さらには、本対戦ゲームは、例えば、ユーザと他のユーザとの対戦により進行する対人対戦を行うゲームパートを含んでいてもよい。なお、本ゲームにおける「対戦」はマルチ対戦(所謂、PvP(Player vs Player)戦)に限られない。例えば、ユーザが操作するプレイヤキャラクタ(以下、PC(player character))と、ノンプレイヤキャラクタ(以下、NPC(non player character))との対戦(所謂、COM戦またはCPU戦)も、本対戦ゲームにおける「対戦」に含まれる。本ゲームの対戦は、一例として、スポーツゲームにおける試合であってもよい。
本実施形態に係るゲームシステム1は、一例として、PvP戦を行う対戦型野球ゲーム(以下、本ゲーム、本野球ゲームと称する場合がある)を実行するためのシステムである。つまり、ゲームシステム1は、一方のコンピュータを操作するユーザが制御可能な1以上のキャラクタからなるチームが、他方のコンピュータを操作する対戦相手のユーザが制御可能な1以上のキャラクタからなるチームと、野球の試合を行うためのシステムである。
対戦型野球ゲームである場合、サーバ200を介して通信する第1のユーザ端末100と第2のユーザ端末100とによって、それぞれのチームが操作される。そして、対戦型野球ゲームは、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に代わり、該キャラクタを制御する。
あるいは、本野球ゲームにおいて、ユーザが、ユーザ端末100を操作して、自身でキャラクタを制御することを希望しない旨を入力した場合、ユーザ端末100は、ゲームプログラムに従って、進行している対戦に関わる各種情報に基づいて、該キャラクタの動作結果(投球結果または打撃結果)を決定してもよい。この場合、ユーザ端末100は、サーバ200を介して、決定した動作結果を対戦相手のユーザ端末100に送信する。
以降、ユーザがユーザ端末100を操作して、自身でキャラクタを制御して対戦を進行させるモードをマニュアル進行モードと称し、ユーザ端末100が、ゲームプログラムに従ってキャラクタを制御して対戦を進行させるモードをオート進行モードと称する場合がある。
また、オート進行モードは、さらに、複数のモードを含んでいてもよい。一例として、オート進行モードには、キャラクタはゲームプログラムに従って動作するが、ユーザが指示を出したり、キャラクタの交代(選手交代)を行なったりすることができる、部分オートモードと、対戦の進行に係るすべての制御をゲームプログラムに従って行う完全オートモード(第1モード)とがあってもよい。
本野球ゲームでは、チームは、1または複数のオブジェクトを、ユーザがデッキに組み入れることにより生成される。オブジェクトは、本野球ゲームにおいて、対戦の進行に何らかの作用を及ぼすデジタルコンテンツであり、1以上のオブジェクトによって編成された各ユーザのデッキの強さが、少なくとも、対戦の進行に作用する。オブジェクトは、例えば、選手などのキャラクタであり、本野球ゲームでは、選手は、一例として、カードという表示態様で表される。
本野球ゲームでは、一例として、PvP戦がプレイされることにより、プレイ内容に対する評価結果(勝敗、成績、スコアなどの対戦成績)が出力される。また、本野球ゲームにおいては、ユーザがPvP戦をプレイしたことに対して報酬が付与される。該報酬は、例えば、上述のオブジェクトを1以上取得できる権利をユーザに与えるための権利データである。具体的には、選手のカードが所定枚数封入されたパックである。パックを開封することにより、ユーザは、該パックに封入されたカードを入手することができる。そして、入手したカードをデッキに組み入れて、該カードが表している選手を対戦で利用できるようになる。
本野球ゲームでは、一例として、報酬として与えられたパックは、ユーザに獲得されただけでは開封されない。パックは、ユーザが所有するスロットにセットされた上で、該パックに関連付けてカウントされているポイントが所定値に到達した場合に開封可能となる。ポイントは、ユーザが対戦をプレイする度に、これも対戦をプレイしたことの報酬として、該ユーザに付与され、該ユーザが所有する各パックに割り振られる。
ユーザは、PvP戦をプレイするほどに多くのパックを入手し、また、多くのポイントを獲得する。すなわち、ユーザは、PvP戦を数多くプレイするほど、より多くのパックを開封し、より多くのカード(選手)を所有することができる。そして、より強い選手をデッキに組み入れることによりデッキ全体を強化して、対戦を有利に進めることが可能となる。
本野球ゲームでは、パックにランクが設定されており、パックのランク別に当選確率テーブルが予め生成されていてもよい。ランク別の当選確率テーブルにおいては、パックのランクが高いほど、希少度の高いキャラクタのカードが当選する確率が高くなるように当選確率が設定されていることが好ましい。
<ゲームシステム1の機能的構成>
図2は、ゲームシステム1に含まれるサーバ200およびユーザ端末100の機能的構成を示すブロック図である。サーバ200およびユーザ端末100のそれぞれは、図示しない、一般的なコンピュータとして機能する場合に必要な機能的構成、および、ゲームにおける公知の機能を実現するために必要な機能的構成を含み得る。
ユーザ端末100は、ユーザの入力操作を受け付ける入力装置としての機能と、ゲームの画像や音声を出力する出力装置としての機能を有する。ユーザ端末100は、プロセッサ10、メモリ11、ストレージ12、通信IF13、および入出力IF14等の協働によって、制御部110および記憶部120として機能する。
サーバ200は、各ユーザ端末100と通信して、ユーザ端末100がゲームを進行させるのを支援する機能を有する。ゲームがマルチプレイゲームである場合には、サーバ200は、ゲームに参加する各ユーザ端末100と通信して、ユーザ端末100同士のやりとりを仲介する機能を有していてもよい。サーバ200は、プロセッサ20、メモリ21、ストレージ22、通信IF23、および入出力IF24等の協働によって、制御部210および記憶部220として機能する。
記憶部120および記憶部220は、ゲームプログラム、ゲーム情報132およびユーザ情報133を格納する。ゲームプログラム131は、ユーザ端末100が実行するゲームプログラムである。ゲームプログラム231は、サーバ200が実行するゲームプログラムである。ゲーム情報132は、制御部110および制御部210がゲームプログラムを実行する際に参照するデータである。ユーザ情報133は、ユーザのアカウントに関するデータである。記憶部220において、ゲーム情報132およびユーザ情報133は、ユーザ端末100ごとに格納されている。
(サーバ200の機能的構成)
制御部210は、記憶部220に格納されたゲームプログラム231を実行することにより、サーバ200を統括的に制御する。例えば、制御部210は、ユーザ端末100に各種データおよびプログラム等を送信する。制御部210は、ゲーム情報もしくはユーザ情報の一部または全部をユーザ端末100から受信する。ゲームがマルチプレイゲームである場合には、制御部210は、ユーザ端末100からマルチプレイの同期の要求を受信して、同期のためのデータをユーザ端末100に送信してもよい。
制御部210は、ゲームプログラム231の記述に応じて、対戦支援部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、および、時間計測部116として機能する。なお、制御部110は、実行するゲームの性質に応じて、ゲームを進行させるために、図示しないその他の機能ブロックとしても機能することができる。
操作受付部111は、入力部151に対するユーザの入力操作を検知し受け付ける。操作受付部111は、タッチスクリーン15およびその他の入出力IF14を介したコンソールに対してユーザが及ぼした作用から、いかなる入力操作がなされたかを判別し、その結果を制御部110の各要素に出力する。
例えば、操作受付部111は、(1)「接近操作」、(2)「リリース操作」、(3)「タップ操作」、(4)「ダブルタップ操作」、(5)「長押し操作(ロングタッチ操作)」、(6)「ドラッグ操作(スワイプ操作)」、(7)「ムーブ操作」、(8)「フリック操作」、その他のユーザの入力操作を判別する。操作受付部111が判別するユーザの入力操作は、上記に限られない。例えば、操作受付部111が、ユーザがタッチスクリーン15に対して押下する圧力の大きさを検出可能な機構を有する場合、操作受付部111は、ユーザにより押下された圧力の大きさを判別する。
(1)「接近操作」とは、ユーザが指などをタッチスクリーン15に接近させる操作である。タッチスクリーン15は、ユーザの指などが接近したこと(ユーザの指などがタッチスクリーン15に接触したことを含む)を検出し、検出したタッチスクリーン15の座標に応じた信号を操作受付部111へ出力する。操作受付部111は、タッチスクリーン15へのユーザの指などの接近を検出しない状態から、接近を検出したときに、状態が「タッチオン状態」になったと判別する。
(2)「リリース操作」とは、ユーザがタッチオン状態を止める操作である。操作受付部111は、例えば、ユーザが指などをタッチスクリーン15に接触させている状態から、指を離す操作をしたときに、ユーザの操作を「リリース操作」と判別する。操作受付部111は、タッチスクリーン15へのユーザの指などの接近を検出している状態から、接近を検出しない状態になったときに、状態が「タッチオン状態」から「タッチオフ状態」になったと判別する。
(3)「タップ操作」とは、ユーザがタッチスクリーン15に対して指などを接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。操作受付部111は、接近操作が検出されない状態(ユーザの指などがタッチスクリーン15から離れており、タッチスクリーン15がユーザの指などの接近を検出していない状態)から、タッチスクリーン15の出力に基づいて、ユーザの指などが接近したことを検出した場合に、その検出した座標を「初期タッチ位置」として保持する。操作受付部111は、初期タッチ位置の座標と、リリース操作をした座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作の座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「ダブルタップ操作」とは、ユーザがタップ操作を一定時間内に2回行う操作である。操作受付部111は、例えば、ユーザの操作をタップ操作と判別してから一定時間内に、タップ操作にかかる座標で再びタップ操作を判別した場合に、ユーザの操作を「ダブルタップ操作」と判別する。
(5)「長押し操作」とは、ユーザがタッチスクリーン15を押し続ける操作である。操作受付部111は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標において接近操作が継続している時間が一定時間を超えた場合に、ユーザの操作を「長押し操作」と判別する。「長押し操作」を、「ロングタッチ操作」と称する場合もある。
(6)「ドラッグ操作」とは、ユーザがタッチスクリーン15に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。「ドラッグ操作」を「スライド操作」と称する場合もある。
(7)「ムーブ操作」とは、ユーザがタッチスクリーン15において、接近操作を維持しつつ、タッチスクリーン15に指などを接近させている位置を移動させてリリース操作を行う一連の操作をいう。「ムーブ操作」を「スワイプ操作」と称する場合もある。
(8)「フリック操作」は、ユーザがムーブ操作を予め定められた時間よりも短い時間で行う操作をいう。フリック操作は、ユーザがタッチスクリーン15で指を弾くような操作である。
UI制御部113は、UIを構築するために表示部152に表示させるUI部品を制御する。UI部品は、ユーザが、ゲームの進行上必要な入力をユーザ端末100に対して行うためのツール、または、ゲームの進行中に出力される情報をユーザ端末100から得るためのツールである。UI部品は、これには限定されないが、例えば、アイコン、ボタン、リスト、メニュー画面などである。
また、UI制御部113は、対戦進行中、とりわけ、投球操作、または、打撃操作を支援するためのUI部品の表示態様を制御する。打撃操作を支援するUI部品としては、例えば、打撃の良好なタイミングを示すタイミングヒントオブジェクト、投手キャラクタから投げられたボール、投球の進行方向の変化を示す方向ヒントオブジェクト、投球の到達予定位置を示す位置ヒントオブジェクト、および、バットとボールとの当たりを判定するためのミートカーソル等がある。投球操作を支援するUIオブジェクトとしては、例えば、球種選択オブジェクト、コース提示オブジェクト、コース選択オブジェクト、および、投球タイミングオブジェクト等がある。
アニメーション生成部114は、上述のUI部品を含む各種のオブジェクトの制御態様に基づいて、各オブジェクトのモーションを示すアニメーションを生成する。例えば、投手の投球動作のアニメーション、打者の打撃動作のアニメーション、該打者が振るバットのアニメーション、投手によって投げられたボールのアニメーション、打者によって打たれたボールのアニメーション、走者が盗塁するアニメーション等を生成してもよい。
表示制御部112は、タッチスクリーン15の表示部152に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。例えば、表示制御部112は、ユーザが操作可能な操作キャラクタを表示部152に表示させる。また、表示制御部112は、アニメーション生成部114によって生成されたアニメーションを含むゲーム画面を表示部152に表示してもよい。また、表示制御部112は、上述のUIオブジェクトを、該ゲーム画面に重畳して描画してもよい。
対戦進行部115は、サーバ200との間でデータの送受信を行って、相手ユーザとの対戦を進行させる。また、対戦進行部115は、UI制御部113、アニメーション生成部114および表示制御部112を制御して、ユーザが本野球ゲームをプレイするために必要な上述のUIをユーザに提供する。対戦進行部115は、UI制御部113またはアニメーション生成部114に、UI部品を含むゲーム画面を生成させる。対戦進行部115は、表示制御部112に、生成された該ゲーム画面を表示部152に表示させる。これにより、ユーザが本野球ゲームをプレイするためのUIが実現される。
時間計測部116は、図示しないカウンタを制御して、ゲームのプレイ中に或る事象が発生してからの経過時間を計測する。一例として、時間計測部116は、対戦の進行中に、ユーザ端末100とサーバ200との間の通信が不可能となるエラー(第1エラー)が発生した場合、該エラーが発生してからの経過時間を計測する。該エラーの発生は、一例として、対戦進行部115が検出する。対戦進行部115は、例えば、HTTPレスポンスステータスコードの「503 Service Unavailable」を受信したことにより、該エラーを検出してもよい。また、該エラーとは、例えば、サーバ200における、いわゆるサーバダウンの発生である。以降、該エラーは、サーバダウンの発生であるものとして説明する。
また、時間計測部116は、サーバダウンが発生してから所定の時間(第1時間)が経過したか否かを判定する。
なお、図2に示すサーバ200およびユーザ端末100の機能は一例にすぎない。サーバ200は、ユーザ端末100が備える機能の少なくとも一部を備えていてもよい。また、ユーザ端末100は、サーバ200が備える機能の少なくとも一部を備えていてもよい。さらに、ユーザ端末100およびサーバ200以外の他の装置をゲームシステム1の構成要素とし、該他の装置にゲームシステム1における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、ユーザ端末100、サーバ200、および他の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
<対戦前の処理>
ユーザによる所定の操作、例えば、表示部152に表示されている、本ゲームのアイコンへのタップ操作が入力されると、ユーザ端末100において本ゲームが開始される。一例として、制御部110は、表示部152にホーム画面(不図示)を表示する。ホーム画面とは、本ゲームの開始後、最初に表示される画面であり、例えば、本ゲームに含まれる各モードを開始するためのタップ操作を受け付けるUIを含む画面である。
図3は、ユーザ端末100の表示部152に表示されるゲーム画面の一具体例を示す図である。一例として、ホーム画面に表示されている、PvP戦を開始するためのUIに対しタップ操作が入力されたと操作受付部111が判別した場合、制御部110は、図3に示す対戦開始画面310を表示部152に表示させる。以降、単に「対戦」と記載する場合には、該「対戦」はPvP戦を指すものとする。
本ゲームは、対戦の開始前に、自チームの拠点となる地区(以下、拠点地区)を、複数の地区から選択するものであってもよい。複数の地区は、例えば、日本全国の47都道府県のうち、東京を除く46道府県のそれぞれを1地区とする46地区と、東京を第1地区および第2地区に分けた2地区とによる、48地区であってもよい。ユーザは、自チームが拠点とする地区を、48地区の中から任意に選択することができる。制御部110は、対戦を開始するためのUIに対しタップ操作が入力された後、対戦開始画面310を表示させる前に、ユーザに拠点地区を選択させる画面を表示してもよい。
対戦開始画面310は、ユーザが茨城県を自チームの拠点地区としている例である。一例として、48地区のそれぞれには、対戦会場となる球場が設定されている。球場は、野球の対戦が進行される仮想空間を定義する。対戦は、ユーザまたは相手ユーザが選択している拠点地区に設定されている球場のいずれかにおいて進行する。少なくとも一部の地区の球場の仕様は、地区ごとに特有のものであってもよい。球場の仕様は、対戦の進行に影響を与える各種パラメータで決定される。具体的には、球場の広さ、屋根の有無、屋根の高さなどである。広さのパラメータは、ホームランの出やすさなどに影響する。屋根のパラメータは、打球の飛翔経路または打撃結果などに影響する。
本実施形態では、48地区のうち、12地区について、実在のプロリーグ球団のフランチャイズ球場を模した球場(以下、フランチャイズ球場)が設定されていてもよい。残りの36地区のうちのいくつかの地区について、実在の名のある球場を模した球場が設定されていてもよい。残りの地区については、仕様が共通の架空の球場が設定されていてもよい。
(マッチング)
一例として、自チームの拠点地区が選択されると、他のユーザとの対戦が可能となる。対戦開始画面310は、対戦開始UI311を含み、対戦開始UI311へのタップ操作が入力されたと操作受付部111が判別した場合、対戦進行部115は、対戦相手のマッチングを実行する。具体的には、対戦進行部115は、該タップ操作に応答して、マッチング要求をサーバ200に送信する。マッチング要求とは、他のユーザ端末100のユーザと対戦をプレイできるように、対戦相手となる他のユーザ端末100を探索することをサーバ200に対して要求するメッセージである。
サーバ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に従ってレーティングを計算すると、レーティングが高い方のユーザが、勝利したにもかかわらずレーティングが減少し、勝利したユーザが納得できないという事態が生じ得る。そこで、対戦前のレーティングから変動する幅に最大値および最小値を設定することで、そのような事態を回避し、ユーザの納得感を向上させることができる。
再びマッチングの説明に戻る。対戦支援部211は、マッチングの結果をユーザ端末100に返信する。対戦相手が見つかってマッチングが成立した場合には、対戦支援部211は、要求元のユーザが操作するユーザ端末100と、対戦相手のユーザが操作するユーザ端末100とのそれぞれにマッチング結果を配信する。マッチング結果には、対戦相手の情報が含まれている。対戦相手が見つからずにタイムアウトした場合には、対戦支援部211は、要求元のユーザのユーザ端末100に、対戦相手が見つからなかった旨の通知を含むマッチング結果を送信する。
対戦支援部211は、レーティングに加えて、チーム(デッキ)の強さにも基づいて、マッチングを実行する構成であってもよい。
(デッキ)
デッキは、一例として、PvP戦に参加させるチーム(以下、自チーム)を編成するためのUIである。ユーザは、手持ちのカード中から所望のカードをデッキに組み入れることにより、自チームを編成することができる。本野球ゲームにおけるデッキは、一例として、守備のポジション区分に基づいて、野手デッキおよび投手デッキの2種類のデッキで構成されている。また、本実施形態では、それぞれの区分のデッキを、メインとサブという概念を採用してさらに区分してもよい。本野球ゲームでは、一例として、野手デッキのメインデッキを野手スタメンデッキ、野手デッキのサブデッキを野手ベンチデッキ、投手デッキのメインデッキを投手先発デッキ、および、投手デッキのサブデッキを投手リリーフデッキと称する。
野手スタメンデッキは、投手を除く8つの守備ポジションのそれぞれに対応する枠と、指名打者に対応する枠とを有する。野手ベンチデッキは、一例として、控えの選手5人分に相当する5つの枠を有してもよい。投手先発デッキは、一例として、先発投手5人分に相当する5つの枠を有してもよい。投手リリーフデッキは、一例として、リリーフ投手6人分に相当する6つの枠を有してもよい。
一例として、ホーム画面に表示されている、デッキの編成を開始するためのUIに対しタップ操作が入力されたと操作受付部111が判別した場合、制御部110は、デッキ編成画面(不図示)を表示部152に表示させる。野手デッキを編成するデッキ編成画面と、投手デッキを編成するデッキ編成画面とは異なる画面であってもよい。この場合、ユーザは、一例として、一方のデッキ編成画面が表示された状態で、所定の操作を入力部151に入力することで、他方のデッキ編成画面を表示する(すなわち、2つのデッキ編成画面を切り換える)ことができる。ユーザは、デッキ編成画面が表示された状態で、手持ちの所望のカードを、それぞれの枠に紐付けるための入力操作を、入力部151を用いて行う。対戦進行部115は、上述の入力操作を、操作受付部111を介して受け付け、枠とカードとを対応付けて、その対応関係をデッキ情報として生成する。
(デッキ情報)
デッキ情報は、カードを配置することが可能な各枠と、カードとの対応関係を示す情報である。一例として、デッキ情報は、デッキを構成する各枠を識別するための枠識別番号と、カードを識別するためのカードIDとが関連付けられたデータ構造を有する。さらに、デッキ情報は、カードIDに関連付けて、総合パラメータ、および、希少度の各項目を含んでいてもよい。総合パラメータについては詳細を後述する。
希少度は、カードが表している選手の希少価値を等級で表したものである。一般に、ゲーム上、特に、プレイパートにおいて良好な結果をもたらす選手、すなわち、野球の試合に係る能力の高い選手には、上級の希少度が設定されている。本実施形態では、希少価値の高い等級から順に、「S」、「A」、「B」、および、「C」のアルファベットにより希少度が設定される。
なお、希少度は、例えば、カードの入手困難性、または、有償入手の場合の価格などと相関があってもよい。カードの希少度が高いほど、該カードの入手困難性は高くなる。
(デッキの強さ)
本野球ゲームでは、選手のそれぞれには、能力値が設定されている。能力値には、スキル別身体パラメータと、総合パラメータとがある。スキル別身体パラメータは、対戦において発揮される選手の身体能力を表す値である。具体的には、スキル別身体パラメータは、野球で必要とされるスキルごとに、選手の技量を数値化したものである。本実施形態では、例えば、スキル別身体パラメータとして、打撃力、命中力、最速球速、制球力、変化球力、走力、守備力、送球速度、および、送球精度などがある。
これに対して、総合パラメータは、スキルの種別に関係なく、カードが表す選手の、対戦進行上の総合的な強さを数値化したものであり、カードごとに設定される。総合パラメータは、対戦の進行時、対戦進行部115および対戦支援部211によって参照され、対戦の進行に影響を与える。具体的には、本野球ゲームは、デッキに組み入れられている選手の総合パラメータが高いほど、対戦が有利に進行する仕様である。
ユーザの入力操作にしたがって、対戦進行部115が生成したデッキ情報が記憶部に保存されると、次に、対戦進行部115は、デッキ情報に基づいて、デッキメタ情報を生成する。デッキメタ情報には、少なくとも、後述のデッキ総合パラメータが含まれている。
デッキメタ情報は、一例として、デッキ総合パラメータ、平均値、および、Sレア枚数の各項目を含んでいる。これらの各項目は、先に生成されたデッキ情報に基づいて、対戦進行部115によって決定される。
デッキ総合パラメータは、デッキ内の各選手の総合パラメータに基づいて算出される値である。デッキ内の各選手の総合パラメータが高いほど、デッキ総合パラメータも高く算出される。各選手は総合パラメータが高いほど対戦に強いということができるので、デッキ総合パラメータが高いほどデッキ(チーム)が対戦において強いということができる。平均値は、デッキ内の各選手の総合パラメータの平均値である。平均値が高いほど、強い選手のカードが多くデッキに配置されていることになる。Sレア枚数は、カードの希少度が最高ランクである「S」のカードがデッキ内に何枚あるのかを示す値である。希少度がSランクのカードの選手には高い能力値が設定されており、対戦を有利に進めることができる。そのようなSランクの選手を多くデッキに配置すれば、それだけデッキを強化することができる。
以上のとおり、デッキ総合パラメータ、平均値、および、Sレア枚数は、デッキの強さを表す指標(以下、デッキ強度指標)として採用できる。
対戦進行部115は、デッキに組み入れられた各選手の総合パラメータに基づいて、デッキ総合パラメータを算出する。
例えば、対戦進行部115は、デッキ内の各選手の総合パラメータの合計値を算出し、得られた総合パラメータの合計値をデッキ総合パラメータとしてもよい。対戦進行部115は、4種類すべてのデッキ内の選手の総合パラメータを合計してデッキ総合パラメータを算出してもよいし、メインデッキ内の選手の総合パラメータだけを合計してデッキ総合パラメータを算出てもよい。メインデッキとは、例えば、野手スタメンデッキおよび、投手先発デッキである。
さらに、対戦進行部115は、デッキに組み入れられている選手に設定されている他のパラメータに基づいて、選手同士の相関関係を特定してもよい。そして、対戦進行部115は、特定した相関関係に基づいて、上述の合計値にプラスまたはマイナスの補正を行ってデッキ総合パラメータを算出してもよい。例えば、相性が良いという相関関係にある2人の選手がデッキに編成されることにより、対戦進行部115は、上述の合計値にさらに所定の値を加算してデッキ総合パラメータを算出してもよい(いわゆる、コンボ)。デッキ総合パラメータは、加算条件をうまくそろえることによって高騰させやすい値であり、このような加算条件をそろえることも、ゲーム、とりわけ、デッキ編成の興趣性を向上させることに貢献している。
レーティングとデッキの強さとの両方に基づいて行うマッチングは、ユーザが非熟練者である場合に実行されてもよい。非熟練者とは、対戦のプレイ回数が少ない初心者、および、プレイ回数は多くとも、対戦に係る操作に習熟できず、腕前が上達していない未熟者などが含まれる。非熟練者には、比較的低いレーティングが付与されている。一方、ユーザが熟練者である場合、マッチングは、レーティングのみに基づいて行われてもよい。熟練者は、本ゲームにおける対戦のプレイを数多くこなし、かつ、対戦に係る操作に慣れていて、腕前が上達しているユーザを指す。
非熟練者が多く集まっているユーザ層(レーティング初期値周辺のユーザの集団)には、始めたばかりの初心者と、プレイ経験は豊富だが上達しないためにレーティングの上位集団に抜け出せない未熟者とが混在している。経験豊富な未熟者は、ゲームの腕前が拙劣であるとはいえ、多くの回数のプレイをこなすことにより、多くの報酬を獲得し、強い選手を豊富に所有している可能性が高い。したがって、強いデッキを編成することが可能である。一方、ゲームを始めたての初心者は、開始当初の手持ちの選手が限られており、強いデッキを編成することが難しい。上述の事情から、デッキの強さの格差は、初心者が多く集まるレーティング初期値周辺のユーザ層において顕著である。
このような非熟練者の集団においては、レーティングにのみ基づいてマッチングが行われると、初心者と、経験豊富な未熟者とがマッチングされる可能性がある。そして、このようなマッチングにより、デッキの強さに関して、非常に大きな格差が生じる可能性が高い。
本野球ゲームのような、編成されたデッキの強さが対戦の進行に何らかの作用を及ぼすような対戦ゲームにおいては、ユーザのゲームの腕前だけでなくデッキの強さが、対戦結果を左右する重要な要素となり得る。したがって、デッキの強さの格差を引き起こす理不尽なマッチングは、対戦を行う前から、デッキの強さが劣勢のユーザのプレイ意欲を萎えさせてしまう。また、実際に対戦が進行しても、ワンサイドゲームになる可能性があり、ゲームの興趣性を著しく低下させる。
ユーザが非熟練者である場合にレーティングとデッキの強さとの両方に基づくマッチングを行うことは、このような課題を解決することができる。すなわち、デッキの格差が顕著な非熟練者においては、レーティングだけでなく、デッキの強さが近いユーザ同士がマッチングされる。結果として、理不尽なマッチングを回避して、ゲームの興趣性が損なわれることを防止することが可能となる。
具体的には、理不尽なマッチングを回避し、デッキの強さにおいて劣勢のユーザがプレイする前から意欲を損なうことが回避されるという効果を奏する。特に、本野球ゲームのように、対戦の開始前に、デッキの強さの比較結果が提示されるゲームでは、この効果は特にメリットがある。対戦が開始される直前にデッキの強さの比較結果が提示される場合、デッキの強さがほぼ互角のユーザ同士の対決では、各ユーザは、互いのデッキの強さがほぼ互角であると理解できる。そして、各ユーザは、腕前によって勝敗が決まると理解して対戦を開始することになるから、ユーザのプレイへの意欲を向上させることができる。
(対戦成績)
再び図3を参照して、対戦開始画面310の説明に戻る。対戦開始画面310は、ユーザの対戦成績を示すUIを含んでもよい。このユーザの対戦成績は、地区ごとに蓄積されてもよい。対戦成績は、一例として、現在連勝数(第1パラメータ)、最高連勝数、および、勝敗数などを含む。
現在連勝数は、現時点において、その地区を拠点として連続して勝利している数を示す。よって、該地区を拠点とした状態で敗戦すると0勝にリセットされる。また、該地区を拠点とした状態で引き分けた場合にも0勝にリセットされてもよい。UI312は、この現在連勝数を示すUIである。すなわち、現在連勝数は、ユーザが対戦に勝利できなかった場合にユーザの不利益になるように更新されるパラメータであると表現することもできる。
最高連勝数は、その地区においてこれまで記録された現在連勝数のうち、最多数のものを示す。よって、最高連勝数は、敗戦してもリセットされない。最新の現在連勝数が最高連勝数を超えた場合に、該最高連勝数が、最新の現在連勝数に更新される。
<対戦中の処理>
図4は、ゲームシステム1に含まれる各装置が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。図4に示すフローチャートにおいては、ユーザ端末100が実行する処理を、投球側ユーザ端末100Aが実行する処理と、打撃側ユーザ端末100Bが実行する処理とに分けて記載する。図4に示す一連の処理は、サーバ200が、投球側ユーザ端末100Aと、打撃側ユーザ端末100Bとのマッチングを成立させたことにより開始される。
ステップS101にて、サーバ200の対戦支援部211は、状況情報を初期化する。状況情報は、対戦の進行状況を示す情報であり、特に対戦の勝敗を左右する重要な情報である。状況情報は、一例として、進行中のイニングを示す「イニング」、各チームの得点を示す「スコア」、走者が何塁にいるかを示す「ランナー」、「アウトカウント」、および、「ボールカウント」を含む。初期化された状況情報は、対戦開始時の対戦の進行状況を示す。ステップS102にて、対戦支援部211は、マッチングが成立した旨の通知と、初期化された状況情報とを各ユーザ端末100に送信して、対戦を開始する。
ステップS103およびステップS104にて、各ユーザ端末100の対戦進行部115は、初期化された状況情報を受信して、対戦の進行を開始する。
ステップS105にて、対戦支援部211は、フェーズ開始の同期をとる。これに伴い、投球側ユーザ端末100Aの対戦進行部115は、ステップS106にて、該フェーズの進行を開始し、投球画面を表示部152に表示させる。
ステップS107にて、操作受付部111は、投球側ユーザから投球操作を受け付ける。ステップS108にて、対戦進行部115は、該投球操作に基づいて、球種、コース、および、好投か否か等の投球内容を決定する。ステップS109にて、決定した投球内容を示す情報を含む投球結果D1を生成し、投球結果D1をサーバ200に送信する。
(投球画面)
図5は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。具体的には、該ゲーム画面は、投手キャラクタの投球シーンを表す投球画面600である。投球画面600は、進行中のフェーズがマニュアル進行モードである場合に、投球側ユーザによる投球操作を受け付けるための、以下に説明する投球操作UIを含む。
投球操作には、一例として、球種を指定するためのスライド操作と、コースを指定するためのドラッグ操作と、制球の良否を決定するためのタイミングを投球側ユーザに指定させるタップ操作とが含まれる。第2タップ操作の入力タイミングの良否に応じて、投球の良否が決定される。つまり、投球側ユーザにとって、対戦、特に、守備の回を有利に進めることができるか否かは、マニュアル進行モードの場合、タップ操作の巧拙にかかっている。
1つのフェーズが開始されると、投球側ユーザ端末100Aの対戦進行部115は、まず、図5に示す投球画面600を、UI制御部113に生成させて、表示部152に表示させる。
投球画面600は、仮想空間に配置されている各種オブジェクトを含む。具体的には、相手ユーザが操作する打者キャラクタ601、バット602、ユーザ自身が操作する投手キャラクタ603、ホームベース607、および、捕手キャラクタ605を含む。
投球画面600は、次のフェーズをオート進行モードまたはマニュアル進行モードに切り替えるための切替ボタン613を含んでいてもよい。図5に示す例では、該フェーズは、マニュアル進行モードにて進行している。そのため、切替ボタン613は、次のフェーズをオート進行モードに切り替えるためのボタンとして投球画面600に重畳表示されている。
投球画面600は、対決中の各キャラクタのステータス情報を含んでいてもよい。一例として、投球画面600は、自チームの投手キャラクタのステータス情報611と、相手チームの打者キャラクタのステータス情報612とを含んでいてもよい。
投球画面600は、対戦における現在の状況を示す状況情報を含んでいてもよい。一例として、状況情報は、現在のイニングを示すイニング情報631、各塁における走者の有無を示す走者情報632、現在の各チームの得点を示す得点情報633、現在のボールカウントおよびアウトカウントを示すカウント情報634を含んでもよい。
投球画面600は、投球操作UIとして、投手キャラクタ603に投げさせる球種を投球側ユーザが指定するための球種指定オブジェクト610を含んでいてもよい。
対戦進行部115は、一例として、球種指定オブジェクト610に対するユーザのスライド操作に基づいて、球種を決定する。図5に示すとおり、球種指定オブジェクト610において、ボールアイコンの周囲を囲うように、球種が1対1で対応付けられた球種アイコンが配置されている。球種アイコンは、対応付けられている球種を示すテキストまたはイラストなどを含んでいる。UI制御部113は、球種指定オブジェクト610において一覧される球種の種類を、投手キャラクタ603の能力に基づいて異ならせてもよい。
一例として、操作受付部111は、ボールアイコンに対する所定方向のスライド操作を、球種を指定するための操作として受け付ける。対戦進行部115は、スライド操作の方向に配置されている球種アイコンに対応する球種を、投手キャラクタ603に投げさせる球種として決定する。例えば、図5に示す例では、ユーザがボールアイコンを上方向にスライドさせた場合、対戦進行部115は、投手キャラクタ603にストレートを投げさせると決定する。球種にはボール604の移動経路、球速等を特定するためのパラメータが対応付けられている。球種のパラメータは、球速、変化量、および変化の方向を示す情報を含む。また、球種のパラメータは、投手キャラクタ603の識別情報に対応付けられて、記憶部120に記憶されている(不図示)。対戦進行部115は、投手キャラクタ603の識別情報に対応付けられた球種のパラメータのうち、決定した球種のパラメータを記憶部120から読み出し、投球結果D1に含める。
球種が決定されると、次に、対戦進行部115は、次の投球画面(不図示)を表示部152に表示させる。なお、以降、該投球画面を第2の投球画面と称する場合がある。第2の投球画面は、球種指定オブジェクト610に代えて、コース指定オブジェクトを含む。コース指定オブジェクトは、後述するカーソルと組み合わせることにより、投球側ユーザに、投手キャラクタ603に投球させるコースを指定させるためのUIオブジェクトとして機能する。
コース指定オブジェクトは、一例として、ストライクゾーンに対応する矩形を9つのマスに分割したものである。各マスは、投手キャラクタ603の能力、具体的には、得意なコースおよび不得意なコースに基づいて、色分けして表示されてもよい。
コース指定オブジェクトは、投げられたボールの到達予定位置を示す標識であるカーソルを含む。第2の投球画面が表示されている間、操作受付部111は、カーソルの位置を指定するためのドラッグ操作を受け付ける。操作受付部111がカーソルを移動させるためのドラッグ操作を受け付けると、UI制御部113は、該ドラッグ操作に関して検出されたタッチ位置に基づいて、カーソルを移動させる。
操作受付部111は、タッチスクリーン15に対するユーザの最初の接触位置(初期タッチ座標)と、カーソル移動操作後の接触位置(タッチナウ座標)とを取得する。UI制御部113は、取得された各座標を比較した結果得られた変化方向、および、変化量に基づいて、カーソルの位置の変化方向、および、変化量をそれぞれ決定する。これにより、UI制御部113は、カーソルが直接タッチされなくても、また、コース指定オブジェクトの表示領域外でドラッグ操作が受け付けられても、該ドラッグ操作に連動して、カーソルを移動させることができる。このようにすれば、ユーザの指によってカーソルの視認が妨げられることを回避できる。表示制御部112は、UI制御部113によって実行されているカーソルの移動に連動して、移動するカーソルを第2の投球画面上に表示させる。
対戦進行部115は、コースの確定を、任意の方法で行う。例えば、ユーザが上述のドラッグ操作に基づく接触が維持された状態で、所定閾値以上の圧力で強く押し込む操作を続けて行ったとする。対戦進行部115は、押し込む操作が受け付けられた時点におけるカーソルの位置を、最終的なコースとして確定させる。あるいは、「コース確定」などのボタン(不図示)が別途、第2の投球画面に設けられてもよい。対戦進行部115は、該ボタンがタップ操作されたときのカーソルの位置に基づいてコースを確定させてもよい。また、対戦進行部115は、ユーザが上述のドラッグ操作に基づく接触を解除したときのカーソルの位置に基づいてコースを確定させてもよい。また、対戦進行部115は、ユーザが上述のドラッグ操作に基づく接触を解除した後、タップ操作を入力したときのカーソルの位置に基づいてコースを確定させてもよい。
コースが確定すると、次に、対戦進行部115は、次の投球画面(不図示)を表示部152に表示させる。なお、以降、該投球画面を第3の投球画面と称する場合がある。第3の投球画面は、良否判定オブジェクトを含む。良否判定オブジェクトは、投手キャラクタ603の制球の良否を決定するためのタイミングを投球側ユーザに指定させるためのUIオブジェクトとして機能する。
一例として、良否判定オブジェクトは、弓形の帯状のゲージで構成される。良否判定オブジェクトは、該ゲージ内に、帯の長手方向にスライドするスライドバーと、スライドバーが停止する帯上の位置を定義する第1領域および第2領域とを含む。
該帯状のゲージは、投手キャラクタ603の位置から、捕手キャラクタ605の位置に向かって伸びている。UI制御部113は、スライドバーを、初期位置である第1位置から、最終位置である第2位置に向かって、帯の長手方向に移動させる。アニメーション生成部114は、スライドバー621が、移動の開始から所定時間後に第2領域を通過し、第1領域を通過して、最終的にカーソルの位置に到達するように、アニメーションを生成する。
ユーザは、一例として、スライドバーが帯上の所望の位置に到達した時、その位置でスライドバーを停止させるよう、タッチスクリーン15に対してタップ操作を行う。UI制御部113は、操作受付部111によってタップ操作が受け付けられた時の位置にて、スライドバーを停止させる。対戦進行部115は、スライドバーの停止位置に応じて、制球の良否を判定する。一例として、本実施形態では、対戦進行部115は、スライドバーが第1領域で停止した場合に、投手キャラクタ603が制球に完全に成功したと判定し、スライドバーが第2領域で停止した場合、成功に近い投球がなされたと判定し、それ以外の領域で停止した場合に、制球に失敗したと判定する。ここで、「制球に完全に成功した」とは、投手キャラクタ603が好投し、投球側ユーザによって指定された球種およびコースどおりに該ボールが仮想空間上を移動することを意味する。「成功に近い投球がなされた」とは、投球側ユーザによって指定された球種およびコースどおりにとはいかないが、それに近い球種およびコースに基づいて該ボールが仮想空間上を移動することを意味する。「制球に失敗した」とは、投手キャラクタ603が失投し、投球側ユーザによって指定された球種およびコースとはかけ離れた球種およびコースにて、該ボールが仮想空間上を移動することを意味する。
なお、スライドバーを停止させるための操作は、タップ操作に限定されない。例えば、コース確定のための操作が押し込む操作である場合、スライドバーを停止させるための操作は、リリース操作であってもよい。
また、良否判定オブジェクトの帯状のゲージは、弓、アーチなど形状を有し、投げられたボールが描く放物線を模していることが好ましい。また、良否判定オブジェクトの帯の幅は、第1位置から第2位置へ移動するにつれて、細くなるように定められていることが好ましい。また、該ゲージにおいて、第2位置に最も近く、最も帯の幅が細くなっている部分、すなわち、ゲージの先端が、ボールの到達予定位置として確定したカーソルに重なるように、良否判定オブジェクトが配置されることが好ましい。これにより、ユーザは、直観的に、帯状のゲージを、投手キャラクタ603から投げられたボールが、画面奥に配置されている捕手キャラクタ605に向かって移動する経路であるかのように理解する。以上のことから、本実施形態に係る良否判定オブジェクトは、現実の野球を再現するという目的に反して、ゲームの興趣性を高める目的で追加されたUIでありながら、投球画面600を現実の投球シーンから乖離させることなく、見た目に違和感のない投球シーンを演出することに貢献している。
制球の良否が判定されると、対戦進行部115は、請求の良否の判定結果に基づいて、ボールが投球されるコース、球速、球種が変化球である場合は、さらに変化量を決定し、これらを投球結果D1に含め、投球結果D1をサーバ200に送信する。次に、対戦進行部115は、次の投球画面(不図示)を表示部152に表示させる。なお、以降、該投球画面を第4の投球画面と称する場合がある。第4の投球画面は、良否判定結果を含む。
再び図4を参照して、各装置の処理の流れの説明に戻る。ステップS117にて、アニメーション生成部114によって、投手キャラクタ603が投球するアニメーションとボール604が移動するアニメーションとが生成される。そして、ステップS118にて、表示制御部112によって、これらのアニメーションが表示部152に表示される。具体的には、第4の投球画面において、該アニメーションが表示される。これにより、これまで投手キャラクタ603のグローブに収まっていたボール604が描出されてもよい。
一方、ステップS105にてフェーズ開始の同期がとられたとき、打撃側ユーザ端末100Bの対戦進行部115は、ステップS110にて、打撃画面を表示部152に表示させる。このとき、投手キャラクタ603の投球動作は確定していないので、該打撃画面には、ボールを投げる前の投手キャラクタ603と、後述するミートカーソル704とが表示される。ステップS111にて、操作受付部111は、ミートカーソル704を移動させるためのスライド操作を受け付けてもよい。
ステップS112にて、対戦支援部211は、投球結果D1を受信する。そして、ステップS113にて、受信した投球結果D1を、打撃側ユーザ端末100Bに送信する。
ステップS114にて、打撃側ユーザ端末100Bは、サーバ200から投球結果D1を受信する。ステップS115にて、打撃側ユーザ端末100Bのアニメーション生成部114は、受信された投球結果D1に基づいて、投手キャラクタ603が投球するアニメーションとボール604が移動するアニメーションとを生成する。ステップS116にて、表示制御部112は、生成された該アニメーションを表示部152に表示する。ここで、UI制御部113は、ミートカーソル704の他に、打撃側ユーザの打撃操作を支援するためのUIオブジェクトを打撃画面に重畳させてもよい。
ステップS119にて、打撃側ユーザ端末100Bの操作受付部111は、打撃側ユーザによる打撃操作を受け付ける。ステップS120にて、対戦進行部115は、受け付けられた打撃操作に基づいて、バット602のスイング位置、および、スイングタイミング等を決定する。ステップS121にて、対戦進行部115は、決定したスイング位置およびスイングタイミングの情報を含む打撃結果D2を生成し、サーバ200に送信する。
(打撃画面)
図6は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。具体的には、該ゲーム画面は、打者キャラクタの打撃シーンを表す打撃画面700である。打撃画面700は、打撃側ユーザ端末100Bが投球結果D1を受信した後に表示される画面(ステップS116にて表示部152に表示される画面)である。
打撃画面700は、仮想空間に配置されている各種オブジェクトを含む。具体的には、打者キャラクタ601、バット602、相手ユーザが操作する投手キャラクタ603、ボール604、ホームベース607を含む。図6に示すように、打撃画面700は、相手チームに所属する野手キャラクタ(守備についているキャラクタ)を含んでもよい。
打撃画面700は、上述した切替ボタン613、対決中の各キャラクタのステータス情報(ステータス情報708、709)、現在の状況を示す状況情報を含んでもよい。
打撃画面700は、進行中のフェーズがマニュアル進行モードである場合に、打撃画面700は、マニュアル進行モードにおいて、打撃側ユーザによる打撃操作を受け付けるための、以下に説明する打撃操作UIを含む。すなわち、打撃画面700は、打撃操作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、または、ボールゾーン702に向かって移動してくるアニメーションが、アニメーション生成部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が飛ぶような移動経路を算出する。一方、ジャストミート以外の場合には凡打と判定して、凡打に対応する移動経路を算出してもよい。
再び図4を参照して、各装置の処理の流れの説明に戻る。ステップS122にて、対戦支援部211は、打撃結果D2を受信する。そして、ステップS123にて、受信した打撃結果D2を、投球側ユーザ端末100Aに送信する。
投球側ユーザ端末100Aがサーバ200から打撃結果D2を受信すると、ステップS124にて、アニメーション生成部114は、受信された打撃結果D2に基づいて、打者キャラクタ601が打撃するアニメーションを生成する。ステップS125にて、表示制御部112は、生成された該アニメーションを表示部152に表示する。
対戦進行部115は、打撃結果D2に基づいて「打者キャラクタ601がバット602にボール604を当てて打撃した」と判断した場合には、ステップS126にて、フィールドプレイの計算を行う。具体的には、対戦進行部115は、打撃されたボール604をフィールド上で移動させるための計算、野手キャラクタに守備(捕球、送球など)をさせるための計算、および、走者キャラクタを進塁または出塁させるための計算を行う。
ステップS127にて、アニメーション生成部114は、対戦進行部115の計算結果にしたがって、フィールドプレイのアニメーションを生成してもよい。ステップS128にて、表示制御部112は、該生成されたアニメーションを表示部152に表示してもよい。
なお、対戦進行部115は、打撃結果D2に基づいて「打者キャラクタ601がバット602にボール604を当てなかった(空振りした、または、見逃した)」と判断した場合には、ステップS126〜ステップS128の各処理の実行を省略する。
ステップS129にて、対戦進行部115は、フィールドプレイに関する計算結果に基づいて、状況情報を更新する。
あるいは、対戦進行部115は、ステップS126〜ステップS128が省略された場合には、投げられたボール604の交差面における到達位置が、ストライクゾーン701内か、それ以外かに基づいて、状況情報の中のボールカウントを更新する。
一方、打撃側ユーザ端末100Bの対戦進行部115は、ステップS121の後、ステップS130〜ステップS134の各ステップを実行する。ステップS130〜ステップS134は、上述の、ステップS124〜ステップS128と同様に実行される。異なる点は、打撃結果D2が、サーバ200から送信されたものではなく、ステップS120にて自端末にて生成された情報であるという点である。
対戦進行部115は、ステップS135にて、状況情報400を更新する。対戦進行部115は、更新した状況情報をサーバ200に送信する。
対戦支援部211は、それぞれのユーザ端末100から、同じタイミングで生成された状況情報を受信すると、ステップS136にて、受信した状況情報を、それぞれ対戦体の各ユーザ端末100に転送する。すなわち、投球側ユーザ端末100Aが生成した状況情報は、打撃側ユーザ端末100Bに供給され、打撃側ユーザ端末100Bが生成した状況情報は、投球側ユーザ端末100Aに供給されて、状況情報が交換される。ステップS137およびステップS138にて、各ユーザ端末100は、対戦相手のユーザ端末100で生成された状況情報をそれぞれ受信する。
以上で1つのフェーズが終了し、新たなフェーズが開始される。具体的には、ゲームシステム1に含まれる各装置が、ステップS105からS138までの処理を再度実行する。フェーズの開始と終了が繰り返されることにより、対戦(PvP戦)が進行する。
<対戦後の処理>
図7は、ユーザ端末100が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。図7に示す処理については、投球側ユーザ端末100Aと打撃側ユーザ端末100Bとで共通である。そのため、図7に示すフローチャートにおいては、投球側ユーザ端末100Aが実行する処理と打撃側ユーザ端末100Bが実行する処理とを区別せずに、ユーザ端末100が実行する処理としてまとめて記載する。これは、図7以降のフローチャートでも同様である。
ステップS701において、フェーズの終了時に所定の条件が満たされると、対戦進行部115は、対戦の進行に応じて対戦の結果を決定し、対戦を終了(正常終了)させる。一例として、対戦進行部115は、最新の状況情報において、「イニング」が最終回(例えば9回)の裏であり、かつ、「アウトカウント」が3アウトである場合、対戦を終了させる。また、例えば、対戦進行部115は、最新の状況情報において、「イニング」が最終回(例えば9回)の表であり、守備側のチームの得点が攻撃側のチームの得点より多く、かつ、「アウトカウント」が3アウトである場合、対戦を終了させる。
ステップS702において、対戦進行部115は、自端末のユーザのチーム(自チーム)が対戦に勝利したか否かを判定する。具体的には、対戦進行部115は、自チームの得点が相手チームの得点より多いか否かを判定し、自チームの得点が相手チームの得点より多い場合、対戦に勝利したと判定する。一方、対戦進行部115は、自チームの得点が相手チームの得点より少ない場合、対戦に敗北したと判定する。
自チームが勝利したと判定した場合(ステップS702でYES)、ステップS703において、対戦進行部115は、現在の拠点地区におけるユーザの連勝数(現在連勝数)を1増やす。続いて、対戦進行部115は、現在連勝数が、予め設定された複数の閾値(第1閾値)のいずれかに到達したか否かを判定する。該閾値の何れかに到達したと判定した場合、対戦進行部115は、到達した閾値に応じた報酬をユーザに付与する。対戦進行部115は、一例として、ゲーム情報132として記憶部120に格納されている、現在連勝数と報酬とを対応付けたテーブルを参照し、ユーザに付与する報酬を特定する。
図8は、該テーブルの一具体例を示す図である。図8に示すテーブルは、「連勝数」のカラムと「報酬」のカラムとから構成されている。「連勝数」のカラムには、上述した複数の閾値が格納される。図8の例では、5、10、15、20が格納されている。「報酬」のカラムにはユーザに付与される報酬を示す情報が格納されている。図8の例では、第1報酬〜第4報酬を示す情報が格納されている。つまり、図8に示すテーブルは、ユーザが編成したチームが拠点地区において5連勝、10連勝、15連勝、20連勝した場合、それぞれ、第1報酬、第2報酬、第3報酬、第4報酬をユーザに付与することを示している。なお、テーブルに格納される閾値、および、報酬を示す情報は、図8の例に限定されない。
また、第1報酬〜第4報酬は、その序数が大きいほど、ゲーム内における価値が高い報酬であるとする。すなわち、第1報酬、第2報酬、第3報酬、第4報酬の順に、ゲーム内における価値が高くなる。「ゲーム内における価値が高い」とは、例えば、個数が多い、希少度が高い、ゲーム内における有用度が高いという意味であり、これらの複数を満たすものであってもよい。
一例として、第1報酬〜第4報酬がパックである場合、その序数が大きいほど、ランクが高いパックであってもよい。あるいは、その序数が大きいほど、付与されるパックの数が多くなってもよい。また、より序数の大きい報酬は、「パックのランクが高い」、および、「付与されるパックの数が多い」、の両方を満たすものであってもよい。例えば、第1報酬が、最もランクの低いパック1つである場合、第2報酬〜第4報酬の少なくともいずれかが、その一部が最もランクの低いパックであり、残りがよりランクの高いパックである、複数のパックであってもよい。また、第2報酬〜第4報酬の少なくともいずれかが、よりランクの高いパックのみで構成された複数のパックであってもよい。
図7では、現在連勝数が、予め設定された複数の閾値のいずれかに到達したか否かを判定するステップの例として、現在連勝数が5であるか否か(ステップS704)、および、現在連勝数が10であるか否か(ステップS706)を記載している。換言すれば、図7では、フローの簡略化を目的として、現在連勝数が15および20であるか否かの判定については、記載を省略している。
ステップS704でYESの場合、対戦進行部115は、ステップS705において、ユーザに第1報酬を付与する。ステップS704でNO、かつ、ステップS706でYESの場合、対戦進行部115は、ステップS707において、ユーザに、第1報酬よりゲーム内における価値が高い第2報酬を付与する。
ステップS706でNOの場合、対戦進行部115は、ユーザに報酬を付与しない。なお、ステップS706でNOの場合とは、現在連勝数が、予め設定された複数の閾値のいずれでもない場合である。そして、図7に示すフローは終了する。対戦進行部115は、ゲーム画面を、自動的にホーム画面に遷移させてもよい。
一方、ステップS702において、自チームが敗北したと判定した場合(S702でNO)、ステップS708において、対戦進行部115は、現在の拠点地区におけるユーザの現在連勝数を0にリセットする。つまり、敗北したユーザは連勝数の増加を、0からやり直さなければならない。例えば、現在連勝数が19であった場合、敗北したユーザは、第4報酬を獲得するために、対戦に20連勝する必要がある。
(サーバダウン)
図9は、ユーザ端末100が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。具体的には、サーバ200においてサーバダウンが発生した場合に、ユーザ端末100が実行する処理の流れを示すフローチャートである。
ステップS901において、対戦進行部115はサーバダウンを検出する。サーバダウンの検出方法としては、既知の方法を用いればよい。対戦進行部115は、ステップS902において、サーバダウンを検出した時点のイニング数に応じて、最大待機時間を決定し、ステップS903において、対戦を中断する。最大待機時間とは、サーバ200の復帰を待機する時間の最大値である。対戦進行部115は、一例として、試合の終盤においてサーバダウンが発生したことを検出した場合、試合の序盤においてサーバダウンが発生したことを検出した場合に比べて、最大待機時間を長くしてもよい。例えば、対戦進行部115は、イニングが1〜4回であるときにサーバダウンが発生したことを検出した場合、最大待機時間を5分として、対戦を中断する。一方、対戦進行部115は、イニングが5〜9回であるときにサーバダウンが発生したことを検出した場合、最大待機時間を10分として、対戦を中断する。
なお、最大待機時間の長さは、対戦の状況に依らず固定(例えば、5分)であってもよい。この例の場合、ステップS902の処理は実行されない。
図10は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。該ゲーム画面は、図3を参照して説明した対戦開始画面310であるが、図10に示す対戦開始画面310は、対戦開始UI311の代わりに、テキスト313を含んでいる点が、図3に示す対戦開始画面310と異なる。
対戦進行部115は、対戦を中断した場合、一例として、対戦中のゲーム画面に代えて図10に示す対戦開始画面310を表示部152に表示させる。テキスト313は、サーバダウンが発生したことにより対戦が中断していることをユーザに報知するテキストである。サーバダウンが発生したことにより対戦が中断していることをユーザに報知することができれば、テキスト313の内容は、図10に示すものに限定されない。
ステップS904およびS905において、対戦進行部115は、最大待機時間が経過するまで、サーバ200の復帰を待機する。具体的には、対戦進行部115は、最大待機時間が経過するまで、図10に示す対戦開始画面310を表示部152に表示する。
(対戦の再開)
最大待機時間が経過する前に、サーバ200の復帰を検出した場合(ステップS904でYES)、ステップS907において、対戦進行部115は、サーバ200の復帰をユーザに通知する。
図11は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。該ゲーム画面は、図3を参照して説明した対戦開始画面310であるが、図11に示す対戦開始画面310は、対戦開始UI311の代わりに、対戦再開UI314およびテキスト315を含んでいる点が、図3に示す対戦開始画面310と異なる。
対戦進行部115は、サーバ200の復帰を検出した場合、一例として、図10に示す対戦開始画面310を、図11に示す対戦開始画面310に更新し、サーバ200の復帰をユーザに通知する。テキスト315は、サーバ200がサーバダウンから復帰したことをユーザに通知するテキストである。サーバ200がサーバダウンから復帰したことをユーザに通知することができれば、テキスト315の内容は、図11に示すものに限定されない。
ステップS908およびS909において、対戦進行部115は、ユーザおよび相手ユーザによる対戦再開操作の入力(第1の入力)を待機する状態となる。対戦再開操作とは、中断した対戦を再開(復帰)させるための操作であり、一例として、図11に示す対戦開始画面310に含まれる、対戦再開UI314に対するタップ操作である。
対戦再開操作が入力されたと操作受付部111が判別した場合(ステップS908でYES)、対戦進行部115は、対戦再開通知を、サーバ200を介して相手ユーザのユーザ端末100へ送信する。対戦再開通知とは、対戦再開UI311へのタップ操作を受け付けたこと、すなわち、ユーザが対戦を再開しようとしていることを相手ユーザのユーザ端末100へ通知するものである。
対戦進行部115は、相手ユーザによる対戦再開操作の入力を、対戦再開通知を受信することにより特定する。対戦再開通知を受信した場合(ステップS909でYES)、すなわち、ユーザおよび相手ユーザの両方が対戦再開操作を入力した場合、ステップS910およびS911において、対戦進行部115は、待機時間に応じて対戦を自動的に進行させた後、対戦を再開させる。待機時間とは、対戦が中断してから再開するまでに要した時間、換言すれば、サーバ200においてサーバダウンが発生してから(あるいは、ユーザ端末100が、サーバダウンが発生したことを検出してから)、ユーザおよび相手ユーザの両方が対戦再開操作を入力するまでに要した時間である。
一例として、対戦進行部115は、サーバ200から受信した状況情報に基づいて、対戦を進行させる。具体的には、サーバ200の対戦支援部211は、ゲーム情報232として予め記憶部220に記憶されている、1イニングが開始してから終了するまでの平均時間と、上述した待機時間とに基づいて、対戦を自動的に進行させる量を決定する。より具体的には、待機時間を平均時間で除算することにより、自動的に進行させた後のイニング(何回であるか、および、表と裏のいずれであるか)を決定する。平均時間は、例えば、本野球ゲームにおいて過去に実施された複数の試合における、1イニングが開始してから終了するまでの時間に基づいて算出されたものであってもよい。あるいは、平均時間は、実際の試合(例えば、本年度のプロ野球における複数の試合)における、1イニングが開始してから終了するまでの時間に基づいて算出されたものであってもよい。
対戦支援部211は、さらに、試合に出場しているキャラクタ(カード)、打者であるキャラクタ、スコア、ランナー、アウトカウント、および、ボールカウントを決定する。対戦支援部211は、例えば、自動的に進行された期間の打撃結果D2をすべて決定し、該打撃結果D2に基づいてスコアを決定してもよい。また、対戦支援部211は、自動的に進行された期間に選手の交代があったとして、スターティングメンバーであるキャラクタに代えて、ベンチ入りのキャラクタを試合に出場させてもよい。なお、スターティングメンバーであるキャラクタとは、すなわち、メインデッキに含まれるカードである。ベンチ入りのキャラクタとは、すなわち、サブデッキに含まれるカードである。つまり、「試合に出場しているキャラクタに代えて、ベンチ入りの選手を試合に出場させる」とは、ユーザ端末100から受信したデッキ情報において、サブデッキを構成する枠の枠識別番号に関連付けられているカードIDを、メインデッキを構成する枠の枠識別番号に関連付けられるように変更することである。
対戦支援部211は、ランナー、アウトカウント、および、ボールカウントを、本野球ゲームにおける野球のルールから逸脱しない範囲内でランダムに決定してもよい。例えば、対戦支援部211は、「ランナー2塁、2アウト、2ボール1ストライク」という状況情報を生成してもよい。これにより、対戦は、あるイニングの最初からではなく、途中から、すなわち、ランナー2塁、2アウト、2ボール1ストライクという状況で再開される。
対戦支援部211は、生成した状況情報を、両方のユーザ端末100に送信する。これにより、両方のユーザ端末100において、同一の状況で対戦が再開される。
図12は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。具体的には、該ゲーム画面は、対戦が再開された場合に表示されるゲーム画面である。図12では、このゲーム画面の一例として、投球画面600を示している。なお、対戦が再開された場合に表示されるゲーム画面は、対戦を自動的に進行させた後のイニングに応じて決まるため、対戦が再開された場合に表示されるゲーム画面として、打撃画面700が表示される場合もある。
ここでは、図5に示す投球画面600が表示されているときに、サーバ200においてサーバダウンが発生し、対戦が中断したものとする。換言すれば、対戦は4回裏(図5参照)で中断したものとする。
図12に示すように、対戦の再開後に表示された投球画面600では、イニング情報631は「6裏」となっており、6回の裏であることを示している。つまり、対戦は、4回裏から6回裏まで自動的に進行したうえで再開されている。また、図12に示す投球画面600では、得点情報633が「S1−3D」となっている。つまり、対戦が自動的に進行する過程で、両チームに1点ずつ追加されている。このように、対戦の再開前に、対戦を自動的に進行させることで、対戦にかかる時間の長大化を防ぐことができる。結果として、中断した時点から対戦が再開することに起因する、ユーザの対戦を継続することへの意欲の減退を防ぐことができる。
対戦の再開後、図9に示すフローチャートは、図7に示すフローチャートのステップS701へ進む。すなわち、対戦は、再開後に図4に示すフローチャートに基づいて進行した後、終了する。
(無効試合)
サーバ200の復帰を検出することなく、最大待機時間が経過した場合(ステップS904でNO、かつ、ステップS905でYES)、サーバ200が復帰した後、対戦再開操作を受け付けることなく、最大待機時間が経過した場合(ステップS908でNO、かつ、ステップS905でYES)、および、サーバ200が復帰した後、対戦再開通知を受信することなく、最大待機時間が経過した場合(ステップS909でNO、かつ、ステップS905でYES)、対戦進行部115は、ステップS906において、該対戦を無効試合として終了させる。対戦進行部115は、対戦を無効試合として終了させた場合、対戦前の連勝数を維持する。
図13は、ユーザ端末の表示部に表示されるゲーム画面の具体例を示す図である。該ゲーム画面は、図3を参照して説明した対戦開始画面310であるが、図13に示す対戦開始画面310は、対戦開始UI311の代わりに、UI316およびテキスト317を含んでいる点が、図3に示す対戦開始画面310と異なる。
対戦進行部115は、対戦を無効試合として終了させると、一例として、図11に示す対戦開始画面310を、図13に示す対戦開始画面310に更新し、対戦が無効試合となり終了したことをユーザに通知する。テキスト317は、対戦が無効試合となったことをユーザに通知するテキストである。また、テキスト317は、対戦前の連勝数が維持されることをユーザに通知する内容を含んでいる。これにより、ユーザは、無効試合になったことで連勝数が更新されないことを容易に理解することができる。換言すれば、ユーザ端末100は、無効試合になったことで連勝数がリセットされる(0になる)のではないか、との不安を、ユーザが抱くことを回避することができる。なお、テキスト317の内容は、対戦が無効試合になったことをユーザに通知することができればよく、図13に示すものに限定されない。例えば、テキスト317は、対戦前の連勝数が維持されることをユーザに通知する内容を含んでいなくてもよい。
以上で、図9に示すフローは終了する。対戦進行部115は、ステップS906における処理の実行後、ゲーム画面を、自動的にホーム画面に遷移させてもよい。
(効果)
以上のように、本実施形態では、ユーザ端末100は、ゲームプログラム131に基づいて、以下のステップを実行するように構成されている。具体的には、ユーザ端末100は、ユーザ端末100に対するユーザの入力と、ユーザ端末100とサーバ200との間の通信とに基づいて、ユーザと相手ユーザとの対人対戦を進行させるステップと、対人対戦の進行中にサーバ200においてサーバダウンが発生したことを検出するステップと、サーバダウンがサーバ200に発生したことに応じて、対人対戦を無効試合として終了するステップと、対人対戦が無効とされなかった場合、対人対戦の進行に応じて対戦の結果を決定するステップと、対人対戦が無効とされた場合、現在連勝数を更新しない一方、対人対戦の結果が決定された場合、対人対戦の結果に基づいて、現在連勝数を更新するステップと、を実行するように構成されている。
このように、ユーザ端末100は、サーバ200のサーバダウンが発生したことに応じて、対人対戦を無効として対人対戦を終了させる。一方、対人対戦が無効とされなかった場合、例えば、対人対戦が正常に終了した場合は、対人対戦の進行に応じて対戦の結果を決定する。そして、対戦の結果が決定された場合、現在連勝数を更新する一方、対人対戦が無効とされた場合、現在連勝数を更新しない。これにより、ユーザに非が無く対戦が途中で終了したにもかかわらず、ユーザの連勝がストップすることによる、ユーザのゲームをプレイする意欲が減退することを回避することができる。
また、一例として、ユーザ端末100は、ゲームプログラム131に基づいて、ユーザが対戦に勝利したことに応じて更新された現在連勝数が複数の閾値のいずれかに到達した場合、ゲーム内で利用できる報酬をユーザに付与するステップをさらに実行してもよい。
また、該付与するステップでは、現在連勝数がより高い閾値に到達した場合、ゲーム内における価値がより高い報酬を付与してもよい。
このように、連勝を重ねていくことで、ユーザには報酬が付与される。さらに、連勝が続けば、報酬はより価値の高いものになっていく。換言すれば、本野球ゲームにおいて、連勝を継続することはユーザにとって重要な事項であり、連勝がストップすることはユーザにとって大きな不利益となる。つまり、サーバ200のサーバダウンといった、ユーザに非が無い原因で対戦が途中で終了し、ユーザの連勝がストップすることは、ユーザのゲームをプレイする意欲を大きく減退させるものである。
特に、本野球ゲームにおいては、対戦に勝利することによりレーティングの値が増加する。これはすなわち、連勝数の増加に伴い、対戦する相手ユーザの強さが強くなることを意味する。つまり、本野球ゲームにおいて、連勝を継続することは困難である。このため、本野球ゲームにおいて、サーバ200のサーバダウンといった、ユーザに非が無い原因で対戦が途中で終了し、ユーザの連勝がストップすることは、対戦相手がレーティングに基づかずに決定されるゲームと比べて、ユーザのゲームをプレイする意欲をより大きく減退させるものとなる。
このような課題に対し、本実施形態に係るユーザ端末100は、サーバダウンに基づいて対戦が終了した場合は、ユーザの現在連勝数を更新せず、対戦前の現在連勝数を維持するので、ユーザのゲームをプレイする意欲が大きく減退することを回避することができる。この効果は、対戦相手がレーティングに基づいて決定される本野球ゲームのようなゲームにおいて、特に顕著な効果であるといえる。
また、一例として、ユーザ端末100は、サーバダウンがサーバ200に発生したことに応じて対人対戦を中断するステップをさらに実行するように構成されていてもよい。この例において、ユーザ端末100は、サーバダウンがサーバ200に発生してから最大待機時間が経過するまでに対人対戦が再開されなかったことに応じて、対人対戦を無効としてもよい。これにより、サーバダウンにより対人対戦が即無効試合となることを回避することができる。
また、一例として、ユーザ端末100は、サーバ200がサーバダウンから復帰したことを検出するステップと、サーバダウンがサーバ200に発生してから最大待機時間が経過する前にサーバ200がサーバダウンから復帰し、かつ、最大待機時間が経過する前にユーザおよび相手ユーザの両方が対戦再開操作の入力を入力部151に対して行ったことに応じて、対人対戦を再開するステップと、を実行するように構成されていてもよい。これにより、対戦の中断後に、ユーザおよび相手ユーザに、対戦再開の意欲がある場合、対戦を再開することができる。よって、対戦の再開を願うユーザおよび相手ユーザが満足する可能性を上げることができる。
また、一例として、ユーザ端末100は、上述の再開するステップにおいて、対戦の中断分を自動的に進行させてから、対人対戦を再開してもよい。
これにより、対戦の中断に伴う、対戦にかかる時間の長大化を防ぐことができる。結果として、中断した時点から対戦が再開することに起因する、ユーザが対戦を継続する意欲の減退を回避することができる。
なお、ユーザ端末100は、対戦を中断させてから再開させるまでに要した時間に基づいて決定した進行量で、中断させた対人対戦を自動的に進行させてもよい。あるいは、予め定められた進行量で、中断させた対人対戦を自動的に進行させてもよい。換言すれば、進行量は固定であってもよい。
また、一例として、ユーザ端末100は、上述の無効とするステップでは、最大待機時間が経過する前にサーバ200がサーバダウンから復帰した場合であっても、最大待機時間が経過するまでの間にユーザおよび相手ユーの少なくとも一方が対戦再開操作を入力部151に入力しない場合、対人対戦を終了させてもよい。
このように、対戦の中断により、ユーザおよび相手ユーザの両方が対戦を継続する意欲を失った場合、ユーザ端末100は対戦を終了させる。これにより、対戦が不要に継続することを防ぐことができる。
また、一例として、ユーザ端末100は、ゲームプログラム131に基づいて、サーバダウンが発生した場合、対戦の状況に基づいて、最大待機時間の長さを決定するステップをさらに実行してもよい。これにより、ユーザが対戦の再開を待機する時間を適切なものとすることができる。
上述の決定するステップでは、一例として、サーバダウンが発生した時点のイニングが、1回から最終回までの何れであるかに応じて最大待機時間の長さを決定してもよい。例えば、上述の決定するステップでは、対戦の終盤(例えば5〜9回)においてサーバダウンが発生したことを検出した場合、対戦の序盤(例えば1〜4回)においてサーバダウンが発生したことを検出した場合に比べて、最大待機時間を長くしてもよい。
終盤で対戦が中断した場合、特に中断時点で有利であったユーザ(例えば、中断時点で自チームが勝っているユーザ)は、対戦の再開を強く願うものである。このため、対戦の終盤においてサーバダウンが発生したことを検出した場合は、対戦の序盤においてサーバダウンが発生したことを検出した場合に比べて、最大待機時間を長くすることにより、対戦が再開する可能性を上げることができ、対戦の再開を願うユーザが満足する可能性を上げることができる。
〔実施形態2〕
本発明の他の実施形態について、以下に説明する。なお、説明の便宜上、上述の実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記する。また、このような部材については、実施形態1で既に説明しているため、本実施形態ではその説明を繰り返さない。
図14は、ユーザ端末100が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。具体的には、サーバ200においてサーバダウンが発生した場合に、ユーザ端末100が実行する処理の流れを示すフローチャートである。なお、なお、図14に記載のフローは、図9に記載のステップS901〜S904が実行された後のフローである。
最大待機時間が経過する前に、サーバ200の復帰を検出した場合、ステップS1401において、対戦進行部115は、サーバ200の復帰をユーザに通知する。対戦進行部115は、例えば、図10に示す対戦開始画面310を、図11に示す対戦開始画面310に更新し、サーバ200の復帰をユーザに通知する。
ステップS1402において、対戦進行部115は、対戦開始通知の受信を待機する状態となる。
対戦開始通知を受信した場合(ステップS909でYES)、ステップS1403において、対戦進行部115は、待機時間に応じて対戦を自動的に進行させる。ここでの待機時間は、サーバ200においてサーバダウンが発生してから、対戦開始通知を受信するまでに要した時間である。
ステップS1404において、対戦進行部115は、ユーザによる対戦再開操作の入力を待機する状態となる。
対戦再開操作が入力されたと操作受付部111が判別した場合(ステップS1404でYES)、ステップS1405において、対戦進行部115は、マニュアル進行モード、または、部分オートモード対人対戦を再開させる。対戦進行部115は、例えば、対人対戦の中断時にマニュアル進行モードであった場合、マニュアル進行モードで再開させ、該中断時に部分オートモードであった場合、部分オートモードで対人対戦を再開させてもよい。あるいは、対戦進行部115は、中断時にいずれのモードであったかに関わらず、マニュアル進行モードで対人対戦を再開させてもよい。
一方、対戦再開操作が入力されたと操作受付部111が判別していない場合(ステップS1404でNO)、ステップS1406において、対戦進行部115は、自動的に進行させた対人対戦を、完全オートモードで再開させる。すなわち、対戦進行部115は、ユーザのチームのキャラクタを、ユーザの操作入力無しでゲームプログラム131に従って動作させ、対戦を進行させる。
対戦進行部115は、対戦を進行させながら、対戦終了までにユーザによる対戦再開操作の入力を待機している(ステップS1407)。対戦終了までにユーザによる対戦再開操作の入力があった場合(ステップS1407でYES)、すなわち、対戦終了までに対戦再開操作が入力されたと操作受付部111が判別した場合、対戦進行部115は、ステップS1408において、完全オートモードで進行した部分を維持して、マニュアル進行モード、または部分オートモードで対人対戦を再開させる。
一方、対戦終了までにユーザによる対戦再開操作の入力が無かった場合(ステップS1407でNO)、図14に示すフローチャートは、図7に示すフローチャートのステップS701へ進む。すなわち、対戦進行部115は、完全オートモードで進行した対人対戦の結果に応じて、現在連勝数を更新する。
なお、ステップS1402の処理と、ステップS1404の処理とは、同時に実行されてもよい。この場合、対戦進行部115は、対戦再開通知を受信した場合、または、対戦再開操作が入力されたと操作受付部111が判別した場合に、ステップS1403の処理を実行する。そして、対戦再開通知の受信および対戦再開操作の入力のうち、実行されていない方の実行を待機しながら、対人対戦を再開する。
なお、ユーザによる対戦再開操作が入力されたと操作受付部111が判別し、かつ、対戦進行部115が対戦再開通知を受信していない場合、すなわち、相手ユーザが対戦再開操作を入力していない場合、ユーザのユーザ端末100では、マニュアル進行モード、または部分オートモードで対人対戦が再開し、相手ユーザのユーザ端末100では、完全オートモードで対人対戦が再開する。すなわち、本実施形態に係るゲームシステム1では、最大待機時間が経過する前に、ユーザおよび相手ユーザの一方が対戦再開操作の入力を入力部151に対して行うとともに、他方が対戦再開操作の入力を入力部151に対して行わなかったことに応じて、対人対戦を、該他方の操作入力無しで進行するモード(第1モード)で再開する、と表現することもできる。「他方の操作入力無しで進行するモード」とは、すなわち、対戦再開操作の入力を行った側のユーザ端末100では、対戦が、マニュアル進行モード、または部分オートモードで再開し、対戦再開操作の入力を行わなかった側のユーザ端末100では、対戦が、完全オートモードで対人対戦が再開することを指す。
(効果)
以上のように、本実施形態では、ユーザ端末100は、ゲームプログラム131に基づいて、最大待機時間が経過する前にサーバ200がサーバダウンから復帰し、かつ、最大待機時間が経過する前に一方のみが対戦再開操作を入力部151に入力した場合、対戦再開操作の入力を行った側のユーザ端末100では、対戦が、マニュアル進行モード、または部分オートモードで再開し、対戦再開操作の入力を行わなかった側のユーザ端末100では、対戦が、完全オートモードで対人対戦が再開する。そして、再開された対人対戦が無効となることなく終了すれば、該対人対戦の結果に応じて現在連勝数が更新される。
これにより、ユーザが対戦再開操作を入力すれば、その対戦が無効試合となることが無くなるので、対戦の再開を希望するユーザ、例えば、中断時点で有利であったユーザを満足させることができる。また、ユーザはこの対戦に勝利すれば、現在連勝数を伸ばすことができる。一方、対戦再開操作を入力しない場合、相手ユーザが対戦再開操作を入力していれば、完全オートモードで対人対戦が再開し、該対戦の結果に基づいて現在連勝数が更新される。このためユーザは、対戦に敗北し、現在連勝数が0になることを嫌い、対戦再開操作を積極的に入力しようとする。結果として、サーバ200がサーバダウンから復帰した後の対戦を、対人対戦として再開できる可能性が向上する。
〔サーバ200を原因としない通信エラーの場合〕
ここでは、サーバ200を原因としない通信エラー(第2エラー)が発生した場合の処理の流れについて説明する。図15は、ユーザ端末100が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。具体的には、サーバ200を原因としない通信エラーが発生した場合に、ユーザ端末100が実行する処理の流れを示すフローチャートである。なお、サーバ200を原因としない通信エラーとは、例えば、ユーザまたは相手ユーザが、ユーザ端末100とサーバ200との通信を不可能な状態とする操作を、ユーザ端末100に入力したり、ユーザまたは相手ユーザが、ユーザ端末100を持ったまま通信圏外に移動したり、無線通信事業者の通信設備に障害が発生したりした場合に発生するが、該通信エラーの発生原因はこの例に限定されない。なお以降、サーバ200を原因としない通信エラーを単に「通信エラー」と記載する。
ステップS1501において、対戦進行部115は通信エラーを検出する。通信エラーの検出方法としては、既知の方法を用いればよい。対戦進行部115は、ステップS1502において、対戦を中断する。
ステップS1503およびS1505において、対戦進行部115は、所定の最大待機時間(第2時間)が経過するまで、通信エラーの解消を待機する。対戦進行部115は、最大待機時間が経過するまで、対戦開始画面310を表示部152に表示してもよい。この対戦開始画面310は、例えば、通信エラーのため対戦が中断していることを示すテキストを含んでいてもよい。また、最大待機時間は可変であってもよい。例えば、対戦進行部115は、通信エラーを検出した時点のイニング数に応じて、最大待機時間を決定してもよい。
最大待機時間が経過する前に、通信エラーの解消を検出した場合(ステップS1503でYES)、ステップS1506において、対戦進行部115は、サーバ200の復帰をユーザに通知する。以降のステップS1507〜S1510の処理は、それぞれ、図9に示すステップS908〜S911の処理と同様であるため、ここでは説明を繰り返さない。
一方、通信エラーの解消を検出することなく、最大待機時間が経過した場合(ステップS1503でNO、かつ、ステップS1504でYES)、通信エラーが解消した後、対戦再開操作を受け付けることなく、最大待機時間が経過した場合(ステップS1507でNO、かつ、ステップS1504でYES)、および、通信エラーが解消した後、対戦再開通知を受信することなく、最大待機時間が経過した場合(ステップS1508でNO、かつ、ステップS1504でYES)、対戦進行部115は、ステップS1505において、中断時の状況に基づいて対戦結果を決定する。対戦進行部115は、一例として、中断時点でより多くの得点を獲得しているチームの勝利とする。なお、対戦進行部115は、中断時点の得点が同じである場合、該対戦を引き分けとしてもよい。
対戦結果の決定後、図15に示すフローチャートは、図7に示すフローチャートのステップS701へ進み、対戦が終了する。そして、対戦進行部115は、対戦結果に応じて現在連勝数を更新する。
(効果)
以上のように、実施形態1および2に係るユーザ端末100は、一例として、対人対戦の進行中に、サーバ200を原因としない通信エラー(以下、単に「通信エラー」)が発生したことを検出するステップをさらに実行するように構成されていてもよい。そして、ユーザ端末100は、この例において、通信エラーが発生したことに応じて対人対戦を無効としない。
また、実施形態1および2に係るユーザ端末100は、この例において、通信エラーが発生したことに応じて対人対戦を中断するステップをさらに実行するように構成されていてもよい。そして、ユーザ端末100は、通信エラーが発生してから最大待機時間が経過するまでに通信エラーが解消されなかった場合、対人対戦の中断時点における状況に基づいて、対人対戦の結果を決定してもよい。
つまり、サーバダウンなどのサーバ200を原因とするエラーにより対人対戦が終了した場合は、ユーザに非が無く対戦が途中で終了しているため、その対戦を無効とし、現在連勝数に影響が出ないようにする一方、サーバ200を原因としない通信エラーにより対人対戦が終了した場合は、対戦を無効とせず、中断時の状況に応じて対戦結果を決定し、現在連勝数を更新する。換言すれば、ゲームの運営側に非が無い場合の異常終了では、対戦を無効とせず、現在連勝数を更新する。
これにより、対戦の状況が悪くなったユーザが意図的に通信を遮断し、対戦を強制的に終わらせることを防止することができる。
〔変形例〕
上述の各実施形態では、ゲームシステム1によって実行されるゲームは、対戦型野球ゲームであるものとして説明したが、ゲームシステム1によって実行されるゲームは、ユーザ端末100に対するユーザの入力と、ユーザ端末100とサーバ200との間の通信とに基づいて、ユーザと対戦相手との対戦が進行するゲームであれば、この例に限定されない。例えば、野球以外のスポーツ(テニス、卓球、ドッジボール、野球、サッカーおよびホッケーなど)を題材としたゲームであってもよい。また、例えば、パズルゲーム、クイズゲーム、RPG、アドベンチャーゲーム、シューティングゲーム、シミュレーションゲーム、育成ゲーム、ならびに、アクションゲームであってもよい。
さらに、ユーザと対戦相手との対戦は、対人対戦に限定されない。例えば、該対戦はCPU戦であってもよい。また、対人対戦に参加するユーザおよび相手ユーザの人数は、3人以上であってもよい。すなわち、対人対戦は、1人対複数人、または、複数人対複数人の対戦であってもよい。
また、本野球ゲームにおいて、対戦の結果に応じて更新されるパラメータは、現在連勝数に限定されない。該パラメータは、例えば、ユーザのレーティングであってもよい。また、本野球ゲームにおいては、ユーザが対戦に敗北した場合に、該ユーザの不利益になるように更新されるパラメータとは異なるパラメータを、対戦の結果に応じて更新してもよい。
また、ユーザ端末100が検出する、サーバ200との通信が不可能な状態の原因は、サーバダウンと異なる、サーバ200の不具合が原因であってもよい。
本野球ゲームにおいて、サーバ200の不具合に起因して対戦を途中で終了する場合、該対戦を無効試合とは異なる結果でユーザに通知してもよい。例えば、該対戦を引き分けとしてユーザに通知してもよい。ただし、この例においては、どのような結果で通知するにしても、該対戦の結果に基づく連勝数などのパラメータの更新は行われない。
ユーザ端末100は、サーバ200の不具合に起因して対戦を途中で終了する場合において、対戦が中断した時点のイニングが所定の条件を満たしている場合、対戦が成立したとみなしてもよい。対戦が成立したとみなす、とは、すなわち、この対戦の結果に応じて、連勝数などのパラメータの更新を行うということである。例えば、ユーザ端末100は、対戦が中断した時点のイニングが6回以降である場合、対戦が成立したとみなしてもよい。
連勝数などの、ユーザが対戦に敗北した場合に、該ユーザの不利益になるように更新されるパラメータが所定の閾値に到達した場合に、ユーザに付与される報酬は、パックに限定されない。
対戦の状況に基づく、最大待機時間の長さの決定は、サーバ200に不具合が発生した(すなわち、対戦が中断した)時点のイニングに基づく決定に限定されない。例えば、該時点での点差が所定の閾値を超えるか否か、などに基づいて決定してもよい。具体的には、該時点の点差が所定の閾値を超える場合、該点差が所定の閾値を超えない場合に比べて、最大待機時間の長さを長くしてもよい。
また、上述した実施形態では、野球ゲームを例示して説明したため、サーバ200の不具合(サーバダウン)が発生した時点のイニングが、1回から最終回までの何れであるかに応じて最大待機時間の長さを決定していた。これに対し、ゲームシステム1によって実行されるゲームが、野球ゲーム以外のゲームであって、複数のフェーズから構成される対戦を行うゲームパートを含むゲームである場合、ユーザ端末100のプロセッサ10は、サーバ200に不具合が発生した時点が含まれる第1フェーズが、複数のフェーズの何れであるかに応じて最大待機時間の長さを決定すればよい。複数のフェーズの一例としては、例えば、サッカーを題材としたゲームにおけるサッカーの試合の前後半、テニスを題材としたゲームにおけるテニスの各セット、格闘ゲームや、ボクシングを題材としたゲームにおける各ラウンド、などが挙げられるが、これらに限定されるものではない。
対戦進行部115は、試合の終盤においてサーバダウンが発生したことを検出した場合、試合の序盤においてサーバダウンが発生したことを検出した場合に比べて、最大待機時間を短くしてもよい。
各ユーザ端末100の対戦進行部115は、サーバ200の不具合に起因してサーバ200との通信が不可能となった場合、対戦を中断せず、CPU戦として対戦を継続してもよい。該CPU戦は、マニュアル進行モードで進行してもよいし、部分オートモード、または、完全オートモードで進行してもよい。また、この例において、最大待機時間が経過する前にサーバ200がサーバダウンから復帰し、かつ、最大待機時間が経過する前にユーザおよび相手ユーザが対戦再開操作を入力部151に入力した場合、対戦進行部115は、対人対戦を再開させてもよい。ただし、CPU戦で進行した部分については、両ユーザ端末100で同期がとれていない、換言すれば、該部分の状況は、ユーザ端末100ごとに異なるため、対戦進行部115は、CPU戦で進行した部分をリセットし、サーバ200との通信が不可能となった時点から対人対戦を再開することが望ましい。
あるいは、CPU戦で進行した部分については、先に対戦再開操作を入力部151に入力したユーザ側の部分を採用してもよい。具体的には、サーバ200の対戦支援部211は、両方のユーザ端末100から対戦再開通知を受信した場合、先に対戦再開通知を送信したユーザ端末100に対し、状況情報の送信指示を送信する。該送信指示を受信したユーザ端末100は、状況情報をサーバ200へ送信し、対戦支援部211は、該状況情報を他方のユーザ端末100へ送信する。該他方のユーザ端末100は、受信した状況情報に基づいて、CPU戦で進行した部分を更新する。
また、この例において、最大待機時間が経過する前に、サーバ200がサーバダウンから復帰した場合であっても、最大待機時間が経過するまでの間にユーザおよび相手ユーザがいずれも対戦再開操作を入力部151に入力しない場合、対戦進行部115は、無効試合として対戦を終了させてもよい。
また、この例において、最大待機時間が経過する前にサーバ200がサーバダウンから復帰し、かつ、最大待機時間が経過するまでの間にユーザのみが対戦再開操作を入力部151に入力した場合、対戦進行部115は、CPU戦を継続し、該CPU戦の終了後、該CPU戦の結果に応じて連勝数を更新してもよい。対戦進行部115は、該CPU戦の結果を示す情報を、サーバ200を介して相手ユーザのユーザ端末100へ送信する。相手ユーザのユーザ端末100は、受信した情報に基づいて連勝数を更新する。
また、最大待機時間が経過する前にサーバ200がサーバダウンから復帰した場合であっても、最大待機時間が経過するまでの間にユーザおよび相手ユーザの少なくとも一方が対戦再開操作を入力部151に入力しない場合、対戦進行部115は、対人対戦を終了させてもよい。換言すれば、対戦進行部115は、ユーザおよび相手ユーザの両方が、最大待機時間が経過するまでに対戦再開操作を入力部151に入力しない限り、対人対戦を終了させてもよい。
ユーザ端末100は、サーバ200がサーバダウンから復帰したことを検出した場合、プッシュ通知によりサーバ200の復帰をユーザに通知してもよい。このような構成とすることで、ユーザは、本野球ゲームのアプリケーションを起動し続けておく必要が無くなる。
〔ソフトウェアによる実現例〕
制御部210の制御ブロック、ならびに、制御部110の制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部210または制御部110、もしくはその両方の機能を備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下のとおりである。
(項目1) ゲームプログラムについて説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(10)を備えるコンピュータ(ユーザ端末100)により実行される。ゲームプログラムは、プロセッサに、コンピュータに対するユーザの入力と、コンピュータとサーバ(200)との間の通信とに基づいて、ユーザと対戦相手との対戦を進行させるステップと、対戦の進行中に通信が不可能となる第1エラーがサーバに発生したことを検出するステップと(ステップS901)、第1エラーがサーバに発生したことに応じて、対戦を無効とするステップと(ステップS906)、対戦が無効とされなかった場合、対戦の進行に応じて対戦の結果を決定するステップと、対戦が無効とされた場合、ユーザが前記対戦に勝利できなかったことに応じて前記ユーザの不利益になるように更新される第1パラメータを更新しない一方、対戦の結果が決定された場合、対戦の結果に基づいて、第1パラメータを更新するステップ(ステップS703、S708、S906)と、を実行させる。
(項目2) (項目1)において、ゲームプログラムは、プロセッサに、第1エラーがサーバに発生したことに応じて対戦を中断するステップ(ステップS903)をさらに実行させる。無効とするステップでは、第1エラーがサーバに発生してから第1時間が経過するまでに対戦が再開されなかったことに応じて、前記対戦を無効とする。
(項目3) (項目2)において、対戦は、ユーザと、1以上の他のコンピュータ(ユーザ端末100)を操作する1以上の相手ユーザとの、サーバを介した、各コンピュータ間の通信に基づく対戦である。ゲームプログラムは、プロセッサに、サーバにおいて第1エラーが解消されたことを検出するステップ(ステップS904)と、第1エラーがサーバに発生してから第1時間が経過する前に第1エラーが解消され、かつ、第1時間が経過する前にユーザおよび相手ユーザの少なくとも一方が対戦を再開させる第1の入力を行ったことに応じて、対戦を再開するステップ(ステップS911)と、をさらに実行させる。
(項目4) (項目3)において、再開するステップでは、第1時間が経過する前に、ユーザおよび相手ユーザの一方が第1の入力を行うとともに他方が第1の入力を行わなかったことに応じて、対戦を、他方の操作入力無しで進行する第1モードで再開する。
(項目5) (項目3)または(項目4)において、再開するステップでは、対戦の中断分を自動的に進行させてから、対戦を再開する。
(項目6) (項目3)から(項目5)のいずれか1項目において、再開するステップでは、対戦を中断させてから再開させるまでに要した時間に基づいて決定した進行量で、対戦の中断分を自動的に進行させる。
(項目7) (項目2)から(項目6)のいずれか1項目において、ゲームプログラムは、プロセッサに、サーバにおいて第1エラーが解消されたことを検出するステップ(S904)をさらに実行させる。無効とするステップでは、第1エラーがサーバに発生してから第1時間が経過するまでの間に第1エラーが解消されなかったこと、または、第1エラーがサーバに発生してから第1時間が経過する前に第1エラーが解消された場合であっても、第1時間が経過するまでの間に対戦を再開させる第1の入力が行われなかったことに応じて、対戦を無効とする。
(項目8) (項目2)から(項目7)までのいずれか1項目において、ゲームプログラムは、プロセッサに、サーバに第1エラーが発生した場合、対戦の状況に基づいて、第1時間の長さを決定するステップ(ステップS902)をさらに実行させる。
(項目9) (項目8)において、進行させるステップでは、複数のフェーズから構成される対戦を進行させる。決定するステップでは、サーバに第1エラーが発生した時点が含まれる第1フェーズが、複数のフェーズの何れであるかに応じて第1時間の長さを決定する。
(項目10) (項目9)において、決定するステップでは、第1フェーズが対戦の終盤のフェーズである場合、第1フェーズが対戦の序盤のフェーズである場合と比べて、第1時間の長さを長くする。
(項目11) (項目9)または(項目10)において、進行させるステップでは、対戦として、野球の試合を進行させる。決定するステップでは、第1フェーズとしての、サーバに第1エラーが発生した時点のイニングが、1回から最終回までの何れであるかに応じて第1時間の長さを決定する。
(項目12) (項目1)から(項目11)のいずれか1項目において、ゲームプログラムは、プロセッサに、対戦の進行中に、サーバを原因としない、対戦の進行に必要な通信が不可能となる第2エラーが発生したことを検出するステップ(ステップS1501)をさらに実行させる。無効とするステップでは、第2エラーがサーバに発生したことに応じて、対戦を無効としない。
(項目13) (項目12)において、ゲームプログラムは、プロセッサに、第2エラーが発生したことに応じて対戦を中断するステップ(ステップS1502)をさらに実行させる。決定するステップでは、第2エラーが発生してから第2時間が経過するまでに第2エラーが解消されなかった場合、対戦の中断時点における状況に基づいて、対戦の結果を決定する。
(項目14) (項目1)から(項目13)までのいずれか1項目において、ゲームプログラムは、プロセッサに、ユーザが対戦に勝利したことに応じて更新された第1パラメータが第1条件を満たした場合、ゲーム内で利用できる報酬をユーザに付与するステップ(ステップS705,S707)をさらに実行させる。
(項目15) (項目14)において、第1パラメータは、ユーザが目下連続して勝利している対戦の数を示す連勝数である。付与するステップでは、第1条件として、連勝数が複数の第1閾値のいずれかに到達した場合、報酬をユーザに付与し、連勝数がより高い第1閾値に到達した場合、ゲーム内における価値がより高い報酬を付与する。
(項目16) 情報処理装置について説明した。本開示のある局面によると、情報処理装置(ユーザ端末100)は、ゲームプログラム(131)を記憶する記憶部(120)と、ゲームプログラムを実行することにより、情報処理装置の動作を制御する制御部(110)と、を備える。制御部は、情報処理装置に対するユーザの入力と、情報処理装置とサーバ(200)との間の通信とに基づいて、ユーザと対戦相手との対戦を進行させ、対戦の進行中に通信が不可能となる第1エラーがサーバに発生したことを検出し、第1エラーがサーバに発生したことに応じて、対戦を無効とし、対戦が無効とされなかった場合、対戦の進行に応じて対戦の結果を決定し、対戦が無効とされた場合、ユーザが対戦に勝利できなかったことに応じてユーザの不利益になるように更新される第1パラメータを更新しない一方、対戦の結果が決定された場合、対戦の結果に基づいて、第1パラメータを更新する。
(項目13) ゲームプログラムを実行する方法について説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(10)を備えるコンピュータ(ユーザ端末100)により実行される。方法は、プロセッサが、コンピュータに対するユーザの入力と、コンピュータとサーバ(200)との間の通信とに基づいて、ユーザと対戦相手との対戦を進行させるステップと、対戦の進行中に通信が不可能となる第1エラーがサーバに発生したことを検出するステップと(ステップS901)、第1エラーがサーバに発生したことに応じて、対戦を無効とするステップと(ステップS906)、対戦が無効とされなかった場合、対戦の進行に応じて対戦の結果を決定するステップと、対戦が無効とされた場合、ユーザが前記対戦に勝利できなかったことに応じて前記ユーザの不利益になるように更新される第1パラメータを更新しない一方、対戦の結果が決定された場合、対戦の結果に基づいて、第1パラメータを更新するステップ(ステップS703、S708、S906)と、を含む。