以下、図面を参照しつつ、本発明に係るサーバ、その制御方法、及びその制御プログラムについて説明する。ただし、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
このサーバは、その処理能力の範囲内で、同時にサービスの提供が可能な最大ユーザ数を示す最大同時提供数を敢えて限定し、ユーザの端末からのサービス提供要求に応じて、最大同時提供数以下のユーザの端末にサービスを提供する。サービスを提供中のユーザ数が最大同時提供数に達したときにさらにサービス提供要求を受信した場合には、このサーバは、その端末のユーザのユーザ情報を待機情報(例えば、待機列)に追加して、そのユーザに順番待ちをさせる。そして、サービスの提供を待つユーザの端末には、待機情報に含まれるユーザ数を表示させて、このサーバが提供するサービスに待機列ができていることを表現する。
また、このサーバは、待機情報に含まれるユーザ数が上限閾値を超えた場合には、最大同時提供数を増加させて、サービスの提供を待つユーザ数が一定数以上にならないようにする。例えば、待機列が長過ぎてユーザがサービスの提供を受けることを断念してしまいそうな場合には、最大同時提供数を増加させて、順番待ちをしているユーザ数を減少させる。このように、このサーバでは、最大同時提供数を変化させることにより、提供するサービスに対するユーザの待機列の長さを一定範囲内に制御することを図る。
以下では、上記のサーバが複数のユーザにゲームを提供するサーバであり、上記のサービスがそのゲーム内で提供されるサービスである場合を一例として説明する。特に、このサービスが、ゲーム内でユーザがアイテムを取得可能なショップか、又はゲーム内でユーザが挑戦可能な特別なステージであり、ユーザがゲーム内でそこに入場する順番待ちをするための待機列ができる場合を一例として説明する。このサービスは、特定の期間にオープンし、その期間内のみユーザが入場可能なショップ又はステージでもよい。ただし、本発明でいうサービスは、通信ネットワークを介してサーバからユーザに提供されるものであれば、ゲーム内のものには限定されず、例えば、ユーザが実際の商品を購入可能なネット通販店等のウェブサービスであってもよい。
図1は、ゲームシステム1の概略構成の一例を示す図である。ゲームシステム1は、少なくとも一台の携帯端末2と、サーバ3とを備える。
携帯端末2は、ユーザによる操作を受け付ける。また、サーバ3は、複数のユーザが各自の携帯端末2上でプレイしているゲームの進行を制御し、携帯端末2からの要求に応じて携帯端末2にサービスを提供する。携帯端末2とサーバ3とは、例えば、基地局4、移動体通信網5、ゲートウェイ6及びインターネット7等の通信ネットワークを介して相互に接続される。携帯端末2で実行されるプログラム(例えば、ゲームプログラム)と、サーバ3で実行されるプログラム(例えば、ゲーム管理プログラム)とは、UDP(User Datagram Protocol)、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol,HTTP)、TCP(Transport Control Protocol)等の通信プロトコルを用いて通信を行う。
なお、携帯端末2としては多機能携帯電話(所謂「スマートフォン」)を想定するが、本発明はこれに限定されない。携帯端末2は、本発明が適用可能であればよく、例えば、携帯電話(所謂「フィーチャーフォン」)、携帯情報端末(Personal Digital Assistant,PDA)、携帯ゲーム機、携帯音楽プレーヤ、タブレットPC、ノートPC、ウェアラブルコンピュータ、デスクトップPC等でもよい。
図2は、携帯端末2の概略構成の一例を示す図である。携帯端末2は、端末通信部21と、端末記憶部22と、操作部23と、表示部24と、端末処理部25とを備える。
端末通信部21は、所定の周波数帯を感受帯域とするアンテナを含む通信インターフェース回路を備え、携帯端末2を無線通信ネットワークに接続する。端末通信部21は、基地局4により割り当てられるチャネルを介して、基地局4との間でLTE(Long Term Evolution)、CDMA(Code Division Multiple Access)方式等による通信信号回線を確立し、基地局4との間で通信を行う。そして、端末通信部21は、端末処理部25から供給されたデータをサーバ3等に送信する。また、端末通信部21は、サーバ3等から受信したデータを端末処理部25に供給する。
端末記憶部22は、例えば、半導体メモリを備える。端末記憶部22は、端末処理部25での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、端末記憶部22は、ドライバプログラムとして、操作部23を制御する入力デバイスドライバプログラム、表示部24を制御する出力デバイスドライバプログラム等を記憶する。また、端末記憶部22は、アプリケーションプログラムとして、ゲームを進行させ、その結果を表示するゲームプログラム等を記憶する。また、端末記憶部22は、データとして、ユーザの識別番号(ユーザID)、ゲームに関する画像データ、映像データ等を記憶する。さらに、端末記憶部22は、所定の処理に係る一時的なデータを記憶してもよい。
操作部23は、携帯端末2の操作が可能であればどのようなデバイスでもよく、例えば、タッチパネル、キーボタン等である。ユーザは、操作部23を用いて、文字、数字、記号等を入力することができる。操作部23は、ユーザにより操作されると、その操作に対応する信号を発生させる。そして、発生した信号は、ユーザの指示として、端末処理部25に供給される。
表示部24も、映像、画像等の表示が可能であればどのようなデバイスでもよく、例えば、液晶ディスプレイ、有機EL(Electro−Luminescence)ディスプレイ等である。表示部24は、例えば液晶タッチパネルディスプレイにより操作部23と一体化されていてもよい。表示部24は、端末処理部25から供給された画像データに応じた画像、映像データに応じた映像等を表示する。
端末処理部25は、一又は複数個のプロセッサ及びその周辺回路を備える。端末処理部25は、例えばCPU(Central Processing Unit)であり、携帯端末2の全体的な動作を統括的に制御する。端末処理部25は、端末記憶部22に記憶されているプログラム、操作部23の操作等に基づいて携帯端末2の各種処理が適切な手順で実行されるように、端末通信部21、表示部24等の動作を制御する。端末処理部25は、端末記憶部22に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、端末処理部25は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
図3(a)〜図3(c)及び図4(a)〜図4(c)は、表示部24に表示される画面の一例を示す図である。ここで、図3(a)〜図4(c)を参照しながら、ゲームシステム1で提供されるサービスに関する待機列の処理の概略を説明する。
図3(a)は、ゲーム進行画面300の一例を示す。ゲーム進行画面300には、通常ゲーム画面302及びサービス選択ボタン304が表示されている。通常ゲーム画面302には、ユーザがプレイしているゲームの画像等が表示される。また、サービス選択ボタン304として、図3(a)では、「ショップa」ボタン、「ステージb」ボタン及び「ステージc」ボタンが表示されている。ユーザがこれらのいずれかのボタンを押下すると、対応するサービスに関する画面が表示される。
図3(b)は、図3(a)のサービス選択ボタン304のうち「ショップa」ボタンが押下されたときに表示される待機選択画面320の一例を示す。待機選択画面320には、サービス表示ウィンドウ322、情報表示ウィンドウ324、「並ぶ」ボタン326及び「並ばない」ボタン328が表示されている。
サービス表示ウィンドウ322には、ショップaへの入場を待つユーザの待機列に関するメッセージが表示されている。情報表示ウィンドウ324では、ショップaのサービス終了時刻までの残り時間(1時間32分)が上段に表示され、ショップaへの入場を待つユーザ数(30人)が下段に表示されている。このように、順番待ちをしているユーザ数を表示することにより、その人数から、ユーザはショップaがどの程度人気のあるサービスであるかを認識することができる。なお、このゲームでは、サービス終了時刻までに自分の順番が来なかった場合、待機列に加わっていてもショップaには入場できないものとするが、サービス終了時刻までに待機列に加わっていればサービス終了時刻の経過後でも入場できるようにしてもよい。また、ショップaは販売するアイテムの数量が限定されている数量限定のショップでもよく、その場合には、情報表示ウィンドウ324の上段において、残り時間ではなく、限定数のうちの残り個数を表示してもよい。
ユーザが「並ぶ」ボタン326を押下すると、ショップaへの入場を待つ31人目のユーザとして、このユーザは待機列に加えられる。一方、ユーザが「並ばない」328ボタンを押下すると、このユーザは待機列に加わらないで、例えば再び図3(a)のゲーム進行画面300が表示される。
なお、ショップaに待機列がない場合は、順番待ちをする必要がないので、図3(a)のゲーム進行画面300で「ショップa」ボタンが押下されると、図3(b)の待機選択画面320は表示されずに、後述する図4(c)のサービス提供画面420が表示される。
図3(c)は、図3(b)の待機選択画面320で「並ぶ」ボタン326が押下されたときに表示される即時入場選択画面340の一例を示す。即時入場選択画面340には、サービス表示ウィンドウ342、情報表示ウィンドウ344、「取得する」ボタン346及び「取得しない」ボタン348が表示されている。
サービス表示ウィンドウ342には、即時入場券の取得を促すメッセージが表示されている。即時入場券は、特定のゲーム媒体の一例であり、ゲーム内で得られるポイントを使用して取得することにより、すぐにショップ等に入場することができるアイテムである。このゲームでは、特定のゲーム媒体を取得したユーザの携帯端末2からのサービス提供要求に対しては、サービス提供中のユーザ数に拘わりなく、そのサービスが提供される。即ち、特定のゲーム媒体を取得したユーザは、待機列に加わらなくてもすぐにサービスの提供を受けることができる。なお、特定のゲーム媒体は、ショップ等への入場時にポイントを使用して取得するものに限らず、例えばゲーム内で取得可能な別のアイテム等であってもよい。
情報表示ウィンドウ344では、下段に「31人/31人」と表示されている。これは、このユーザがショップaに入場してサービスの提供を受けるまでの順番が、サービスの提供を待つ全31人のユーザのうち31人目であることを示す。
ユーザが「取得する」ボタン346を押下すると、このユーザは100ポイントを使用して即時入場券を取得し、ショップaにすぐに入場することができる。一方、ユーザが「取得しない」ボタン348を押下すると、ショップaへの入場を待つ31人目のユーザとして、このユーザは待機列に加えられたままとなる。
図4(a)は、図3(c)の即時入場選択画面340で「取得しない」ボタン348を押下されたときに表示されるゲーム進行画面400の一例を示す。ゲーム進行画面400には、通常ゲーム画面402と、情報表示ウィンドウ404が表示されている。
通常ゲーム画面402には、通常ゲーム画面302と同様に、ユーザがプレイしているゲームの画像等が表示される。また、情報表示ウィンドウ404では、図3(c)の情報表示ウィンドウ344と変わらず、このユーザの順番がサービスの提供を待つ全31人のユーザのうち31人目であることが示されている。このように、ユーザが通常ゲーム画面402においてゲームをプレイしながら、サービスの提供を待つことができるようにしてもよい。あるいは、サービスの提供を待つ間、ユーザはゲームをプレイできないようにしてもよい。また、ゲーム進行画面400でも、図3(a)のサービス選択ボタン304と同様のボタンを表示して、同じユーザが同時に複数のサービスの待機列に加われるようにしてもよい。あるいは、1つのサービスの提供を待つ間、ユーザは他のサービスの提供を受けることができないようにしてもよい。
図4(b)は、このユーザがショップaでサービスの提供を受ける順番が来たときに表示される順番通知画面410の一例を示す。順番通知画面410には、サービス表示ウィンドウ412、情報表示ウィンドウ414、「入場する」ボタン416及び「入場しない」ボタン418が表示されている。
サービス表示ウィンドウ412には、このユーザが今から1時間後までショップaに入場できる旨のメッセージが表示されている。このように、サービスの提供を待ったユーザには、自分の順番が来たときだけでなく、順番が来た後の予め定められた期間(この例では1時間)内であればそのサービスの提供を受けられるようにしてもよい。
ユーザが「入場する」ボタン416を押下すると、このユーザはショップaに入場することができる。一方、ユーザが「入場しない」ボタン418を押下すると、このユーザはショップaに入場せずに、例えば再び図3(a)のゲーム進行画面300が表示される。なお、ここでユーザがショップaに入場しなかった場合、上記の制限時間内はゲーム進行画面内に図4(b)の「入場する」ボタン416と同様のボタンを表示して、ユーザが後からショップaに入場できるようにしてもよい。
図4(c)は、ユーザがショップaに入場したときに表示されるサービス提供画面420の一例を示す。サービス提供画面420には、サービス表示ウィンドウ422、情報表示ウィンドウ424、商品選択ボタン426及び「退場」ボタン428が表示されている。
サービス表示ウィンドウ422には、例えば、ユーザが選択した商品の詳細情報が表示される。商品選択ボタン426として、図4(c)では、「商品A」ボタン及び「商品C」ボタンが表示されている。ユーザは、これらのボタンを押下すると、それぞれ、自分が所有するポイントから200ポイント又は400ポイントを使用して、対応する商品を取得することができる。こうしたショップでは、例えば、並ぶ商品数は固定しておき、ユーザが入場するたびに商品ラインナップを抽選により変化させてもよい。また、ユーザがショップに入場するときに、ある確率で特定の商品のセールを発生させてもよい。
ユーザが「退場」ボタン428を押下すると、ユーザはショップaから退場し、例えば再び図3(a)のゲーム進行画面300に戻る。なお、「退場」ボタン428を押下されたときには、ゲーム進行画面に戻る前に、退場してよいかどうかをユーザに確認するための画面を表示してもよい。
以上の機能を実現するために、端末処理部25は、ゲーム進行部251と、入退場処理部252と、サービス処理部253と、順番待ち処理部254とを備える。これらの各部は、端末処理部25が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとして携帯端末2に実装されてもよい。
ゲーム進行部251は、ゲームシステム1が提供するゲームの開始及び進行を制御する。また、ゲーム進行部251は、ゲームの進行中に、通常ゲーム画面302の画像データ等と、ユーザがゲーム内のショップ等のサービスを選択するためのサービス選択ボタン304とを配置したゲーム進行画面300を構成し、表示部24に出力する。そして、ユーザにより操作部23を介してサービス選択ボタン304が操作されたときに、ゲーム進行部251は、入退場処理部252に処理の実行を指示する。また、ゲーム進行部251は、ユーザにより操作部23を介して他の処理が指示された場合には、その処理を実行する。
入退場処理部252は、ユーザにより操作部23を介してサービス選択ボタン304が操作されたときに、端末通信部21を介してサーバ3に、そのユーザの識別番号(ユーザID)及び対応するサービスの識別番号(サービスID)を含むサービス提供要求を送信する。そして、現在サービス提供が可能である旨の応答をサーバ3から端末通信部21を介して受信した場合には、入退場処理部252は、サービス処理部253に処理の実行を指示する。一方、現在サービス提供が不可である旨の応答をサーバ3から受信した場合には、入退場処理部252は、そのサービスの提供を待つ待機列に加わるか否かをユーザに選択させるための待機選択画面320を構成し、表示部24に出力する。
待機選択画面320でユーザにより「並ぶ」ボタン326が操作された場合には、入退場処理部252は、即時入場券を取得してすぐにサービスの提供を受ける(ショップ等に入場する)か否かをユーザに選択させるための即時入場選択画面340を構成し、表示部24に出力する。一方、待機選択画面320でユーザにより「並ばない」ボタン328が操作された場合には、入退場処理部252は、端末通信部21を介してサーバ3に、そのユーザの識別番号及び対応するサービスの識別番号を含むサービス中止要求を送信する。
また、即時入場選択画面340でユーザにより「取得する」ボタン346が操作された場合には、入退場処理部252は、端末通信部21を介してサーバ3にそのユーザの識別番号及び対応するサービスの識別番号を含む即時入場要求を送信し、サービス処理部253に処理の実行を指示する。一方、即時入場選択画面340でユーザにより「取得しない」ボタン348が操作された場合には、入退場処理部252は、端末通信部21を介してサーバ3にそのユーザの識別番号及び対応するサービスの識別番号を含む待機列追加要求を送信し、順番待ち処理部254に処理の実行を指示する。
また、ユーザがサービスの提供を受ける順番が来たときに表示される順番通知画面410にて、ユーザにより「入場する」ボタン416が操作された場合には、入退場処理部252は、端末通信部21を介してサーバ3に、そのユーザの識別番号、サービスの識別番号及びそのユーザの順番が来た旨の情報を含むサービス提供要求を送信する。そして、入退場処理部252は、サービス処理部253に処理の実行を指示する。なお、順番通知画面410にて、ユーザにより「入場しない」ボタン418が操作された場合には、入退場処理部252は、予め定められた期間内だけ、例えばゲーム進行部251が構成するゲーム進行画面300内に「入場する」ボタンを配置して、ユーザが後からサービス提供を受けられるようにしてもよい。
また、サービス提供画面420でユーザにより「退場」ボタン428が操作された場合には、入退場処理部252は、端末通信部21を介してサーバ3にそのユーザの識別番号及び対応するサービスの識別番号を含むサービス終了要求を送信する。
サービス処理部253は、ユーザがサーバ3からサービスの提供を受けるときに、サービス提供画面420を構成し、表示部24に出力する。そして、サービス処理部253は、端末通信部21を介してサーバ3と、そのサービスに必要なデータをやり取りして、サーバ3が提供するサービスに関する処理を行う。例えば、そのサービスがゲーム内でアイテムを提供するショップである場合には、サービス処理部253は、そのショップで提供されるアイテムのデータをサーバ3から受信する。そして、ユーザが自己のポイントを消費していずれかの取得する場合には、サービス処理部253は、例えば消費するポイントと取得するアイテムの識別番号をサーバ3に送信する。
順番待ち処理部254は、ユーザがあるサービスの待機列に加わっているときに、端末通信部21を介してサーバ3から、その待機列に含まれるユーザ数及びこのユーザの順位(このユーザが何番目にサービス提供を受けられるかを示す値)を受信する。そして、順番待ち処理部254は、ゲーム進行部251が構成するゲーム進行画面300内に、そのユーザ数及び順位を表示させる(即ち、ゲーム進行画面400を構成する)。そのユーザがサービスの提供を受ける順番が来たことを示す通知がサーバ3から受信された場合には、順番待ち処理部254は、その旨をユーザに通知する順番通知画面410を構成し、表示部24に出力する。
図5は、サーバ3の概略構成の一例を示す図である。サーバ3は、サーバ通信部31と、サーバ記憶部32と、サーバ処理部33とを備える。
サーバ通信部31は、サーバ3をインターネット7に接続するための通信インターフェース回路を備え、インターネット7との間で通信を行う。そして、サーバ通信部31は、携帯端末2等から受信したデータをサーバ処理部33に供給する。また、サーバ通信部31は、サーバ処理部33から供給されたデータを携帯端末2等に送信する。
サーバ記憶部32は、例えば、磁気テープ装置、磁気ディスク装置、フラッシュメモリ、又は光ディスク装置のうちの少なくともいずれか一つを備える。サーバ記憶部32は、サーバ処理部33での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、サーバ記憶部32は、アプリケーションプログラムとして、ゲームを制御するためのゲーム管理プログラム等を記憶する。また、サーバ記憶部32は、データとして、ゲームに関する画像データ等に加えて、サーバ3が提供するサービスを管理するサービステーブル(図6(a))、ゲームシステム1のユーザを管理するユーザテーブル(図6(b))、及び各サービスの提供を待つユーザの待機列を記憶する待機情報テーブル(図6(c))を記憶する。また、サーバ記憶部32は、サーバ3の余剰提供能力を示す空き同時提供数を記憶してもよい。さらに、サーバ記憶部32は、所定の処理に係る一時的なデータを記憶してもよい。
図6(a)〜図6(c)は、サーバ記憶部32に記憶される各種テーブルのデータ構造の一例を示す図である。
図6(a)は、サービステーブルの一例を示す。サービステーブルには、サーバ3が提供する各サービスについて、そのサービスのサービスID、サービス名、最大同時提供数、サービス提供中のユーザID、待機列の長さ、上限閾値、下限閾値及び提供期間が記憶される。最大同時提供数は、同時にそのサービスを提供可能な最大ユーザ数であり、適宜増減されることがある。待機列の長さは、そのサービスの提供を待つユーザの待機列に含まれるユーザ数である。上限閾値及び下限閾値は、そのサービスの提供を待つユーザの待機列の長さについて設定された閾値である。また、提供期間は、ユーザがそのサービスの提供を受けることができる期間である。図6(a)に示したS001〜S003のサービスにはすべて提供期間が設定されているが、サーバ3が提供するサービスは、期間の限定がないものでもよく、数量限定サービスや会員限定サービスであってもよい。
図6(b)は、ユーザテーブルの一例を示す。ユーザテーブルには、ゲームシステム1に登録されている各ユーザについて、そのユーザのユーザID、名前、そのユーザが所持するポイント等が記憶される。ユーザテーブルに記憶されるユーザID等は、ユーザ情報の一例である。なお、ユーザIDは、ユーザを識別できればよいため、そのユーザの携帯端末2のID、電話番号、又はメールアドレス等であってもよい。
図6(c)は、待機情報テーブルの一例を示す。待機情報テーブルには、サービステーブルに含まれる各サービスについて、そのサービスの提供を要求したユーザのユーザIDが、その要求があった順番に記憶される。待機情報テーブルは、配列又は連結リスト等のデータ構造で実装される。この待機情報テーブルは、待機情報の一例であり、サービスの提供を待つユーザのユーザ数及び各ユーザの順位の情報を含む。なお、上記の待機列の長さとは、対象のサービスについて、待機情報テーブルに含まれるユーザ数のことである。また、サービスIDがS003であるステージcのサービスは、図6(a)に示すように待機列の長さが0であるため、待機情報テーブルにはユーザIDが記憶されていない。
サーバ処理部33は、一又は複数個のプロセッサ及びその周辺回路を備える。サーバ処理部33は、例えばCPUであり、サーバ3の全体的な動作を統括的に制御する。サーバ処理部33は、サーバ記憶部32に記憶されているプログラム(例えば、オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム)等に基づいて、サーバ3の各種処理が適切な手順で実行されるように、サーバ通信部31等の動作を制御する。また、サーバ処理部33は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
サーバ処理部33は、サーバ制御部331と、入場制御部332と、退場制御部333と、サービス提供部334と、待機情報管理部335と、最大数設定部336とを備える。これらの各部は、サーバ処理部33が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとしてサーバ3に実装されてもよい。
サーバ制御部331は、サーバ3の動作を制御し、適宜、入場制御部332、退場制御部333等に処理の実行を指示する。具体的には、サーバ制御部331は、サーバ通信部31を介して携帯端末2からサービス提供要求を受信すると、入場制御部332に処理の実行を指示する。また、サーバ制御部331は、サーバ通信部31を介して携帯端末2からサービス終了要求を受信すると、退場制御部333に処理の実行を指示する。また、サーバ制御部331は、サーバ通信部31を介して携帯端末2から他の要求を受信した場合には、その処理を実行して、ゲームの進行の制御等を行う。
入場制御部332は、サーバ通信部31を介してサーバ制御部331がサービス提供要求を受信すると、そのサービス提供要求に含まれる情報から、対象のユーザがサービスの提供を受ける順番が来たユーザ(以下、「順位0のユーザ」という)であるか否かを判定する。順位0のユーザの場合には、入場制御部332は、受信されたサービス提供要求に含まれるユーザIDをサービス提供中のユーザとしてサービステーブルに記憶し、サービス提供部334に処理の実行を指示する。
受信されたサービス提供要求が順位0のユーザからのものでない場合には、入場制御部332は、そのサービス提供要求に含まれるサービスIDをキーとしてサービステーブルを参照し、対象のサービスについて、最大同時提供数、サービス提供中のユーザ数及び待機列の長さを取得する。そして、入場制御部332は、取得されたサービス提供中のユーザ数が最大同時提供数未満であるか否かを判定する。サービス提供中のユーザ数が最大同時提供数未満である場合には、入場制御部332は、受信されたサービス提供要求に含まれるユーザIDをサービス提供中のユーザとしてサービステーブルに記憶し、サービス提供部334に処理の実行を指示する。
サービス提供中のユーザ数が最大同時提供数以上である場合には、入場制御部332は、サービス提供要求に含まれるユーザIDをもつユーザの携帯端末2に、サーバ通信部31を介して、取得した待機列の長さ(サービスの提供を待つユーザ数)を送信する。これに応じて、そのユーザの携帯端末2からサービス中止要求を受信した場合には、入場制御部332は、そのユーザに対するそのサービスの提供に関する処理を中止する。また、そのユーザの携帯端末2から即時入場要求を受信した場合には、入場制御部332は、サービス提供中のユーザ数に拘わりなく、サービス提供部334に処理の実行を指示する。また、そのユーザの携帯端末2から待機列追加要求を受信した場合には、入場制御部332は、待機情報管理部335に処理の実行を指示する。
退場制御部333は、サーバ通信部31を介してサーバ制御部331がサービス終了要求を受信すると、そのサービス提供終了要求に含まれるサービスIDをキーとしてサービステーブルを参照し、対象のサービスについて記憶されている「サービス提供中のユーザID」から、サービス終了要求に含まれるものと同じユーザIDを削除する。このとき、退場制御部333は、サービステーブルから、対象のサービスについての待機列の長さ、サービス提供中のユーザ数及び最大同時提供数を取得する。そして、待機列の長さが0でなく(即ち、サービスの提供を待つユーザが存在し)、且つサービス提供中のユーザ数が最大同時提供数未満になった場合には、退場制御部333は、待機情報管理部335に処理の実行を指示する。
サービス提供部334は、携帯端末2からのサービス提供要求に応じて、最大同時提供数以下の携帯端末2にサービスを提供する。ただし、サービス提供部334は、特定のゲーム媒体を取得したユーザの携帯端末2からのサービス提供要求に対しては、サービスを提供中のユーザ数に拘わりなくそのサービスを提供する。例えば、所有するポイントを消費して即時入場券を取得したユーザの携帯端末2からサーバ制御部331が即時入場要求を受信すると、サービス提供部334は、ユーザの待機列ができていても、そのユーザの携帯端末2にサービスを提供する。サービス提供部334は、サービスの提供に際し、サーバ通信部31を介して対象の携帯端末2のサービス処理部253とそのサービスに必要なデータをやり取りして、そのサービスに関する処理をサービス処理部253に実行させる。
待機情報管理部335は、サービスを提供中のユーザ数が最大同時提供数以上であり、且つサービスを提供していない携帯端末2からサービス提供要求を受信した場合、そのサービス提供要求に含まれるユーザIDを待機情報テーブルに追加する。即ち、待機情報管理部335は、最大同時提供数の限定によりサービスの提供を受けられないユーザのユーザIDを待機情報テーブルに追加することで、キュー状態にしておく。
また、サーバ通信部31を介して携帯端末2からサービス終了要求が受信されたか、又は最大数設定部336が最大同時提供数を増加させたことに応じて、サービス提供中のユーザ数が最大同時提供数未満になった場合には、待機情報管理部335は、待機情報テーブルから、対象のサービスについての順位が小さい(最小の)ユーザのユーザIDを削除する。そして、待機情報管理部335は、サーバ通信部31を介してそのユーザの携帯端末2に、そのユーザがサービスの提供を受ける順番が来たことを示す通知を送信する。また、待機情報管理部335は、対象のサービスについて待機情報テーブルに含まれる各ユーザIDの順位を減らして更新し、サーバ通信部31を介して各ユーザIDに対応するユーザの携帯端末2に、現在の待機列中のユーザ数及び新たな順位を送信する。
最大数設定部336は、待機情報に含まれるユーザ数が上限閾値を超えた場合には、最大同時提供数を増加させる。待機情報に含まれるユーザ数の上限閾値と最大同時提供数には、サーバ3の処理能力の範囲内で余裕がある初期値をサービスごとに予め設定し、サーバ記憶部32に記憶しておく。即ち、サーバ3では、最初は同時に処理できるユーザ数を敢えて限定し、その限定のためにサービスの提供を受けられないユーザのユーザIDを待機情報テーブルに追加することで、サービスの提供を待つユーザの待機列ができていることを表現する。そして、最大数設定部336は、待機情報テーブルに含まれるユーザ数が上限閾値を超えたら、最大同時提供数を増加させることで、サービスの提供を待つユーザ数を一定範囲内に制御して、待機列が長くなり過ぎないようにする。
また、サービスの提供を待つユーザの待機列ができているとそのサービスは価値が高くなる傾向があるため、各サービスにある程度の長さの待機列ができるようにすることが好ましい。そこで、最大数設定部336は、待機情報に含まれるユーザ数が下限閾値未満になった場合には、最大同時提供数を減少させる。この下限閾値も、上記の上限閾値以下の値として、サービスごとに予め設定し、サーバ記憶部32に記憶しておく。なお、最大数設定部336による最大同時提供数の変動幅にも、上限閾値と下限閾値を設けてもよい。
最大数設定部336は、待機情報に含まれるユーザ数と上限閾値との差分に応じて最大同時提供数を増加させてもよい。例えば、最大数設定部336は、待機情報に含まれるユーザ数が1人増えたら最大同時提供数も1人余分に増やしてもよい。あるいは、最大数設定部336は、例えば待機情報に含まれるユーザ数が上限閾値より10%増えたら最大同時提供数も10%余分に増やしてもよい。
同様に、最大数設定部336は、待機情報に含まれるユーザ数と下限閾値との差分に応じて最大同時提供数を減少させてもよい。例えば、最大数設定部336は、待機情報に含まれるユーザ数が1人減ったら最大同時提供数も1人余分に減らしてもよい。あるいは、最大数設定部336は、例えば待機情報に含まれるユーザ数が下限閾値より10%減ったら最大同時提供数も10%余分に減らしてもよい。
また、サーバ3の余剰提供能力を表す空き同時提供数をサーバ記憶部32に予め記憶しておき、最大数設定部336は、この空き同時提供数以下の範囲内で最大同時提供数を増加させてもよい。空き同時提供数とは、サーバ3が各サービスの最大同時提供数に割り当てることができる残りの数であり、サーバ3の処理能力の限界を示す値に相当する。また、最大数設定部336は、空き同時提供数以下の範囲内で最大同時提供数を増加させるときは、最大同時提供数の減少数に応じてこの空き同時提供数を増加させて、その値を更新してもよい。
あるいは、最大数設定部336は、待機情報に含まれるユーザ数が上限閾値を超えた場合に最大同時提供数を増加させるのではなく、そのユーザ数が上限閾値と下限閾値の間にあるときでも、待機情報に含まれるユーザ数に応じた増加量で最大同時提供数を増加させてもよい。例えば、待機情報に含まれるユーザ数の上限閾値を800人とし、下限閾値を500人として、待機列の長さを、500人〜800人の範囲内に制御するとする。このとき、最大数設定部336は、例えば、待機情報に含まれるユーザ数が500人を超えたらユーザ数が1人増えるごとに最大同時提供数を0.5人増やし、その最大同時提供数の増加量をユーザ数が800人に近くなるにつれて大きくしてもよい。例えば、最大数設定部336は、待機情報に含まれるユーザ数が800人に近くなるにつれて、待機情報に含まれるユーザ数が1人増えたときの最大同時提供数の増加量を、0.5人、0.6人、0.7人、・・・、1人というように徐々に大きくしてもよい。このようにして、最大数設定部336は、待機列が長くなるにつれてその長さが増加するスピードを遅くして、待機情報に含まれるユーザ数が上限閾値の800人を超えないようにしてもよい。
同様に、最大数設定部336は、待機情報に含まれるユーザ数が下限閾値未満になった場合に最大同時提供数を減少させるのではなく、そのユーザ数が上限閾値と下限閾値の間にあるときでも、待機情報に含まれるユーザ数に応じた減少量で最大同時提供数を減少させてもよい。
なお、サービス提供部334は、待機情報テーブルからユーザIDが削除されたユーザ(順位0のユーザ)の携帯端末2から予め定められた期間内に受信されたサービス提供要求に応じて、そのユーザの携帯端末2にサービスを提供してもよい。この場合、待機情報管理部335は、ユーザがサービスの提供を受ける順番が来たときの時刻を、対象のユーザID及びサービスIDと関連付けて、サーバ記憶部32に記憶しておく。そして、入場制御部332は、順位0のユーザからのサービス提供要求が受信されたときに、サーバ記憶部32に記憶されている時刻からの経過時間が予め定められた期間内である場合に、サービス提供部334に処理の実行を指示すればよい。
図7〜図9は、端末処理部25の動作フローの一例を示す図である。以下に説明する動作フローは、予め端末記憶部22に記憶されているプログラムに基づいて、主に端末処理部25により、携帯端末2の各要素と協働して実行される。
図7は、ゲーム進行部251の動作フローの一例を示す図である。ユーザが操作部23を介して端末処理部25にゲームの開始を指示すると、端末処理部25は、ゲームプログラムに基づいて処理を開始する。そして、ゲーム進行部251は、ゲームの進行中にゲーム進行画面300を表示部24に表示させる(ステップS100)。表示されたゲーム進行画面300に含まれるいずれかのサービス選択ボタン304がユーザにより操作部23を介して操作される(ステップS101でYes)と、ゲーム進行部251は、入退場処理部252に、後述する入退場処理の実行を指示する(ステップS102)。
その後、動作フローは再びステップS100に戻る。一方、ユーザによりサービス選択ボタン304が操作されていない(ステップS101でNo)ときは、ゲーム進行部251はゲームを進行させる処理を行う(ステップS103)。そして、動作フローは再びステップS100に戻る。ゲーム進行部251の動作フローでは、以上の処理が繰り返される。
図8は、入退場処理部252による入退場処理の動作フローの一例を示す図である。まず、入退場処理部252は、対象のユーザのユーザID及び対象のサービスのサービスIDを含むサービス提供要求をサーバ3に送信する(ステップS120)。
そして、現在サービス提供が可能である旨の応答をサーバ3から受信した場合(ステップS121でYes)には、入退場処理部252は、サービス処理部253に、サーバ3が提供するサービスに関する処理を実行させる(ステップS122)。その後、サービス提供画面420でユーザにより「退場」ボタン428が操作されると、入退場処理部252は、そのユーザのユーザID及び対象のサービスのサービスIDを含むサービス終了要求をサーバ3に送信して(ステップS123)、処理を終了する。
一方、現在サービス提供が不可である旨の応答をサーバ3から受信した場合(ステップS121でNo)には、入退場処理部252は、そのサービスについての待機列の長さをサーバ3から受信する(ステップS124)。そして、入退場処理部252は、待機選択画面320を表示部24に表示させる(ステップS125)。待機選択画面320でユーザにより「並ばない」ボタン328が操作された場合(ステップS126でNo)には、入退場処理部252は、そのユーザのユーザID及び対象のサービスのサービスIDを含むサービス中止要求をサーバ3に送信して(ステップS127)、処理を終了する。
一方、待機選択画面320でユーザにより「並ぶ」ボタン326が操作された場合(ステップS126でYes)には、入退場処理部252は、即時入場選択画面340を表示部24に表示させる(ステップS128)。即時入場選択画面340でユーザにより「取得する」ボタン346が操作された場合(ステップS129でYes)には、入退場処理部252は、そのユーザのユーザID及び対象のサービスのサービスIDを含む即時入場要求をサーバ3に送信する(ステップS130)。その後、動作フローはステップS122に進む。
一方、即時入場選択画面340でユーザにより「取得しない」ボタン348が操作された場合(ステップS129でNo)には、入退場処理部252は、そのユーザのユーザID及び対象のサービスのサービスIDを含む待機列追加要求をサーバ3に送信する(ステップS131)。そして、入退場処理部252は、順番待ち処理部254に、後述する順番待ち処理の実行を指示する(ステップS132)。
その後、そのユーザがサービス提供を受ける順番が来たときに表示される順番通知画面410にて、ユーザにより「入場する」ボタン416が操作された場合(ステップS133でYes)には、動作フローはステップS122に進む。一方、順番通知画面410でユーザにより「入場しない」ボタン418が操作された場合(ステップS133でNo)には、入退場処理部252は処理を終了する。
図9は、順番待ち処理部254による順番待ち処理の動作フローの一例を示す図である。まず、順番待ち処理部254は、対象のユーザが加わっている待機列に含まれるユーザ数(待機列の長さ)及びそのユーザの順位をサーバ3から受信する(ステップS140)。そして、順番待ち処理部254は、そのユーザ数及び順位の情報を含むゲーム進行画面400を表示部24に表示させる(ステップS141)。その後、対象のユーザがサービスの提供を受ける順番が来たことを示す通知がサーバ3から受信された場合(ステップS142でYes)には、順番待ち処理部254は、順番通知画面410を表示部24に表示させて(ステップS143)、処理を終了する。
一方、対象のユーザがサービスの提供を受ける順番が来たことを示す通知が受信されていなければ(ステップS142でNo)、動作フローはステップS140に戻り、以上の処理が繰り返される。
図10〜図12は、サーバ処理部33の動作フローの一例を示す図である。以下に説明する動作フローは、予めサーバ記憶部32に記憶されているプログラムに基づいて、主にサーバ処理部33により、サーバ3の各要素と協働して実行される。
図10は、サーバ制御部331の動作フローの一例を示す図である。まず、サーバ制御部331は、携帯端末2からサービス提供要求を受信すると(ステップS200でYes)、入場制御部332に、後述する入場制御の実行を指示する(ステップS201)。その後、動作フローはステップS200に戻る。一方、サービス提供要求を受信していない場合(ステップS200でNo)には、動作フローはステップS202に進む。
そして、サーバ制御部331は、携帯端末2からサービス終了要求を受信すると(ステップS202でYes)、退場制御部333に、後述する退場制御の実行を指示する(ステップS203)。その後、動作フローはステップS200に戻る。一方、サービス終了要求を受信していない場合(ステップS202でNo)も、動作フローはステップS200に戻る。サーバ制御部331の動作フローでは、以上の処理が繰り返される。
図11は、入場制御部332による入場制御の動作フローの一例を示す図である。まず、入場制御部332は、受信されたサービス提供要求に含まれる情報から、対象のユーザが順位0のユーザであるか否かを判定する(ステップS220)。対象のユーザが順位0である場合(ステップS220でYes)には、動作フローは後述するステップS223に進む。一方、対象のユーザが順位0でない場合(ステップS220でNo)には、入場制御部332は、サービステーブルを参照し、対象のサービスについて、最大同時提供数、サービス提供中のユーザ数及び待機列の長さを取得する(ステップS221)。
サービス提供中のユーザ数が最大同時提供数未満である場合(ステップS222でYes)には、入場制御部332は、受信されたサービス提供要求に含まれるユーザIDをサービス提供中のユーザとしてサービステーブルに記憶する(ステップS223)。そして、入場制御部332は、サービス提供部334に対象のサービスの提供を指示する(ステップS224)。これにより、入場制御部332は処理を終了する。
一方、サービス提供中のユーザ数が最大同時提供数以上である場合(ステップS222でNo)には、入場制御部332は、サービス提供要求に含まれるユーザIDをもつユーザの携帯端末2に、取得した待機列の長さを送信する(ステップS225)。これに応じて、携帯端末2からサービス中止要求を受信した場合(ステップS226)には、入場制御部332は、処理を終了する。また、携帯端末2から即時入場要求を受信した場合(ステップS226)には、動作フローはステップS224に進む。また、携帯端末2から待機列追加要求を受信した場合(ステップS226)には、入場制御部332は、待機情報管理部335に指示して、対象のユーザIDを待機情報テーブルに追加させる(ステップS227)。
続いて、待機情報に含まれるユーザ数が上限閾値以下である場合(ステップS228でNo)には、動作フローは後述するステップS232に進む。一方、待機情報に含まれるユーザ数が上限閾値を超えた場合(ステップS228でYes)には、入場制御部332は、最大数設定部336に、最大同時提供数を増加させる(ステップS229)。このとき、入場制御部332は、待機情報管理部335に指示して、待機情報テーブルから、対象のサービスについての順位が小さいユーザのユーザIDを削除させる(ステップS230)。そして、入場制御部332は、待機情報管理部335に、対象のサービスについて待機情報テーブルに含まれる各ユーザIDの順位を更新させ(ステップS231)、各ユーザIDに対応するユーザの携帯端末2に、現在の待機列中のユーザ数及び新たな順位を送信させる(ステップS232)。これにより、入場制御部332は処理を終了する。
図12は、退場制御部333による退場制御の動作フローの一例を示す図である。まず、退場制御部333は、対象のサービスについてサービステーブルに記憶されている「サービス提供中のユーザID」から、サービス提供要求に含まれるものと同じユーザIDを削除する(ステップS240)。このとき、退場制御部333は、サービステーブルから、対象のサービスについての待機列の長さ、サービス提供中のユーザ数及び最大同時提供数を取得する(ステップS241)。待機列の長さが0であるか又はサービス提供中のユーザ数が最大同時提供数以上である場合(ステップS242でNo)には、退場制御部333は、処理を終了する。
一方、待機列の長さが0でなく且つサービス提供中のユーザ数が最大同時提供数未満になった場合(ステップS242でYes)には、退場制御部333は、待機情報管理部335に指示して、待機情報テーブルから、対象のサービスについての順位が小さいユーザのユーザIDを削除させる(ステップS243)。そして、退場制御部333は、待機情報管理部335に、対象のサービスについて待機情報テーブルに含まれる各ユーザIDの順位を更新させ(ステップS244)、各ユーザIDに対応するユーザの携帯端末2に、現在の待機列中のユーザ数及び新たな順位を送信させる(ステップS245)。
また、待機情報に含まれるユーザ数が下限閾値未満になった場合(ステップS246でYes)には、退場制御部333は、最大数設定部336に、最大同時提供数を減少させる(ステップS247)。これにより、退場制御部333は処理を終了する。
以上説明してきたように、ゲームシステム1のサーバ3は、その処理能力の範囲内で最大同時提供数を敢えて限定し、最大同時提供数を超えるユーザ数の携帯端末2からサービス提供要求を受信した場合には、対応するユーザのユーザ情報を待機情報に追加する。また、サーバ3は、待機情報に含まれるユーザ数が上限閾値を超えた場合には、最大同時提供数を増加させて、サービスの提供を待つユーザ数が一定数以上にならないようにする。このように、サーバ3では、最大同時提供数を変化させることにより、提供するサービスに対するユーザの待機列の長さを一定範囲内に制御することが可能となる。
なお、端末処理部25が備える入退場処理部252、サービス処理部253及び順番待ち処理部254の各機能は、サーバ処理部33にて実現してもよい。
また、サーバ処理部33が備える各機能を実現させるためのコンピュータプログラムは、半導体記録媒体、磁気記録媒体又は光記録媒体等の、コンピュータにより読み取り可能な記録媒体に記録された形で提供可能である。そして、このコンピュータプログラムは、それらの記録媒体から公知のセットアッププログラム等を用いてサーバ記憶部32にインストール可能である。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。