(57)【特許請求の範囲】
【請求項１】
複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うためのシステムによって実行される方法であって、デッキ集合は複数のデッキを含み、デッキ組合せは一つのバトルを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、前記方法は、
共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、
所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、
所定の検証網羅性に達した後、第２のモードで共同ゲームを実行する、
ことを含み、
前記所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行することは、
前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、
決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、
デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、
所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、仮想インスタンスの組を決定すること、共同ゲーム結果を生成すること、所定の検証網羅性に達したかを決定することを繰り返し実行する、
ことを含み、
所定の網羅性に達した後、前記第２のモードで共同ゲームを実行することは、
共同ゲームを実行するための仮想インスタンスの組を決定し、
デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、
前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する、
ことを含む、方法。
【請求項２】
前記仮想インスタンスを用いて実行される共同ゲームは、仮想インスタンスにおいてゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化して実行される、請求項１に記載の方法。
【請求項３】
前記第１のモードで共同ゲームを実行することにおいて、仮想インスタンスの複数の組を決定することは、乱数に基づいて仮想インスタンスの複数の組を決定すること、ゲーム状態が共同ゲーム開始可能状態となった仮想インスタンスから順次選択されて決定すること、及び各仮想インスタンスに関連付けられた優先度に基づいて決定すること、の少なくとも一つを含む、請求項１又は２に記載の方法。
【請求項４】
前記第２のモードで共同ゲームを実行することにおいて、
前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とすることは、所定の時間間隔毎に、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行することは、前記所定の時間間隔の間に、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを共同ゲームを実行するための組として決定する、ことを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記第２のモードで共同ゲームを実行することは、すべてのデッキの組合せが検証完了条件を満たすまで、仮想インスタンスの組を決定すること、仮想インスタンスに割り当てること、共同ゲーム開始可能状態とすること、共同ゲーム結果を生成することを繰り返し実行することを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
デッキの組合せの検証完了条件は、そのデッキの組合せを用いて所定回数、共同ゲームを実行することを含む、
請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記所定の検証網羅性は、実行された共同ゲームの実行回数を実行すべき共同ゲームの実行回数で除算して得られる検証完了率に基づいて決定され、デッキの組合せの検証完了条件を越える回数実行された場合には、検証完了条件に定められた回数が実行されたものとして実行回数を算出する、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記仮想インスタンスを用いて共同ゲームを実行することは、プレイヤのプレイ履歴から生成された学習モデルを用いて実行することを含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記請求項１〜８のいずれか１項に記載の方法を１以上のコンピュータに実行させるためのプログラム。
【請求項１０】
複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うためのシステムであって、デッキ集合は複数のデッキを含み、デッキ組合せは一つの共同ゲームを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、前記システムは、
共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、
所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、
所定の検証網羅性に達した後、第２のモードで共同ゲームを実行し、
前記所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行することは、
前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、
決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、
デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、
所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、仮想インスタンスの組を決定すること、共同ゲーム結果を生成すること、所定の検証網羅性に達したかを決定することを繰り返し実行する、
ことを含み、
前記所定の網羅性に達した後、第２のモードで共同ゲームを実行することは、
共同ゲームを実行するための仮想インスタンスの組を決定し、
デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、
前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する、
ことを含む、システム。
【請求項１１】
前記システムは、ゲームサーバ、管理サーバ及び仮想インスタンスサーバを含み、
仮想インスタンスサーバが、ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、
前記第１のモードで共同ゲームを実行することにおいて、
管理サーバが、前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
ゲームサーバが、共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、
管理サーバが、デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、
前記第２のモードで共同ゲームを実行することにおいて、
管理サーバが、共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
ゲームサーバが、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する、
請求項１０に記載のシステム。
【請求項１２】
複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うための管理サーバであって、デッキ集合は複数のデッキを含み、デッキ組合せは一つの共同ゲームを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、仮想インスタンスサーバにおいて共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、前記管理サーバは、
所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、
所定の検証網羅性に達した後、第２のモードで共同ゲームを実行し、
前記第１のモードで共同ゲームを実行することは、
前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、
共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うために決定された仮想インスタンスの組の各組の仮想インスタンスを用いて共同ゲームが実行されて生成された共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果及びデッキ組合せ集合に基づいて、所定の検証網羅性に達したかを決定し、
所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、所定の検証網羅性に達したかを決定することを繰り返し実行する、
ことを含み、
前記第２のモードで共同ゲームを実行することは、
共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、
前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とする、
ことを含む、管理サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、より具体的には、ゲームプログラムの検証を行うための方法、プログラム、システム、サーバ及び方法に関する。
【背景技術】
【０００２】
近年、スマートフォンやＰＣ等の汎用的な電子装置上で動作し、オープンなネットワークを通じてサーバと通信して、他のユーザとのバトルによる対戦のような共同ゲームを楽しませるオンラインゲームが広く普及している。このようなオンラインゲームにおいては、カードのようなゲーム媒体が多数用意され、そこからプレイヤによって選択された複数のゲーム媒体を含むデッキを用いてバトルを行う形式が知られている。バトルにおいて用いられるデッキの組合せによって、不具合が発生したり、勝率が偏ったりする可能性があるため、デッキの組合せを考慮したソフトウェアとしてのゲームプログラムの挙動を検証する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−１９３７０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような検証の手法としては、ソフトウェアテストが良く知られている。人手によるソフトウェアテストでカバーできる範囲は狭いため、ゲーム媒体が多数用意されて、膨大な数のデッキの組合せがあるテストを実現することは大きな課題となっている。また、ゲームに使用するサーバや、スマートフォンなどの上で動作するゲームアプリを、実際の環境にできるだけ近い状態で検証を行うことが望ましい。特許文献１は、ゲームアプリを実環境に近い状態で、サーバサイドで高速・並列に実行する仮想化技術を開示する。しかしながら、特許文献１はゲームのプレイヤがゲームデータの不正な改ざんなどを行っていないかの検証を行うためのシステムを開示するものであり、多数のデッキの組合せに基づくゲームプログラムの挙動の妥当性を網羅的に検証可能なシステムは実現されていない。
【課題を解決するための手段】
【０００５】
本発明は上記の課題に鑑みてなされたものであり、以下のような特徴を有している。すなわち、本発明の一つの実施形態としての方法は、複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うためのシステムによって実行される方法であって、デッキ集合は複数のデッキを含み、デッキ組合せは一つのバトルを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、前記方法は、共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、所定の検証網羅性に達した後、第２のモードで共同ゲームを実行する、ことを含み、前記所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行することは、前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、仮想インスタンスの組を決定すること、共同ゲーム結果を生成すること、所定の検証網羅性に達したかを決定することを繰り返し実行する、ことを含み、所定の網羅性に達した後、前記第２のモードで共同ゲームを実行することは、共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する、ことを含む。
【０００６】
また、前記仮想インスタンスを用いて実行される共同ゲームは、仮想インスタンスにおいてゲームプログラムをヘッドレスモードで実行することにより、少なくともグラフィック処理及びサウンド処理を無効化して実行されてもよい。
【０００７】
前記第１のモードで共同ゲームを実行することにおいて、仮想インスタンスの複数の組を決定することは、乱数に基づいて仮想インスタンスの複数の組を決定すること、ゲーム状態が共同ゲーム開始可能状態となった仮想インスタンスから順次選択されて決定すること、及び各仮想インスタンスに関連付けられた優先度に基づいて決定すること、の少なくとも一つを含んでもよい。
【０００８】
前記第２のモードで共同ゲームを実行することにおいて、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とすることは、所定の時間間隔毎に、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行することは、前記所定の時間間隔の間に、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを共同ゲームを実行するための組として決定する、ことを含んでもよい。
【０００９】
前記第２のモードで共同ゲームを実行することは、すべてのデッキの組合せが検証完了条件を満たすまで、仮想インスタンスの組を決定すること、仮想インスタンスに割り当てること、共同ゲーム開始可能状態とすること、共同ゲーム結果を生成することを繰り返し実行することを含んでもよい。
【００１０】
デッキの組合せの検証完了条件は、そのデッキの組合せを用いて所定回数、共同ゲームを実行することを含んでもよい。
【００１１】
前記所定の検証網羅性は、実行された共同ゲームの実行回数を実行すべき共同ゲームの実行回数で除算して得られる検証完了率に基づいて決定され、デッキの組合せの検証完了条件を越える回数実行された場合には、検証完了条件に定められた回数が実行されたものとして実行回数を算出してもよい。
【００１２】
前記仮想インスタンスを用いて共同ゲームを実行することは、プレイヤのプレイ履歴から生成された学習モデルを用いて実行することを含んでもよい。
【００１３】
また、本発明の一つの実施形態としてのプログラムは、前記方法を１以上のコンピュータに実行させるためのプログラムとすることができる。
【００１４】
本発明の一つの実施形態としてのシステムは、複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うためのシステムであって、デッキ集合は複数のデッキを含み、デッキ組合せは一つの共同ゲームを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、前記システムは、共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、所定の検証網羅性に達した後、第２のモードで共同ゲームを実行し、前記所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行することは、前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、仮想インスタンスの組を決定すること、共同ゲーム結果を生成すること、所定の検証網羅性に達したかを決定することを繰り返し実行する、ことを含み、前記所定の網羅性に達した後、第２のモードで共同ゲームを実行することは、共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する、ことを含む。
【００１５】
前記システムは、ゲームサーバ、管理サーバ及び仮想インスタンスサーバを含み、仮想インスタンスサーバが、ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、前記第１のモードで共同ゲームを実行することにおいて、管理サーバが、前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、ゲームサーバが、共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うための仮想インスタンスの組を決定し、決定された各組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成し、管理サーバが、デッキ組合せ集合と共同ゲーム結果に基づいて、所定の検証網羅性に達したかを決定し、前記第２のモードで共同ゲームを実行することにおいて、管理サーバが、共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、ゲームサーバが、共同ゲーム開始可能状態とされた前記一組の仮想インスタンスを用いて共同ゲームを実行し、共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果を生成する。
【００１６】
本発明の一つの実施形態としての管理サーバは、複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うための管理サーバであって、デッキ集合は複数のデッキを含み、デッキ組合せは一つの共同ゲームを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、仮想インスタンスサーバにおいて共同ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスを用いてゲームプログラムを実行し、前記管理サーバは、所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、所定の検証網羅性に達した後、第２のモードで共同ゲームを実行し、前記第１のモードで共同ゲームを実行することは、前記デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とし、共同ゲーム開始可能状態とされた仮想インスタンスから共同ゲームを行うために決定された仮想インスタンスの組の各組の仮想インスタンスを用いて共同ゲームが実行されて生成された共同ゲームに用いられたデッキの組合せを含む共同ゲーム結果及びデッキ組合せ集合に基づいて、所定の検証網羅性に達したかを決定し、所定の検証網羅性に達したと決定されるまで、共同ゲーム開始可能状態とすること、所定の検証網羅性に達したかを決定することを繰り返し実行する、ことを含み、前記第２のモードで共同ゲームを実行することは、共同ゲームを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及び共同ゲーム結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を前記決定された組の仮想インスタンスの各々に割り当て、前記決定された組のうちの一組の仮想インスタンスのゲーム状態を共同ゲーム開始可能状態とする、ことを含む。
【発明の効果】
【００１７】
本発明によれば、２つのモードで共同ゲームを実行することで効率的に多数のデッキの組合せを網羅的に検証可能なゲームプログラム検証システムを実現することを可能とする。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態に係るシステムの構成である。
【図２】本発明の一実施形態に係るシステムのハードウェア構成図である。
【図３】本発明の一実施形態に係るシステムの機能ブロック図である。
【図４】本発明の一実施形態に係るヘッドレスモードの概念図である。
【図５】本発明の一実施形態に係る情報処理のフローチャートである。
【図６】本発明の一実施形態に係る検証完了率推移の一例を示す図である。
【図７】本発明の一実施形態に係る情報処理のフローチャートである。
【図８】本発明の一実施形態に係る情報処理のフローチャートである。
【図９】本発明の一実施形態に係る情報処理のフローチャートである。
【図１０】本発明の一実施形態に係る情報処理のフローチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本発明の一つの実施形態を説明する。本実施形態に係るプログラム検証システム１００は、図１に示すように、ネットワーク１５０を介して接続された管理サーバ１１０、仮想インスタンスサーバ１２０及びゲームサーバ１３０を備えるシステムによって実現することができる。本実施形態において仮想インスタンスサーバ１２０及びゲームサーバ１３０は各々２以上のサーバを含むサーバ群とするが、１つのサーバのみによって実現することもできる。本発明におけるゲームは他のプレイヤと共同して進行させる共同ゲームである。本実施形態においては、他のプレイヤとの対戦を行うバトルゲームとする。複数のプレイヤが共通のノンプレイヤキャラクタと対戦するゲームとすることもできる。
【００２０】
図２は本実施形態に係る管理サーバ１１０、仮想インスタンスサーバ１２０及びゲームサーバ１３０のハードウェア構成を示すブロック図である。管理サーバ１１０、仮想インスタンスサーバ１２０及びゲームサーバ１３０は、ネットワーク１５０を介して互いに通信しつつゲームプログラムの検証を行うことができる装置であり、図２に示したとおり、処理装置２１１、２２１、２３１、出力装置２１２、２２２、２３２、入力装置２１３、２２３、２３３、記憶装置２１６、２２６、２３６、通信装置２１７、２２７、２３７及びバス２１８、２２８、２３８を備えることができる。各記憶装置においては、プログラム２１９、２２９、２３９が記憶される。ゲームプログラムは、ユーザ端末、仮想インスタンス及びゲームサーバで実行されるゲームプログラムを含む。プログラムをアプリと呼ぶことがある。
【００２１】
処理装置２１１、２２１、２３１の各々は、プログラム２１９、２２９、２３９、入力装置２１３、２２３、２３３からの入力データまたは通信装置２１７、２２７、２３７から受信したデータ等に基づいて各種の処理を行う。処理装置２１１、２２１、２３１は、管理サーバ１１０、仮想インスタンスサーバ１２０及びゲームサーバ１３０の各々が備える各装置を制御するプロセッサを備えており、プロセッサが含むレジスタや記憶装置２１６、２２６、２３６をワーク領域として各種処理を行う。
【００２２】
これらの各構成部はバス２１８、２２８、２３８によって接続されるが、それぞれが必要に応じて個別に接続される形態であってもかまわない。出力装置２１２、２２２、２３２は、処理装置２１１、２２１、２３１の制御に従って、画面の表示や音声を出力する。入力装置２１３、２２３、２３３は、キーボード、タッチパネル、タッチパッド、入力ボタン等のようにユーザからの入力を受け付ける機能を有するものである。
【００２３】
記憶装置２１６、２２６、２３６は、メインメモリ、バッファメモリ及びストレージを含み、揮発性メモリであるＲＡＭ及び不揮発性メモリであるｅＭＭＣ、ＵＦＳ、ＳＳＤのようなフラッシュメモリを用いた記憶装置及び磁気記憶装置等の一般的なコンピュータが備える記憶装置である。記憶装置２１６、２２６、２３６は、外部メモリを含むこともできる。通信装置２１７、２２７、２３７は、移動体通信、無線ＬＡＮ等の無線通信やイーサネット（登録商標）ケーブル、ＵＳＢケーブル等を用いた有線通信を行う。
【００２４】
本実施形態においては、ゲームサーバ１３０は、実際にプレイヤがゲームをプレイする際にユーザ端末（図示せず）によってアクセスされてゲームを実行するために使用されるゲームサーバと可能な限り同一構成であるクローンとする。実際のゲームサーバを使用してもかまわない。
【００２５】
ゲームサーバ１３０の記憶装置２３６に格納されたプログラム２３９は、実際にプレイヤによりゲームを実行するために使用されるサーバ用のゲームプログラムを含む。仮想インスタンスサーバ１２０における記憶装置２２６に記憶されるプログラムは、ユーザ端末において実行されるゲームプログラム（ゲームアプリ）と同様に動作するプログラムを含み、ゲームプログラムの検証に用いるその他のプログラムも含む。管理サーバ１１０における記憶装置２１６はプログラムの検証に用いるプログラム２１９及び２２９を格納する。
【００２６】
図３は本発明のシステム１００の機能ブロック図の一例を示す。管理サーバ１１０は、検証バトルデータ生成部３１１、検証制御部３１２、検証結果格納部３１３を備える。各仮想インスタンスサーバ１２０は、仮想インスタンス制御部３２０、複数の仮想インスタンス３２１を備え、各ゲームサーバ１３０は、仮想インスタンスの組をマッチングさせるマッチング部３３１及びマッチングさせた仮想インスタンスの組において実行されるバトルを実行するバトル実行部３３２を備える。他の実施形態においては、いずれのサーバがいずれの機能部を有してもよい。例えば、管理サーバ１１０が仮想インスタンス制御部３２０及び仮想インスタンス３２１を有することも可能である。また、１つのサーバがすべての機能部を有することもできる。
【００２７】
本実施形態において検証システム１００は、複数のゲーム媒体を含むデッキを用いて他のプレイヤとのバトルを行うゲームのためのゲームプログラムの検証を行うためのシステムである。バトルにおいては、各プレイヤが自己のデッキを用いて対戦を行う。デッキは、ゲーム媒体としてのカードを一つ以上含んで構成される。デッキ組合せは、一つのバトルを行うために用いられるデッキの組合せである。例えば、プレイヤＡとプレイヤＢとがバトルを行う場合、プレイヤＡのデッキＡとプレイヤＢのデッキＢとが一つのデッキ組合せである。デッキ集合はゲームプログラムの検証を行う際に検証の対象となる複数のデッキの集合であり、デッキ組合せ集合は検証の対象となる複数のデッキ組合せである。
【００２８】
検証バトルデータ生成部３１１は、ゲームプログラムの検証を行うために用いる検証バトルデータを決定する。本実施形態においては、検証バトルデータは、検証対象となるデッキ集合及びデッキ組合せ集合を含む。デッキ集合は検証対象となるすべてのカードにより構成可能なすべてのデッキを含み、デッキ組合せ集合はすべての組合せ可能なデッキの組合せとすることができる。検証バトルデータは、ゲームシステムを管理するゲームシステム管理者によって管理サーバへ入力されたデータに基づいて生成されることができる。
【００２９】
本実施形態においては、ゲームシステム管理者が新たに追加されたカードを含むすべてのカードについての情報を検査対象として管理サーバ１１０へ入力する。管理サーバ１１０の検証バトルデータ生成部３１１は、このデータに基づいて構成可能なすべてのデッキ及びその組合せのためのデッキ集合及びデッキ組合せ集合を含む検証バトルデータを生成する。一部のカードのみを検証対象としたり、一部のデッキ組合せのみを検証対象としてもよい。変形例として、ゲームシステム管理者がすべての検証対象となるデッキ集合を入力してもよいし、デッキ集合及びデッキ組合せ集合を入力してもよい。検証バトルデータには例えば表１に示すようなデッキ集合データ及び表２に示すようなデッキ組合せ集合データが含まれる。
【００３０】
【表１】
0006768982.tif 000002
【００３１】
【表２】
0006768982.tif 000003
【００３２】
本実施形態においては、デッキは３つのカードによって構成され、一つのバトルは２人のプレイヤ間で実行されるものとする。各プレイヤが１つずつのデッキを使用してバトルを行い、２つのデッキを含む一組のデッキ組合せを用いて一つのバトルが実行される。
【００３３】
表１において、デッキ識別番号に対してデッキを構成する３つのカード識別番号が関連付けられている。カード識別番号はゲーム媒体としてのカードの種類を識別するための番号である。例えば、デッキ識別番号１で識別されるデッキは、カード識別番号２１３、５１２及び３９２の３枚のカードによって構成されるデッキであることを示す。
【００３４】
表２においては、デッキ組合せ識別番号に対して２つのデッキを識別するデッキ識別番号が関連付けられている。デッキ組合せ識別番号は、デッキ組合せを識別するための識別番号である。本検証システムにおいては、デッキ組合せ集合データに含まれるすべてのデッキ組合せについて検証するものとする。各デッキ組合せ識別番号についての検証の完了条件を１回の実行とし、同一のデッキ組合せについて複数回の実行が要求される場合には、同一のデッキ組合せについて複数のデッキ組合せ識別番号を生成することができる。各デッキ組合せ識別番号に所定回数の完了条件を関連付けて記憶し、デッキ組合せ識別番号の完了条件を所定回数以上実行されることとすることもできる。
【００３５】
検証制御部３１２は、所定の検証網羅性に達するまで、第１のモードでバトルを実行し、所定の検証網羅性に達した後、第２のモードでバトルを実行することができる。
【００３６】
第１のモードでバトルを実行することは、デッキ集合に含まれるデッキを割り当てられた仮想インスタンスのゲーム状態をバトル開始可能状態（共同ゲーム開始可能状態）とし、バトル開始可能状態とされた仮想インスタンスからバトルを行うために決定された仮想インスタンスの複数の組の各組の仮想インスタンスを用いてバトルが実行されて生成されたバトルに用いられたデッキの組合せを含むバトル結果（共同ゲーム結果）及びデッキ組合せ集合に基づいて、所定の検証網羅性に達したかを決定し、所定の検証網羅性に達したと決定されるまで、バトル開始可能状態とすること、所定の検証網羅性に達したかを決定することを繰り返し実行する、ことを含むことができる。
【００３７】
検証網羅性は、すべての検証対象のうちのどの程度の検証対象の検証が完了したかを示すものである。本実施形態において検証網羅性は検証完了率を用いることとし、検証完了率は検証対象となる実行総数のうち実行が完了した実行数の割合である。
【００３８】
例えば、一つのデッキ組合せ識別番号に対して一回の実行を行う場合には、実行が完了したデッキ組合せ識別番号数を検証対象となるデッキ組合せ識別番号の総数で除算すれば検証完了率を取得できる。一つのデッキ組合せを複数回実行することが検証完了条件として設定されている場合には、実行されたバトルの実行回数を実行すべきバトルの実行回数で除算して得られる値を検証完了率することができるが、デッキの組合せの検証完了条件を越える回数実行された場合には、検証完了条件に定められた回数が実行されたものとして実行回数を算出することが好ましい。
【００３９】
第２のモードでバトルを実行することは、バトルを実行するための仮想インスタンスの組を決定し、デッキ組合せ集合及びバトル結果に基づいて決定された検証未完了のデッキの組合せのデッキの各々を決定された仮想インスタンスの各々に割り当て、所定の時間間隔毎に、前記決定された仮想インスタンスの組のうちの一組の仮想インスタンスのゲーム状態をバトル開始可能状態とする、ことを含むことができる。所定の時間間隔の間に、バトルを実行するためのバトル開始可能状態とされた一組の仮想インスタンスをバトルを実行するための組として決定してもよい。
【００４０】
デッキの組合せの検証が完了したか未完了であるかは、そのデッキ組合せのための検証完了条件を満たすか否かによって決定することができる。本実施形態においては、完了条件は、デッキ組合せに割り当てられたデッキ組合せ識別番号に対して１回実行されることとするが、デッキ組合せ識別番号毎に定められた所定の回数以上実行されることとしてもよい。
【００４１】
仮想インスタンスを用いたバトルの実行は、実際に行われたプレイヤのプレイ履歴に基づいて学習モデルを予め生成しておき、これに基づいてバトルを実行してもよい。これによって、ノンプレイヤキャラクタ同士のバトルによる検証であるものの、実際のプレイヤが取る振る舞いに近い振る舞いに基づいたバトルの検証を行うことが可能となる。
【００４２】
検証結果格納部３１３は、バトル実行部３３２及び仮想インスタンス３２１を用いて実行されたバトルのバトル結果を格納する。バトル結果は、ゲームサーバ１３０のバトル結果格納部３３３に格納され、仮想インスタンス制御部３２０がこれを監視して、更新があるとバトル結果を取得して、管理サーバ１１０へ送信するものとする。バトル結果は、バトルが正常終了したか、異常終了したか、いずれのデッキを用いた仮想インスタンスが勝利したか等のデータを含む。
【００４３】
変形例として、バトルが終了すると仮想インスタンス３２１がバトル結果を取得して、仮想インスタンス制御部３２０を介して、管理サーバ１１０へ送信してもよい。さらなる変形例として、仮想インスタンス制御部３２０が、外部のデータサーバ（図示せず）へバトル結果を送信して、データベース内に格納され、管理サーバ１１０がデータサーバへアクセスして取得してもよい。ゲームサーバ１３０からデータサーバへ送信されてもよい。
【００４４】
仮想インスタンス制御部３２０は、検証制御部３１２からの制御信号に従って、ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するための複数の仮想インスタンスを生成し、各仮想インスタンス３２１にデッキを割り当て、ゲーム状態をバトル開始可能状態とする。
【００４５】
仮想インスタンス３２１はユーザ端末またはユーザ端末のソフトウェア環境を仮想化するための仮想インスタンスであり、例えば、docker（登録商標）等の「コンテナ」と呼ばれるオペレーティングシステム・レベルの仮想化技術を用いることにより実現できる。docker（登録商標）は、Linux（登録商標）カーネルが提供するLinuxコンテナを制御し、プロセス単位での仮想化、すなわち、ＣＰＵの利用とファイルシステムの利用を、他のプロセスから分離された空間を提供することができる。各コンテナ同士は相互に分離されているため、あたかも、オペレーティングシステム内で、唯一動作するゲームアプリとしてふるまうことが可能になる。そのため、各コンテナにおいてゲームアプリを実行して、ゲームアプリのプロセスを起動することにより、ユーザ端末におけるゲームアプリの実行を仮想的に実現することができる。したがって、１つのサーバ装置において複数の仮想インスタンスを生成して、同時に複数のゲームアプリを隔離して並列に実行し、検証用結果を生成することができる。本実施形態においては、仮想インスタンス３２１としてdocker（登録商標）の「コンテナ」を用いる。
【００４６】
本実施形態においては、仮想インスタンス３２１を用いた検証用バトル処理は、ユーザ端末においてゲームをプレイするために実行されるゲームアプリを、オートパイロットで、ヘッドレスモードで実行することにより実行される。本実施形態においてヘッドレスモードとは、ＧＰＵにアクセスするグラフィック処理を無効化し、さらに、音源チップにアクセスするサウンド処理、および、外部サーバへのアクセス処理を無効化するモードである。これにより、ＣＰＵ、メモリ、二次記憶装置のみを使用する状態、すなわち、コンテナ内部に閉じたリソースへのアクセスのみでゲームを実行することができるため、人間が閲覧することを前提としたアニメーション処理スピード、人間が聞くことを前提とした音声の再生スピードといった律速要因（速度を決める要因）を排除することができるようになる。さらに、これらのグラフィック機器やサウンド機器は、一般的にＣＰＵの外にある外部機器として実装されており、ＣＰＵと外部機器との間のＩ／Ｏ処理にかかる同期のための待ち時間も省略することができる。これにより、人間のための演出や、外部機器のための同期待ちといったウェイト処理を省いた、ＣＰＵ単独の処理速度のみに依存するノー・ウェイト（No Wait）処理で、ゲームを高速に動作させることができるから、短時間でバトル結果を生成することができる。
【００４７】
この点を図４を用いてより詳細に説明する。図４（ａ）は通常のモードでバトルを実行する場合のＣＰＵの稼働状態を示し、（ｂ）はヘッドレスモードでバトルを実行する場合のＣＰＵの稼働状態を示す。（ａ）に示したとおり、通常モードにおいては、ＣＰＵは常に高負荷にあるわけではなく、局所的に高負荷が発生する。これはゲーム画面のフレーム描画に必要なデータを生成する部分等に相当する。そして、音楽と画面表示は、人間の知覚に合わせる必要があるため、所定のタイミングとなるまでウェイトが発生する。したがって、通常モードにおいてＣＰＵはゲーム進行の実時間で律速されながら、局所的に動作している。一方、ヘッドレスモードでは、律速要素となるＧＰＵとSoundを必要としないため、ＣＰＵ単独でイベントを高速に、すなわち、ウェイトをかけずに短時間で実行可能である。これにより、これまで分散していた処理を短時間にまとめて実行でき、通常モードでの一つのバトル実行期間で複数のバトル結果を生成することが可能であるため、高い処理効率を実現できる。
【００４８】
本発明においてゲームプログラムをヘッドレスモードで実行することは、ヘッドレスモードでゲームプログラムを実行することと、ヘッドレス化されたゲームプログラムを実行することのいずれであってもかまわない。ゲームをヘッドレス状態で進行させることができれば、どのような態様での実行であってもかまわない。広く普及しているゲームエンジンであるUnityにおいてはＧＵＩからヘッドレスモードを選択するだけで容易にヘッドレス化されたゲームプログラムを生成することが可能である。すなわち、ユーザ端末用のゲームプログラムを再利用して、検証用のゲームプログラムを容易に用意することができる。また、他の実施形態としてゲームプログラムをヘッドレスモードではない、通常モードで実行してもよい。
【００４９】
ゲームサーバ１３０のマッチング部３３１は、ゲーム状態がゲーム開始可能状態とされた仮想インスタンス３２１から一組の仮想インスタンスを選択してマッチングさせる。マッチングのための処理は、ゲームサーバが実際のユーザ端末同士をマッチングさせる処理と同様の処理とすることにより、実環境に近い状態で検証を行うことを可能とする。例えば、ゲーム開始可能状態とされている複数の仮想インスタンスから乱数に基づいてランダムに一組の仮想インスタンスをマッチングしてもよいし、ゲーム開始可能状態とされた順にマッチングさせてもよいし、仮想インスタンスに関連付けられた優先度に基づいてマッチングしてもよい。優先度は例えば仮想インスタンスに割り当ててもよいし、仮想インスタンスに割り当てられたデッキに割り当てられていてもよい。同一のゲームサーバ１３０に関連付けられた仮想インスタンスサーバ１２０において稼働する仮想インスタンス３２１同士がマッチングされる。
【００５０】
バトル実行部３３２は、マッチングされた一組の仮想インスタンス３２１に割り当てられたデッキを用いてバトルを実行し、バトル中ないしバトル終了等のステータスとともにバトルの結果をバトル結果格納部３３３に格納する。
【００５１】
本実施形態においては、管理サーバ１１０が複数の仮想インスタンスサーバ１２０をいずれかのゲームサーバ１３０と紐づけて起動する。仮想インスタンス３２１を用いて稼働するゲームプログラムは当該仮想インスタンスが稼働する仮想インスタンスサーバに関連付けられたゲームサーバ１３０へアクセスする。このように仮想インスタンスサーバとゲームサーバとを関連付けて動作させることにより、プレイヤ間のバトルをシミュレートする環境の最小セットを仮想インスタンスサーバとゲームサーバの対として構成し、この対を任意の数だけスケーラブルに起動することが可能となる。
【００５２】
本実施形態において各機能部は、図２に記載されたハードウェア構成に含まれるプログラムが処理装置によって実行され、出力装置、入力装置、記憶装置及び通信装置の各ハードウェアとソフトウェアとが協働して動作することによって実現されるが、各機能に対応する電子回路等を設けて実現されてもよい。
【００５３】
次に、本実施形態におけるシステム１００の動作を図５〜１０を用いて説明する。本実施形態においては、複数のゲーム媒体を含むデッキを用いて他のプレイヤとのバトルを行うゲームのためのゲームプログラムの検証を行う。まず、前述のとおり、ゲームシステム管理者が検証対象であるすべてのカードのための情報を含むデータを作成して、管理サーバ１１０へ入力すると、検証バトルデータ生成部３１１が表１及び表２に示すような、デッキ集合データ及びデッキ組合せ集合データを含む検証用のバトルデータを生成して、検証制御部３１２へ入力する。
【００５４】
検証制御部３１２は検証バトルデータを受け取ると、１以上の仮想インスタンス制御部３２０に対して、仮想インスタンスを生成するための仮想インスタンス生成信号を送信する。仮想インスタンス制御部３２０は、仮想インスタンス生成信号を受信すると仮想インスタンス３２１を複数生成する。仮想インスタンス制御部３２０は、検証制御部３１２からの制御信号によらずに自律的に仮想インスタンスを生成してもかまわない。
【００５５】
複数の仮想インスタンスが生成されると、図５に示す、ゲームプログラム検証のためのバトル実行処理５００を開始する。まず、第１のモードによるバトル実行処理（Ｓ５０１）を実行した後、第２のモードによるバトル実行処理を行う（Ｓ５０２）。第１のモードにおいては、所定の検証網羅性に到達するまで、バトルに用いられるデッキの組合せを指定せずにすべての仮想インスタンスを用いて可能な限り並列的にバトルを繰り替えし実行させる。そして、所定の検証網羅性に到達すると、第２のモードに移行し、検証が終了するまで、バトルに用いられるデッキの組合せを指定して逐次バトルを実行し続ける。
【００５６】
ゲームサーバ１３０は実際にユーザがゲームを実行するときと可能な限り同じ挙動となるようにすることが好ましい。実際にユーザがゲームを実行するときには、ユーザがユーザ端末を操作してゲーム開始ボタンを押すと、ユーザ端末で動作するゲームアプリのゲーム状態がゲーム開始可能状態となり、ゲームサーバへバトルを行うためのマッチング要求を行うものとする。ゲームサーバは、マッチング要求を受け取ったプレイヤ同士をマッチングする。この際、バトルのデッキ組合せを考慮してマッチングを行うことはしないものとする。
【００５７】
本実施形態の検証に用いられるゲームサーバ１３０におけるマッチング部３３１も同様の処理を行う。すなわち、仮想インスタンス３２１のゲーム状態がゲーム開始可能状態となって、ゲームサーバ１３０へマッチング要求を行うと、マッチング部３３１は、バトルデッキ組合せを考慮せずに、マッチング要求を受け取っている仮想インスタンス３２１同士をマッチングさせる。
【００５８】
ここでは、第１のモードでは、バトル開始可能状態に移行可能なすべての仮想インスタンスを一括してバトル開始可能状態に移行させてバトルを実行し、バトルが終了してバトル開始可能状態となると、再度一括してバトル開始可能状態に移行させてバトルを実行させることを繰り返すものとする。一括してバトル開始可能状態とされた仮想インスタンス同士がデッキ組合せを考慮せずにマッチングされるから、デッキ組合せを指定してマッチングをさせることはできない。バトル開始可能状態に移行させる処理を行う段階で移行可能となっている仮想インスタンスの中からゲームサーバによって乱数によってマッチングされてもよいし、先着順位マッチングされてもよいし、仮想インスタンスに関連付けられた優先度に基づいてマッチングしてもよい。
【００５９】
バトル開始可能状態に移行可能なすべての仮想インスタンスを一括してバトル開始可能状態に移行させることは、生成されている仮想インスタンスのすべてを一括して移行させる必要はない。一括処理を行う時点において移行可能な状態にある仮想インスタンスを移行させればよい。また、一括処理も厳密に一括である必要はない。移行可能状態の仮想インスタンスを順次移行させる処理を含むものとする。ただし、後述する第２のモードのように所定の間隔毎に、所望の一組の仮想インスタンスをマッチングさせるように、当該一組の仮想インスタンスのみをバトル開始可能状態に移行させる制御は行わない。
【００６０】
すべての仮想インスタンスを一括でバトル開始可能状態とするバッチ処理の試行回数に対する検証完了率の推移の一例を図６に示した。ここでは、５００組のデッキ組合せ集合が検証対象となっており、２００個の仮想インスタンスが生成され、一回のバッチ処理において１００バトルが実行されるものとする。理解のために一回のバトルの所要時間がデッキ組合せによらずに同じであると仮定したが、本実施形態はバトルの所要時間がデッキ組合せ等によって異なっていても実行可能である。並列度は、生成されている仮想インスタンスのうち、未検証バトルを実行している仮想インスタンスの割合である。並列度が高いほど効率的に検証を実行できていることを示している。
【００６１】
第１のモードによる一回目のバッチ処理においては、検証完了済のデッキ組合せがないから、検証開始当初は並列度が高く、検証完了率は実行されたバトルの数だけ上昇する。２回目以降のバッチ処理においては、１回目に実行されたデッキ組合せと同一のデッキ組合せを用いたバトルが重複して実行される場合があるため、並列度は徐々に低下し、検証完了率の上昇量もまた徐々に低下する。
【００６２】
第２のモードにおいては、一つのゲームサーバ１３０に対して、所望のデッキ組合せのデッキを各々割り当てられた一組の仮想インスタンスを所定間隔毎にバトル開始可能状態に移行させることによって、所定間隔毎に一組の仮想インスタンスのみがバトル開始可能状態となっている。したがって、ゲームサーバ１３０においては、その一組の仮想インスタンスのマッチングを行うことになるから、所望のデッキ組合せの検証を行うことができる。
【００６３】
この場合、所定間隔の待機時間が生じるから、第１のモードに比べて仮想インスタンスの稼働率が低くなる。しかしながら、第２のモードでは検証が完了していないデッキ組合せのみの検証を行うことが可能であるから、検証完了率によらず並列度は一定であり、検証完了率が上昇しても並列度は低下しない。一例として、第２のモードにて検証バトルを実行する場合の並列度は４０％とする。
【００６４】
本実施形態では、第１のモードにてバトルの実行を開始し、その後、バッチ処理の試行回数が増加することにともなって第１のモードでの並列度が低下して第２のモードの並列度に達するタイミングで第２のモードに切り替えるものとする。切り替えるタイミングは、例えば、第１のモードが第２のモードの並列度である４０％に到達するバッチ処理の試行回数に対応する検証完了率＝７０％に到達したタイミングとする。これによって、検証開始当初は第１のモードを用いて高い並列度で検証を完了させ、並列度が低下してきたタイミングで第２のモードに切り替えて並列度のさらなる低下を防止し、全体として効率的に検証を完了させることを可能とする。
【００６５】
図７〜９は、本実施形態における第１のモードにおける管理サーバ１１０、仮想インスタンスサーバ１２０及びゲームサーバ１３０において実行される処理のより詳細なフローチャートを示す。
【００６６】
本実施形態においては、まず、検証制御部３１２は、各仮想インスタンスに対して、デッキ集合から選択されたデッキを割り当てる（Ｓ７０１）。デッキの割り当てはどのような方法によって実行されてもよく、例えば、乱数に基づいてランダムに割り当ててもよいし、デッキ識別子の順に順番に割り当ててもよいし、仮想インスタンスに関連付けられた優先度に基づいてマッチングしてもよい。
【００６７】
そして、検証制御部３１２は、バトル開始可能状態に移行できる仮想インスタンス３２１を選択する（Ｓ７０２）。仮想インスタンス３２１は、例えば、バトルを実行している間はバトル開始可能状態に移行できるゲーム状態ではない。そのため、例えば、バトルを実行させた後、バトル結果が生成されていない場合には、バトルを実行中であるからバトル開始可能状態に移行できるゲーム状態ではないと判定することができる。また、仮想インスタンス制御部３２０が各仮想インスタンス３２１のゲーム状態を管理して、検証制御部３１２へ通知する信号を送信してもよい。例えば、ゲーム状態が、バトル開始可能状態に移行できる状態である待機状態、バトル開始可能状態、バトル状態のいずれかの状態をとり、これを検証制御部３１２や仮想インスタンス制御部３２０が管理するようにしてもよい。バトル状態はバトルを実行中であることを意味し、バトル開始可能状態はバトルを開始できる状態を意味し、待機状態はバトル開始可能状態に移行できる状態であり、バトルが終了すると待機状態となるものとする。
【００６８】
検証制御部３１２は、選択したバトル開始可能状態に移行できる仮想インスタンスのゲーム状態をバトル開始可能状態に移行させる（Ｓ７０４）。例えば、バトル開始可能状態とさせるための制御信号を仮想インスタンス制御部３２０へ送信し、仮想インスタンス制御部３２０が仮想インスタンスの状態を遷移させる。バトル開始可能状態に移行できる仮想インスタンスの選択及びバトル開始可能状態への移行は移行可能なすべての仮想インスタンスを選択して、移行させるものとする。
【００６９】
仮想インスタンスサーバ１２０においては、管理サーバ１１０からのバトル開始可能状態移行命令を待ち受け（Ｓ８０１）、移行命令を受け付けると、仮想インスタンス３２１をバトル開始可能状態に移行し（Ｓ８０２）、移行された仮想インスタンス３２１は、バトルを開始するためにマッチング要求をゲームサーバ１３０へ送信し（Ｓ８０４）、マッチングが完了するとバトルを実行する（Ｓ８０６）。マッチング要求は、当該仮想インスタンスが稼働する仮想インスタンスサーバ１２０が関連付けられているゲームサーバ１３０へ送信される。
【００７０】
ゲームサーバ１３０は、仮想インスタンス３２１からのマッチング要求を受信し（Ｓ９０１）、仮想インスタンスのマッチングが可能であるか否かを判定する（Ｓ９０２）。本実施形態においては、２人のプレイヤ間でのバトルを行うゲームプログラムの検証を対象としているから、２以上の仮想インスタンスからのマッチング要求を受信していればマッチングが可能であると判定される。
【００７１】
マッチングが可能であると判定されると、２つの仮想インスタンスを一組としてマッチングを行い（Ｓ９０４）、マッチングが行われた一組の仮想インスタンスを用いてバトルが実行される（Ｓ９０６）。マッチングが行われるとマッチングされたデッキ組合せをバトル中というステータスとともにバトル結果としてバトル結果格納部３３３に格納するものとする。そして、バトルが終了するとバトル終了というステータスとともにバトル結果が生成され、実行されたバトルで用いられたデッキの組合せとともに、バトル結果をバトル結果格納部３３３に格納する（Ｓ９０８）。
【００７２】
管理サーバ１１０においては、選択された仮想インスタンスをバトル開始可能状態に移行させると（Ｓ７０４）、所定の検証網羅性を達成したか否かを判定する。管理サーバ１１０においては、ゲームサーバ１３０によって生成されたバトル結果を検証結果格納部３１３に格納する。そして、検証制御部３１２は、検証バトルデータ及び検証結果格納部３１３に格納されたバトル結果に基づいて、所定の検証網羅性に達したか否かを判定する。ここでは、検証網羅性として検証完了率を用いるものとする。
【００７３】
第１のモードにおいては、デッキ組合せを指定せずにバトルが実行されるから、同一のデッキ組合せについて重複してバトルが実行される可能性がある。このため、検証完了率の算出に当たっては、重複して実行されている同一のデッキ組合せに基づくバトル結果は除くものとする。また、バトル結果は終了したバトルのデータのみである必要はない。バトル実行中のデッキ組合せを検証完了率の算出に用いてもよい。
【００７４】
所定の検証網羅性を達成したと判定されない場合には、Ｓ７０２へ戻り、バトルの実行を繰り返し実行する。本実施形態においては、仮想インスタンスへのデッキ割り当ては第１のモード開始時のみとしているが、一つの変形例として、バトル開始可能状態に移行できる仮想インスタンスを選択した際に（Ｓ７０２）、選択した仮想インスタンスに対してデッキを割り当てるようにしてもよい。
【００７５】
所定の検証網羅性を達成したと判定された場合には、第１のモードによるバトル実行処理（Ｓ５０１）は終了し、第２のモードによるバトル実行処理（Ｓ５０２）へ移行する。
【００７６】
図１０は第２のモードにおける管理サーバ１１０の処理を示すフローチャートである。第２のモードにおいて検証制御部３１２は、バトル開始可能状態に移行できる仮想インスタンスから一組の仮想インスタンスを選択し（Ｓ１００１）、選択された一組の仮想インスタンスに対してデッキを割り当てる（Ｓ１００２）。ここで割り当てられるデッキは、検証が完了していないデッキ組合せから選択された一つのデッキ組合せを構成するデッキである。本実施形態においては、検証制御部３１２は、検証バトルデータに含まれるデッキ組合せ集合とバトル結果に含まれるデッキ組合せとの差分を基づいて、検証が未完了のデッキ組合せを特定することができる。バトル結果におけるバトル実行中のステータスのデッキは未完了のデッキ組合せから除外するものとすることが好ましい。一つのデッキ組合せ識別番号について完了条件として所定回数の実行が設定されている場合には、当該デッキ組合せ識別番号に対して実行された回数を記憶し、所定回数に到達するまでは未完了のデッキ組合せとして特定させることができる。
【００７７】
選択されて、デッキが割り当てられた一組の仮想インスタンスをバトル開始可能状態に移行させる（Ｓ１００４）。そして、すべての検証対象であるデッキ組合せの検証が完了したか否かを判定する（Ｓ１００６）。検証が完了していないデッキ組合せがある場合には、所定の時間待機した後（Ｓ１００８）、Ｓ１００１に戻り、すべてのデッキ組合せの検証が完了されるまで、次の検証未完了のデッキ組合せのための処理を繰り返し実行する。
【００７８】
仮想インスタンスサーバ１２０及びゲームサーバ１３０の処理を示すフローチャートは第１のモードと同様であり、重複する部分は省略しつつ図７〜９を参照しながら説明する。
【００７９】
仮想インスタンスサーバ１２０においては、管理サーバ１１０からのバトル開始可能状態移行命令を待ち受け付けると、仮想インスタンス３２１をバトル開始可能状態に移行し、移行された仮想インスタンス３２１は、バトルを開始するためにマッチング要求をゲームサーバ１３０へ送信し、マッチングが完了するとバトルを実行する（Ｓ８０１〜Ｓ８０６）。ゲームサーバ１３０は、仮想インスタンス３２１からのマッチング要求を受信し、仮想インスタンスのマッチングを行う（Ｓ９０１〜Ｓ９０４）。
【００８０】
本実施形態においては、検証制御部３１２は、一組の仮想インスタンスをバトル開始可能状態に移行させた後、次の組の仮想インスタンスをバトル開始可能状態に移行させる前に所定時間待機する（Ｓ１００８）。このため、ゲームサーバ１３０においてマッチング要求は一組の仮想インスタンスからのマッチング要求を受信するから、この一組の仮想インスタンスのみがマッチング対象となり、この一組の仮想インスタンスがマッチングされる。検証制御部３１２における待機時間は、一組の仮想インスタンスのマッチングをゲームサーバ１３０に行わせるために必要な時間間隔とする。仮想インスタンスの組がマッチングされたか否かを例えば仮想インスタンス制御部３２０が監視して、マッチングが行われたことを確認すると、次の組の仮想インスタンスのゲーム状態を移行させてもよい。
【００８１】
ゲームサーバ１３０の通常の処理においては、デッキ組合せを考慮することなくマッチング可能なユーザ同士をマッチングさせる。このため、３つ以上のマッチング要求がゲームサーバ１３０において受信されていると、特定のデッキ組合せとなるようにマッチングさせることはできない。本実施形態においては、前述のとおり、マッチング処理の段階で特定のデッキ組合せのデッキが割り当てられた２つの仮想インスタンスのみがマッチング対象となっているように制御することにより、ゲームサーバ１３０のプログラムや仮想インスタンスで実行されるゲームアプリを修正することなく、所望のデッキ組合せのバトルを実行させることを可能とする。
【００８２】
マッチングが行われた一組の仮想インスタンスを用いてバトルが実行され、バトルが終了するとバトル結果が生成され、実行されたバトルで用いられたデッキの組合せとともに、ステータスをバトル終了としつつバトル結果がバトル結果格納部３３３に格納される（Ｓ９０６、Ｓ９０８）。
【００８３】
検証制御部３１２においては、すべての検証対象のデッキ組合せについての検証が完了したと判定すると（Ｓ１００６）、第２のモードによるバトル処理（Ｓ５０２）を終了させ、プログラム検証処理が終了する。
【００８４】
ゲームシステム管理者は、生成されたバトル結果に基づいて、検証対象となったデッキ組合せについてのゲームプログラムの挙動の妥当性等を検証することが可能となる。
【００８５】
本実施形態を用いることにより、ゲームサーバのゲームプログラム及びユーザ端末のゲームアプリが実際に運用される方式で通信を行うことで多数のデッキ組合せを用いたバトルの網羅的な検証を効率的に行うことが可能となる。ＫＰＩ（Key Performance Indicator）と呼ばれる、カード別やカードの組合せ別の勝敗率を算出してゲームバランスの検証を行うことも可能である。
【００８６】
サーバサイド及びユーザ端末サイドにおいて、バトルシミュレーションを行うための特別なロジックを実装することを必要としないから、容易にゲームプログラムの検証を行うことができる。また、ゲームのシミュレーションロジックと、シミュレーションを管理するロジックは完全に独立して設計することが可能であり、ゲームのシミュレーションロジックを変更せずにシミュレーションを管理できる。
【００８７】
仮想インスタンスサーバとゲームサーバとを関連付けて動作させることにより、プレイヤ間のバトルをシミュレートする環境の最小セットを仮想インスタンスサーバとゲームサーバの対として構成し、この対を任意の数だけ起動することでスケーラブルな検証システムを実現することができる。
【００８８】
以上に説明した処理または動作において、矛盾が生じない限りにおいて、処理または動作を自由に変更することができる。一つのサーバによってすべての処理が実行されるようにしてもよいし、より多くのサーバによって分散して実行されるようにしてもよい。
【００８９】
また以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【符号の説明】
【００９０】
１００  ：検証システム
１１０  ：管理サーバ
１２０  ：仮想インスタンスサーバ
１３０  ：ゲームサーバ
１５０  ：ネットワーク
２１１、２２１、２３１  ：処理装置
２１２、２２２、２３２  ：出力装置
２１３、２２３、２３３  ：入力装置
２１６、２２６、２３６  ：記憶装置
２１７、２２７、２３７  ：通信装置
２１８、２２８、２３８  ：バス
２１９、２２９、２３０  ：プログラム
３１１  ：検証バトルデータ生成部
３１２  ：検証制御部
３１３  ：検証結果格納部
３２０  ：仮想インスタンス制御部
３２１  ：仮想インスタンス
３３１  ：マッチング部
３３２  ：バトル実行部
３３３  ：バトル結果格納部
【要約】
【課題】プログラム検証のための方法、プログラム、システム、サーバ及び方法を提供すること。
【解決手段】複数のゲーム媒体を含むデッキを用いて他のプレイヤとの共同ゲームのためのゲームプログラムの検証を行うためのシステムによって実行される方法であって、デッキ集合は複数のデッキを含み、デッキ組合せは一つの共同ゲームを行うために用いられるデッキの組合せであり、デッキ組合せ集合は複数のデッキの組合せを含み、前記方法は、ゲームをプレイするユーザ端末またはユーザ端末のソフトウェア環境を仮想化するために生成された複数の仮想インスタンスにおいてゲームプログラムを実行し、所定の検証網羅性に達するまで、第１のモードで共同ゲームを実行し、所定の検証網羅性に達した後、第２のモードで共同ゲームを実行する、ことを含む方法。
【選択図】図１【図１】
0006768982.tif 000004
【図２】
0006768982.tif 000005
【図３】
0006768982.tif 000006
【図４】
0006768982.tif 000007
【図５】
0006768982.tif 000008
【図６】
0006768982.tif 000009
【図７】
0006768982.tif 000010
【図８】
0006768982.tif 000011
【図９】
0006768982.tif 000012
【図１０】
0006768982.tif 000013