JP2020062106A - ゲームプログラム、方法、および情報処理装置 - Google Patents
ゲームプログラム、方法、および情報処理装置 Download PDFInfo
- Publication number
- JP2020062106A JP2020062106A JP2018194584A JP2018194584A JP2020062106A JP 2020062106 A JP2020062106 A JP 2020062106A JP 2018194584 A JP2018194584 A JP 2018194584A JP 2018194584 A JP2018194584 A JP 2018194584A JP 2020062106 A JP2020062106 A JP 2020062106A
- Authority
- JP
- Japan
- Prior art keywords
- game
- information
- time
- operation information
- user terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】ゲームシステム全体における処理の効率を向上させる。【解決手段】ゲームプログラムは、プロセッサに、第1データの送信から第2データの受信までに要する通信時間を、ユーザ端末(100A,100B)ごとに特定することによって、複数の通信時間を特定するステップ(S3)と、特定された複数の通信時間に基づいて、複数のユーザ端末(100A,100B)が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップ(S4)と、生成された時間情報を複数のユーザ端末(100A,100B)に送信するステップ(S5)とを実行させる。【選択図】図3
Description
本開示は、ゲームプログラム、プログラムを実行する方法、および情報処理装置に関する。
特許文献1に、制御部を、グループでゲームを行なう各ユーザ端末における遅延時間を、継続的に取得して記憶部に記録し、ゲーム管理システム及び各ユーザ端末におけるゲーム進行を同期させるために、記憶部に記録された遅延時間の最大値に基づいて、各ユーザ端末に対して、猶予時間を含めたゲーム進行の同期指示を送信する手段として機能させるゲーム管理プログラムが開示される。
特許文献1の技術には、ゲームシステム全体における処理の効率を向上できる余地がある。
本開示の一態様は、ゲームシステム全体における処理の効率を向上させることを目的とする。
本開示に係るプログラムは、プロセッサを備えるサーバにより実行される。ゲームプログラムは、プロセッサに、複数のユーザ端末に第1データを送信するステップと、複数のユーザ端末のそれぞれが第1データの受信に応答して第2データを受信するステップと、第1データの送信から第2データの受信までに要する通信時間を、ユーザ端末ごとに特定することによって、複数の通信時間を特定するステップと、特定された複数の通信時間に基づいて、複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップと、生成された時間情報を複数のユーザ端末に送信するステップとを実行させる。
本開示の一態様によれば、ゲームシステム全体における処理の効率を向上させることができる効果を奏する。
本開示に係るゲームシステムは、ユーザにゲームを提供するためのシステムである。以下、ゲームシステムについて図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
(ゲームシステム1のハードウェア構成)
図1は、ゲームシステム1のハードウェア構成を示す図である。ゲームシステム1は図示の通り、複数のユーザ端末100と、サーバ200とを含む。各ユーザ端末100は、サーバ200とネットワーク2を介して接続する。ネットワーク2は、インターネット及び図示しない無線基地局によって構築される各種移動通信システム等で構成される。この移動通信システムとしては、例えば、所謂3G、4G移動通信システム、LTE(Long Term Evolution)、及び所定のアクセスポイントによってインターネットに接続可能な無線ネットワーク(例えばWi-Fi(登録商標))等が挙げられる。
図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(表示部152)と、カメラ17と、測距センサ18とを備える。ユーザ端末100が備えるこれらの構成は、通信バスによって互いに電気的に接続される。なお、ユーザ端末100は、タッチスクリーン15に代えて、又は、加えて、ユーザ端末100本体とは別に構成されたディスプレイ(表示部152)を接続可能な入出力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は、ユーザ端末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が横向きに保持されているときには、横長の画像を表示部152に表示させる横画面表示としてもよい。このように、プロセッサ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のそれぞれは、図示しない、一般的なコンピュータとして機能する場合に必要な機能的構成、及び、ゲームにおける公知の機能を実現するために必要な機能的構成を含み得る。
図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は、ゲームプログラム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は、記憶部220に格納されたゲームプログラム131を実行することにより、サーバ200を統括的に制御する。例えば、制御部210は、ユーザ端末100に各種データ及びプログラム等を送信する。制御部210は、ゲーム情報もしくはユーザ情報の一部又は全部をユーザ端末100から受信する。ゲームがマルチプレイゲームである場合には、制御部210は、ユーザ端末100からマルチプレイの同期の要求を受信して、同期のためのデータをユーザ端末100に送信してもよい。
制御部210は、ゲームプログラム131の記述に応じて、通信時間特定部211、時間情報生成部212、および通信部213として機能する。制御部210は、実行するゲームの性質に応じて、ユーザ端末100におけるゲームの進行を支援するために、図示しないその他の機能ブロックとしても機能する。通信時間特定部211は、サーバ200とユーザ端末100との間の通信時間を特定する。時間情報生成部212は、複数のユーザ端末100が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成する。通信部215は、ユーザ端末100との間で各種のデータ、信号、および情報を送受信する。
(ユーザ端末100の機能的構成)
制御部110は、記憶部120に格納されたゲームプログラム131を実行することにより、ユーザ端末100を統括的に制御する。例えば、制御部110は、ゲームプログラム131およびユーザの操作にしたがって、ゲームを進行させる。また、制御部110は、ゲームを進行させている間、必要に応じて、サーバ200と通信して、情報の送受信を行う。
制御部110は、記憶部120に格納されたゲームプログラム131を実行することにより、ユーザ端末100を統括的に制御する。例えば、制御部110は、ゲームプログラム131およびユーザの操作にしたがって、ゲームを進行させる。また、制御部110は、ゲームを進行させている間、必要に応じて、サーバ200と通信して、情報の送受信を行う。
制御部110は、ゲームプログラム131の記述に応じて、操作受付部111、ゲーム進行部112、停止発生率特定部113、表示制御部114、および通信部115として機能する。制御部110は、実行するゲームの性質に応じて、ゲームを進行させるために、図示しないその他の機能ブロックとしても機能することができる。
操作受付部111は、タッチスクリーン15(入力部151)の出力に基づいて、ユーザの入力操作を受け付ける。具体的には、操作受付部111は、ユーザの指などがタッチスクリーン15に接近したことを、タッチスクリーン15を構成する面の横軸及び縦軸からなる座標系の座標として検出する。例えば、操作受付部111は、入力部151に対する入力操作を受け付け、該入力操作の入力位置の座標を検出し、該入力操作の種類を特定する。操作受付部111は、入力操作の種類として、例えばタッチ操作、スライド操作、スワイプ操作、およびタップ操作等を特定する。また、操作受付部111は、連続して検知されていた入力が途切れると、タッチスクリーン15から接触入力が解除されたことを検知する。
操作受付部111は、タッチスクリーン15に対するユーザの操作を判別する。操作受付部111は、例えば、(1)「接近操作」、(2)「リリース操作」、(3)「タップ操作」、(4)「ダブルタップ操作」、(5)「長押し操作(ロングタッチ操作)」、(6)「ドラッグ操作(スワイプ操作)」、(7)「ムーブ操作」、(8)「フリック操作」、その他のユーザの操作を判別する。操作受付部111が判別するユーザの操作は、上記に限られない。例えば、タッチスクリーン15が、ユーザがタッチスクリーン15に対して押下する圧力の大きさを検出可能な機構を有する場合、操作受付部111は、ユーザにより押下された圧力の大きさを判別する。
(1)「接近操作」とは、ユーザが指などをタッチスクリーン15に接近させる操作である。タッチスクリーン15は、ユーザの指などが接近したこと(ユーザの指などがタッチスクリーン15に接触したことを含む)をタッチスクリーン15により検出し、検出したタッチスクリーン15の座標に応じた信号を制御部110へ出力する。制御部110は、タッチスクリーン15へのユーザの指などの接近を検出しない状態から、接近を検出したときに、状態が「タッチオン状態」になったと判別する。
(2)「リリース操作」とは、ユーザがタッチスクリーン15を接近操作している状態を止める操作である。操作受付部111は、例えば、ユーザが指などをタッチスクリーン15に接触させている状態から、指を離す操作をしたときに、ユーザの操作を「リリース操作」と判別する。制御部110は、タッチスクリーン15へのユーザの指などの接近を検出している状態から、接近を検出しない状態になったときに、状態が「タッチオン状態」から「タッチオフ状態」になったと判別する。
(3)「タップ操作」とは、ユーザがタッチスクリーン15に対して指などを接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。操作受付部111は、接近操作が検出されない状態(ユーザの指などがタッチスクリーン15から離れており、タッチスクリーン15がユーザの指などの接近を検出していない状態)から、タッチスクリーン15の出力に基づいて、ユーザの指などが接近したことを検出した場合に、その検出した座標を「初期タッチ位置」として保持する。操作受付部111は、初期タッチ位置の座標と、リリース操作をした座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作の座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「ダブルタップ操作」とは、ユーザがタップ操作を一定時間内に2回行う操作である。操作受付部111は、例えば、ユーザの操作をタップ操作と判別してから一定時間内に、タップ操作にかかる座標で再びタップ操作を判別した場合に、ユーザの操作を「ダブルタップ操作」と判別する。
(5)「長押し操作」とは、ユーザがタッチスクリーン15を押し続ける操作である。タッチスクリーン15は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標において接近操作が継続している時間が一定時間を超えた場合に、ユーザの操作を「長押し操作」(「長押し操作」を、「ロングタッチ操作」と称することもある)と判別する。
(6)「ドラッグ操作」とは、ユーザがタッチスクリーン15に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。
(7)「ムーブ操作」とは、ユーザがタッチスクリーン15において、接近操作を維持しつつ、タッチスクリーン15に指などを接近させている位置を移動させてリリース操作を行う一連の操作をいう。
(8)「フリック操作」は、ユーザがムーブ操作を予め定められた時間よりも短い時間で行う操作をいう。フリック操作は、ユーザがタッチスクリーン15で指を弾くような操作である。
ゲーム進行部112は、複数のユーザ端末100において同一の時点で受け付けられた各操作の内容に基づいて、ユーザ端末100においてマルチプレイゲームを進行させる。停止発生率特定部113は、ユーザ端末100における基準時間内のゲームの停止発生率を特定する。
表示制御部114は、タッチスクリーン15の表示部152に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。表示制御部114は、各種オブジェクトのモーションを示すアニメーションを含むゲーム画面を、表示部152に表示してもよい。また、表示制御部114は、UI(User Interface)オブジェクトを、ゲーム画面に重畳して描画してもよい。
通信部115は、サーバ200との間で各種のデータ、信号、および情報を送受信する。
図2に示すサーバ200およびユーザ端末100の機能は、一例にすぎない。サーバ200は、ユーザ端末100が備える機能の少なくとも一部を備えていてもよい。また、ユーザ端末100は、サーバ200が備える機能の少なくとも一部を備えていてもよい。さらに、ユーザ端末100およびサーバ200以外の他の装置をゲームシステム1の構成要素とし、該他の装置にゲームシステム1における処理の一部を実行させてもよい。すなわち、本実施形態においてゲームプログラムを実行するコンピュータは、ユーザ端末100、サーバ200、および他の装置の何れであってもよいし、これらの複数の装置の組み合わせにより実現されてもよい。
(ゲーム概要)
ゲームシステム1に基づくゲームは、ユーザによって操作されるキャラクタ(第1キャラクタ、武器)が登場する任意のゲームである。このゲームは、例えば、ユーザによって操作されるキャラクタと、ゲームシステム1によって制御される他のキャラクタ(第2キャラクタ、武器)とが戦闘するゲームである。ユーザは、複数の異なるキャラクタを保有することができる。ユーザは、保有するキャラクタ群のうち少なくとも1つのキャラクタを選択して、ゲーム中に利用することができる。
ゲームシステム1に基づくゲームは、ユーザによって操作されるキャラクタ(第1キャラクタ、武器)が登場する任意のゲームである。このゲームは、例えば、ユーザによって操作されるキャラクタと、ゲームシステム1によって制御される他のキャラクタ(第2キャラクタ、武器)とが戦闘するゲームである。ユーザは、複数の異なるキャラクタを保有することができる。ユーザは、保有するキャラクタ群のうち少なくとも1つのキャラクタを選択して、ゲーム中に利用することができる。
以下では、ゲームシステム1が、異なるユーザ端末100をそれぞれ操作するユーザA(第1ユーザ)およびユーザB(第2ユーザ)に、ゲームプログラム131に基づくゲームをマルチプレイさせる例を説明する。異なるユーザが操作するユーザ端末100を区別するために、ユーザAが操作するユーザ端末100(第1ユーザ端末)をユーザ端末100Aと表し、ユーザBが操作するユーザ端末100(第2ユーザ端末、第2情報処理装置)をユーザ端末100Bと表す。さらに、ユーザ端末100Aに関する各構成要素の参照符号に「A」を付し、ユーザ端末100Bに関する各構成要素の参照符号にBを付す。例えば、ユーザ端末100Aが備える通信部115を通信部115Aと表し、ユーザ端末100Bが備える通信部115を通信部115Bと表す。
ゲームシステム1は、フレームごとにゲームを進行させる。フレームは、サーバ200およびユーザ端末100がゲームを進行させるための単位期間である。1フレームの長さは、1秒間当たりにゲーム画面が更新される回数によって決まる。例えば、ゲーム画面が1秒内に20回更新される場合、1フレームの長さは0.05秒である。以下では、フレームの個数を単にフレーム数と表す場合がある。
図3は、ある実施の形態に係るゲームシステム1が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。ゲームシステム1は、図3に示す一連の処理を、ゲームの開始前に実行する。
ステップS1において、サーバ200は、第1データを、ユーザ端末100Aおよびユーザ端末100Bに、送達確認を行わないUDP(User Data Protocol)に従う第1通信によって送信する。以下、UDPに従う第1通信を、単にUDP通信と表記する。第1データは、任意の形式のデータであり、例えば特定の数値データである。一般に、UDP通信によって送信されるデータは、通信相手に高速で到着するが、たまに消失して通信相手に到着しない場合がある。ステップS11において、通信部115Aは、第1データを、サーバ200からUDP通信によって受信する。ステップS21において、通信部115Bは、第1データをサーバ200からUDP通信によって受信する。
ステップS12において、通信部115Aは、第1データの受信に応答して、第2データをUDP通信によってサーバ200に送信する。第2データは、任意の形式のデータであり、例えば第1データと同じく特定の数値データである。第2データは、サーバ200に対する返信として役割を有する。ステップS22において、通信部115Bは、第1データの受信に応答して、第2データをUDP通信によってサーバ200に送信する。
ステップS2において、通信部213は、ユーザ端末100Aおよびユーザ端末100Bのそれぞれがサーバ200に送信した第2データを受信する。ステップS3において、時間情報生成部212は、ユーザ端末100Aおよびユーザ端末100Bのそれぞれごとに、第1データの送信から第2データの受信までに要する通信時間を特定する。時間情報生成部212は、まず、ユーザ端末100Aに第1データを送信した時点から、ユーザ端末100Aから第2データを受信した時点までの経過時間を、ユーザ端末100Aに対応する第1通信時間として特定する。時間情報生成部212は、さらに、ユーザ端末100Bに第1データを送信した時点から、ユーザ端末100Bから第2データを受信した時点までの経過時間を、ユーザ端末100Bに対応する第2通信時間として特定する。これにより、時間情報生成部212は、複数の通信時間を特定する。
ステップS4において、時間情報生成部212は、複数の通信時間に基づいて、第1時間を表す時間情報を生成する。時間情報生成部212は、例えば、第1通信時間および第2通信時間のうちより大きい時間を、第1時間として特定する。時間情報生成部212は、特定した第1時間を表す任意の形式の時間情報を生成する。ここでは、第1時間は、3フレーム分の長さに相当する時間であるとする。時間情報生成部212は、生成された時間情報を記憶部230に記憶する。
ステップS5において、通信時間特定部211は、生成された時間情報をユーザ端末100Aおよびユーザ端末100BにUDP通信によって送信する。ステップS13において、通信部115Aは、時間情報をUDP通信によってサーバ200から受信する。ステップS23において、通信部115Bは、時間情報をUDP通信によってサーバ200から受信する。ステップS6において、制御部210は、時間情報の送信に応答して、ゲームを開始する。ステップS14において、ゲーム進行部112Aは、時間情報の受信に応答して、ゲームを開始する。ステップS24において、ゲーム進行部112Bは、時間情報の受信に応答して、ゲームを開始する。このように、サーバ200は、時間情報の送信後、ユーザ端末100Aおよびユーザ端末100Bにゲームを開始させる。
図4は、ある実施の形態に係るゲームシステム1が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。ゲームシステム1は、図4に示す一連の処理を、ゲームの開始後に実行する。以下では、ゲームシステム1が、ユーザからの操作の受け付け、操作情報の送受信、操作情報に基づくゲームの進行を、フレームごと実行する例を説明する。
ステップS111において、操作受付部111は、ユーザ端末100Aに対する第1操作を、第1フレームにおいてユーザAから受け付ける。第1操作は、例えば、ユーザAに関連付けられる第1キャラクタに対して所定の動作を実行させるための操作である。操作受付部111Aは、タッチスクリーン15Aに対するタップ操作などの各種の操作を、第1操作として受け付ける。以下、第1フレームにおいて受け付けられた第1操作を、単に第1フレームの第1操作と表記する。ステップS112において、操作受付部111Aは、第1フレームの第1操作に応答して、第1フレームの第1操作の内容を表す第1操作情報を生成する。以下、第1フレームの第1操作の内容を表す第1操作情報を、単に第1フレームの第1操作情報と表記する。
第1操作情報は、受け付けられた第1操作の種類を識別する第1識別子を少なくとも含む。第1操作の種類として、例えば、タップ操作、フリック操作、ドラッグ(スワイプ)操作、長押し操作などが挙げられる。第1操作がフリック操作またはドラッグ操作である場合、第1操作情報は、第1操作の方向を表す第2識別子をさらに含む。第1操作情報は、第1操作情報が表す第1操作が受け付けられたフレームの番号をさらに含む。例えば、第1フレームの第1操作情報は、第1フレームの番号「1」をさらに含む。操作受付部111Aは、生成された第1フレームの第1操作情報を、記憶部130Aに記憶させる。ステップS113において、通信部115Aは、第1フレームの第1操作情報を、サーバ200にUDP通信によって第1フレームにおいて送信する。
ステップS121において、操作受付部111Bは、ユーザ端末100Bに対する第2操作を、第1フレームにおいてユーザBから受け付ける。第2操作は、例えば、ユーザBに関連付けられる第2キャラクタに対して所定の動作を実行させるための操作である。操作受付部111Bは、タッチスクリーン15Bに対するタップ操作などの各種の操作を、第2操作として受け付ける。以下、第1フレームにおいて受け付けられた第2操作を、単に第2フレームの第操作と表記する。ステップS122において、操作受付部111Bは、第1フレームの第2操作に応答して、第1フレームの第2操作の内容を表す第2操作情報を生成する。以下、第1フレームの第2操作の内容を表す第2操作情報を、単に第1フレームの第2操作情報と表記する。
第2操作情報は、受け付けられた第2操作の種類を識別する第1識別子を少なくとも含む。第2操作の種類として、例えば、タップ操作、フリック操作、ドラッグ(スワイプ)操作、長押し操作などが挙げられる。第2操作がフリック操作またはドラッグ操作である場合、第2操作情報は、第2操作の方向を表す第2識別子をさらに含む。第2操作情報は、第2操作情報が表す第2操作が受け付けられたフレームの番号をさらに含む。例えば、第1フレーム第2操作情報は、第1フレームの番号「1」をさらに含む。操作受付部111Bは、生成された第1フレームの第2操作情報を、記憶部130Bに記憶させる。ステップS123において、通信部115Bは、第1フレームの第2操作情報を、サーバ200にUDP通信によって送信する。
ステップS101において、通信部213は、第1フレームの第1操作情報を、ユーザ端末100AからUDP通信によって受信する。ステップS102において、通信部213は、第1フレームの第2操作情報をユーザ端末100BからUDP通信によって受信する。ステップS103において、通信部213は、第1フレームの第1操作情報を、ユーザ端末100BにUDP通信によって送信する。図4の例では、このとき送信された第1操作情報は、途中で消失せずにユーザ端末100Bまで到着する。したがって、ステップS124において、通信部115Bは、第1フレームの第1操作情報をサーバ200からUDP通信によって受信する。通信部115Bは、受信した第1フレームの第1操作情報を、記憶部120Bに記憶させる。この結果、記憶部120Bには、第1フレームの第1操作情報および第2操作情報がいずれも保持されることになる。ステップS104において、通信部213は、第1フレームの第2操作情報を、ユーザ端末100AにUDP通信によって送信する。図4の例では、このとき送信された第2操作情報は、途中で消失せずにユーザ端末100Aまで到着する。したがって、ステップS114において、通信部115Aは、第1フレームの第2操作情報をサーバ200からUDP通信によって受信する。通信部115Aは、受信した第1フレームの第2操作情報を、記憶部120Aに記憶させる。この結果、記憶部120Aには、第1フレームの第1操作情報および第2操作情報がいずれも保持されることになる。
この後、ユーザ端末100Aは、第2フレームから第4フレームのそれぞれにおいて、第1操作の受け付け、第1操作情報の生成および送信、ならびに第2操作情報の受信を実行する。これらの処理は、フレームの番号が異なることを除き、ステップS111〜S114と相違ないため、図4への図示および詳細な説明を繰り返さない。また、サーバ200は、第2フレームから第4フレームのそれぞれにおいて、第1操作情報の受信および送信、ならびに第2操作情報の受信および送信を実行する。これらの処理は、フレームの番号が異なることを除き、ステップS101〜S104と相違ないため、図4への図示および詳細な説明を繰り返さない。また、ユーザ端末100Bは、第2フレームから第4フレームのそれぞれにおいて、第2操作の受け付け、第2操作情報の生成および送信、ならびに第1操作情報の受信を実行する。これらの処理は、本質的にステップS121〜S124と相違ないため、図4への図示および詳細な説明を繰り返さない。
図4の例では、記憶部120Aは、第4フレームにおいて、第1フレーム〜第4フレームの各第1操作情報と、第1フレーム〜第4フレームの各第2操作情報とを記憶している。同様に、記憶部120Bは、第4フレームにおいて、第1フレーム〜第4フレームの各第1操作情報と、第1フレーム〜第4フレームの各第2操作情報とを記憶している。ステップS115において、ゲーム進行部112Aは、記憶部120Aに記憶される第1フレームの第1操作情報および第2操作情報を、第4フレームにおいて特定する。ゲーム進行部112Aは、まず、第4フレームの番号「4」よりも、第1時間に相当するフレーム数「3」だけ小さい第1フレームの番号「1」を特定する。ゲーム進行部112Aは、さらに、記憶部120Aに記憶される複数の第1操作情報の中から、特定された番号「1」を含む第1操作情報を、第1フレームの第1操作情報として特定する。ゲーム進行部112Aは、さらに、記憶部120Aに記憶される複数の第2操作情報の中から、特定された番号「1」を含む第2操作情報を、第1フレームの第2操作情報として特定する。このように、ゲーム進行部112Aは、現フレームである第4フレームよりも第1時間だけ前の時点である第1フレームにおいて生成された第1操作情報および第2操作情報を、記憶部120Aから特定する。
ステップS116において、ゲーム進行部112Aは、特定した第1フレームの第1操作情報および第2操作情報に基づいて、第4フレームにおいてゲームを進行させる。このように、ゲーム進行部112Aは、第1フレームの第1操作を表す第1操作情報と、第1フレームの第1操作と同一の時点(第1フレーム)において受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させる。ゲーム進行部112Aは、例えば、第1操作情報に含まれる第1識別子に基づいて、第1フレームの第1操作の種類を特定し、特定した種類に応じた態様の動作を第1キャラクタに実行させる。ゲーム進行部112Aは、さらに、第2操作情報に含まれる第1識別子に基づいて、第1フレームの第2操作の種類を特定し、特定した種類に応じた態様の動作を第2キャラクタに実行させる。
ステップS125において、ゲーム進行部112Bは、記憶部120Bに記憶される第1フレームの第1操作情報および第2操作情報を、第4フレームにおいて特定する。ゲーム進行部112Bは、まず、第4フレームの番号「4」よりも、第1時間に相当するフレーム数「3」だけ小さい第1フレームの番号「1」を特定する。ゲーム進行部112Bは、さらに、記憶部120Bに記憶される複数の第1操作情報の中から、特定された番号「1」を含む第1操作情報を、第1フレームの第1操作情報として特定する。ゲーム進行部112Bは、さらに、記憶部120Bに記憶される複数の第2操作情報の中から、特定された番号「1」を含む第2操作情報を、第1フレームの第2操作情報として特定する。このように、ゲーム進行部112Bは、現フレームである第3フレームよりも第1時間だけ前の時点である第1フレームにおいて生成された第1操作情報および第2操作情報を、記憶部120Bから特定する。
ステップS126において、ゲーム進行部112Bは、特定した第1フレームの第1操作情報および第2操作情報に基づいて、第4フレームにおいてゲームを進行させる。このように、ゲーム進行部112Bは、第1フレームの第1操作を表す第1操作情報と、第1フレームの第1操作と同一の時点(第1フレーム)において受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させる。ゲーム進行部112Bは、例えば、第1操作情報に含まれる第1識別子に基づいて、第1フレームの第1操作の種類を特定し、特定した種類に応じた態様の動作を第1キャラクタに実行させる。ゲーム進行部112Bは、さらに、第2操作情報に含まれる第1識別子に基づいて、第1フレームの第2操作の種類を特定し、特定した種類に応じた態様の動作を第2キャラクタに実行させる。
図4の例では、第4フレームにおいて、ユーザ端末100Aにおけるゲーム進行に用いられる第1操作情報および第2操作情報が、ユーザ端末100Bにおけるゲーム進行に用いられる第1操作情報および第2操作情報と同一である。これにより、第4フレームにおいて、ユーザ端末100Aのゲームの進行状況とユーザ端末100Bにおけるゲーム進行状況とを正確に一致させることができるので、マルチプレイゲームを正常に成り立たせることができる。
ゲーム進行部112Aは、次の第5フレームにおいて、それよりも3つ前の第2フレームの第1操作情報および第2操作情報を記憶部120Aから特定する。記憶部120Aには第2フレームの第1操作情報および第2操作情報が記憶されているので、ゲーム進行部112Aはこれらの特定に成功する。したがって、ゲーム進行部112Aは、第2フレームの第1操作情報および第2操作情報に基づいて、第5フレームにおいてゲームを進行させる。このように、ゲーム進行部112Aは、各フレームにおいて、現フレームよりも3つ前のフレームの第1操作情報および第2操作情報を記憶部120Aから特定できる限り、各フレームにおいてゲームを停止させずに進行させることができる。同様に、ゲーム進行部112Bは、次の第5フレームにおいて、それよりも3つ前の第2フレームの第1操作情報および第2操作情報を記憶部120Bから特定する。記憶部120Bには第2フレームの第1操作情報および第2操作情報が記憶されているので、ゲーム進行部112Bはこれらの特定に成功する。したがって、ゲーム進行部112Bは、第2フレームの第1操作情報および第2操作情報に基づいて、第5フレームにおいてゲームを進行させる。このように、ゲーム進行部112Bは、各フレームにおいて、現フレームよりも3つ前のフレームの第1操作情報および第2操作情報を記憶部120Bから特定できる限り、各フレームにおいてゲームを停止させずに進行させることができる。
図5は、ある実施の形態に係るゲームシステム1が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。ゲームシステム1は、図5に示す一連の処理を、ゲームの開始後に実行する。以下では、ゲームシステム1が、ユーザからの操作の受け付け、操作情報の送受信、および操作情報の不足によるゲームの停止を、フレームごと実行する例を説明する。図5に示すステップS111〜S113、S101〜S104、S121〜S126の各処理は、図4に示すステップS111〜S113、S101〜S104、S121〜S126の各処理と同一であるため、詳細な説明を繰り返さない。
図5の例では、ゲームシステム1おいて通信遅延が発生しており、サーバ200からユーザ端末100Aへの情報送信に要する時間が長くなっている。そのため、第1フレームの第2操作情報は、第1フレーム〜第4フレームのそれぞれにおいて、ユーザ端末100Aに到着していない。したがって、通信部115Aは、第1フレームの第1操作情報を、第4フレームまでにサーバ200から受信することができない。同様に、通信部115Aは、第2フレーム〜第4フレームの第2操作情報も、第4フレームまでに受信することができない。したがって、図5の例では、第4フレームにおいて、記憶部120Aは、第1フレーム〜第4フレームの第1操作情報を記憶しているが、第1フレーム〜第4フレームの第2操作情報は記憶してない。
ステップS214において、ゲーム進行部112Aは、第1フレームの第1操作情報を、第4フレームにおいて記憶部120Aから特定する。ゲーム進行部112Aは、まず、第4フレームの番号「4」よりも、第1時間に相当するフレーム数「3」だけ小さい第1フレームの番号「1」を特定する。ゲーム進行部112Aは、さらに、記憶部120Aに記憶される複数の第1操作情報の中から、特定された番号「1」を含む第1操作情報を、第1フレームの第1操作情報として特定する。記憶部120Aには番号「1」を含む第2操作情報が記憶されない。したがって、ゲーム進行部112Aは、第1フレームの第2操作情報を記憶から特定することができない。このように、ゲーム進行部112Aは、第1フレームの第1操作情報および第1フレームの第2操作情報のうち、第1フレームの第1操作情報のみを特定する。
ステップS215において、ゲーム進行部112Aは、第1フレームの第2操作情報を特定できなったことに基づいて、第4フレームにおいてゲームを停止する。このゲーム停止は、第1フレームの第1操作を受け付けてから第1時間が経過するまでに、第1フレームの第2操作情報が操作受付部111Aに到着しなかったことを原因として発生する。以下では、このゲーム停止を、操作情報の未着による停止と表記する場合がある。ゲーム進行部112Aは、第4フレームにゲームを停止させる際、第4フレームにおいて、ゲームを進行させるためのゲーム処理を実行しない。ゲーム進行部112Aは、例えば、第4フレームにおいて、第1キャラクタおよび第2キャラクタの双方を制御しない。表示制御部114Aは、ゲームが停止したことに基づいて、第4フレームにおいてゲーム画面を更新しない。これにより、第4フレームにおいて、第3フレームと同一のゲーム画面が表示部152Aに表示される。
ゲーム進行部112Aは、現フレームにおいてゲームが停止した場合、現在のフレーム番号を同一値に維持する。ユーザ端末100Aは、例えば、第4フレームにおいてゲームが停止した場合、次のフレームを再び第4フレームとして扱う。ゲーム進行部112Aは、さらに、第1フレームにおいてユーザ端末100Bが第2操作を受け付けた後、第1時間が経過するまでに第1フレームの第2操作情報を受信しない場合、その後に第1フレームの第2操作情報を受信するまでの間、フレームごとにゲームを停止させる。通信部115Aは、ゲ第1フレームの第1操作を受け付けた後、第1時間が経過するまでの間に、第1フレームの番号が含まれる第2操作情報をサーバ200から受信しかった場合、ユーザ端末100Bが第2操作を受け付けた後か第1時間が経過するまでの間に第2操作情報を受信しなかったことを特定する。通信部115Aが、再度の第4フレームにおいても第1フレームの第2操作情報をサーバ200から受信しなかったとする。この場合、ゲーム進行部112Aは、2度目の第4フレームにおいて、再び、第1フレームの第2操作情報を特定することができない。したがって、ゲーム進行部112Aは、2度目の第4フレームにおいても、ゲームを進行させずに停止する。これにより、操作情報の未着によるゲームの停止が2フレーム続いて発生することになる。
通信部115Aが、3度目の第4フレームにおいて、第1フレームの第2操作情報をサーバ200から受信したとする。この場合、ゲーム進行部112Aは、2度目の第3フレームにおいてゲームを停止させた後、3度目の第4フレームにおいて、第1フレームの第1操作情報および第2操作情報を特定することができる。したがって、ゲーム進行部112Aは、3度目の第4フレームにおいて、ゲームを進行させる。これにより、ゲームの停止が2フレーム続いた後、ゲームの進行が再開される。
図6は、ある実施の形態に係るゲームシステム1が、ゲームプログラム131に基づいて実行する処理の流れを示すフローチャートである。ゲームシステム1は、図5に示す一連の処理を、ユーザ端末100Aにおけるゲームの停止後に実行する。
ステップS311において、停止発生率特定部113は、基準時間が経過するたびに、直近の基準時間内に発生したゲームの停止回数を特定する。ステップS312において、停止発生率特定部113は、直近の基準時間内におけるゲームの停止発生率を特定する。停止発生率特定部113は、詳細には、ゲームの停止回数を、基準時間に相当する基準フレーム数で除算することによって、ゲームの停止発生率を特定する。このように、ゲームの停止発生率は、基準フレーム数に対する、ゲームを停止させたフレーム数の割合である。
ステップS313において、停止発生率特定部113は、停止発生率が閾値以上であるか否かを判定する。ステップS313においてNOの場合、図6に示す一連の処理は終了する。停止発生率が閾値を下回る場合は、基準時間内においてゲームがあまり停止しないので、ユーザAは快適にゲームをプレイすることができる。したがって、ユーザ端末100Aは、現在の第1時間を継続して用いることによって、ゲームを進行させるようにする。
ステップS313においてYESの場合、ステップS314において、通信部115Aは、第1時間の増加を要求する要求情報を、送達確認を行うTCP(Transmission Control Protocol)に従う第2通信によってサーバ200に送信する。以下、TPCに従う第2通信を、単にTCP通信と表記する。TCP通信によって送信されるデータは、UDP通信よりも低速で通信相手に到着するが、送達確認を伴うので、UDP通信とは異なり通信相手に確実に到着することが保証される。ステップS301において、通信部213は、要求情報を、ユーザ端末100AからTCP通信によって受信する。ステップS303において、時間情報生成部212は、要求情報の受信に応答して、記憶部230に記憶される時間情報を、より長い第1時間を表す時間情報に変更する。
時間情報生成部212は、例えば、記憶部230に記憶される時間情報が表す第1時間に、1フレーム分の時間を加算した新たな第1時間を特定する。時間情報生成部212は、記憶部230に記憶される時間情報を、特定した新たな第1時間を表す時間情報に変更する。ここでは、新たな第1時間は、4フレーム分の長さに相当する。ステップS303において、通信部213は、変更後の時間情報を、ユーザ端末100Aおよびユーザ端末100BにTCP通信によって送信する。ステップS315において、通信部115Aは、変更後の時間情報を、サーバ200からTCP通信によって受信する。この後、ユーザ端末100Aは、より長い第1時間を、ゲームを進行させるために用いる。ステップS321において、通信部115Bは、変更後の時間情報を、サーバ200からTCP通信によって受信する。この後、ユーザ端末100Bは、ユーザ端末100Aと同様に、より長い第1時間を、ゲームを進行させるために用いる。
(主要な作用効果)
サーバ200は、複数のユーザ端末100のそれぞれとサーバ200との間の通信時間を、サーバ200自らが特定すると共に、その特定結果に基づいて第1時間を決定する。これにより、各ユーザ端末100が、サーバ200とユーザ端末100との間の通信時間を特定する必要がなくなるので、ゲームシステム1全体における処理の効率を向上させることができる。
サーバ200は、複数のユーザ端末100のそれぞれとサーバ200との間の通信時間を、サーバ200自らが特定すると共に、その特定結果に基づいて第1時間を決定する。これにより、各ユーザ端末100が、サーバ200とユーザ端末100との間の通信時間を特定する必要がなくなるので、ゲームシステム1全体における処理の効率を向上させることができる。
サーバ200は、複数の通信時間のうち最も大きい時間を第1時間として特定するので、最も通信速度の遅いユーザ端末100に合わせて各ユーザ端末100において用いられる第1時間を特定することができる。これにより、最も通信速度の遅いユーザ端末100から送信される操作情報が、他のユーザ端末100において第1時間内に未着となる可能性を低くすることができる。したがって、各ユーザ端末100において操作情報の未着によるゲームの停止が発生する可能性を低くすることができるので、各ユーザ端末100におけるゲームのプレイ感を一律に向上させることができる。
ユーザ端末100Aは、第1操作が受け付けられた第1時点(第1フレーム)から第1時間が経過した第2時点(第4フレーム)に、第1フレームの第1操作を表す第1操作情報と、第1フレームの第2操作情報とに基づいて、ゲームを進行させる。これにより、ユーザ端末100Aには、第1フレームにおけるユーザAによる第1操作の後、第2操作情報を受信するための時間を、第1時間だけ確保することができる。したがって、ユーザ端末100Aは、多少の通信遅延が発生して第1フレームの第2操作情報の到着が遅れても、第1時間が経過するまでに第2操作情報を受信できればゲームを問題なく進行させることができるため、第2操作情報の未着によるゲーム停止の発生頻度を下げることができる。
しかし、第1時間は、サーバ200がゲームの開始前に特定した時間であるため、ゲームの開始後においても適切な値であるとは限らない。ゲームの開始後、ゲームシステム1における通信状況が変化したことによって、第1時間をより長くする必要が生じる場合もある。例えば、ゲームの開始後に、通信途中における操作情報の消失が起こりやすくなったために、ゲーム開始前に特定された第1時間を用いたままでは、第2操作情報を受信するための時間を十分に確保できなくなり得る。この場合、第1時間をより長くしないと、第2操作情報の未着によるゲームの停止が頻発することによって、ゲーム画面のガタ付きが頻発してしまう。
ユーザ端末100は、第2操作情報の未着によるゲームの停止が発生した場合、ゲームの停止発生状況を特定する。ユーザ端末100は、ゲームの停止発生状況が所定の条件を満たす場合に、要求情報をサーバ200に送信する。停止発生率が閾値以上であることは、停止発生状況が所定の条件を満たす場合の一例である。サーバ200は、要求情報の受信に応答して、記憶部230に記憶される時間情報を、より長い第1時間に変更するこれにより、停止発生状況が所定の条件を満たしたユーザ端末100において、第1時間がより長くなるので、ゲーム画面のガタ付きを防止でき、ゲームのプレイ感を改善することができる。
ゲームシステム1は、例えば、いずれかのユーザ端末100におけるゲームの停止発生率が閾値以上となった場合、第1時間をより長くする。これにより、各ユーザ端末100は、より長い第1時間を、互いに同期してゲームを進行させるために用いることができる。その結果、各ユーザ端末100は、第1操作を受け付けた後、第1操作と同一の時点に受け付けられた第2操作の内容を表す第2操作情報を受信するまで、より長い時間待つことができる。これにより、第2操作情報の未着によるゲーム停止の発生頻度を下げることができるので、ゲーム画面のガタ付きを防止でき、ゲームのプレイ感を改善することができる。
ゲームシステム1では、第1時間をあまり長くしすぎると、操作レスポンスの悪化を招いてしまう。そこで、ゲームシステム1は、第1時間を、ゲームシステム1に設定される上限を超えて長くすることはない。これにより、操作レスポンスの悪化およびゲーム画面のガタ付きの双方の悪影響を、必要最小限に留めることができる。
ユーザ端末100およびサーバ200は、操作情報をUDP通信によって送受信する。これにより、操作情報を高速に送受信することができるので、マルチプレイゲームをよりスムーズに進行させることができる。ユーザ端末100は、要求情報をTCP通信によってサーバ200に送信する。これにより、要求情報を確実にサーバ200に受信させることができるので、第1時間を確実に増加させることができる。
(その他の例)
通信部213は、ゲームが開始される前における任意のタイミングで、第1データを複数のユーザ端末100に送信することができる。通信部213は、第1データを複数のユーザ端末100に同時に送信してもよいし、異なるタイミングで複数のユーザ端末100のそれぞれに送信してもよい。
通信部213は、ゲームが開始される前における任意のタイミングで、第1データを複数のユーザ端末100に送信することができる。通信部213は、第1データを複数のユーザ端末100に同時に送信してもよいし、異なるタイミングで複数のユーザ端末100のそれぞれに送信してもよい。
時間情報生成部212は、複数の通信時間に基づいて、任意の手法によって第1時間を特定することができる。時間情報生成部212は、例えば、複数の通信時間のうち最も大きい時間を、第1時間として特定する。これは第1時間の特定手法の一例に過ぎない。
ゲームシステム1は、操作情報を、複数のフレームごとに送受信することができる。複数のフレームが、たとえばフレームであるとする。この場合、通信部115Aは、2フレームごとに(1フレーム間隔で)、第1操作情報を送信し、かつ、第2操作情報を受信する。通信部115Bは、2フレームごとに、第2操作情報を送信し、かつ、第1操作情報を受信する。サーバ200は、2フレームごとに、第1操作情報および第2操作情報を送受信する。送受信の単位フレーム数が小さいほど、1秒間当たりの操作情報の送受信回数が多くなるので、ゲームのプレイ感をより高めることができる。単位フレーム数が大きいほど、1秒間当たりの操作情報の送受信回数が小さくなるので、サーバ200および各ユーザ端末100における処理負荷をより下げることができる。
ゲームシステム1は、送達確認を行わない任意の第1通信プロトコルに従う第1通信によって、操作情報を送受信することができる。上述したUDPは、第1通信プロトコルの一例に過ぎない。ユーザ端末100は、送達確認を行う任意の第2通信プロトコルに従う第2通信によって、サーバ200に要求情報を送信することができる。上述したTCPは、第2通信プロトコルの一例に過ぎない。
通信部115は、現フレームの操作情報と、現フレームから一定数のフレーム分さかのぼった過去の各フレームの各操作情報とを含む複数の操作情報を、サーバ200に送信することができる。一定数は、1以上の任意の整数である。一定数が、例えば3であるとする。通信部115Aは、例えば、第4フレームにおいて、第4フレームの第1操作情報と、第1フレーム〜第3フレームの各第1操作情報とを含む4フレーム分の複数の第1操作情報を、サーバ200に送信する。通信部213は、ユーザ端末100から受信した4フレーム分の第1操作情報を、ユーザ端末100Bに送信する。これにより、通信部115Bは、4フレーム分の第1操作情報を、サーバ200から受信する。通信部115Bは、同様に、第4フレームにおいて、第4フレームの第2操作情報と、第1フレーム〜第3フレームの各第2操作情報とを含む4フレーム分の複数の第2操作情報を、サーバ200に送信する。通信部213は、ユーザ端末100Bから受信した4フレーム分の第1操作情報を、ユーザ端末100Aに送信する。これにより、通信部115Aは、4フレーム分の第2操作情報を、サーバ200から受信する。
第1フレームにおいてユーザ端末100Bから送信された第1フレームの第2操作情報が、送信途中で消失したことにより、ユーザ端末100Aまで到着しなかったとする。この場合でも、第4フレームにおいてユーザ端末100Bから送信される4フレーム分の第2操作情報には、第1フレームの第2操作情報も含まれている。したがって、ユーザ端末100Aは、第4フレームにおいて、第1フレーム〜第4フレームまでの4フレーム分の第2操作情報を受信すれば、送信途中で消失した第1フレームをも、第4フレームで受信することができる。これにより、第1フレームの後から第1時間が経過するまでにユーザ端末100Aが第1フレームの第2操作情報を受信できる可能性を高めることができるので、ユーザ端末100Aにおいて第1フレームの操作情報の未着によるゲーム停止が発生する可能性を下げることができる。さらには、仮にあるフレームにおいてゲームの停止が発生したとしても、次のフレーム以降に、ゲームの進行に必要な操作情報を受信できる可能性が高くなるので、ゲーム停止が続く状態を回避することができる。
通信部115は、ゲームが停止した場合、前回送信した複数の操作情報と同一の複数の操作情報を、サーバ200に送信することができる。ユーザ端末100Aが、例えば、第5フレームにおいて、第2フレームの第2操作情報の未着のためゲームを停止させたとする。この場合、通信部115Aは、1つ前の第4フレームにおいて送信した第1フレーム〜第4フレームの第1操作情報と同一の複数の第1操作情報を、第5フレームにおいてサーバ200に送信する。言い換えれば、通信部115Aは、第4フレームにおいて送信済みの第1フレーム〜第4フレームの第1操作情報を、第5フレームにおいてサーバ200に再送信する。
ユーザ端末100Aが第5フレームにおいてゲームを停止させた場合、最新の第1操作情報がユーザ端末100Bに到着していないために、ユーザ端末100Bが第5フレームにおいて最新の第2操作情報を送信できなくなっている可能性がある。ユーザ端末100が第5フレームにおいて最新の第1操作情報を含む複数の第1操作情報を送信すれば、最新の第1操作情報がユーザ端末100Bに到着したことによって、ユーザ端末100Bが最新の第2操作情報を送信できるようになる可能性を高めることができる。これにより、複数のユーザ端末100が、最新の操作情報を互いに送信できなくなるデッドロック状態に陥ることを回避できるので、マルチプレイゲームの安定性を高めることができる。
通信部115は、停止発生率が閾値以上になったとしても、第1時間が上限に達している場合は、要求情報をサーバ200に送信しないようにすることができる。この場合、サーバ200は、第1時間が上限に達している場合、要求情報をユーザ端末100Aから受信しない。これにより、各ユーザ端末100において、ユーザから操作を受け付けてから、当該操作に応じてゲームが進行されるまでに要する待ち時間が、第1時間の上限を超えることがない。その結果、ユーザの操作に対するゲーム進行の応答レスポンスが過剰に遅くなることがないため、ユーザに快適にゲームをプレイさせることができる。
〔ソフトウェアによる実現例〕
制御部110および210の制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
制御部110および210の制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部110、もしくはその両方を備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラム及び各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)又は記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
本発明の一側面に係る内容を列記すると以下の通りである。
(項目1) ゲームプログラムを説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(20)を備えたサーバ(200)により実行される。ゲームプログラムは、プロセッサに、複数のユーザ端末に第1データを送信するステップ(S1)と、複数のユーザ端末のそれぞれが第1データの受信に応答して送信した第2データを受信するステップ(S2)と、第1データの送信から第2データの受信までに要する通信時間を、ユーザ端末ごとに特定することによって、複数の通信時間を特定するステップ(S3)と、特定された複数の通信時間に基づいて、複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップ(S4)と、生成された時間情報を複数のユーザ端末に送信するステップ(S5)とを実行させる。
(項目2) (項目1)において、ゲームプログラムは、プロセッサに、時間情報の送信後、複数のユーザ端末にゲームを開始させるステップ(S5)と、複数のユーザ端末のうちの第1ユーザ端末が第1ユーザから受け付けた第1操作の内容を表す第1操作情報を、第1ユーザ端末から受信するステップ(S101)と、第1操作情報を、複数のユーザ端末のうちの第1ユーザ端末以外の各ユーザ端末に送信するステップ(S102)と、複数のユーザ端末のうちの第2ユーザ端末が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、第2ユーザ端末から受信するステップ(S103)と、第2操作情報を、複数のユーザ端末のうちの第2ユーザ端末以外の各ユーザ端末に送信するステップ(S104)と、第2ユーザ端末が第2操作を受け付けた後から第1時間が経過するまでの間に第2操作情報を受信しなかった場合に第2操作情報を受信するまでの間にゲームを停止させる第1ユーザ端末(100A)であって、ゲームの停止発生状況が所定の条件を満たす第1ユーザ端末から、第1時間の増加を要求するための要求情報を受信するステップ(S301)と、要求情報の受信に応答して、時間情報を、より長い第1時間を表す時間情報に変更するステップ(S302)と、変更後の時間情報を、複数のユーザ端末に送信するステップ(S303)とを実行させる。
(項目3) (項目2)において、第1操作情報を受信するステップでは、現フレームにおいて受け付けられた第1操作の内容を表す第1操作情報と、現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた第1操作の内容を表す各第1操作情報とを含む複数の第1操作情報を、フレームごとに受信し、第1操作情報を送信するステップでは、複数の第1操作情報をフレームごとに送信し、第2操作情報を受信するステップでは、現フレームにおいて受け付けられた第2操作の内容を表す第2操作情報と、現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた第2操作の内容を表す各第2操作情報とを含む複数の第2操作情報を、フレームごとに受信し、第2操作情報を送信するステップでは、複数の第2操作情報をフレームごとに送信し、要求情報を受信するステップでは、停止発生状況が所定の条件を満たすフレームにおいてゲームを停止させる第1ユーザ端末であって、基準フレーム数に対するゲームを停止させたフレーム数の割合である停止発生率を停止発生状況として特定すると共に停止発生率が閾値以上になった場合に要求情報を送信する第1ユーザ端末から要求情報を受信する。
(項目4) (項目3)において、変更するステップでは、時間情報を、第1時間に1フレーム分の時間を加算した時間を表す時間情報に変更する。
(項目5) (項目2)〜(項目4)のいずれかにおいて、第1操作情報を受信するステップでは、第1操作情報を、送達確認を行わない第1通信プロトコルに従う第1通信により受信し、第1操作情報を送信するステップでは、第1操作情報を、第1通信により送信し、第2操作情報を受信するステップでは、第2操作情報を、第1通信により受信し、第2操作情報を送信するステップでは、第2操作情報を、第1通信により送信し、要求情報を送信するステップでは、要求情報を、送達確認を行う第2通信プロトコルに従う第2通信により受信する。
(項目6) (項目1)〜(項目5)のいずれかにおいて、第1時間を特定するステップでは、複数の通信時間のうち最も大きい通信時間を、第1時間として特定する。
(項目7) (項目2)〜(項目5)のいずれかにおいて、要求情報を受信するステップにおいて、第1時間が上限時間に達している場合、第1ユーザ端末から要求情報を受信しない。
(項目8) ゲームプログラムを説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(10)を備えたユーザ端末(100)により実行される。ゲームプログラムは、プロセッサに、複数のユーザ端末がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバ(200)から受信するステップ(S13)と、ユーザ端末に対する第1操作を、第1ユーザから受け付けるステップ(S111)と、第1操作の内容を表す第1操作情報を、サーバに送信するステップ(S112)と、第2ユーザ端末(100B)が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、サーバから受信するステップ(S114)と、第1操作と、第1操作と同一の時点に受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させるステップ(S116)と、第2ユーザ端末が第2操作を受け付けた後から第1時間が経過するまでの間に第2操作情報を受信しなかった場合、第2操作情報を受信するまでの間、ゲームを停止させるステップ(S215)と、ゲームを停止させた場合、ゲームの停止発生状況を特定するステップ(S312)と、停止発生状況が所定の条件を満たす場合、第1時間の増加を要求するための要求情報をサーバに送信するステップ(S314)とを実行させる。
(項目9) (項目8)において、第1操作を受け付けるステップでは、第1操作をフレームごとに受け付け、第1操作情報を送信するステップでは、現フレームにおいて受け付けられた第1操作の内容を表す第1操作情報と、現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた第1操作の内容を表す各第1操作情報とを含む複数の第1操作情報を、フレームごとに送信し、第2操作情報を受信するステップでは、現フレームに受け付けられた第2操作の内容を表す第2操作情報と、現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた第2操作の内容を表す各第2操作情報とを含む複数の第2操作情報を、フレームごとに受信し、停止させるステップでは、第2操作情報を受信するまでの間、フレームごとにゲームを停止させ、特定するステップでは、基準フレーム数に対するゲームを停止させたフレーム数の割合であるゲームの停止発生率を、停止発生状況として特定し、要求情報を送信するステップでは、停止発生率が閾値以上になった場合、要求情報を送信する。
(項目10) (項目9)において、第1操作情報を送信するステップでは、ゲームが停止した場合、前回送信した複数の第1操作情報と同一の複数の第1操作情報を送信する。
(項目11) (項目8)〜(項目10)のいずれかにおいて、第1操作情報を送信するステップでは、第1操作情報を、送達確認を行わない第1通信プロトコルに従う第1通信により送信し、第2操作情報を送信するステップでは、第2操作情報を、第1通信により送信し、要求情報を送信するステップでは、要求情報を、送達確認を行う第2通信プロトコルにより受信する。
(項目12) (項目8)〜(項目11)のいずれかにおいて、ゲームを進行させるステップでは、第1操作が受け付けられた第1時点から第1時間が経過した第2時点に、第1時点において受け付けられた第1操作を表す第1操作情報と、第1時点において受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させる。
(項目13) (項目8)〜(項目12)のいずれかにおいて、要求情報を送信するステップにおいて、第1時間が上限時間に達している場合、要求情報を送信しない。
(項目14) ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(20)を備えたサーバ(200)によって実行される。方法は、プロセッサが、複数のユーザ端末に第1データを送信するステップ(S1)と、複数のユーザ端末のそれぞれが第1データの受信に応答して送信した第2データを受信するステップ(S2)と、第1データの送信から第2データの受信までに要する通信時間を、ユーザ端末ごとに特定することによって、複数の通信時間を特定するステップ(S3)と、特定された複数の通信時間に基づいて、複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップ(S4)と、生成された時間情報を複数のユーザ端末に送信するステップ(S5)とを含む。
(項目15) サーバを説明した。本開示のある局面によると、サーバ(200)は、ゲームプログラム(131)を記憶する記憶部(220)と、ゲームプログラムを実行することにより、情報処理装置の動作を制御する制御部(210)と、を備える。制御部は、複数のユーザ端末に第1データを送信し、複数のユーザ端末のそれぞれが第1データの受信に応答して第2データを受信し、第1データの送信から第2データの受信までに要する通信時間を、ユーザ端末ごとに特定することによって、複数の通信時間を特定し、特定された複数の通信時間に基づいて、複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成し、生成された時間情報を複数のユーザ端末に送信する。
(項目16) ゲームプログラムを実行する方法を説明した。本開示のある局面によると、ゲームプログラム(131)は、プロセッサ(10)を備えたユーザ端末(100)によって実行される。方法は、プロセッサが、複数のユーザ端末がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバ(200)から受信するステップ(S13)と、ユーザ端末に対する第1操作を、第1ユーザから受け付けるステップ(S111)と、第1操作の内容を表す第1操作情報を、サーバに送信するステップ(S112)と、第2ユーザ端末(100B)が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、サーバから受信するステップ(S114)と、第1操作と、第1操作と同一の時点に受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させるステップ(S116)と、第2ユーザ端末が第2操作を受け付けた後から第1時間が経過するまでの間に第2操作情報を受信しなかった場合、第2操作情報を受信するまでの間、ゲームを停止させるステップ(S215)と、ゲームを停止させた場合、ゲームの停止発生状況を特定するステップ(S312)と、停止発生状況が所定の条件を満たす場合、第1時間の増加を要求するための要求情報をサーバに送信するステップ(S314)とを含む。
(項目17) 情報処理装置を説明した。本開示のある局面によると、情報処理装置(ユーザ端末100)は、ゲームプログラム(131)を記憶する記憶部(120)と、ゲームプログラムを実行することにより、情報処理装置の動作を制御する制御部(110)と、を備える。制御部は、複数の情報処理装置がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバから受信し、情報処理装置に対する第1操作を、第1ユーザから受け付け、第1操作の内容を表す第1操作情報を、サーバに送信し、第2情報処理装置が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、サーバから受信し、第1操作と、第1操作と同一の時点に受け付けられた第2操作を表す第2操作情報とに基づいて、ゲームを進行させ、第2情報処理装置が第2操作を受け付けた後から第1時間が経過するまでの間に第2操作情報を受信しなかった場合、第2操作情報を受信するまでの間、ゲームを停止させ、ゲームを停止させた場合、ゲームの停止発生状況を特定し、停止発生状況が所定の条件を満たす場合、第1時間の増加を要求するための要求情報をサーバに送信する。
1 ゲームシステム、2 ネットワーク、10,20 プロセッサ、11,21 メモリ、12,22 ストレージ、13,23 通信IF(操作部)、14,24 入出力IF(操作部)、15 タッチスクリーン(表示部、操作部)、17 カメラ(操作部)、18 測距センサ(操作部)、100 ユーザ端末(情報処理装置)、110,210 制御部、111 操作受付部、112 ゲーム進行部、113 停止率特定部、114 表示制御部、115 通信部、120,220 記憶部、131 ゲームプログラム、132 ゲーム情報、133 ユーザ情報、151 入力部(操作部)、152 表示部、200 サーバ(情報処理装置)、211 通信時間特定部、212 時間情報生成部、213 通信部、1010 物体、1020 コントローラ(操作部)、1030 記憶媒体
Claims (17)
- プロセッサを備えるサーバにおいて実行されるゲームプログラムであって、
前記ゲームプログラムは、前記プロセッサに、
複数のユーザ端末に第1データを送信するステップと、
前記複数のユーザ端末のそれぞれが前記第1データの受信に応答して第2データを受信するステップと、
前記第1データの送信から前記第2データの受信までに要する通信時間を、前記ユーザ端末ごとに特定することによって、複数の通信時間を特定するステップと、
特定された前記複数の通信時間に基づいて、前記複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップと、
生成された前記時間情報を前記複数のユーザ端末に送信するステップとを実行させる、ゲームプログラム。 - 前記ゲームプログラムは、前記プロセッサに、
前記時間情報の送信後、前記複数のユーザ端末にゲームを開始させるステップと、
前記複数のユーザ端末のうちの第1ユーザ端末が第1ユーザから受け付けた第1操作の内容を表す第1操作情報を、前記第1ユーザ端末から受信するステップと、
前記第1操作情報を、前記複数のユーザ端末のうちの前記第1ユーザ端末以外の各ユーザ端末に送信するステップと、
前記複数のユーザ端末のうちの第2ユーザ端末が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、前記第2ユーザ端末から受信するステップと、
前記第2操作情報を、前記複数のユーザ端末のうちの前記第2ユーザ端末以外の各ユーザ端末に送信するステップと、
前記第2ユーザ端末が前記第2操作を受け付けた後から前記第1時間が経過するまでの間に前記第2操作情報を受信しなかった場合に前記第2操作情報を受信するまでの間に前記ゲームを停止させる前記第1ユーザ端末であった、前記ゲームの停止発生状況が所定の条件を満たす前記第1ユーザ端末から、前記第1時間の増加を要求するための要求情報を受信するステップと、
前記要求情報の受信に応答して、前記時間情報を、より長い前記第1時間を表す時間情報に変更するステップと、
変更後の前記時間情報を、前記複数のユーザ端末に送信するステップとを実行させる、請求項1に記載のゲームプログラム。 - 前記第1操作情報を受信するステップでは、現フレームにおいて受け付けられた前記第1操作の内容を表す前記第1操作情報と、前記現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた前記第1操作の内容を表す各前記第1操作情報とを含む複数の第1操作情報を、フレームごとに受信し、
前記第1操作情報を送信するステップでは、前記複数の第1操作情報をフレームごとに送信し、
前記第2操作情報を受信するステップでは、現フレームにおいて受け付けられた前記第2操作の内容を表す前記第2操作情報と、前記現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた前記第2操作の内容を表す各前記第2操作情報とを含む複数の第2操作情報を、フレームごとに受信し、
前記第2操作情報を送信するステップでは、前記複数の第2操作情報をフレームごとに送信し、
前記要求情報を受信するステップでは、前記停止発生状況が所定の条件を満たすフレームにおいて前記ゲームを停止させる前記第1ユーザ端末であって、基準フレーム数に対する前記ゲームを停止させたフレーム数の割合である停止発生率を前記停止発生状況として特定すると共に前記停止発生率が閾値以上になった場合に前記要求情報を送信する前記第1ユーザ端末から前記要求情報を受信する、請求項2に記載のゲームプログラム。 - 前記変更するステップでは、前記時間情報を、前記第1時間に1フレーム分の時間を加算した時間を表す時間情報に変更する、請求項3に記載のゲームプログラム。
- 前記第1操作情報を受信するステップでは、前記第1操作情報を、送達確認を行わない第1通信プロトコルに従う第1通信により受信し、
前記第1操作情報を送信するステップでは、前記第1操作情報を、前記第1通信により送信し、
前記第2操作情報を受信するステップでは、前記第2操作情報を、前記第1通信により受信し、
前記第2操作情報を送信するステップでは、前記第2操作情報を、前記第1通信により送信し、
前記要求情報を送信するステップでは、前記要求情報を、送達確認を行う第2通信プロトコルにより受信する、請求項2〜4のいずれか1項に記載のゲームプログラム。 - 前記第1時間を特定するステップでは、前記複数の通信時間のうち最も大きい通信時間を、前記第1時間として特定する、請求項1〜5のいずれか1項に記載のゲームプログラム。
- 前記要求情報を受信するステップにおいて、前記第1時間が上限時間に達している場合、前記第1ユーザ端末から前記要求情報を受信しない、請求項2〜5のいずれか1項に記載のゲームプログラム。
- プロセッサを備えるユーザ端末において実行されるゲームプログラムであって、
前記ゲームプログラムは、前記プロセッサに、
複数のユーザ端末がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバから受信するステップと、
前記ユーザ端末に対する第1操作を、第1ユーザから受け付けるステップと、
前記第1操作の内容を表す第1操作情報を、前記サーバに送信するステップと、
第2ユーザ端末が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、前記サーバから受信するステップと、
前記第1操作と、前記第1操作と同一の時点に受け付けられた前記第2操作を表す前記第2操作情報とに基づいて、前記ゲームを進行させるステップと、
前記第2ユーザ端末が前記第2操作を受け付けた後から前記第1時間が経過するまでの間に前記第2操作情報を受信しなかった場合、前記第2操作情報を受信するまでの間、前記ゲームを停止させるステップと、
前記ゲームを停止させた場合、前記ゲームの停止発生状況を特定するステップと、
前記停止発生状況が所定の条件を満たす場合、前記第1時間の増加を要求するための要求情報を前記サーバに送信するステップとを実行させる、ゲームプログラム。 - 前記第1操作を受け付けるステップでは、前記第1操作をフレームごとに受け付け、
前記第1操作情報を送信するステップでは、現フレームにおいて受け付けられた前記第1操作の内容を表す前記第1操作情報と、前記現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた前記第1操作の内容を表す各前記第1操作情報とを含む複数の第1操作情報を、フレームごとに送信し、
前記第2操作情報を受信するステップでは、現フレームに受け付けられた前記第2操作の内容を表す前記第2操作情報と、前記現フレームから一定数のフレーム分さかのぼった過去の各フレームにおいて受け付けられた前記第2操作の内容を表す各前記第2操作情報とを含む複数の第2操作情報を、フレームごとに受信し、
前記停止させるステップでは、前記第2操作情報を受信するまでの間、フレームごとに前記ゲームを停止させ、
前記特定するステップでは、基準フレーム数に対する前記ゲームを停止させたフレーム数の割合である前記ゲームの停止発生率を、前記停止発生状況として特定し、
前記要求情報を送信するステップでは、前記停止発生率が閾値以上になった場合、前記要求情報を送信する、請求項8に記載のゲームプログラム。 - 前記第1操作情報を送信するステップでは、前記ゲームが停止した場合、前回送信した前記複数の第1操作情報と同一の複数の第1操作情報を送信する、請求項9に記載のゲームプログラム。
- 前記第1操作情報を送信するステップでは、前記第1操作情報を、送達確認を行わない第1通信プロトコルに従う第1通信により送信し、
前記第2操作情報を送信するステップでは、前記第2操作情報を、前記第1通信により送信し、
前記要求情報を送信するステップでは、前記要求情報を、送達確認を行う第2通信プロトコルにより受信する、請求項8〜10のいずれか1項に記載のゲームプログラム。 - 前記ゲームを進行させるステップでは、前記第1操作が受け付けられた第1時点から前記第1時間が経過した第2時点に、前記第1時点において受け付けられた前記第1操作を表す前記第1操作情報と、前記第1時点において受け付けられた前記第2操作を表す前記第2操作情報とに基づいて、前記ゲームを進行させる、請求項8〜11のいずれか1項に記載のゲームプログラム。
- 前記要求情報を送信するステップにおいて、前記第1時間が上限時間に達している場合、前記要求情報を送信しない、請求項8〜12のいずれか1項に記載のゲームプログラム。
- プロセッサを備えるサーバがゲームプログラムを実行する方法であって、
前記方法は、前記プロセッサが、
複数のユーザ端末に第1データを送信するステップと、
前記複数のユーザ端末のそれぞれが前記第1データの受信に応答して第2データを受信するステップと、
前記第1データの送信から前記第2データの受信までに要する通信時間を、前記ユーザ端末ごとに特定することによって、複数の通信時間を特定するステップと、
特定された前記複数の通信時間に基づいて、前記複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成するステップと、
生成された前記時間情報を前記複数のユーザ端末に送信するステップとを含む、方法。 - 情報処理装置であって、
前記情報処理装置は、
前記情報処理装置によって実行されるプログラムを記憶する記憶部と、
前記プログラムを実行することにより、前記情報処理装置の動作を制御する制御部と、を備え、
前記制御部は、
複数のユーザ端末に第1データを送信し、
前記複数のユーザ端末のそれぞれが前記第1データの受信に応答して第2データを受信し、
前記第1データの送信から前記第2データの受信までに要する通信時間を、前記ユーザ端末ごとに特定することによって、複数の通信時間を特定し、
特定された前記複数の通信時間に基づいて、前記複数のユーザ端末が互いに同期してゲームを進行させるために用いる第1時間を表す時間情報を生成し、
生成された前記時間情報を前記複数のユーザ端末に送信する、情報処理装置。 - プロセッサを備えるユーザ端末がゲームプログラムを実行する方法であって、
前記方法は、前記プロセッサが、
複数のユーザ端末がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバから受信するステップと、
前記ユーザ端末に対する第1操作を、第1ユーザから受け付けるステップと、
前記第1操作の内容を表す第1操作情報を、前記サーバに送信するステップと、
第2ユーザ端末が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、前記サーバから受信するステップと、
前記第1操作と、前記第1操作と同一の時点に受け付けられた前記第2操作を表す前記第2操作情報とに基づいて、前記ゲームを進行させるステップと、
前記第2ユーザ端末が前記第2操作を受け付けた後から前記第1時間が経過するまでの間に前記第2操作情報を受信しなかった場合、前記第2操作情報を受信するまでの間、前記ゲームを停止させるステップと、
前記ゲームを停止させた場合、前記ゲームの停止発生状況を特定するステップと、
前記停止発生状況が所定の条件を満たす場合、前記第1時間の増加を要求するための要求情報を前記サーバに送信するステップとを含む、方法。 - 情報処理装置であって、
前記情報処理装置は、
前記情報処理装置によって実行されるプログラムを記憶する記憶部と、
前記プログラムを実行することにより、前記情報処理装置の動作を制御する制御部と、を備え、
前記制御部は、
複数の情報処理装置がゲームを互いに同期して進行させるために用いる第1時間を表す時間情報を、サーバから受信し、
前記情報処理装置に対する第1操作を、第1ユーザから受け付け、
前記第1操作の内容を表す第1操作情報を、前記サーバに送信し、
第2情報処理装置が第2ユーザから受け付けた第2操作の内容を表す第2操作情報を、前記サーバから受信し、
前記第1操作と、前記第1操作と同一の時点に受け付けられた前記第2操作を表す前記第2操作情報とに基づいて、前記ゲームを進行させ、
前記第2情報処理装置が前記第2操作を受け付けた後から前記第1時間が経過するまでの間に前記第2操作情報を受信しなかった場合、前記第2操作情報を受信するまでの間、前記ゲームを停止させ、
前記ゲームを停止させた場合、前記ゲームの停止発生状況を特定し、
前記停止発生状況が所定の条件を満たす場合、前記第1時間の増加を要求するための要求情報を前記サーバに送信する、情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018194584A JP2020062106A (ja) | 2018-10-15 | 2018-10-15 | ゲームプログラム、方法、および情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018194584A JP2020062106A (ja) | 2018-10-15 | 2018-10-15 | ゲームプログラム、方法、および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020062106A true JP2020062106A (ja) | 2020-04-23 |
Family
ID=70387806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018194584A Pending JP2020062106A (ja) | 2018-10-15 | 2018-10-15 | ゲームプログラム、方法、および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020062106A (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003325982A (ja) * | 2002-05-13 | 2003-11-18 | Xside Corp | ゲーム支援システム、ゲーム支援方法、ゲーム制御装置、ゲーム制御プログラム、データ処理装置およびデータ処理プログラム |
JP2010134800A (ja) * | 2008-12-05 | 2010-06-17 | Sony Computer Entertainment Inc | シミュレーションシステム |
JP2015139648A (ja) * | 2014-01-30 | 2015-08-03 | グリー株式会社 | ゲーム管理プログラム、ゲーム管理方法及びゲーム管理システム |
-
2018
- 2018-10-15 JP JP2018194584A patent/JP2020062106A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003325982A (ja) * | 2002-05-13 | 2003-11-18 | Xside Corp | ゲーム支援システム、ゲーム支援方法、ゲーム制御装置、ゲーム制御プログラム、データ処理装置およびデータ処理プログラム |
JP2010134800A (ja) * | 2008-12-05 | 2010-06-17 | Sony Computer Entertainment Inc | シミュレーションシステム |
JP2015139648A (ja) * | 2014-01-30 | 2015-08-03 | グリー株式会社 | ゲーム管理プログラム、ゲーム管理方法及びゲーム管理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020210234B2 (en) | Recording and broadcasting application visual output | |
KR102105637B1 (ko) | 가상 현실에서 오브젝트와 손의 상황 감지형 충돌을 통한 입력 | |
US10209770B2 (en) | Information processing apparatus and information processing method | |
US9983687B1 (en) | Gesture-controlled augmented reality experience using a mobile communications device | |
US9753545B2 (en) | Input device, input method, and storage medium | |
WO2019024700A1 (zh) | 表情展示方法、装置及计算机可读存储介质 | |
KR20160105030A (ko) | 전자 장치에서 커뮤니케이션 지원 방법 및 장치 | |
KR20150006180A (ko) | 채팅 창 제어 방법 및 이를 구현하는 전자 장치 | |
JP6514376B1 (ja) | ゲームプログラム、方法、及び情報処理装置 | |
US11071913B2 (en) | Program, game system, electronic device, server, and game control method for improving operability for user input | |
KR102021851B1 (ko) | 가상현실 환경에서의 사용자와 객체 간 상호 작용 처리 방법 | |
WO2015104884A1 (ja) | 情報処理システム、情報処理方法およびプログラム | |
JP2020058666A (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP2019126741A (ja) | ゲームプログラム、方法、及び情報処理装置 | |
JP2020062106A (ja) | ゲームプログラム、方法、および情報処理装置 | |
CN113498029B (zh) | 交互式广播 | |
JP6788644B2 (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP2020058667A (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP2020058668A (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP2020162758A (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP6523509B1 (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP6668425B2 (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP7252915B2 (ja) | ゲームプログラム、方法、および情報処理装置 | |
JP6761835B2 (ja) | プログラム、方法、および情報処理装置 | |
JP2019181214A (ja) | ゲームプログラム、方法、および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211015 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221021 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221101 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230418 |