以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<第1の実施形態>
図1は、ゲームシステム1の全体的な構成を示す模式図である。本実施形態では、ゲームシステム1は、予め定められた複数の役(達成条件)のうちのいずれかの役の成立により特典(例えば点数等)を付与するゲームを提供する。ゲームの種類としては、4人のユーザの各々がキャラクタを操作して対戦プレイを行う麻雀ゲームを例示する。また、麻雀ゲームの対戦は、所定順序で設けられた複数の対局(ステージ)によって構成される。
本実施形態では、ユーザと当該ユーザが操作するキャラクタとは、1対1で対応している。このため、キャラクタとの関連で述べる説明は、ユーザとの関連で述べる説明と実質的に同じであり、キャラクタは、適宜ユーザに置き換えることができる。
麻雀ゲームでは、各キャラクタの持ち点が25000点の状態から対戦を開始し、部屋の麻雀卓に積まれた136枚あまりの牌(識別情報)の山から牌をキャラクタ毎に1つずつ引きながら、14枚〜18枚の手牌(当該キャラクタが所有する牌)の組合せからなる役の成立を目指す。また、麻雀では、家(自家または他家)、副露、晒すなどの専門用語が用いられる。ここで、家はキャラクタを意味し、自家は自ユーザによって操作されるキャラクタを意味し、他家は他ユーザによって操作されるキャラクタまたはNPCを意味する。さらに、副露は、ポン、チー、大明槓、暗槓、小明槓の総称であり、晒すは牌の模様を他のキャラクタに見せることを意味する。
対戦に臨む4人のユーザの各々には、東家、南家、西家、北家のいずれかのポジションが設定される。このうち、東家が親に相当し、南家、西家、北家の各々が子に相当する。対戦を構成する複数の対局の各々は、親が上がり続ける限り継続され、子が上がったときや流局したときに終了する。即ち、親の切替条件は、子に上がられることや、流局することにより成立する。
切替条件の成立によって次の対局に進むと、当該4人のユーザ各々に定められている順序に従って、当該ユーザのポジションが右隣りのユーザのポジションに切り替えられる。即ち、東家は北家に切り替わり、南家は東家に切り替わり、西家は南家に切り替わり、北家は西家に切り替わる。次の対局は、ポジションが切り替わった後に開始される。
なお、ゲームの種類は、役の成立により特典(例えば点数等)を付与するゲームであればこれに限らず、例えば、トランプを用いたゲーム(例えばポーカー)などであってもよい。また、ゲームは、役の成立により特典(例えば点数等)を付与するゲームに限らず、ユーザが保有するキャラクタを用いてゲームを行うものであればよく、アクションゲーム、スポーツゲームなどの他のジャンルのゲームであってもよい。
図1に示すように、ゲームシステム1は、複数のユーザ端末100と、ゲームサーバ200とを含む。各ユーザ端末100とゲームサーバ200とは、ネットワーク2を介して接続されている。ネットワーク2は、インターネット、図示しない無線基地局によって構築される各種移動通信システム(たとえば、所謂3G、4G移動通信システム、LTE(Long Term Evolution))、または所定のアクセスポイントによってインターネットに接続可能な無線ネットワーク(たとえばWi-Fi(登録商標))を含み得る。
(ユーザ端末およびゲームサーバの構成)
ユーザ端末100は、スマートフォン、フィーチャーフォン、PDA(Personal Digital Assistant)、またはタブレット型コンピュータ等の携帯端末であることがより好ましい。図1に示すように、ユーザ端末100は、通信バスによって互いに電気的に接続されたプロセッサ10と、メモリ11と、ストレージ12と、通信インターフェース(IF)13と、入出力IF14と、タッチスクリーン15とを備える。
入出力IF14は、USB(Universal Serial Bus)等を介した各種データ入出力機能、および音声入出力機能を備える。
タッチスクリーン15は、入力部151と表示部152とを組合せた電子部品である。入力部151は、タッチセンシティブなデバイスであり、たとえばタッチパッド等によって構成される。表示部152は、たとえば液晶ディスプレイ、または有機EL(Electro-Luminescence)ディスプレイ等によって構成される。入力部151は、タッチスクリーン15に対するユーザの指やスタイラスといった物体の接触または近接を検知し、操作入力として受け付ける。入力部151は、当該操作入力に含まれるユーザの作用(主に、タッチ操作、スワイプ操作、フリック操作、およびタップ操作等の物理的接触操作)が入力された画面位置の情報を検知して、該情報を外部へ情報信号として出力する機能を備える。タッチスクリーン15は、タッチセンシティブであればよい。タッチセンシティブなデバイスは、静電容量方式、抵抗膜方式等のどのような方式を採用したものであってもよい。
ゲームサーバ200は、ゲームに関する各種サービスを各ユーザ端末100に提供する。ゲームサーバ200は、ワークステーションまたはパーソナルコンピュータ等の汎用コンピュータであることが、より好ましい。図1に示すように、ゲームサーバ200は、通信バスによって互いに電気的に接続されたプロセッサ20と、メモリ21と、ストレージ22と、通信インターフェース(IF)23と、入出力IF24とを備える。
プロセッサ10、20は、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等を含んで構成される。プロセッサ10は、ユーザ端末100全体の動作を制御する。プロセッサ20は、ゲームサーバ200全体の動作を制御する。
メモリ11、21は、ROM(Read Only Memory)およびRAM(Random Access Memory)等の揮発性記憶装置で構成され得る主記憶装置を含んで構成される。
ストレージ12、22は、フラッシュメモリまたはHDD(Hard Disk Drive)などの不揮発性記憶装置によって構成され得る補助記憶装置を含んで構成される。メモリ11には、プロセッサ10がストレージ12からロードした各種プログラムおよびデータが一時的に記憶される。メモリ21には、プロセッサ20がストレージ22からロードした各種プログラムおよびデータが一時的に記憶される。これによりメモリ11は、プロセッサ10に対して作業領域を提供する。メモリ21は、プロセッサ20に対して作業領域を提供する。
ゲームサーバ200のストレージ22には、ゲームプログラム等のゲームデータが格納される。ユーザ端末100のストレージ12には、ゲームサーバ200からダウンロードされるゲームプログラム等のゲームデータが格納される。当該ゲームプログラムは、メモリ11、21に展開される。プロセッサ10は、メモリ11に展開されるゲームプログラムを実行する。プロセッサ20は、メモリ21に展開されるゲームプログラムを実行する。メモリ11には、プロセッサ10が当該ゲームプログラムに従って動作している間に生成した各種ゲームデータも一時的に格納される。メモリ21には、プロセッサ20が当該ゲームプログラムに従って動作している間に生成した各種ゲームデータも一時的に格納される。
通信IF13、23は、ユーザ端末100とゲームサーバ200との間で各種データを送受信するための通信制御機能を備える。通信制御機能には、たとえば、無線LAN(Local Area Network)接続機能、有線LAN、無線LAN、携帯電話回線網を介したインターネット接続機能、近距離無線通信機能等が含まれる。
本実施形態では、各種データは、所定のゲームプログラム、ユーザ情報、ゲーム情報等のゲームデータ、それらをユーザ端末100とゲームサーバ200との間に送受信させる指示、および、ゲームを進行させるための指示を含む。
たとえばプロセッサ10は、通信IF13を介してユーザIDをゲームサーバ200に送信することによって、当該ユーザIDに関連付けられたオブジェクト(キャラクタ、配牌スキル、ツモスキル、配牌、ツモ牌、捨て牌等)に関する情報をゲームサーバ200から受信する。また、プロセッサ10は、ユーザ作用に基づいて麻雀卓に牌を配置し、ゲームの結果として取得されたゲームポイント(点棒)を、通信IF13を介してゲームサーバ200に送信する。
ゲームサーバ200の入出力IF24は、マウス、キーボード等の情報入力機器である入力部、および、液晶ディスプレイ等の出力部を備えており、コンピュータの情報をモニタリングするために用いられる。
(ユーザ端末の機能的構成)
図2は、ユーザ端末100の機能的構成を示す図である。ユーザ端末100は、プロセッサ10、メモリ11、ストレージ12、通信IF13、および入出力IF14等の協働によって、制御部110および記憶部120として機能し得る。記憶部120にはゲームプログラムが格納されている。このゲームプログラムは、主記憶上に展開されかつ制御部110において実行される。また、本実施形態では、このゲームプログラムは、プロセッサ10およびメモリ11を備えるユーザ端末100に対し、麻雀ゲームを進行させる制御部110および記憶部120としてユーザ端末100を機能させるプログラムである。
制御部110は、当該ゲームプログラムによって、作用受付部111、端末処理部112、タイマー部113、端末判定部114、表示制御部115、報酬計算部116、および送受信部117として機能し得る。制御部110が当該ゲームプログラムに従って動作している間に生成した各種ゲームデータ、および制御部110によって利用される各種ゲームデータも、主記憶上に一時的に格納される。
作用受付部111は、タッチスクリーン15の入力部151に対するユーザの作用を検知する。作用受付部111は、タッチスクリーン15およびその他の入出力IF14を介したコンソールによる操作指示等から、いかなる入力がなされたかを判別し、その結果を端末処理部112等の必要な要素に出力する。作用受付部111は、タッチスクリーン15に対する作用入力がなされた場合には、入力位置の座標情報および作用の種類(タッチ操作、スライド動作等)を検知する。また、作用受付部111は、連続して検知されていた入力が途切れることを検知することによって、タッチスクリーン15から接触入力が解除されたことを検知する。
端末処理部112は、ユーザ端末100全体の動作を制御し、各要素間におけるデータの送受信、およびゲームの実行に必要な演算処理その他の処理を行う。端末処理部112は、たとえば、作用受付部111によって検知された作用に基づいて、ゲームプログラムに従ったゲームを展開させ、その結果を示すゲーム画像を描画するよう、表示制御部115に指示する。また、端末処理部112は、タッチスクリーン15に対する操作入力に基づいて仮想空間内におけるゲームオブジェクトを操作する。また、端末処理部112は、タッチスクリーン15に対する操作入力および演算処理の結果等に基づいて、記憶部120に記憶されている各種データの更新等の処理を行う。なお、端末処理部112は、ゲームの進行状態に応じて、ゲーム空間の視野を指定するための仮想カメラの位置を制御してもよい。
タイマー部113は、麻雀部屋内の時刻を規定するとともに、麻雀部屋内の時間の経過を計測する。タイマー部113は、たとえば、牌がツモられた時刻を記憶部120に記憶させ、その後に経過した時間を測定する。タイマー部113は、測定することによって得られる時間情報を端末判定部114に提供する。端末判定部114は、タイマー部113および記憶部120を参照して、今回のツモから所定時間が経過したか否かなどを判定できる。
表示制御部115は、ゲームサーバ200から受信したユーザ情報、ゲームプログラムによる演算結果、およびユーザの入力部151に対する作用に基づいて、表示部152に表示される画像を生成する。本実施形態では、ユーザ端末100は、配牌、牌山、ツモ牌、捨て牌、ポン、チー、カン、ロンあがり、ツモあがり、流局等などの対局の開始から終了までに刻々と変化するゲーム情報をゲームサーバ200から取得し、この情報を用いて対局画面の画像を生成する。なお、これらのゲーム情報は、ユーザ端末100側においても記憶しているものであってもよい。表示制御部115は、端末処理部112によるゲーム進行制御に応じて表示画像を更新する。
報酬計算部116は、作用受付部111から受信した操作に基づいて、各ユーザに提供される報酬を算出して、ユーザに付与する。たとえば報酬計算部116は、ユーザに付与される点棒を算出し、ユーザに付与する。
送受信部117は、ゲームサーバ200から各種情報を受信したり、ゲームサーバ200に各種情報を送信したりする。送受信部117は、制御部110の制御によって各種情報をゲームサーバ200に対して送信する。ゲームサーバ200は、ネットワーク2および通信IF23を介して当該情報を受信し、送受信部211が情報の内容を識別して受け付ける。送受信部117は、たとえば、ユーザ端末100上で動作可能なゲームプログラム、ユーザ情報、ゲーム画面等のゲーム空間情報、自ユーザの配牌、牌山、他のユーザの捨て牌、他のユーザによるポン、チー、カン、ロンあがり、ツモあがり等のゲーム情報を、ゲームサーバ200から受信することができる。なお、これらの情報は、ユーザ端末100側においても記憶しているものであってもよい。一方、送受信部117は、ユーザ情報、自ユーザの捨て牌、自ユーザによるポン、チー、カン、ロンあがり、ツモあがり等のゲーム情報を、ゲームサーバ200に送信することができる。
記憶部120には、制御部110が前述の各部として機能するために必要なデータが記憶されている。当該データとしては、たとえば、ゲームプログラム、ゲーム情報、およびユーザ情報が含まれる。ゲーム情報としては、オブジェクト管理テーブル等が挙げられる。ユーザ情報としては、ユーザ管理テーブル等が挙げられる。
(ゲームサーバの機能的構成)
図3は、ゲームサーバ200の機能的構成を示すブロック図である。ゲームサーバ200は、各ユーザ端末100にゲーム進行に必要な情報を提供するゲーム提供機能を有している。ゲームサーバ200は、ユーザ端末100からゲーム情報を受信し、ユーザ端末100上で動作可能なゲームプログラム、Webページ(ゲーム画面等)、ユーザ情報およびゲームパラメータ等の各種ゲームデータ、各種通知等を送信する。ゲームサーバ200は、プロセッサ20、メモリ21、ストレージ22、通信IF23、入出力IF24等の協働によって、制御部210および記憶部220として機能し得る。
図3に示すように、制御部210は、記憶部220に格納されたゲームプログラムによって、送受信部211、サーバ処理部212、データ管理部213、マッチング部214、計測部215として機能し得る。本実施形態では、このゲームプログラムは、プロセッサ20およびメモリ21を備えるゲームサーバ200に対し、麻雀ゲームを進行させる制御部210および記憶部220としてゲームサーバ200を機能させるプログラムであり、管理者の立場で当該麻雀ゲームを取り仕切る上述の管理者側プログラムも含んでいる。
送受信部211は、各ユーザ端末100から送信される各種情報を受信したり、各ユーザ端末100に各種情報を送信したりする。
各ユーザ端末100は、制御部110の制御に基づいて各種情報をゲームサーバ200に対して送信する。ゲームサーバ200は、ネットワーク2および通信IF23を介して当該情報を受信し、送受信部211が情報の内容を識別して受け付ける。
送受信部211は、記憶部220に格納されている各種管理テーブルを参照する。送受信部211は、必要に応じてデータ管理部213によって更新された各種管理テーブルを参照して、必要な処理を実行する。当該情報には、各ユーザに配られる牌の組合せを特定するための配牌情報、配牌の後に残った牌を特定するための牌山情報、各ユーザによるポン、チー、カンなどの情報が含まれる。
また、送受信部211は、ユーザ端末100上で動作可能なゲームプログラム、ユーザ情報、ゲーム画面等のゲーム空間情報、各ユーザの配牌、牌山、各ユーザの捨て牌、各ユーザによるポン、チー、カン、ロンあがり、ツモあがり等のゲーム情報をユーザ端末100に送信する。
サーバ処理部212は、ゲームサーバ200全体の動作を制御し、各要素間におけるデータの送受信、および、ゲームの進行に必要な演算処理を行う。サーバ処理部212は、たとえば、送受信部211が受信したユーザ端末100からの情報または要求に基づいて、ゲームプログラムに従った演算処理を実行する。そして、その結果としての各種ユーザ情報、ゲーム情報等のゲームデータ、およびゲームプログラム等を、通信IF13を介してユーザ端末100に送信することによって、ユーザ端末100においてさらにゲームを進行させる。
データ管理部213は、サーバ処理部212における各種演算結果に基づいて、記憶部220に格納されている各種ゲームデータ、およびデータベースのレコードを、追加、更新、または削除することによって、必要な処理を実行する。
送受信部211は、例えば、ユーザが麻雀卓に牌を晒すようにユーザ端末100に作用を与えると、その結果としてユーザが保有するオブジェクト情報およびゲームポイントに関する情報をユーザ端末100から受信する。サーバ処理部212は、受信された情報に基づいて必要な処理を実行し、一方、データ管理部213はユーザ情報およびゲーム情報を更新する。
また、例えば、送受信部211がユーザ端末100から捨て牌を実行する要求を受信した場合、データ管理部213は、捨て牌の情報を、ユーザ情報と、捨て牌の配置位置等に関するゲーム情報とに関連付けて記憶する。
マッチング部214は、対戦プレイのために、複数の操作キャラクタを所定のゲーム空間に関連付ける。たとえばマッチング部214は、ある操作キャラクタがホストとして部屋を作る操作を行った場合、当該操作キャラクタをホストとし、他の3人の操作キャラクタをゲストとするパーティをマッチングによって組成し、当該パーティに属する4人の操作キャラクタを同じ麻雀部屋に一時的に関連付ける。
計測部215は、タイマー部113と同様に、麻雀部屋内の時刻を規定するとともに、麻雀部屋内の時間を計測する機能を有する。計測部215は、例えば、対局開始時に発動させたいスキルを選択するための画面が表示された時刻からの経過時間を計測する。計測部215は、麻雀部屋の時間情報を生成し、タイマー部113で生成された麻雀部屋の時間情報と照合する。これにより、ユーザ端末100とゲームサーバ200において麻雀部屋の時間情報が同期され、各種時間情報の計測および判定を円滑に実施し得る。
記憶部220には、ゲームプログラムおよびユーザの認証プログラム等が格納されている。また、記憶部220には、ユーザ管理テーブル等のユーザ情報、オブジェクト管理テーブル等のゲーム情報を管理するデータベースが構築されていてもよい。
本実施形態では、各ユーザが自分のユーザ端末100上で対戦開始操作を行うと、当該操作がゲームサーバ200に通知される。通知には、当該操作を行ったユーザのユーザIDが含まれる。通知を受けたゲームサーバ200は、麻雀部屋を作り、対戦に臨むユーザを当該麻雀部屋に入室させる。対戦は、4人のユーザが当該麻雀部屋に揃った後に、開始される。また、本実施形態では、記憶部220には、図4(A)に示す対局管理テーブル301と、図4(B)に示す中継ぎ管理テーブル302が設けられる。
(対局管理テーブルおよび中継ぎ管理テーブル)
図4(A)を参照して、対局管理テーブル301は、麻雀部屋毎に設けられ、当該麻雀部屋における対局状況を管理する。具体的には、対局管理テーブル301には、マッチングによって組成されたパーティを構成する4人のユーザと、当該4人のユーザがそれぞれ操作する4人のキャラクタと、当該4人のユーザ各々の持ち点と、当該4人のユーザ各々の属性(正規/代走の別)と、今回の対局の場(東場/南場/西場/北場の別と、対局数)と、今回の対局における当該4人のユーザ各々のポジション(東家/南家/西家/北家の別)と、現時点における当該4人のユーザ各々の手牌を示す手牌情報と、現時点における当該4人のユーザ各々の捨て牌を示す捨て牌情報とが設定される。
なお、ユーザの属性は、ユーザに本来的に関連付けられているキャラクタを当該ユーザが操作する場合に正規に設定され、当該キャラクタを他のユーザが操作する場合に代走に設定される。
図4(B)を参照して、中継ぎ管理テーブル302は、AI(人工知能の略であり、途中抜けしたユーザが操作していたキャラクタを操作(例えば、捨て牌の選択、副露の選択等)する所定のプログラム)による対戦の中継ぎ状況を管理する。具体的には、中継ぎ管理テーブル302には、ユーザの対戦がAIにより中継ぎ中であるか否かを識別する中継ぎフラグが、対戦に臨む4人のユーザ各々に対して設定される。
(各テーブルの設定動作の概略)
本実施形態では、麻雀部屋に入室している4人のユーザ各々は、当該ユーザに関連付けられているキャラクタを操作して対戦を行う。当該ユーザの手牌の状況および捨て牌の状況は、対局管理テーブル301に反映される。
当該4人のユーザのうちのいずれかのユーザが麻雀部屋から途中抜けすると(即ち、当該対戦から退くと)、当該ユーザの対戦がAIにより中継される。このため、当該ユーザに関連付けられているキャラクタは、AIにより操作される。中継ぎ管理テーブル302において当該ユーザに設定されている中継ぎフラグは、AIが当該ユーザの対戦を引き継いだときに、0から1に更新される。
次の対局が始まる前に、他のユーザが操作するユーザ端末100から対戦開始操作が通知されると、当該他のユーザは、代走ユーザとして当該麻雀部屋に入室し、AIから対戦を引き継ぐ。具体的には、当該他のユーザは、新規に中継ぎ管理テーブル302に登録されるとともに、対戦から退いたユーザの代わりに対局管理テーブル301に登録される。
当該他のユーザの登録に関連して、中継ぎ管理テーブル302においては、当該他のユーザの中継ぎフラグが0に設定される。また、対局管理テーブル301において、当該他のユーザの属性が代走に設定される。なお、中継ぎフラグが1に設定されているユーザは、当該他のユーザの登録に応じて、中継ぎ管理テーブル302から削除される。
あるユーザが代走ユーザとして既存の麻雀部屋に入室した場合は、他の麻雀部屋が新設され、当該ユーザは正規ユーザとして新設の麻雀部屋に入室する。具体的には、新設の麻雀部屋に対応する対局管理テーブル301が新設され、当該ユーザと、当該ユーザが操作するキャラクタと、当該ユーザの持ち点である25000点とが、新設の対局管理テーブル301に登録される。また、当該ユーザの属性は、正規に設定される。
一方、既存の麻雀部屋において当該ユーザと対戦する3人の既存ユーザは、代走ユーザとして、新設の麻雀部屋に入室する。具体的には、当該3人の既存ユーザと、当該3人の既存ユーザが操作する3人のキャラクタと、当該3人の既存ユーザ各々の持ち点である25000点とが、新設の対局管理テーブル301に登録される。また、当該3人の既存ユーザ各々の属性は、代走に設定される。
さらに、新設の麻雀部屋に正規ユーザとして入室したユーザに対しては、当該新設の麻雀部屋における4人のユーザのポジションが、既存の麻雀部屋における当該4人のユーザのポジションに合わせられるように、サイコロによる場所決め演出が実行される。これによって、役数などが麻雀部屋の間で相違してしまうことを防止することができる。
なお、共通する4人のユーザが入室している複数の麻雀部屋の間の相違点および一致点は、次のとおりである。即ち、相違点としては、代走ユーザが操作するキャラクタや、代走ユーザの持ち点が挙げられ、一致点としては、当該4人のユーザの手牌、捨て牌、牌山の構成、各対局の勝敗などが挙げられる。
(各テーブルの設定動作の詳細)
図5(A)を参照して、キャラクタK1〜K4をそれぞれ操作するユーザ1〜4が麻雀部屋1に入室して東1局に臨む場合、当該麻雀部屋1に対応する対局管理テーブル301には、ユーザ1〜4とキャラクタK1〜K4とが登録される。また、ユーザ1〜4のいずれについても、持ち点は25000点に設定され、属性は正規に設定される。さらに、東1局では、場が東1局に設定され、ユーザ1〜4のポジションは、例えば東家、南家、西家、北家にそれぞれ設定される。中継ぎ管理テーブル302においては、ユーザ1〜4の各々に設定された中継ぎフラグのいずれも0を示す。
東1局において、ユーザ3がユーザ1に対して満貫を振り込むと、ユーザ3の持ち点のうち8000点が、ユーザ1に付与される。この結果、対戦が東1局から東2局に進んだ時点では、図5(B)に示すように、対局管理テーブル301に設定されているユーザ3の持ち点が17000点に減少し、ユーザ1の持ち点が33000点に増大している。また、東2局に進むと、ユーザ1のポジションは東家から北家に更新され、ユーザ2のポジションは南家から東家に更新され、ユーザ3のポジションは西家から南家に更新され、ユーザ4のポジションは北家から西家に更新される。
東2局の途中でユーザ3が麻雀部屋1を抜けると、ユーザ3に対応するキャラクタが維持されたまま、ユーザ3の対局がAIにより引き継がれる。これにより、対局を継続できるとともに、ユーザ3が途中抜けしたことがユーザ1、2、4に気付かれる懸念を軽減できる。なお、中継ぎ管理テーブル302においてユーザ3に設定されている中継ぎフラグは、0から1に更新される。
AIによる引継ぎの後、東2局でユーザ1がユーザ4に対して跳満を振り込むと、ユーザ1の持ち点のうち12000点が、ユーザ4に付与される。この結果、対戦が東2局から東3局に進んだ時点では、図6に示すように、麻雀部屋1の対局管理テーブル301に設定されているユーザ1の持ち点が13000点に減少し、ユーザ4の持ち点が37000点に増大している。
東2局が終了した時点で、ユーザ5が操作するユーザ端末100から対戦開始操作が通知されていれば、ユーザ5が代走ユーザとして麻雀部屋1に入室し、AIから対戦を引き継ぐ。具体的には、ユーザ5は、新規に中継ぎ管理テーブル302に登録されるとともに、ユーザ3の代わりに麻雀部屋1の対局管理テーブル301に登録される。
ユーザ5の登録に関連して、中継ぎ管理テーブル302においては、ユーザ5の中継ぎフラグが0に設定される。また、麻雀部屋1の対局管理テーブル301におけるユーザ5の属性が、代走に設定される。ただし、当該対局管理テーブル301におけるキャラクタK3の設定は、このまま維持される。ユーザ5の属性が代走に設定された結果、ユーザ5は、ユーザ3の代走ユーザとして東3局に臨む。なお、ユーザ3は、ユーザ5の登録に応じて、中継ぎ管理テーブル302から削除される。
キャラクタK5を操作するユーザ5が代走ユーザとして麻雀部屋1に入室すると、麻雀部屋2が新設される。ユーザ5は、正規ユーザとして麻雀部屋2に入室する。具体的には、麻雀部屋2に対応する対局管理テーブル301が新設され、ユーザ5と、キャラクタK5と、ユーザ5の持ち点である25000点とが、新設の対局管理テーブル301に登録される。また、ユーザ5の属性は、正規に設定される。
一方、麻雀部屋1においてユーザ5と対戦するユーザ1、2および4は、代走ユーザとして、麻雀部屋2に入室する。具体的には、ユーザ1、2および4と、キャラクタK6、K7およびK8と、ユーザ1、2および4の各々の持ち点である25000点とが、麻雀部屋2の対局管理テーブル301に登録される。また、ユーザ1、2および4の属性は、代走に設定される。
また、麻雀部屋2に入室した4人のユーザのポジションは、麻雀部屋1に入室している当該4人のユーザのポジションに合わせられる。即ち、麻雀部屋1における東3局では、ユーザ1、2、5および4のポジションが西家、北家、東家、南家に設定されるところ、麻雀部屋2における東1局でも、ユーザ1、2、5および4のポジションは、西家、北家、東家、南家に設定されるように、サイコロによる場所決め演出が実行される。
なお、対局が終了した時点で対戦開始操作が通知されている場合に、当該対戦通知操作を行ったユーザを麻雀部屋1および2に入室させるようにすることで、当該対戦通知操作から対局終了までの時間を、麻雀部屋2における当該ユーザの場所決め演出に充てることができる。
ユーザ1、2、5および4の各々の手牌および捨て牌は、麻雀部屋1の東3局と麻雀部屋2の東1局との間で同じであり、ユーザ2がユーザ4に満貫を振り込むと、ユーザ2の持ち点のうち8000点が、ユーザ4に付与される。この結果、麻雀部屋1の対戦が東3局から東4局に進んだ時点では、図7に示すように、麻雀部屋1の対局管理テーブル301に設定されているユーザ2の持ち点が25000点に減少し、ユーザ4の持ち点が45000点に増大している。
また、麻雀部屋2の対戦が東1局から東2局に進んだ時点では、図7に示すように、麻雀部屋2の対局管理テーブル301に設定されているユーザ2の持ち点が17000点に減少し、ユーザ4の持ち点が33000点に増大している。
麻雀部屋1の対局が東3局から東4局に進み、麻雀部屋2の対局が東1局から東2局に進むと、ユーザ1のポジションは西家から南家に更新され、ユーザ2のポジションは北家から西家に更新され、ユーザ5のポジションは東家から北家に更新され、ユーザ4のポジションは南家から東家に更新される。
麻雀部屋1および2における対戦の進行状況を図8に示す。図8から分かるように、麻雀部屋2は、ユーザ5が代走ユーザとして麻雀部屋1に入室したときに新設され、その後は、ユーザ1、2、4および5が麻雀部屋1および2の各々で対戦に臨む。ユーザ5は、新規にユーザ1、2および4と対戦を開始したと思いながら、対戦を行う。また、ユーザ1、2および4は、ユーザ3がユーザ5に代わったことに気付くことなく、対戦を継続する。
これにより、新たに対戦を望むユーザについては、対戦に必要な人数が揃わない場合であっても、早期に対戦を開始させることができる。また、既に対戦中のユーザについては、途中抜けが生じた後においても極力実ユーザと対戦できる。この結果、人間同士の対戦を組成する効率が向上し、対戦プレイの興趣性が損なわれる懸念を軽減できる。
なお、麻雀部屋1の対局が終了したとき、麻雀部屋2においては、ユーザ1、2、4が途中抜けしたものとみなして、AIがユーザ1、2、4の各々の対局を引き継ぐ。その後に、他のユーザが対戦開始を要求すると、当該他のユーザが、ユーザ1、2、4のうちのいずれかのユーザの代走ユーザとして対局を開始するとともに、当該他のユーザが正規ユーザとして対局を行う別の麻雀部屋が新設される。
(動作について)
ゲームサーバ200の制御部210は、図9に示すユーザ登録処理と、図10および図11に示す対局進行処理とを実行する。
図9を参照して、ステップS01では、いずれかのユーザのユーザ端末100から対戦開始操作が通知されたか否かを、通信IF23からの情報に基づいて判定する。当該操作が通知されたと判定されなかったときは、今回のユーザ登録処理を終了する。一方、当該操作が通知されたと判定されたときは、ステップS02に進む。ステップS02では、通知に含まれるユーザIDに基づいて、当該操作を行ったユーザ即ち通知元のユーザを特定する。
ステップS03では、ステップS02で特定した通知元のユーザを中継ぎ管理テーブル302に登録する。このとき、中継ぎ管理テーブル302における当該ユーザの中継ぎフラグは、0に設定される。例えば、図6に示す東2局が終了する際にユーザ5が対戦開始操作を行っていたときは、ユーザ5が中継ぎ管理テーブル302に登録され、ユーザ5の中継ぎフラグは0に設定される。
ステップS04では、AIが対戦に臨んでいる麻雀部屋が存在するか否かを、中継ぎ管理テーブル302に基づいて判定する。AIが対戦に臨んでいる麻雀部屋が存在すると判定されなかったときは、ステップS10に進み、いずれの麻雀部屋も満室であるか否かを対局管理テーブル301に基づいて判定する。
いずれの麻雀部屋も満室であると判定されたときは、ステップS11に進み、他の麻雀部屋を新設する。つまり、AIが対戦に臨んでいる麻雀部屋もなくかつ対局開始前であって人数が足りていない麻雀部屋もない場合に、麻雀部屋を新設する。具体的には、当該他の麻雀部屋に対応する対局管理テーブル301を新設する。ステップS11の処理が完了すると、ステップS12に進む。なお、ステップS10において、いずれの麻雀部屋も満室であると判定されなかったとき、即ち満室になっていない麻雀部屋が存在すると判定されたときは、ステップS11の処理を実行することなく、ステップS12に進む。
ステップS12では、通知元のユーザを、新設の対局管理テーブル301または満室になっていない麻雀部屋に対応する対局管理テーブル301に、正規ユーザとして登録する。具体的には、通知元のユーザと、当該ユーザに本来的に関連付けられているキャラクタと、当該ユーザの持ち点である25000点とを、当該対局管理テーブル301に登録し、通知元のユーザの属性を正規に設定する。また、対局の場は東1局に設定し、通知元のユーザのポジションは、東家、南家、西家および北家のうち未設定のポジションに設定する。今回のユーザ登録処理は、ステップS12の処理の後に終了する。
ステップS04において、AIが対戦に臨んでいる麻雀部屋が存在すると判定されたときは、ステップS05に進む。ステップS05では、中継ぎ管理テーブル302に基づいて、当該麻雀部屋で対戦に臨んでいる3人の既存ユーザを特定する。例えば、図5(B)に示すように、麻雀部屋1の東2局においてユーザ1、2および4とAIとが対戦に臨んでいれば、ユーザ1、2および4が、中継ぎ管理テーブル302に基づいて特定される。
ステップS06では、ステップS02で特定した通知元のユーザを、当該麻雀部屋の対局管理テーブル301に登録する。当該対局管理テーブル301において、通知元のユーザは、AIに対局を引き継いだユーザの代わりに登録され、通知元のユーザの属性は代走に設定される。例えば、図6に示す東3局が始まる前に、ユーザ5が対戦開始操作を行ったときは、ユーザ5がユーザ3の代わりに麻雀部屋1の対局管理テーブル301に登録され、ユーザ5の属性が代走に設定される。
ステップS07では、ステップS06の処理に応じて、中継ぎ管理テーブル302を更新する。具体的には、AIに対戦を引き継いだユーザの登録を、中継ぎ管理テーブル302から削除する。例えば、麻雀部屋1の東2局においてユーザ3の対戦がAIに引き継がれ、東2局が終了する際にユーザ5が対戦開始操作を行っていた場合、図6に示すように、ユーザ3が中継ぎ管理テーブル302から削除される。
ステップS08では、他の麻雀部屋を新設する。具体的には、当該他の麻雀部屋に対応する対局管理テーブル301を新設する。ステップS09では、通知元のユーザを正規ユーザとして、ステップS05で特定された3人の既存ユーザを代走ユーザとして、新設の対局管理テーブル301に登録する。
具体的には、通知元のユーザと、3人の既存ユーザと、通知元のユーザに本来的に関連付けられているキャラクタと、3人の既存ユーザ各々に本来的に関連付けられているキャラクタと異なるキャラクタと、通知元のユーザおよび3人の既存ユーザの各々の持ち点である25000点とを、当該対局管理テーブル301に登録する。
また、通知元のユーザの属性は正規に設定し、3人の既存ユーザの属性は代走に設定する。さらに、対局の場は東1局に設定し、通知元のユーザおよび3人の既存ユーザの各々のポジションは、ステップS06の処理対象である対局管理テーブル301に設定されているポジションに合わせる。
例えば、図6に示すように、ユーザ5が麻雀部屋1の対局管理テーブル301に登録された場合は、麻雀部屋2に対応する対局管理テーブル301が新設される。新設の対局管理テーブル301には、ユーザ5と、キャラクタK5と、ユーザ5の持ち点である25000点とが登録されるとともに、既存のユーザ1、2および4と、キャラクタK6、K7およびK8と、ユーザ1、2および4の各々の持ち点である25000点とが登録される。
また、ユーザ5の属性は正規に設定され、ユーザ1、2および4の属性は代走に設定される。さらに、新設の対局管理テーブル301において、対局の場は東1局に設定され、ユーザ1、2、5および4のポジションは、西家、北家、東家、南家に設定される。
この結果、ユーザ5の対局状況は、麻雀部屋2に対応する対局管理テーブル301によって管理され、ユーザ5は、東1局から対戦を開始することができる。一方、ユーザ1、2、4の対局状況は、麻雀部屋1の対局管理テーブル301により引き続き管理され、ユーザ1、2、4は、ユーザ3が途中抜けした後も、対局を継続することができる。今回のユーザ登録処理は、ステップS09の処理の後に終了する。
図10に示す対局進行処理は、4人のユーザが登録されている対局管理テーブル301が存在する場合に、当該対局管理テーブル301を対象として対局毎に実行される。
まずステップS21では、ステップS11の処理によって新設された対局管理テーブル301のうちから、4人のユーザが登録されている対局管理テーブル301を特定する。ステップS21ではまた、当該対局管理テーブル301上の4人のユーザと同じ4人のユーザが登録されている対局管理テーブル301を、ステップS08によって新設された対局管理テーブル301のうちから特定する。
したがって、共通する4人のユーザが複数の麻雀部屋に入室している場合は、当該複数の麻雀部屋にそれぞれ対応する複数の対局管理テーブル301がステップS21の処理によって特定される。
ステップS22では、当該4人のユーザのうちのいずれかのユーザを指定する。ステップS23では、ステップS21で特定された対局管理テーブル301のうちから、当該ユーザが正規ユーザとして登録されている対局管理テーブル301を特定する。例えば、図6に示すように、麻雀部屋1に対応する対局管理テーブル301と、麻雀部屋2に対応する対局管理テーブル301とが存在する場合には、ユーザ1、2または4が指定されたときに麻雀部屋1の対局管理テーブル301が特定され、ユーザ5が指定されたときに麻雀部屋2の対局管理テーブル301が特定される。
ステップS24では、ステップS23で特定された対局管理テーブル301から4人のキャラクタと4人分の持ち点と場とを特定し、当該キャラクタと当該持ち点と当該場とをステップS22で指定されたユーザに通知する。この結果、図6の例では、麻雀部屋1の対局管理テーブル301に登録されている4人のキャラクタと4人分の持ち点と場とが、ユーザ1、2および4の各々に通知され、麻雀部屋2の対局管理テーブル301に登録されている4人のキャラクタと4人分の持ち点と場とが、ユーザ5に通知される。
ステップS25では、ステップS22で指定されたユーザに対して配牌を実行する。配牌の種類は、当該ユーザが正規ユーザとして登録されている対局管理テーブル301において当該ユーザに関連付けられているキャラクタの種類に対応する。このため、図6の例では、キャラクタK1に対応する配牌がユーザ1に対して実行され、キャラクタK2に対応する配牌がユーザ2に対して実行され、キャラクタK4に対応する配牌がユーザ4に対して実行され、キャラクタK5に対応する配牌がユーザ5に対して実行される。これによって、配牌は、麻雀部屋1および2の間で共通となる。
ステップS24およびS25の処理の結果、図6の例では、図12(A)に示す対局画面がユーザ1のユーザ端末100に表示され、図12(B)に示す対局画面がユーザ2のユーザ端末100に表示され、図12(C)に示す対局画面がユーザ4のユーザ端末100に表示され、図12(D)に示す対局画面がユーザ5のユーザ端末100に表示される。
図12(A)によれば、ユーザ1の視点(斜め上)で捉えた麻雀卓が対局画面の中央に表示され、東三局の文字列が対局画面の左上に表示される。麻雀卓の手前にはユーザ1の手牌とキャラクタK1の文字列とが表示され、麻雀卓の右側にはユーザ2の手牌とキャラクタK2の文字列とが表示され、麻雀卓の奥にはユーザ5の手牌とキャラクタK3の文字列とが表示され、麻雀卓の左側にはユーザ4の手牌とキャラクタK4の文字列とが表示される。また、麻雀卓の中央には、ユーザ1の持ち点である13000点と、ユーザ2の持ち点である33000点と、ユーザ5の持ち点である17000点と、ユーザ4の持ち点である37000点とが表示される。
図12(B)によれば、ユーザ2の視点(斜め上)で捉えた麻雀卓が対局画面の中央に表示され、東三局の文字列が対局画面の左上に表示される。麻雀卓の手前にはユーザ2の手牌とキャラクタK2の文字列とが表示され、麻雀卓の右側にはユーザ5の手牌とキャラクタK3の文字列とが表示され、麻雀卓の奥にはユーザ4の手牌とキャラクタK4の文字列とが表示され、麻雀卓の左側にはユーザ1の手牌とキャラクタK1の文字列とが表示される。また、麻雀卓の中央には、ユーザ1の持ち点である13000点と、ユーザ2の持ち点である33000点と、ユーザ5の持ち点である17000点と、ユーザ4の持ち点である37000点とが表示される。
図12(C)によれば、ユーザ4の視点(斜め上)で捉えた麻雀卓が対局画面の中央に表示され、東三局の文字列が対局画面の左上に表示される。麻雀卓の手前にはユーザ4の手牌とキャラクタK4の文字列とが表示され、麻雀卓の右側にはユーザ1の手牌とキャラクタK1の文字列とが表示され、麻雀卓の奥にはユーザ2の手牌とキャラクタK2の文字列とが表示され、麻雀卓の左側にはユーザ5の手牌とキャラクタK3の文字列とが表示される。また、麻雀卓の中央には、ユーザ1の持ち点である13000点と、ユーザ2の持ち点である33000点と、ユーザ5の持ち点である17000点と、ユーザ4の持ち点である37000点とが表示される。
図12(D)によれば、ユーザ5の視点(斜め上)で捉えた麻雀卓が対局画面の中央に表示され、東一局の文字列が対局画面の左上に表示される。麻雀卓の手前にはユーザ5の手牌とキャラクタK5の文字列とが表示され、麻雀卓の右側にはユーザ4の手牌とキャラクタK8の文字列とが表示され、麻雀卓の奥にはユーザ1の手牌とキャラクタK6の文字列とが表示され、麻雀卓の左側にはユーザ2の手牌とキャラクタK7の文字列とが表示される。また、麻雀卓の中央には、ユーザ1、2、5および4の各々の持ち点である25000点が表示される。
ステップS26では、当該4人のユーザの全てが指定されたか否かを、ステップS22の処理結果に基づいて判定する。当該4人のユーザの全てが指定されたと判定されなかったときは、ステップS22に戻る。一方、当該4人のユーザの全てが指定されたと判定されたときは、ステップS27に進む。
ステップS27では、当該4人のユーザのいずれかの操作により対局が進行したか否かを、通信IF23からの情報に基づいて判定する。対局が進行したと判定されなかったときは、ステップS28に進む。ステップS28では、当該4人のユーザのいずれかについて麻雀部屋からの途中抜けが発生したか否か(厳密には、いずれかのユーザ端末100との通信回線が接続状態から遮断状態に遷移したか否か)を、通信IF23からの情報に基づいて判定する。
当該途中抜けが発生したと判定されなかったときは、ステップS27に戻る。一方、当該途中抜けが発生したと判定されたときは、ステップS29に進み、途中抜けしたユーザの対戦をAIに引き継がせる。ステップS30では、中継ぎ管理テーブル302において当該ユーザに設定されている中継ぎフラグを、0から1に更新する。例えば、図5(B)に示す東2局の途中でユーザ3が麻雀部屋から抜けたときは、中継ぎ管理テーブル302においてユーザ3に設定されている中継ぎフラグが0から1に更新される。ステップS30の処理が完了すると、ステップS27に戻る。
ステップS27において、対局が進行したと判定されたときは、ステップS31に進む。ステップS31では、ステップS21で特定された対局管理テーブル301のうちから、今回の操作を行ったユーザが正規ユーザとして登録されている対局管理テーブル301を特定する。ステップS32では、今回の操作を行ったユーザの手牌情報および捨て牌情報を当該対局管理テーブル301上で更新する。このため、当該4人のユーザが複数の麻雀部屋で対局に臨んでいる場合、当該4人のユーザの各々の手牌および捨て牌は、麻雀部屋間で一致する。
ステップS33では、対局管理テーブル301に基づいて現時点の対局状況を特定し、当該4人のユーザの各々が操作するユーザ端末100に対して当該対局状況を通知する。当該ユーザ端末100に表示されている対局画面には、当該対局状況が反映される。具体的には、当該4人のユーザの各々の対局画面には、自ユーザの手牌と当該4人のユーザの捨て牌とが表示される。
ステップS34では、当該4人のユーザのうちのいずれかのユーザが操作するユーザ端末100から上がりが通知されたか否かを、通信IF23からの情報に基づいて判定する。当該上がりが通知されたと判定されたときは、ステップS35に進む。ステップS35では、上がり役を特定し、当該4人のユーザの各々が操作するユーザ端末100に対して当該上がり役を通知する。
一方、ステップS34において、当該上がりが通知されたと判定されなかったときは、ステップS36に進む。ステップS36では、今回の対局が流局となったか否かを、ステップS33で特定された対局状況に基づいて判定する。今回の対局が流局となったと判定されなかったときは、ステップS27に戻る。一方、今回の対局が流局となったと判定されたときは、ステップS37に進み、当該4人のユーザの各々が操作するユーザ端末100に対して流局を通知する。
ステップS35またはS37の処理が完了すると、ステップS38で清算を行う。この結果、ステップS21で特定された対局管理テーブル301に設定されている持ち点が更新される。例えば、ユーザ2がユーザ4に満貫を振り込んだときは、ユーザ2の持ち点が8000点減少し、ユーザ4の持ち点が8000点増大する。
ステップS39では、ステップS21で特定された対局管理テーブル301に設定されている場とユーザのポジションとを、次回の対局のために更新する。例えば、今回の対局が東4局であり、ユーザ1、2、5、4が南家、西家、北家、東家として当該対局に臨んだ場合は、場は南1局に更新され、ユーザ1、2、5、4のポジションは、東家、南家、西家、北家に更新される。今回の対局進行処理は、ステップS39の処理の後に終了する。
<第2の実施形態>
第1の実施形態では、対戦開始を要求したユーザは、当該ユーザと対局を途中抜けしたユーザとの関係を問われることなく、当該対局を代走することができる。これに対して、第2の実施形態では、対局を途中抜けしたユーザと予め定められた関係(フレンド関係)にあるユーザに限って、当該対局を代走することができる。
第2の実施形態は、図4(A)に示す対局管理テーブル301と、図4(B)に示す中継ぎ管理テーブル302との代わりに、図13(A)に示す対局管理テーブル401と、図13(B)に示すフレンド管理テーブル402とが、ゲームサーバ200の記憶部220に設けられ、ゲームサーバ200の制御部210が、図9に示すユーザ登録処理を実行せず、図10および図11に示す対局進行処理の代わりに、図14および図15に示す対局進行処理を実行する点を除き、第1の実施形態と同じであるため、同様の構成に関する重複した説明は省略する。
(対局管理テーブル)
図13(A)を参照して、対局管理テーブル301には、麻雀部屋に入室している4人のユーザと、当該4人のユーザがそれぞれ操作する4人のキャラクタと、当該4人のユーザ各々の持ち点と、今回の対局の場(東場/南場/西場/北場の別と、対局数)と、今回の対局における当該4人のユーザ各々のポジション(東家/南家/西家/北家の別)と、現時点における当該4人のユーザ各々の手牌を示す手牌情報と、現時点における当該4人のユーザ各々の捨て牌を示す捨て牌情報とが設定される。
(フレンド管理テーブル)
図13(B)を参照して、フレンド管理テーブル402では、対戦プレイを行うことができる複数のユーザが、縦方向および横方向に配されており、このうち互いにフレンド関係のあるユーザが丸で示される。例えば、縦方向におけるユーザ1の位置から横方向に延びる直線と、横方向におけるユーザ8の位置から縦方向に延びる直線との交点には、〇が記されており、縦方向におけるユーザ8の位置から横方向に延びる直線と、横方向におけるユーザ1の位置から縦方向に延びる直線との交点にも、〇が記されている。これは、ユーザ1とユーザ8とがフレンド関係にあることを示している。
本実施形態では、対戦プレイを行っているユーザとフレンド関係にある他のユーザは、当該対戦プレイを観戦することができる。図13(B)に示すフレンド管理テーブル402では、どのユーザが観戦中であるかも管理される。観戦中のユーザのユーザ端末100には、フレンド関係にある対戦中のユーザのユーザ端末100に表示されている対局画面と同じ対局画面が表示される。
例えば、対戦プレイを行っているユーザ1とフレンド関係にあるユーザ8が当該対戦プレイを観戦するとき、ユーザ1が操作するユーザ端末100には図16(A)に示す対局画面が表示され、ユーザ8が操作するユーザ端末100には図16(B)に示す対局画面が表示される。なお、図16(B)に示す対局画面は、図16(A)に示す対局画面と同じである。
(動作について)
図14を参照して、ステップS41では、対局管理テーブル401から4人のキャラクタと4人分の持ち点と場とを特定し、当該キャラクタと当該持ち点と当該場とを対局管理テーブル401に登録されている4人のユーザ各々に通知する。ステップS42では、当該4人のユーザ各々に対して配牌を実行する。配牌の種類は、当該4人のユーザ各々に本来的に関連付けられているキャラクタの種類に対応する。
このため、図13(A)の例では、キャラクタK1に対応する配牌がユーザ1に対して実行され、キャラクタK2に対応する配牌がユーザ2に対して実行され、キャラクタK3に対応する配牌がユーザ3に対して実行され、キャラクタK4に対応する配牌がユーザ4に対して実行される。この結果、例えばユーザ1が操作するユーザ端末100には、図16(A)に示す対局画面が表示される。
ステップS43では、当該4人のユーザのいずれかの操作により対局が進行したか否かを通信IF23からの情報に基づいて判定する。対局が進行したと判定されなかったときは、ステップS52に進む。ステップS52では、当該4人のユーザのいずれかについて麻雀部屋からの途中抜けが発生したか否か(厳密には、いずれかのユーザ端末100との通信回線が接続状態から遮断状態に遷移したか否か)を、通信IF23からの情報に基づいて判定する。
当該途中抜けが発生したと判定されなかったときは、ステップS43に戻る。一方、当該途中抜けが発生したと判定されたときは、ステップS53に進み、途中抜けしたユーザの対戦をAIに引き継がせる。ステップS54では、途中抜けしたユーザとフレンド関係にある他のユーザのうち観戦中のユーザを、フレンド管理テーブル402から特定する。
ステップS55では、当該観戦中のユーザのユーザ端末100に対して、代走アイコンの表示を通知する。当該ユーザ端末100の対局画面には、代走アイコンが表示され、観戦中のユーザは、途中抜けしたユーザの代走を促される。例えば、ユーザ1が途中抜けした場合、ユーザ8が、フレンド管理テーブル402から特定され、ユーザ8のユーザ端末100上の対局画面に代走アイコンが表示される。
ステップS56では、当該観戦中のユーザから代走を行う旨の返事があったか否かを、通信IF23からの情報に基づいて判定する。当該返事があったと判定されなかったときは、ステップS59に進み、プッシュ通知から所定時間が経過したか否かを、計測部215の計測結果に基づいて判定する。当該所定時間が経過したと判定されなかったときはステップS56に戻り、当該所定時間が経過したと判定されたときはステップS43に戻る。
ステップS56において、当該観戦中のユーザから代走を行う旨の返事があったと判定されたときは、ステップS57に進み、AIの対戦を当該観戦中のユーザに引き継がせる。具体的には、当該観戦中のユーザを、途中抜けしたユーザの代わりに対局管理テーブル401に登録する。例えばユーザ1が途中抜けした場合において、ユーザ8から代走を行う旨の返事があったときは、ユーザ1の代わりにユーザ8が対局管理テーブル401に登録される。この結果、対戦を途中抜けしたユーザの持ち点は、代走ユーザに引き継がれる。また、第2の実施形態では、対局管理テーブル401の数は、代走の有無に関係なく1つである。
ステップS58では、対戦を引き継いだユーザに対して特典(例えば、コインや宝石などの仮想通貨であり、キャラクタが装着するアクセサリや対戦スキルなどを購入するために使用)を付与する。ステップS58の処理が完了すると、ステップS43に戻る。
ステップS43において、対局が進行したと判定されたときは、ステップS44に進む。ステップS44では、対局に臨んでいる4人のユーザのうち、今回の操作を行ったユーザの手牌情報および捨て牌情報を、対局管理テーブル401上で更新する。
ステップS45では、対局管理テーブル401に基づいて現時点の対局状況を特定し、当該4人のユーザの各々が操作するユーザ端末100に対して当該対局状況を通知する。当該ユーザ端末100に表示されている対局画面には、当該対局状況が反映される。ステップS46では、当該4人のユーザのうちのいずれかのユーザが操作するユーザ端末100から上がりが通知されたか否かを、通信IF23からの情報に基づいて判定する。
当該上がりが通知されたと判定されたときは、ステップS48に進む。ステップS48では、上がり役を特定し、当該4人のユーザの各々が操作するユーザ端末100に対して当該上がり役を通知する。一方、ステップS46において、当該上がりが通知されたと判定されなかったときは、ステップS47に進む。
ステップS47では、今回の対局が流局となったか否かを、ステップS45で特定された対局状況に基づいて判定する。今回の対局が流局となったと判定されなかったときは、ステップS43に戻る。一方、今回の対局が流局となったと判定されたときは、ステップS49に進み、当該4人のユーザの各々が操作するユーザ端末100に対して流局を通知する。
ステップS48またはS49の処理が完了すると、ステップS50で清算を行う。この結果、対局管理テーブル401に設定されている持ち点が更新される。例えば、ユーザ3がユーザ2に跳満を振り込んだときは、ユーザ3の持ち点が12000点減少し、ユーザ2の持ち点が12000点増大する。
ステップS51では、対局管理テーブル401に設定されている場およびユーザのポジションを、次回の対局のために更新する。例えば、ユーザ1〜4が東家、南家、西家、北家として臨んだ東1局が終了した場合、場は東2局に更新され、ユーザ1〜4のポジションは、北家、東家、南家、西家に更新される。今回の対局進行処理は、ステップS51の処理の後に終了する。
<本実施形態の効果>
第1の実施形態および第2の実施形態によれば、いずれかのユーザが対戦の途中で抜けると、当該ユーザが操作していたキャラクタであって当該ユーザに対応するキャラクタ(キャラクタ名称等)を維持しながら、当該キャラクタの操作主体が、対戦の開始を要求している他のユーザに切り替えられる。この結果、ユーザが対戦から抜けた後も、実際のユーザ同士の対戦を行うことができ、対戦プレイの興趣性が損なわれる懸念を軽減できる。
また、第1の実施形態および第2の実施形態によれば、対戦の途中において抜けたユーザが操作していたキャラクタの操作は、AIによって中継ぎされた後に、対戦の開始を要求している他のユーザに切り替えられる。これによって、ユーザが対戦の途中で抜けることによるゲームの中断を回避できる。
さらに、第1の実施形態によれば、第1のユーザおよび第2のユーザが麻雀部屋1で対戦を行っている途中で、当該第1のユーザが当該対戦を抜けた場合に、当該第1のユーザが対戦の開始を要求している他のユーザに切り替えられたときであっても、当該第2のユーザは麻雀部屋1における対戦を継続して実行する。一方、当該他のユーザは、麻雀部屋2において対戦を新たに実行する。これによって、当該第2のユーザに麻雀部屋1において当該他のユーザと対戦を行わせることができ、当該他のユーザに麻雀部屋2において新たな対戦を行わせることができる。
また、第1の実施形態によれば、対戦情報(対局の場、ポジション、持ち点)は、対戦の進行に応じて更新されるところ、麻雀部屋1における対戦情報は、第1のユーザが抜けた後においても継続される麻雀部屋1での対戦の進行に応じて更新され、麻雀部屋2における対戦情報は、新たに対戦を開始するときの対戦情報から、麻雀部屋2での対戦の進行に応じて更新される。これによって、麻雀部屋1および2の各々における対戦の進行を、当該麻雀部屋における対戦情報に反映させることができる。
さらに、第1の実施形態によれば、対戦情報は、対戦に臨む4人のユーザ各々の持ち点を含むところ、麻雀部屋1における対戦では、ユーザが抜けたか否かに関わらず、当該対戦の進行に応じて各ユーザの持ち点を更新し、麻雀部屋2における対戦では、新たに対戦を開始するときの各ユーザの持ち点から、当該対戦の進行に応じて当該持ち点を更新する。これによって、麻雀部屋1および2の各々における対戦の進行を、当該麻雀部屋で対戦に臨むユーザの持ち点に反映させることができる。
また、第1の実施形態によれば、対局画面には、対局に臨む4人のユーザの各々に対応するキャラクタが表示されるところ、麻雀部屋1に対応する対局画面には、第1のユーザが抜けた場合であって他のユーザに切り替えられた後であっても、第1のユーザに対応するキャラクタと第2のユーザに対応するキャラクタとを含むキャラクタが表示され、麻雀部屋2に対応する対局画面には、当該他のユーザに対応するキャラクタが表示される。これによって、麻雀部屋1における対戦中にユーザが切り替わったことを、対戦から退いていないユーザに察知され難くすることができる。
さらに、第2の実施形態によれば、対戦ゲームの途中において抜けたユーザとフレンド関係にあるユーザのうちから、当該ユーザと切り替えるユーザが特定される。これによって、見ず知らずのユーザによって対戦が荒らされる懸念を軽減できる。
また、第2の実施形態によれば、対戦を行っているユーザとフレンド関係にある他のユーザは、当該対戦を観戦することができるところ、対戦の途中においてユーザが抜けた場合には、当該対戦を観戦しているユーザのうちから、当該ユーザと切り替えるユーザが特定される。これによって、速やかな対戦の引き継ぎが可能となる。
さらに、第2の実施形態によれば、対戦の途中において抜けたユーザと切り替えるユーザとして特定されたユーザに対しては、特典が付与される。対戦を引き継ぐことの動機付けをユーザに働かせることできる。
<変形例>
以上説明した実施形態の変形例などを以下に列挙する。
(1) 第1の実施形態においては、4人のユーザが複数の麻雀部屋で対戦に臨む場合、ある麻雀部屋では役牌となる風牌が、他の麻雀部屋では役牌とならない対局が起こり得る。例えば、当該4人のユーザが、麻雀部屋1において南1局に臨み、麻雀部屋2において東3局に臨む場合には、風牌の南は、麻雀部屋1では役牌となるものの、麻雀部屋2では役牌とはならない。即ち、対局によっては、上がれる役が麻雀部屋間で異なることがある。このような問題は、場風が麻雀部屋間で異なる場合に、風牌の見せ方を麻雀部屋に応じて変えることで、解決可能である。例えば、麻雀部屋1の東場が終了して南場に突入する一方で、麻雀部屋2においては東場が継続している場合に、場風が麻雀部屋間で異なることになる。このような場合、例えば、麻雀部屋1における南の風牌を、麻雀部屋2では東の風牌として表示し、麻雀部屋1における東の風牌を、麻雀部屋2では南の風牌として表示するようにしてもよい。また、当該問題は、風牌に基づいて上がることができないように、配牌やツモ牌を制御することでも解決可能である。
(2) 第1の実施形態においては、互いに異なる対局が設定されている複数の麻雀部屋において、共通のユーザに対戦を行せることを想定している。しかし、例えば、海中を舞台とするステージや、宇宙を舞台とするステージなどの複数のステージにより構成されたアクションゲームにおいて、共通のユーザに、異なるステージで対戦を行わせるようにしてもよい。この場合、例えば、同じ広がりを有する3次元の仮想世界を複数のステージ各々に設け、当該ステージでの対戦に臨む複数のユーザがそれぞれ操作する複数のキャラクタの相対位置および向きを仮想世界の間で一致させることで、ステージ間の整合性を取ることができる。
(3) 第1の実施形態においては、対戦を引き継ぐことができるユーザは、途中抜けしたユーザとの間で、フレンド関係にある必要はない。しかし、対戦を引き継ぐことができるユーザは、途中抜けしたユーザとフレンド関係にあるユーザのうちから選定するようにしてもよい。さらに、第1の実施形態においても、当該フレンド関係にあるユーザが対戦を観戦できるようにし、対戦を引き継ぐことができるユーザを観戦中のユーザのうちから選定するようにしてもよい。
(4) 第1の実施形態においては、途中抜けが発生したときに新設される麻雀部屋に入室する代走ユーザは、自分に本来的に関連付けられているキャラクタと異なるキャラクタを操作する。即ち、図6によれば、ユーザ1はキャラクタK6を操作し、ユーザ2はキャラクタK7を操作し、ユーザ4はキャラクタK8を操作する。しかし、これに代えて、当該代走ユーザは、自分に本来的に関連付けられているキャラクタ(ユーザ1はキャラクタK1、ユーザ2はキャラクタK2、ユーザ4はキャラクタK4)を操作するようにしてもよい。
(5) 第2の実施形態においては、途中抜けしたユーザの持ち点が、対戦を引き継いだユーザの持ち点として設定され、当該持ち点を基準として増減した持ち点だけが対局画面に表示される。しかし、対戦を引き継いだユーザの得失点を対局画面に追加表示するようにしてもよい。この場合、当該得失点は、例えば、途中抜けしたユーザから引き継いだ持ち点を基準として増減した持ち点の下に、括弧書きで表示される。
(6) 第2の実施形態においては、フレンド管理テーブルは、あるユーザと他のユーザとがフレンド関係にあるか否かを管理するに留まる。しかし、あるユーザと他のユーザとの親密度(より具体的には、一方のユーザが他方のユーザに対して抱く親密さの度合いと、他方のユーザが一方のユーザに対して抱く親密さの度合いの各々)についてもフレンド管理テーブルで設定し、当該親密度が高いユーザをプッシュ通知(図15のステップS56参照)の対象として優先的に選定するようにしてもよい。また、当該親密度は、対戦を引き継ぐことで高くするようにしてもよい。
(7) 第1の実施形態および第2の実施形態においては、対局に臨む4人のユーザ全員のキャラクタを対局画面に文字列で表示するようにしている。しかし、他ユーザについては、文字列を表示する一方、自ユーザのキャラクタについては、当該キャラクタの顔画像を表示するようにしてもよい。また、他ユーザのキャラクタについては、例えば当該他ユーザがツモ操作や副露操作を行う一時期に、表示するようにしてもよい。
(8) 第1の実施形態および第2の実施形態においては、麻雀ゲームを想定しているが、これに代えてポーカー、ババ抜き等のカードゲームや、こいこい等の花札ゲームを想定するようにしてもよい。
(9) 第1の実施形態においては、ユーザが途中抜けした対戦の進行度合い(残りの対局数、点数差など)にかかわらず、代走ユーザを設定可能とする例について説明した。しかし、対戦の進行度合いに応じて特定条件を満たしているときに限って代走ユーザを設定可能とするようにしてもよい。ここで、特定条件としては、例えば、現在が東場あるいは南場であることにより成立する条件や、1位と4位との点数差が所定範囲内(例えば10000点以内)であって接戦していることにより成立する条件、4位の点数が所定数以上(例えば10000点以上)であってすぐに0点以下となる可能性が低いことにより成立する条件などであってもよい。
(10) 第1の実施形態および第2の実施形態においては、通信回線が接続状態から遮断状態となり対戦から抜けざるを得なかったユーザに限り、当該対戦に復帰可能となるようにしてもよい。また、通信回線が接続状態から遮断状態となり対戦から抜けざるを得なかったユーザを、他のユーザよりも優先的に対戦に復帰させるものであってもよい。
(11) 第1の実施形態では、AIが対戦に臨んでいる状況で対戦開始を要求したユーザは、必ず代走ユーザとして設定される。しかし、AIが対戦に臨んでいる状況であっても対戦開始を要求してから所定時間経過するまでに対戦の開始要求を新たにしている他のユーザとのマッチングが成立したユーザについては、代走させることなく当該他のユーザとの対戦を開始し、対戦開始を要求してから所定時間経過してもマッチングが成立しなかったユーザについてのみ、代走ユーザとして設定し、既に対戦中の他のユーザとの対戦を開始するようにしてもよい。
(12) 第1の実施形態では、対局が終了した時点で対戦開始操作が通知されている場合に、当該対戦通知操作を行ったユーザを代走ユーザとして設定するようにしている。しかし、代走ユーザとして設定するタイミングは、これに限らず、次回の対局が開始されるまでに対戦開始操作が通知された場合に、当該対戦通知操作を行ったユーザを代走ユーザとして設定するようにしてもよい。
(13) 第2の実施形態では、観戦中のユーザのユーザ端末100に対して代走アイコンの表示を通知し、途中抜けしたユーザの代走を観戦中のユーザに促すようにしている。しかし、代走可能なユーザとしては、途中抜けしたユーザとフレンド関係にあるユーザであれば観戦中のユーザに限るものではない。例えば、途中抜けしたユーザとフレンド関係にあるユーザに対してプッシュ通知(「ユーザAの後を引き継いで報酬GETしませんか?」などといったメッセージを通知)を行うことで、当該ユーザに代走を促すようにしてもよい。
<付記>
以上の各実施形態で説明した事項を、以下に付記する。
(付記1):
本開示に示す一実施形態のある局面によれば、プロセッサ、メモリ、および通信部を備えるコンピュータ(図2のゲームサーバ200)において実行されるゲームプログラムであって、前記ゲームプログラムに基づくゲームは、複数のユーザの各々が操作するキャラクタであって当該複数のユーザの各々に対応するキャラクタにより対戦を行わせる対戦ゲームであり、前記ゲームプログラムは、前記プロセッサに、前記対戦ゲームの開始を要求しているユーザを特定する第1ステップ(図9のS02、図15のS54〜S56)と、前記第1ステップにより特定されたユーザをマッチングさせて対戦ゲームを実行させる第2ステップ(図10のS21、S25、図11のS27、S31〜S33、S38、S39、図14のS42〜S45、S51)と、前記対戦ゲームの途中においてユーザが抜けた場合に、当該ユーザが操作していたキャラクタを維持したまま、当該キャラクタの操作主体を前記第1ステップにより新たに特定されたユーザに切り替える第3ステップ(図9のS06、図15のS57)とを実行させる。
(付記2):
(付記1)において、前記ゲームプログラムは、前記プロセッサに、前記対戦ゲームの途中において抜けたユーザが操作していたキャラクタを所定のプログラム(AI)に基づいて操作させるための処理を行う第4ステップ(図11のS29、図15のS53)を実行させ、前記第3ステップは、前記第4ステップにより操作されているキャラクタの操作主体を前記第1ステップにより新たに特定されたユーザに切り替える。
(付記3):
(付記1)または(付記2)において、前記第2ステップは、第1のユーザと第2のユーザとを含むユーザをマッチングさせて開始させた第1の対戦ゲーム(麻雀部屋1における対戦)の途中において前記第1のユーザが抜けた場合であって前記第3ステップにより特定ユーザに切り替えられたときであっても、前記第2のユーザに対して当該第1の対戦ゲームを継続して実行させ、前記特定ユーザに対して前記第1の対戦ゲームとは異なる第2の対戦ゲーム(麻雀部屋2における対戦)を新たに実行させる。
(付記4):
(付記3)において、前記第2ステップは、前記対戦ゲームの進行に応じて、当該対戦ゲームに関する対戦情報(対局の場、ポジション、持ち点)を更新する更新ステップ(図10のS38、S39)を含み、前記更新ステップは、前記第1の対戦ゲームの進行に応じて、当該第1の対戦ゲームに関する第1の対戦情報を更新し、当該第1の対戦ゲームの途中において前記第1のユーザが抜けた後においても当該第1の対戦情報を継続して更新し、前記第1の対戦情報とは異なる前記第2の対戦ゲームに関する第2の対戦情報を、新たに対戦ゲームを開始するときの対戦情報から当該第2の対戦ゲームの進行に応じて更新する。
(付記5):
(付記4)において、前記対戦情報は、対戦ゲーム中におけるキャラクタ毎の得点を特定するための得点情報(持ち点)を含み、前記更新ステップは、前記第1の対戦ゲームにおいてはユーザが抜けたか否かに関わらず当該第1の対戦ゲームの進行に応じて前記第1の対戦情報に含まれる得点情報を更新し、前記第2の対戦ゲームにおいては新たに対戦ゲームを開始するときの得点情報から当該第2の対戦ゲームの進行に応じて前記第2の対戦情報に含まれる得点情報を更新する。
(付記6):
(付記3)から(付記5)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、前記対戦ゲームにおいて複数のユーザの各々に対応するキャラクタを表示させるための処理を行う第5ステップ(図10のS23、S24)を実行させ、前記第5ステップは、前記第1の対戦ゲームにおいては前記第1のユーザが抜けた場合であって前記第3ステップにより特定ユーザに切り替えられた後であっても、前記第1のユーザに対応するキャラクタと前記第2のユーザに対応するキャラクタとを含むキャラクタを表示させるための処理を行い、前記第2の対戦ゲームにおいては前記特定ユーザに対応するキャラクタを表示させるための処理を行う。
(付記7):
(付記1)から(付記6)のいずれかにおいて、前記第1ステップは、前記対戦ゲームの途中において抜けたユーザと予め定められた関係を有するユーザのうちから、当該ユーザと切り替えるユーザを特定する(図15のS55)。
(付記8):
(付記7)において、前記ゲームプログラムは、前記プロセッサに、所定ユーザを含むユーザによる対戦ゲームの進行を、当該所定ユーザと予め定められた関係(フレンド関係)を有するユーザに対して観戦させる第6ステップを実行させ、前記第1ステップは、前記対戦ゲームの途中においてユーザが抜けた場合に、当該対戦ゲームを観戦しているユーザのうちから、当該ユーザと切り替えるユーザを特定する。
(付記9):
(付記1)から(付記8)のいずれかにおいて、前記ゲームプログラムは、前記プロセッサに、前記第1ステップにより特定されたユーザのうち前記対戦ゲームの途中において抜けたユーザと切り替えるユーザとして特定されたユーザに対して特典を付与する第6ステップ(図15のS58)を実行させる。
(付記11):
本開示に示す一実施形態のある局面によれば、プロセッサ、メモリ、および通信部を備えるコンピュータ(図2のゲームサーバ200)において実行されるゲーム方法であって、前記ゲームプログラムに基づくゲームは、複数のユーザの各々が操作するキャラクタであって当該複数のユーザの各々に対応するキャラクタにより対戦を行わせる対戦ゲームであり、前記ゲーム方法は、前記コンピュータが、前記対戦ゲームの開始を要求しているユーザを特定する第1ステップ(図9のS02、図15のS54〜S56)と、前記第1ステップにより特定されたユーザをマッチングさせて対戦ゲームを実行させる第2ステップ(図10のS21、S25、図11のS27、S31〜S33、S38、S39、図14のS42〜S45、S51)と、前記対戦ゲームの途中においてユーザが抜けた場合に、当該ユーザが操作していたキャラクタを維持したまま、当該キャラクタの操作主体を前記第1ステップにより新たに特定されたユーザに切り替える第3ステップ(図9のS06、図15のS57)とを備える。
(付記12):
本開示に示す一実施形態のある局面によれば、情報処理装置(図2のゲームサーバ200)であって、ゲームプログラムを記憶する記憶部(図3の220)と、前記ゲームプログラムを実行することにより、前記情報処理装置の動作を制御する制御部(図3の210)とを備え、前記ゲームプログラムに基づくゲームは、複数のユーザの各々が操作するキャラクタであって当該複数のユーザの各々に対応するキャラクタにより対戦を行わせる対戦ゲームであり、前記制御部は、前記対戦ゲームの開始を要求しているユーザを特定する第1ステップ(図9のS02、図15のS54〜S56)と、前記第1ステップにより特定されたユーザをマッチングさせて対戦ゲームを実行させる第2ステップ(図10のS21、S25、図11のS27、S31〜S33、S38、S39、図14のS42〜S45、S51)と、前記対戦ゲームの途中においてユーザが抜けた場合に、当該ユーザが操作していたキャラクタを維持したまま、当該キャラクタの操作主体を前記第1ステップにより新たに特定されたユーザに切り替える第3ステップ(図9のS06、図15のS57)とを実行する。
〔ソフトウェアによる実現例〕
制御部110の制御ブロック(特に、作用受付部111、端末処理部112、タイマー部113、端末判定部114、表示制御部115、報酬計算部116、および送受信部117)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部110を備えた情報処理装置は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、上記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、上記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。