IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社コロプラの特許一覧

<>
  • 特開-プログラム及びシステム 図1
  • 特開-プログラム及びシステム 図2
  • 特開-プログラム及びシステム 図3
  • 特開-プログラム及びシステム 図4
  • 特開-プログラム及びシステム 図5
  • 特開-プログラム及びシステム 図6
  • 特開-プログラム及びシステム 図7
  • 特開-プログラム及びシステム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024108643
(43)【公開日】2024-08-13
(54)【発明の名称】プログラム及びシステム
(51)【国際特許分類】
   A63F 13/795 20140101AFI20240805BHJP
   A63F 13/30 20140101ALI20240805BHJP
【FI】
A63F13/795
A63F13/30
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023013106
(22)【出願日】2023-01-31
【新規性喪失の例外の表示】特許法第30条第2項適用申請有り 令和4年12月20日にウェブサイト(https://blog.colopl.dev/entry/2022/12/20/105725)に掲載
(71)【出願人】
【識別番号】509070463
【氏名又は名称】株式会社コロプラ
(74)【代理人】
【識別番号】110000442
【氏名又は名称】弁理士法人武和国際特許事務所
(72)【発明者】
【氏名】佐藤 佑史
(57)【要約】
【課題】ユーザのマッチングの質と時間短縮とを両立できるプログラムを提供する。
【解決手段】プログラムは、コンピュータを、ユーザによって第1の操作が実行されると、当該第1の操作を実行したユーザをホストとしたロビーを仮想空間上に生成可能なロビー生成手段と、ユーザによって第2の操作が実行されると、ロビーの数が所定の閾値以上であるか否かを判定可能な判定手段と、判定手段によりロビーの数が閾値以上であると判定されると、既に生成されたロビーの1つに第2の操作を実行したユーザをゲストとして追加することが可能なゲスト追加手段として機能させる。ロビー生成手段は、判定手段によりロビーの数が閾値未満であると判定されると、第2の操作を実行したユーザをホストとした新たなロビーを仮想空間上に生成することが可能である。
【選択図】図6
【特許請求の範囲】
【請求項1】
コンピュータを、
ユーザによって第1の操作が実行されると、当該第1の操作を実行したユーザをホストとしたロビーを仮想空間上に生成可能なロビー生成手段と、
ユーザによって第2の操作が実行されると、前記ロビーの数が所定の閾値以上であるか否かを判定可能な判定手段と、
前記判定手段により前記ロビーの数が前記閾値以上であると判定されると、既に生成された前記ロビーの1つに前記第2の操作を実行したユーザをゲストとして追加することが可能なゲスト追加手段と、して機能させ、
前記ロビー生成手段は、前記判定手段により前記ロビーの数が前記閾値未満であると判定されると、前記第2の操作を実行したユーザをホストとした新たな前記ロビーを前記仮想空間上に生成することが可能である、プログラム。
【請求項2】
請求項1に記載のプログラムにおいて、
前記コンピュータを、前記第2の操作が実行されたユーザ端末の単位時間当たりの数であるゲスト数が多いほど、前記閾値を大きくする閾値決定手段として機能させる、プログラム。
【請求項3】
請求項1に記載のプログラムにおいて、
前記コンピュータを、前記第1の操作が実行されたユーザ端末の単位時間当たりの数であるホスト数が多いほど、前記閾値を小さくする閾値決定手段として機能させる、プログラム。
【請求項4】
請求項1に記載のプログラムにおいて、
前記コンピュータを、前記第2の操作が実行されたユーザ端末の単位時間当たりの数であるゲスト数と、前記第1の操作が実行されたユーザ端末の単位時間当たりの数であるホスト数とに基づいて、前記閾値を決定する閾値決定手段として機能させ、
前記閾値決定手段は、
前記ゲスト数及び前記ホスト数を予め定められた演算式に代入して、演算結果の整数値I及び小数値Dを特定し、
前記閾値を、前記整数値I+1に決定するか、前記整数値Iに決定するかを抽選し、
前記抽選において、前記小数値Dが大きいほど、前記閾値を前記整数値I+1に決定する確率を高める、プログラム。
【請求項5】
請求項1に記載のプログラムにおいて、
前記コンピュータを、予め定められたマッチングアルゴリズムを用いて、既に生成された前記ロビーと前記第2の操作を実行したユーザとのマッチング度を演算する演算手段として機能させ、
前記判定手段は、前記マッチング度がマッチング閾値以上か否かをさらに判定し、
前記ゲスト追加手段は、前記マッチング度が前記マッチング閾値以上だと判定されたことに応じて、前記ロビーの数が前記閾値以上か否かに拘わらず、前記マッチング度が最大の前記ロビーに、前記第2の操作を実行したユーザをゲストとして追加し、
前記ロビー生成手段は、前記マッチング度が前記マッチング閾値未満で且つ前記ロビーの数が前記閾値未満だと判定されたことに応じて、前記第2の操作を実行したユーザをホストとした前記ロビーを生成する、プログラム。
【請求項6】
ユーザによって第1の操作が実行されると、当該第1の操作を実行したユーザをホストとしたロビーを仮想空間上に生成可能なロビー生成手段と、
ユーザによって第2の操作が実行されると、前記ロビーの数が所定の閾値以上であるか否かを判定可能な判定手段と、
前記判定手段により前記ロビーの数が前記閾値以上であると判定されると、既に生成された前記ロビーの1つに前記第2の操作を実行したユーザをゲストとして追加することが可能なゲスト追加手段とを備え、
前記ロビー生成手段は、前記判定手段により前記ロビーの数が前記閾値未満であると判定されると、前記第2の操作を実行したユーザをホストとした新たな前記ロビーを前記仮想空間上に生成することが可能である、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム及びシステムに関する。
【背景技術】
【0002】
従来より、オンラインゲームにおいて、対戦プレイや協力プレイを行うユーザをマッチングする技術が知られている。マッチング技術には、ゲームの娯楽性を高めるマッチングの質(例えば、ゲームの習熟度が同じようなユーザを集める)を担保したうえで、マッチングを完了するまでの時間を短縮することが求められる。
【0003】
特許文献1には、オンラインゲームに参加するユーザを、新たなグループ(ロビー)を生成するホストと、既存のグループに参加するゲストとに、所定の確率で振り分けることによって、短時間で質の高いマッチングを実現する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第6106214号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1では、ユーザをホストまたはゲストに振り分けるのに確率を用いているので、特にオンラインゲームに参加しようとするユーザが少ないときに、必ずしもマッチングの質と時間短縮とを両立できるとは言い難い。
【0006】
本発明は、上記の事情に鑑みてなされたものであり、その目的は、通信ネットワークを通じて仮想空間を共有するユーザのマッチングの質と時間短縮とを両立できるプログラム及びシステムを提供することにある。
【課題を解決するための手段】
【0007】
前記課題を解決するため、本発明に係るプログラムは、コンピュータを、ユーザによって第1の操作が実行されると、当該第1の操作を実行したユーザをホストとしたロビーを仮想空間上に生成可能なロビー生成手段と、ユーザによって第2の操作が実行されると、前記ロビーの数が所定の閾値以上であるか否かを判定可能な判定手段と、前記判定手段により前記ロビーの数が前記閾値以上であると判定されると、既に生成された前記ロビーの1つに前記第2の操作を実行したユーザをゲストとして追加することが可能なゲスト追加手段と、して機能させ、前記ロビー生成手段は、前記判定手段により前記ロビーの数が前記閾値未満であると判定されると、前記第2の操作を実行したユーザをホストとした新たな前記ロビーを前記仮想空間上に生成することが可能である。
【発明の効果】
【0008】
本発明によれば、通信ネットワークを通じて仮想空間を共有するユーザのマッチングの質と時間短縮とを両立することができる。
【図面の簡単な説明】
【0009】
図1】本実施形態に係るシステムの概要を示す図である。
図2】サーバのハードウェア構成図である。
図3】ロビーテーブル(A)及び履歴テーブル(B)のデータ例である。
図4】サーバの機能ブロック図である。
図5】ユーザ端末に表示されるゲーム参加画面の画面例である。
図6】マッチング処理のフローチャートである。
図7】ロビーの数とロビーに入室したユーザの状態遷移図である。
図8】閾値決定処理のフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施形態に係るシステム1を図面に基づいて説明する。なお、以下に記載する本発明の実施形態は、本発明を具体化する際の一例を示すものであって、本発明の範囲を実施形態の記載の範囲に限定するものではない。従って、本発明は、実施形態に種々の変更を加えて実施することができる。
【0011】
[システム1の概要]
図1は、本実施形態に係るシステム1の概要を示す図である。図1に示すように、システム1は、サーバ10と、複数のユーザ端末20とを主に備える。なお、図1には3つのユーザ端末20が図示されているが、システム1に含まれるユーザ端末20の数はこれに限定されない。サーバ10及びユーザ端末20は、通信ネットワーク2を介して相互通信可能に接続されている。通信ネットワーク2の具体例は特に限定されないが、例えば、インターネット、移動体通信システム(例えば、4G、5Gなど)、Wi-Fi(登録商標)などの無線ネットワーク、またはこれらの組み合わせで構成される。
【0012】
本実施形態に係るシステム1は、複数のユーザ端末20それぞれのユーザに仮想空間を提供する。仮想空間とは、複数のユーザ端末20のユーザが通信ネットワーク2を通じて共有する仮想的な空間である。すなわち、複数のユーザ端末20の表示装置には、仮想空間の現在の状態を示す共通の画像が表示される。また、複数のユーザ端末20の1つの操作装置に対して行われた操作(例えば、キャラクタや駒の移動)は、他のユーザ端末20の表示装置に表示される画像にも反映される。さらに、仮想空間で生じた事象(例えば、敵キャラクタの出現、ゲームの勝敗)は、全てのユーザ端末20の表示装置に反映される。すなわち、仮想空間での変化は、当該仮想空間を共有する全てのユーザ端末20で同期される。
【0013】
一例として、仮想空間は、複数のユーザがユーザ端末20を通じて共通のゲームをプレイするための空間であってもよい。ゲームとは、例えば、麻雀、チェス、将棋、囲碁、リバーシ、双六などのボードゲーム、ユーザが操作するキャラクタ同士を戦わせる対戦ゲーム、ユーザが操作するキャラクタで協力して冒険する協力ゲームなど、複数のユーザが共通のフィールドでプレイするあらゆるゲームが該当する。
【0014】
他の例として、仮想空間は、ユーザがユーザ端末20を通じて操作するキャラクタ(アバター)同士をコミュニケーションさせる空間であってもよい。キャラクタ同士のコミュニケーションとは、例えば、テキストデータの交換(チャット)、音声データの交換(会話)、仮想空間内でのオブジェクト(アイテム)の交換、パフォーマンス(例えば、歌唱、楽器演奏、ダンス)とその視聴などを指す。
【0015】
本実施形態に係るサーバ10は、複数のユーザ端末20のユーザに仮想空間を提供する。また、サーバ10は、仮想空間を共有する全てのユーザ端末20に対して、仮想空間の変化を同期させる。これらの処理は、周知の技術を用いて実現される。さらに、サーバ10は、仮想空間を共有する複数のユーザをマッチングする処理を実行する。より詳細には、サーバ10は、マッチングの質を担保したうえで、マッチングを完了するまでの時間を短縮するために、図6を参照して後述するマッチング処理を実行する。本実施形態では、4人のユーザで協力して冒険する協力ゲームを前提として、マッチング処理を説明する。
【0016】
[サーバ10の構成]
図2は、サーバ10のハードウェア構成図である。サーバ10は、例えば、ワークステーション、またはパーソナルコンピュータなどの汎用コンピュータで実現される。図2に示すように、サーバ10は、プロセッサ11と、メモリ12と、ストレージ13と、入出力インタフェース14と、通信インタフェース15とを主に備える。サーバ10の各構成要素は、通信バス19に接続されている。
【0017】
プロセッサ11は、メモリ12またはストレージ13に格納されているサーバプログラム13Pに含まれる一連の命令を実行することによって、後述する処理を実現する。プロセッサ11は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)、その他のデバイスとして実現される。
【0018】
メモリ12は、サーバプログラム13P及びデータを一時的に保持する。サーバプログラム13Pは、例えば、ストレージ13からロードされる。データは、サーバ10に入力されたデータと、プロセッサ11によって生成されたデータとを含む。例えば、メモリ12は、RAM(Random Access Memory)、その他の揮発メモリとして実現される。
【0019】
ストレージ13は、サーバプログラム13P及びデータを永続的に保持する。ストレージ13は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。また、ストレージ13は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに他の例として、ストレージ13は、サーバ10に内蔵されることに代えて、外部記憶装置としてサーバ10に接続されていてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のユーザ端末20が使用される場面において、サーバプログラム13Pやデータの更新を一括して行うことが可能になる。
【0020】
入出力インタフェース14は、モニタ、入力装置(例えば、キーボード、ポインティングデバイス)、外部記憶装置、スピーカ、カメラ、マイク、センサ等の外部装置をサーバ10に接続するためのインタフェースである。プロセッサ11は、入出力インタフェース14を通じて外部装置と通信する。入出力インタフェース14は、例えば、USB(Universal Serial Bus)、DVI(Digital Visual Interface)、HDMI(High-Definition Multimedia Interface、登録商標)、その他の端子で用いて実現される。
【0021】
通信インタフェース15は、通信ネットワーク2に接続されている他の装置(例えば、ユーザ端末20)と通信する。通信インタフェース15は、例えば、LAN(Local Area Network)など有線通信インタフェース、Wi-Fi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)などの無線通信インタフェースとして実現される。
【0022】
[ユーザ端末20の構成]
ユーザ端末20は、例えば、HMDセット、タブレット端末、スマートフォン、フィーチャーフォン、ラップトップ型コンピュータ、デスクトップコンピュータなどとして実現される。ユーザ端末20の構成は既に周知なので、詳細な説明は省略する。
【0023】
[サーバ10が保持するテーブルのデータ例]
図3は、ロビーテーブル(A)及び履歴テーブル(B)のデータ例である。図3(A)に示すロビーテーブル及び図3(B)に示す履歴テーブルは、サーバ10のストレージ13に保存される。また、ロビーテーブル及び履歴テーブルは、後述するマッチング処理の過程で更新される。
【0024】
図3(A)に示すロビーテーブルは、仮想空間を共有するユーザを募るための窓口となる仮想的なロビーを管理(生成、ユーザの追加、削除)するためのテーブルである。ロビーテーブルは、1以上のロビーレコードを含む。また、ロビーレコードは、ロビーレコードを一意に識別するロビーIDと、属性(難易度)と、ホストIDと、複数のゲストIDとを含む。
【0025】
仮想空間の属性の一例である難易度は、仮想空間でプレイするゲームの難易度を示す情報(例えば、Easy,Normal,Hard)である。仮想空間の属性とは、例えば、ゲームの習熟度(レベル)の幅、プレイするゲームマップ(フィールド)、ゲームで用いる装備の制限など、仮想空間または仮想空間を共有するユーザを特定するあらゆる情報を含む。なお、ロビーレコードに含まれる属性の種類は、1種類に限定されない。
【0026】
ホストIDは、対応するロビーIDで識別されるロビーにホストとして関連付けられたユーザのユーザIDである。ゲストIDは、対応するロビーIDで識別されるロビーにゲストとして関連付けられたユーザのユーザIDである。ユーザIDとは、システム1に接続され得るユーザ端末20のユーザを一意に識別する識別子である。なお、1つのロビーレコードに含まれるゲストIDの数は、仮想空間を共有するユーザの数(以下、「定員数」と表記する。)から1(すなわち、ホスト)を減じた数である。仮想空間の定員数は、例えば、麻雀ゲームの場合は4、チェスゲーム、将棋ゲーム、囲碁ゲーム、オセロゲームの場合は2など、仮想空間の特性に応じて予め定められている。
【0027】
ホストとは、ロビーを新たに生成して、仮想空間を共有する他のユーザを募るユーザを指す。また、ホストは、ユーザ端末20を通じて仮想空間の属性を設定する。ゲストとは、サーバ10が実行するマッチング処理によって、既存のロビーのうちの1つに割り当てられるユーザである。また、ゲストは、ホストから伝達された招待キーを用いて、当該ホストが生成したロビーを指定して入室してもよい。但し、本明細書では、この処理の説明を省略する。
【0028】
図3(B)に示す履歴テーブルは、過去に作成されたロビーの情報を管理するテーブルである。履歴テーブルは、1以上の履歴レコードを含む。また、履歴レコードは、ロビーが生成された日時を示す生成日時と、ロビーを作成したユーザを識別するユーザIDと、ロビーを作成する際に設定された属性(難易度)とを含む。
【0029】
[サーバ10の機能ブロック図]
図4は、サーバ10の機能ブロック図である。図4に示すように、メモリ12にロードされたサーバプログラム13Pは、サーバ10を、ロビー生成手段110、閾値決定手段120、演算手段130、判定手段140、ゲスト追加手段150、及び仮想空間生成手段160として機能させる。
【0030】
ロビー生成手段110は、通信ネットワーク2を通じてユーザ端末20からホストリクエストを受信したことに応じて、ホストリクエストの送信元のユーザ端末20のユーザをホストとしたロビーを仮想空間上に新たに生成する。ロビーを仮想空間上に生成するとは、例えば、ロビーテーブルに新たにロビーレコードを追加することを指す。すなわち、ロビー生成手段110は、ホストリクエストを受信したことに応じて、新たなロビーIDを生成し、生成したロビーIDを含むロビーレコードをロビーテーブルに追加する。以下、ロビーID“ロビーX”で識別されるロビーを単に「ロビーX」と表記することがある(末尾のXには、A、B、C、・・・等が設定される)。
【0031】
ホストリクエストとは、新たなロビーの生成(換言すれば、仮想空間へのホストとしての参加)を要求するデータである。ホストリクエストは、例えば、ホストリクエストの送信元のユーザ端末20を操作するユーザ(以下、「ホストユーザ」と表記する。)のユーザIDと、図5を参照して後述するゲーム参加画面を通じてホストユーザが設定した属性(難易度)とを含む。
【0032】
また、ロビー生成手段110は、ホストリクエストの送信元のユーザ端末20のユーザを、新たに生成したロビーにホストとして追加する(以下、「ロビーにホスト(ユーザ)が入室する。」と表記することがある。)。ユーザをロビーにホストとして追加するとは、例えば、ロビーレコードのホストIDにユーザIDを設定することを指す。すなわち、ロビー生成手段110は、ロビーテーブルに追加したロビーレコードのホストIDに、ホストリクエストに含まれるユーザIDを設定する。
【0033】
また、ロビー生成手段110は、ホストユーザが設定した属性の仮想空間への参加を募るためのロビーを生成する。ホストユーザが設定した属性の仮想空間への参加を募るためのロビーを生成するとは、例えば、ロビーレコードに属性を設定することを指す。すなわち、ロビー生成手段110は、ロビーテーブルに追加したロビーレコードの属性に、ホストリクエストに含まれる属性を設定する。
【0034】
なお、ロビーは、ホストユーザのユーザ端末20で生成され、サーバ10に移動されてもよい。より詳細には、ロビー生成手段110は、ロビーレコードを含むホストリクエストをユーザ端末20から受信し、受信したロビーレコードをロビーテーブルに追加してもよい。この場合、ホストIDがロビーIDを兼ねてもよい。
【0035】
さらに、ロビー生成手段110は、後述するように、マッチング度がマッチング閾値未満で且つロビーの数がロビー数閾値未満だと判定手段140で判定されたことに応じて、ロビーを生成すると共に、ゲストリクエストの送信元のユーザ端末20のユーザをホストとして当該ロビーに追加する。すなわち、ロビー生成手段110は、ゲストユーザをホストユーザに切り替える。
【0036】
ゲストユーザをホストとしたロビーを生成する基本的な処理は、ホストリクエストを受信した場合と共通する。但し、ロビー生成手段110は、ゲストリクエストの送信元のユーザ端末20を通じて過去に設定された属性の仮想空間への参加を募るためのロビーを生成する。すなわち、ロビー生成手段110は、判定手段140から通知されたユーザIDを含む履歴レコードを履歴テーブルから読み出し、読み出した履歴レコードに含まれる属性を新たに生成したロビーレコードに設定する。
【0037】
閾値決定手段120は、判定手段140の判定に用いられるロビー数閾値(閾値)を決定する。そして、閾値決定手段120は、決定したロビー数閾値を判定手段140に通知する。閾値決定手段120は、マッチングの質と時間短縮とを両立できるように、仮想空間(ゲーム)に参加しようとするユーザの数に基づいてロビー数閾値を増減させる。閾値決定手段120がロビー数閾値を決定する具体的な方法は、図7を参照して後述する。
【0038】
演算手段130は、予め定められたマッチングアルゴリズムを用いて、既に生成されたロビーと、後述するゲストリクエストの送信元のユーザ端末20のユーザとのマッチング度を演算する。そして、演算手段130は、演算した最大のマッチング度と、マッチング度が最大となるロビーのロビーIDとを判定手段140に通知する。演算手段130は、例えば、複数の評価項目でゲストを評価し、評価結果を示すマッチング度演算する。一例として、ゲームの習熟度(レベル)がロビーを生成したホストと近いゲストほど、マッチング度が高くなる。他の例として、過去にホストと仮想空間を共有したことがあるゲストほど、マッチング度が高くなる。演算手段130は、周知のマッチングアルゴリズムを用いて、マッチング度を演算することができる。
【0039】
判定手段140は、通信ネットワーク2を通じてユーザ端末20からゲストリクエストを受信したことに応じて、ゲストリクエストの送信元のユーザ端末20を操作するユーザ(以下、「ゲストユーザ」と表記する。)を、ホスト及びゲストのどちらに振り分けるかを判定する。ゲストリクエストとは、既存ロビーへの割り当て(換言すれば、仮想空間へのゲストとしての参加)を要求するデータである。ゲストリクエストは、例えば、ゲストユーザのユーザIDを含む。
【0040】
判定手段140は、演算手段130によって演算されたマッチング度が予め定められたマッチング閾値以上か否かを判定する。そして、判定手段140は、マッチング度がマッチング閾値以上だと判定したことに応じて、後述するロビーの数がロビー数閾値以上か否かに拘わらず、ゲストリクエストに含まれるユーザIDと、マッチング度が最大となるロビーのロビーIDとをゲスト追加手段150に通知する。
【0041】
また、判定手段140は、現在のロビーの数(換言すれば、ロビーレコードの数)が、閾値決定手段120で決定されたロビー数閾値以上か否かを判定する。そして、判定手段140は、マッチング度がマッチング閾値未満で且つロビーの数がロビー数閾値以上であることに応じて、ゲストリクエストに含まれるユーザIDと、マッチング度が最大となるロビーのロビーIDとをゲスト追加手段150に通知する。一方、判定手段140は、マッチング度がマッチング閾値未満で且つロビーの数がロビー数閾値未満であることに応じて、ゲストリクエストに含まれるユーザIDを、ロビー生成手段110に通知する。
【0042】
ゲスト追加手段150は、マッチング度がマッチング閾値以上だと判定手段140で判定されたことに応じて、またはマッチング度がマッチング閾値未満で且つロビーの数がロビー数閾値以上だと判定手段140で判定されたことに応じて、マッチング度が最大のロビーにゲストユーザをゲストとして追加する(以下、「ロビーにゲスト(ユーザ)が入室する。」と表記することがある。)。より詳細には、ゲスト追加手段150は、判定手段140から通知されたロビーIDで識別されるロビーレコードのゲストIDに、判定手段140から通知されたユーザIDを設定する。さらに、ゲスト追加手段150は、ゲストIDを追加したロビーレコードのロビーIDを、仮想空間生成手段160に通知する。
【0043】
仮想空間生成手段160は、ロビーに追加されたユーザの数が定員数に達したか否かを判定する。より詳細には、ゲスト追加手段150から通知されたロビーIDで識別されるロビーレコードに設定されたユーザID(ホストID&ゲストID)の数が定員数に達したか否かを判定する。
【0044】
そして、仮想空間生成手段160は、当該ロビーに追加されたユーザの数が定員数に達したことに応じて、当該ロビーに追加されたユーザが共有する仮想空間を生成する。すなわち、仮想空間生成手段160は、当該ロビーレコードに含まれるホストID及びゲストIDで識別されるユーザにゲームを開始させる。ゲームを開始する具体的な処理は既に周知なので、詳細な説明は省略する。さらに、仮想空間生成手段160は、ユーザの数が定員数に達したロビーを削除する。すなわち、仮想空間生成手段160は、ゲスト追加手段150から通知されたロビーIDで識別されるロビーレコードを、ロビーテーブルから削除する。
【0045】
[マッチング処理]
図5図7を参照して、本実施形態に係るマッチング処理を説明する。マッチング処理は、仮想空間を共有するユーザをマッチングする処理である。図5は、ユーザ端末20に表示されるゲーム参加画面の画面例である。図6は、マッチング処理のフローチャートである。図7は、ロビーの数とロビーに入室したユーザの状態遷移図である。なお、図7において、〇印はホストユーザを示し、△印はゲストユーザを示し、その内部のアルファベットはユーザIDの末尾を示す。
【0046】
本実施形態では、各ロビーの定員数を4とし、ロビー数閾値を3とする。また、図7(A)に示すように、マッチング処理の開始時点において、ロビーAが1つ生成されており、当該ロビーAにホストユーザA及び2人のゲストユーザB、Cが既に入室しているものとする。なお、ユーザID“USER-X”で識別されるユーザを単に「ユーザX」と表記することがあり、ユーザXが操作するユーザ端末20を「ユーザ端末20X」と表記することがある(末尾のXには、A、B、C、・・・等が設定される)。
【0047】
まず、ゲームを開始しようとするユーザのユーザ端末20の表示装置には、図5に示すゲーム参加画面が表示される。図5に示すゲーム参加画面には、[ロビーを作成]ボタンと、難易度(Easy,Normal,Hard)を選択するためのラジオボタンと、[ランダムマッチング]ボタンとを含む。そして、ユーザ端末20のプログラムは、ゲーム参加画面に対するユーザ操作を操作装置を通じて受け付けるまで、以降の処理の実行を待機する。
【0048】
ホストとしてゲームに参加しようとするユーザDは、ラジオボタンの1つを選択したうえで、[ロビーを作成]ボタンを押下する。ラジオボタンの1つを選択する操作は、仮想空間の属性を設定する操作の一例である。[ロビーを作成]ボタンを押下する操作は、仮想空間へのホストとしての参加を要求するホスト参加操作(第1の操作)の一例である。そして、ユーザ端末20Dの端末プログラムは、[ロビーを作成]ボタンが押下されたことに応じて、ユーザ端末20Dに設定されたユーザID“USER-D”と、選択されたラジオボタンに対応する属性“難易度=Hard”とを含むホストリクエストを、通信ネットワーク2を通じてサーバ10に送信する。
【0049】
一方、ゲストとしてゲームに参加しようとするユーザEは、[ランダムマッチング]ボタンを押下する。[ランダムマッチング]ボタンを押下する操作は、仮想空間へのゲストとしての参加を要求するゲスト参加操作(第2の操作)の一例である。そして、ユーザ端末20Eの端末プログラムは、[ランダムマッチング]ボタンが押下されたことに応じて、ユーザ端末20Eに設定されたユーザID“USER-E”を含むゲストリクエストを、通信ネットワーク2を通じてサーバ10に送信する。ゲストとしてゲームに参加しようとするユーザF、Gについても同様である。
【0050】
ホストリクエストを送信するユーザ端末20Dは、第1ユーザ端末の一例である。ゲストリクエストを送信するユーザ端末20E~20Gは、第2ユーザ端末の一例である。なお、同一のユーザ端末20は、第1ユーザ端末にも第2ユーザ端末にもなり得る。すなわち、ユーザ端末20のユーザは、ホストとしてゲームに参加することもできるし、別の機会にゲストとしてゲームに参加することもできる。
【0051】
サーバプログラム13Pは、通信ネットワーク2を通じてユーザ端末20からホストリクエストまたはゲストリクエストを受信したことに応じて、図6に示すマッチング処理を実行する。ユーザ端末20からは、ホストリクエストまたはゲストリクエストが不定期に送信される。すなわち、マッチング処理は、ホストリクエストまたはゲストリクエストを受信する度に実行される。以下、最初にユーザ端末20Dがホストリクエストを送信し、次にユーザ端末20E、F、Gの順にゲストリクエストを送信したことを前提として、マッチング処理を説明する。
【0052】
サーバ10(ロビー生成手段110)は、通信ネットワーク2を通じてユーザ端末20Dからホストリクエストを受信したことに応じて(S11:Yes)、新たなロビーID“ロビーB”を生成し、生成したロビーID“ロビーB”を含むロビーレコードをロビーテーブルに追加する(S12)。また、サーバ10(ロビー生成手段110)は、追加したロビーレコードのホストIDに、ホストリクエストに含まれるユーザID“USER-D”を設定する(S13)。また、サーバ10(ロビー生成手段110)は、追加したロビーレコードの属性に、ホストリクエストに含まれる属性“Hard”を設定する(S14)。さらに、サーバ10(ロビー生成手段110)は、生成日時“現在時刻”、ユーザID“USER-D”、属性“Hard”を含む履歴レコードを、履歴テーブルに追加する(S15)。これにより、図7(B)に示すように、ロビーID“ロビーB”で識別されるロビーが新たに生成され、ユーザDがホストとして当該ロビーBに入室する。
【0053】
次に、サーバ10(演算手段130)は、通信ネットワーク2を通じてユーザ端末20Eからゲストリクエストを受信したことに応じて(S11:No)、既存のロビーA、Bそれぞれと、ユーザEとのマッチング度を演算する(S16)。ここでは、ロビーAとユーザEとのマッチング度がマッチング閾値未満で、ロビーBとユーザEとのマッチング度がマッチング閾値以上であるものとする。
【0054】
次に、サーバ10(判定手段140)がロビーBとユーザEとのマッチング度がマッチング閾値以上だと判定したことに応じて(S17:Yes)、サーバ10(ゲスト追加手段150)は、ロビーBのロビーレコードのゲストIDに、ゲストリクエストに含まれるユーザID“USER-E”を設定する(S18)。これにより、図7(C)に示すように、ユーザEがゲストとしてロビーBに入室する。次に、サーバ10(仮想空間生成手段160)は、ロビーBに入室したユーザの数(=2)が定員数(=4)に満たないと判定して(S19:No)、ステップS20~S21の処理をスキップして、マッチング処理を終了する。
【0055】
次に、サーバ10(演算手段130)は、通信ネットワーク2を通じてユーザ端末20Fからゲストリクエストを受信したことに応じて(S11:No)、既存のロビーA、Bそれぞれと、ユーザFとのマッチング度を演算する(S16)。ここでは、ロビーA、BとユーザFとのマッチング度がマッチング閾値未満であり、ロビーAとユーザFとのマッチング度が最も高いものとする。次に、サーバ10(判定手段140)は、ロビーA、BとユーザFとのマッチング度がマッチング閾値未満だと判定したことに応じて(S17:No)、現在のロビーの数(=2)と、後述する閾値決定処理(S22)で決定したロビー数閾値(=3)とを比較する(S23)。
【0056】
次に、サーバ10(判定手段140)がロビーA、BとユーザFとのマッチング度がマッチング閾値未満で、且つ現在のロビーの数(=2)がロビー数閾値(=3)未満だと判定したことに応じて(S17:No&S23:No)、サーバ10(ロビー生成手段110)は、新たなロビーID“ロビーC”を生成し、生成したロビーID“ロビーC”を含むロビーレコードをロビーテーブルに追加する(S24)。また、サーバ10(ロビー生成手段110)は、追加したロビーレコードのホストIDに、ゲストリクエストに含まれるユーザID“USER-F”を設定する(S25)。さらに、サーバ10(ロビー生成手段110)は、ユーザID“USER-F”を含む履歴レコードを、履歴テーブルから読み出す。そして、サーバ10(ロビー生成手段110)は、追加したロビーレコードの属性に、読み出した履歴レコードに含まれる属性“Easy”を設定する(S26)。これにより、図7(D)に示すように、ロビーID“ロビーC”で識別されるロビーが新たに生成され、ユーザFがホストとして当該ロビーCに入室する。
【0057】
次に、サーバ10(演算手段130)は、通信ネットワーク2を通じてユーザ端末20Gからゲストリクエストを受信したことに応じて(S11:No)、既存のロビーA、B、Cそれぞれと、ユーザGとのマッチング度を演算する(S16)。ここでは、ロビーA、B、CとユーザGとのマッチング度がマッチング閾値未満で、ロビーAとユーザGとのマッチング度が最も高いものとする。次に、サーバ10(判定手段140)がロビーA、B、CとユーザGとのマッチング度がマッチング閾値未満で、且つ現在のロビーの数(=3)がロビー数閾値(=3)以上だと判定したことに応じて(S17:No&S23:Yes)、サーバ10(ゲスト追加手段150)は、ロビーAのロビーレコードのゲストIDに、ゲストリクエストに含まれるユーザID“USER-G”を設定する(S18)。これにより、図7(E)に示すように、ユーザGがゲストとしてロビーAに入室する。
【0058】
なお、サーバ10(ゲスト追加手段150)は、ステップS18において、ユーザGとのマッチング度が第2のマッチング閾値以上となるロビーが存在しない場合、ユーザGを待機リストに登録してもよい。そして、サーバ10(ゲスト追加手段150)は、ユーザGとのマッチング度が第2のマッチング閾値以上となるロビーが新たに生成されたことに応じて、待機リストに登録されたユーザGを当該ロビーに入室させてもよい。そして、第2のマッチング閾値は、ステップS17のマッチング閾値(第1のマッチング閾値)より小さい値でもよい。
【0059】
次に、サーバ10(仮想空間生成手段160)は、ロビーAに入室したユーザの数(=4)が定員数(=4)に達したと判定して(S19:Yes)、ロビーAに入室したユーザA、B、C、Gで協力ゲームを開始すると共に(S20)、ロビーAを削除する(S21)。これにより、図7(F)に示すように、ロビーAが削除される。一例として、協力ゲームは、サーバ10上で実行されて、ユーザA、B、C、Gのユーザ端末20に結果が反映されてもよい。他の例として、協力ゲームは、ホストユーザAのユーザ端末20上で実行されて(所謂、クライアントホスト)、ゲストユーザB、C、Gのユーザ端末20にサーバ10を通じて結果が反映されてもよい。
【0060】
[閾値決定処理]
次に、図8を参照して、本実施形態に係る閾値決定処理を説明する。閾値決定処理は、ステップS23でロビーの数と比較されるロビー数閾値を決定(更新)する処理である。図8は、閾値決定処理のフローチャートである。サーバ(閾値決定手段120)は、図6のステップS22において、図8に示す閾値決定処理を実行する。すなわち、ロビー数閾値は、ステップS22を実行する際に最新の値に更新される。
【0061】
まず、サーバ(閾値決定手段120)は、例えば、下記式(1)で示される演算式の演算結果から、整数値I及び小数値Dを特定する(S31)。整数値Iは、式(1)の演算結果の整数の部分であって、ロビー数閾値の基礎になる数値である。すなわち、サーバ(閾値決定手段120)は、ゲスト数Ngが多いほど、ロビー数閾値(より詳細には、整数値I)を大きくする。また、サーバ(閾値決定手段120)は、ホスト数Nhが多いほど、ロビー数閾値(より詳細には、整数値I)を小さくする。小数値Dは、式(1)の演算結果の小数点以下の部分(すなわち、0≦D<1)であって、式(1)の演算結果を切り上げてロビー数閾値とするか、式(1)の演算結果を切り捨ててロビー数閾値とするかを決める確率として用いられる数値である。
【0062】
I.D = T×(Ng-Gc×Nh)/Gc ・・・・・(式1)
【0063】
式(1)のマッチング時間Tは、ロビーが生成されてからマッチングが完了するまでの目標時間である。マッチング時間Tは、サーバ10の管理者によって予め設定される。式(1)のゲストキャパシティGcは、仮想空間に参加可能なゲストの数である。換言すれば、ゲストキャパシティGcは、定員数-1である。式(1)のゲスト数Ngは、単位時間(例えば、60秒)当たりに受信したゲストリクエストの数を指す。換言すれば、ゲスト数Ngは、後述するゲスト参加操作が実行されたユーザ端末20の単位時間当たりの数を指す。式(1)のホスト数Nhは、単位時間(例えば、60秒)当たりに受信したホストリクエストの数を指す。換言すれば、ホスト数Nhは、後述するホスト参加操作が実行されたユーザ端末20の単位時間当たりの数を指す。ゲスト数Ng及びホスト数Nhは、サーバプログラム13P(閾値決定手段120)によってカウントされる。
【0064】
次に、サーバ(閾値決定手段120)は、ステップS31で特定した小数値Dを用いて、式(1)の演算結果の小数部分を、切り上げるか(すなわち、ロビー数閾値を整数値I+1に決定するか)、切り捨てるか(すなわち、ロビー数閾値を整数値Iに決定するか)を抽選する(S32)。ステップS32の抽選結果は、小数値Dの確率で切り上げとなり、小数値Dの補数(1-D)の確率で切り捨てとなる。次に、サーバ(閾値決定手段120)は、ステップS32の抽選結果が切り上げとなったことに応じて(S33:Yes)、整数値I+1をロビー数閾値と決定する(S34)。一方、サーバ(閾値決定手段120)は、ステップS32の抽選結果が切り捨てとなったことに応じて(S33:No)、整数値Iをロビー数閾値と決定する(S35)。例えば、式(1)の演算結果が3.8だとすると、整数値=3、小数値=0.8となる。そして、小数値0.8(=80%)の割合でロビー数閾値が4(=I+1)となり、小数値の補数0.2(=20%)の割合でロビー数閾値が3(=I)となる。
【0065】
[本実施形態の作用効果]
本実施形態によれば、ロビーの数がロビー数閾値に達するまで、ゲストをホストに切り替えてロビーの生成が優先される。これにより、ゲストとしてゲームに参加しようとするユーザを振り分けるロビーの選択肢が増加するので、よりマッチング度の高いロビーに振り分けられる可能性が高まる。その結果、特許文献1のように確率を用いて振り分ける場合と比較して、ゲームに参加しようとするユーザが少ないときでも、マッチングの質と時間短縮とを両立することができる。
【0066】
また、上記の実施形態によれば、ロビー数閾値の基礎になる整数値Iを式(1)を用いて演算することによって、ゲスト数Ngが多いほどロビー数閾値が大きくなり、ホスト数Nhが多いほどロビー数閾値が小さくする。これにより、ホストまたはゲストとしてゲームに参加しようとするユーザの数に応じて、ロビー数閾値を調整することができる。
【0067】
なお、式(1)は除算を含むので、演算結果には小数値Dが含まれる場合がある。一方、ロビー数閾値は整数である必要があるので、小数値Dを切り上げるか、切り捨てるかによって、ロビー数閾値が変動する。特に、ロビー数閾値が小さい場合、切り上げるか、切り捨てるかによる影響が大きくなる。そこで、上記の実施形態によれば、小数値Dを確率として用いて、切り上げるか、切り捨てるかを抽選することによって、小数値Dをロビー数閾値に反映させることができる。
【0068】
但し、ロビー数閾値の演算方法は、図8の例に限定されない。一例として、ステップS32~S35を省略して、式(1)の演算結果を切り上げるか、切り捨てるかを固定してもよい。他の例として、式(1)と異なる演算式を用いてロビー数閾値を演算してもよい。さらに他の例として、閾値決定処理を省略して、ロビー数閾値を固定値としてもよい。
【0069】
また、上記の実施形態によれば、ゲストユーザのマッチング度がマッチング閾値以上である場合に、既存のロビーの数がロビー数閾値以上か否かに拘わらず、マッチング度が最大のロビーに当該ゲストユーザを入室させる。これにより、既存のロビーとのマッチング度が高いゲストユーザがホストに切り替えられるのを防止できるので、マッチングの質がさらに向上する。但し、マッチングが完了するまでの時間短縮を優先する場合には、ステップS17の処理を省略してもよい。
【0070】
さらに、上記の実施形態によれば、ゲストユーザをホストユーザに切り替える場合に、当該ユーザが過去に設定した属性を用いて新たにロビーを生成する。これにより、当該ユーザの作業負荷(本実施形態では、図5のゲーム参加画面のラジオボタンの選択)を軽減しつつ、所望の仮想空間を生成することができる。但し、ゲストとして仮想空間に参加しようとしていたユーザは、仮想空間の属性に対する拘りが少ないと考えることもできる。そのため、サーバ10(ロビー生成手段110)は、ステップS26において、予め定められた属性のデフォルト値を設定してもよい。
【0071】
例えば、ステップS17、S32~S35を省略し、式(1)の演算結果を切り捨ててロビー数閾値を決定した場合において、マッチング時間Tを様々変更してマッチングが完了するまでの平均値を計測した。一例として、マッチング時間Tを4.0秒に設定すると、マッチングが完了するまでの平均値は4.6372秒となった。他の例として、マッチング時間Tを8.0秒に設定すると、マッチングが完了するまでの平均値は7.1846秒となった。すなわち、図6のマッチング処理によれば、設定したマッチング時間Tに近い時間でマッチングが完了することが確認された。
【0072】
なお、マッチングの質と、マッチングが完了するまでの時間とは、本来トレードオフの関係にある。そこで、マッチングの質及び時間短縮のどちらを優先するかによって、マッチング時間Tを設定すればよい。すなわち、マッチングの質を優先する場合は、マッチング時間Tを長めに設定すればよい。一方、マッチングが完了するまでの時間短縮を優先する場合には、マッチング時間Tを短めに設定すればよい。
【0073】
なお、本発明に係るプログラムは、単一のプログラムに限定されず、複数のプログラムの集合体でもよい。また、本発明に係るプログラムは、単一の装置で実行されるものに限定されず、複数の装置で分担して実行されてもよい。さらに、サーバ10及びユーザ端末20の役割分担は、前述の例に限定されない。すなわち、サーバ10の処理の一部がユーザ端末20によって実行されてもよいし、ユーザ端末20の処理の一部がサーバ10によって実行されてもよい。
【0074】
また、プログラムによって実現される各手段の一部または全部は、集積回路などのハードウェアで実現することもできる。さらに、プログラムは、コンピュータによって読み出し可能な非一過性の記録媒体に記録されて提供されてもよい。記録媒体とは、例えば、ハードディスク、SDカード、DVDの他、インターネット上のサーバ等を指す。
【符号の説明】
【0075】
1…システム、2…通信ネットワーク、10…サーバ、11…プロセッサ、12…メモリ、13…ストレージ、13P…サーバプログラム、14…入出力インタフェース、15…通信インタフェース、19…通信バス、20…ユーザ端末、110…ロビー生成手段、120…閾値決定手段、130…演算手段、140…判定手段、150…ゲスト追加手段、160…仮想空間生成手段
図1
図2
図3
図4
図5
図6
図7
図8