(57)【要約】【課題】  仮想カードプレーに基づくインタラクティブなゲーミング体験を提供する。【解決手段】  仮想カードプレーに基づくインタラクティブなゲーミング体験が本願において説明される。いくつかの方法が、仮想カードのペアの各々について、１つ以上のスキルを選択することと、仮想カードのペアの各々についての１つ以上のスキルを用いた仮想カードのペアの比較分析を含む仮想カードのペアを用いた仮想カードバトルを行って、差異値を確立することと、差異値を用いて、選択された困難度を有する仮想活動を作成することと、を含む。仮想活動は、仮想カードバトルのインタラクティブ版である。【選択図】  図１１
2017029731.tif 000002
【特許請求の範囲】
【請求項１】
仮想カードバトルのための仮想カードペアのうち少なくとも１つの選択を受信するステップと、
前記仮想カードペアの各々について、１つ以上のスキルを選択するステップと、
前記１つ以上のスキルを用いて比較分析を行うことにより仮想カードバトルを実行して、差異値を算定するステップと、
前記差異値を使用して、仮想活動のための複数の属性を選択するステップであって、前記仮想活動は前記仮想カードバトルのインタラクティブ版である、ステップと、
前記複数の属性を有する前記仮想活動を、前記仮想カードバトルのプレーヤに提供するステップと、
を含む方法。
【請求項２】
前記仮想カードペアのうちの第１の仮想カードは前記プレーヤに属し、前記仮想カードペアのうちの第２の仮想カードは第２のプレーヤに属する、請求項１に記載の方法。
【請求項３】
前記１つ以上のスキルは、仮想ゲーミングシステムによってランダムに選択される、請求項１に記載の方法。
【請求項４】
前記差異値を前記仮想カードペアに近接して表示するステップ、をさらに含む請求項１に記載の方法。
【請求項５】
前記仮想活動のために選択された前記複数の属性は、増やされ又は減らされる困難度を含む、請求項１に記載の方法。
【請求項６】
前記困難度は、前記差異値の大きさに従って増やされ又は減らされる、請求項５に記載の方法。
【請求項７】
前記複数の属性の数は、前記差異値の大きさに従って増やされ又は減らされる、請求項５に記載の方法。
【請求項８】
前記差異値を差異値範囲と比較することによって前記仮想カードバトルの困難度を決定するステップであって、前記差異値範囲は、前記複数の属性を定義する様々な困難度に関連付けられる、ステップ、をさらに含む請求項１に記載の方法。
【請求項９】
第１パーティ仮想カードの選択を受信するステップと、
第２パーティ仮想カードの選択を受信するステップと、
仮想カードバトルのための仮想カードペアを選択するステップであって、前記仮想カードペアは、前記第１パーティ仮想カードのうちの１つと前記第２パーティ仮想カードのうちの１つとを含む、ステップと、
前記仮想カードペアの各々について、１つ以上のスキルを選択するステップと、
前記仮想カードペアの各々についての前記１つ以上のスキルを用いて前記仮想カードペアの比較分析を行って、差異値を確立するステップと、
前記差異値を用いて仮想活動のための複数の属性を選択するステップであって、前記仮想活動は前記仮想カードバトルのインタラクティブ版である、ステップと、
を含む方法。
【請求項１０】
前記比較分析は、前記仮想カードペアの各々についての前記１つ以上のスキルを困難度範囲に対して比較して前記差異値を算定することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記仮想カードバトルのプレーヤに対して、前記複数の属性を有する前記仮想活動を実行するステップ、をさらに含む請求項９に記載の方法。
【請求項１２】
仮想カードペアの各々について、１つ以上のスキルを選択するステップであって、前記１つ以上のスキルはスキル値を各々有する、ステップと、
仮想カードバトルのための仮想カードバトルタイプをランダムに選択するステップと、
前記仮想カードペアの各々についての前記１つ以上のスキルを用いた前記仮想カードペアの比較分析を含む前記仮想カードペアを用いた前記仮想カードバトルを行って、差異値を確立するステップと、
前記差異値を用いて、選択された困難度を有する仮想活動を作成するステップであって、前記仮想活動は前記仮想カードバトルのインタラクティブ版である、ステップと、
を含む方法。
【請求項１３】
前記仮想カードペアの各々は選手を表す、請求項１２に記載の方法。
【請求項１４】
前記１つ以上のスキルは、前記選手に関連付けられたスポーツに関連する、請求項１３に記載の方法。
【請求項１５】
前記仮想活動は、前記スポーツに関連する３次元のスポーツ活動である、請求項１４に記載の方法。
【請求項１６】
前記困難度は、対向するプレーヤの数、環境条件、ターゲットエリア又はサイズ、照準安定化、ターゲット距離、及びこれらの組み合わせのうち、任意のものから選択された複数の属性を含む、請求項１５に記載の方法。
【請求項１７】
前記困難度は、前記差異値の大きさに従って増やされ又は減らされる、請求項１６に記載の方法。
【請求項１８】
前記仮想カードペアはランダムに選択される、請求項１７に記載の方法。
【請求項１９】
前記仮想活動のために選択される属性は、前記仮想カードバトルの対象事項に基づいて選択される、請求項１８に記載の方法。
【請求項２０】
前記属性は、前記差異値が入る困難度範囲に基づいてさらに選択される、請求項１９に記載の方法。
【請求項２１】
第１パーティ仮想カードの選択を受信するステップと、
第２パーティ仮想カードの選択を受信するステップと、
仮想カードバトルのための仮想カードペアを選択するステップであって、前記仮想カードペアは、前記第１パーティ仮想カードのうちの１つと前記第２パーティ仮想カードのうちの１つとを含む、ステップと、
前記仮想カードペアの各々について、１つ以上のスキルを選択するステップと、
前記仮想カードペアの各々についての前記１つ以上のスキルを用いて前記仮想カードペアの比較分析を行って、差異値を確立するステップと、
差異値の範囲を含むテーブルのルックアップを実行するステップであって、各範囲は、前記仮想カードバトルに基づく仮想活動の困難度に関連付けられ、前記ルックアップは、算定された差異値が入る差異値の前記範囲のうちいずれかを決定する、ステップと、
前記仮想活動にプレーヤが如何にして参加するかを定義する複数の選択された仮想活動パラメータの各々について、離散確率密度算定を行うステップと、
乱数スクリプティングを行って、前記複数の選択された仮想活動パラメータの各々について、値を動的に選択するステップと、
前記プレーヤに対して前記仮想活動を実行するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2015年8月4日に申請された米国仮出願第62/201,004号の利益及び優先権を主張し、この仮出願はその全体を、その中に挙げられるすべての参照及び付録を含め、本明細書において参照により援用される。
【０００２】
本テクノロジーは、概して、仮想ゲーミングに関し、限定ではないがより詳細には、多面的なインタラクティブゲーミング体験を提供するシステム及び方法に関し、いくつかの実施形態において、仮想カードバトルが発生する。仮想カードバトルの結果が、ゲーム内におけるチャレンジ又は活動の困難度に影響する。
【発明の概要】
【０００３】
いくつかの実施形態に従い、本開示は、（ａ）仮想カードバトルのための仮想カードのペアのうち少なくとも１つの選択を受信することと、（ｂ）仮想カードのペアの各々について、１つ以上のスキルを選択することと、（ｃ）１つ以上のスキルを用いて比較分析を行うことにより仮想カードバトルを実行して、差異値を算定することと、（ｄ）差異値を使用して仮想活動のための複数の属性を選択することであって、仮想活動は仮想カードバトルのインタラクティブ版である、ことと、（ｅ）複数の属性を有する仮想活動を、仮想カードバトルのプレーヤに提供することと、を含む方法に向けられる。
【０００４】
いくつかの実施形態に従い、本開示は、（ａ）第１パーティ仮想カードの選択を受信することと、（ｂ）第２パーティ仮想カードの選択を受信することと、（ｃ）仮想カードバトルのための仮想カードのペアを選択することであって、仮想カードのペアは、第１パーティ仮想カードのうちの１つと第２パーティ仮想カードのうちの１つとを含む、ことと、（ｄ）仮想カードのペアの各々についての１つ以上のスキルを選択することと、（ｅ）仮想カードのペアの各々についての１つ以上のスキルを用いて仮想カードのペアの比較分析を行って、差異値を確立することと、（ｆ）差異値を用いて仮想活動のための複数の属性を選択することであって、仮想活動は仮想カードバトルのインタラクティブ版である、ことと、を含む方法に向けられる。
【０００５】
いくつかの実施形態に従い、本開示は、（ａ）仮想カードのペアの各々について、１つ以上のスキルを選択することであって、１つ以上のスキルはスキル値を各々有する、ことと、（ｂ）仮想カードバトルのための仮想カードバトルタイプをランダムに選択することと、（ｃ）仮想カードのペアの各々についての１つ以上のスキルを用いた仮想カードのペアの比較分析を含む仮想カードのペアを用いた仮想カードバトルを行って、差異値を確立することと、（ｄ）差異値を用いて、選択された困難度を有する仮想活動を作成することであって、仮想活動は仮想カードバトルのインタラクティブ版である、ことと、を含む方法に向けられる。
【図面の簡単な説明】
【０００６】
本テクノロジーの特定の実施形態が、添付の図面によって例示される。図面は必ずしも縮尺どおりでなく、本テクノロジーの理解に必要でない詳細、又は他の詳細を知覚するのを困難にする詳細は、省略され得ることが理解されるであろう。本テクノロジーは、本明細書に例示される具体的な実施形態に必ずしも限定されないことが理解されるであろう。
【図１】本テクノロジーの態様の実践に使用されることが可能な一例示的なコンピューティングアーキテクチャの概略図である。
【図２】１つ以上の仮想カードバトルのための仮想カードの選択を示す一例示的なグラフィカルユーザインターフェース（ＧＵＩ）のスクリーンショットである。
【図３】仮想カードの様々なペアについて、仮想カードバトルの部分の差異スコアを示す一例示的なＧＵＩのスクリーンショットである。
【図４】仮想カードの各々についてのスキル値を示す一例示的なＧＵＩのスクリーンショットである。
【図５】仮想カードバトルで一緒に対決させた仮想カードのすべてのペアについての差異スコアを示す一例示的なＧＵＩのスクリーンショットである。
【図６】仮想活動開始画面を示す一例示的なＧＵＩのスクリーンショットである。
【図７】仮想カードバトルの１対１対戦を示す一例示的なＧＵＩのスクリーンショットである。
【図８】仮想カードバトルに基づいて仮想活動のために選択されたプレーヤと、仮想カードバトルのために算定された差異スコアと、差異値に基づいて仮想活動のために選択された困難度とを示す一例示的なＧＵＩのスクリーンショットである。
【図９】仮想活動についてのターゲットサイズ変更を示す一例示的なＧＵＩのスクリーンショットである。
【図１０】仮想活動におけるプレーヤ参加を示す一例示的なＧＵＩのスクリーンショットである。仮想活動は、仮想カードバトルの差異値に基づいて困難さについて構成される。
【図１１】本開示の一例示的な方法のフローチャートである。
【図１２】本開示の別の例示的な方法のフローチャートである。
【図１３】本テクノロジーの態様を実施することに使用可能な一例示的なコンピューティング装置の概略図である。
【発明を実施するための形態】
【０００７】
本テクノロジーは、多くの異なる形態における実施形態の余地があるが、いくつかの特定の実施形態が、本開示が本テクノロジーの原理の例示とみなされるべきであり、本テクノロジーを例示される実施形態に限定するものではないとの理解と共に、図面において示され、本明細書において詳細に説明される。
【０００８】
本明細書において使用される専門用語は、単に具体的な実施形態を説明する目的のものであり、本テクノロジーの限定であることは意図されない。本明細書において使用されるとき、単数形「一の（a、an）」及び「その（the）」は、文脈が別途明確に示さない限り、複数形を同様にして含むことが意図される。さらに、用語「含む」及び／又は「含んでいる」は、本明細書において使用されるとき、示された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントについての存在を指定し、しかし、１つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はこれらのグループについての存在又は追加を除外しないことが理解されるであろう。
【０００９】
本明細書において参照される同様又は類似の要素及び／又はコンポーネントが、図面の全体をとおして同様の参照文字で識別され得ることが理解されるであろう。さらに、図のいくつかは単に本テクノロジーの概略表現であることが理解されるであろう。そのようなものとして、コンポーネントのうちいくつかは、絵的な明りょうさのため、その実際のスケールからゆがめられている場合がある。
【００１０】
本テクノロジーは、仮想ゲーム体験を提供するシステム及び方法に向けられる。いくつかの実施形態において、仮想ゲーム体験は、仮想カードバトルと仮想ゲーム活動との双方を含む。いくつかの実施形態に従い、仮想ゲーム活動の初期条件は、部分的に、仮想カードバトルの結果に基づく。一実施形態において、初期条件は、仮想ゲーム活動の困難度を参照する。
【００１１】
図１は、本テクノロジーの態様を実践する一例示的なアーキテクチャを例示している。アーキテクチャは、様々な機能性を提供するように構成されたサーバシステム、以降「システム１０５」、を含み、上記機能性は、本文献の全体をとおしてさらに詳細に説明される。一般に、システム１０５は、クライアント装置、例えば、クライアント１１５などと通信するように構成される。クライアント１１５には、例えば、スマートフォン、ラップトップ、コンピュータ、又は他の同様のコンピューティング装置が含まれ得る。本テクノロジーに従って利用されることが可能なコンピューティング装置の一例が、図１３に関してさらに詳細に説明される。
【００１２】
システム１０５は、パブリック又はプライベートネットワーク、例えば、ネットワーク１２０などを介して、クライアント１１５に通信可能に結合することができる。適切なネットワークが、例えば、ローカルイントラネット、ＰＡＮ（パーソナルエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、ＭＡＮ（メトロポリタンエリアネットワーク）、仮想プライベートネットワーク（ＶＰＮ）、ストレージエリアネットワーク（ＳＡＮ）、フレームリレー接続、高度インテリジェントネットワーク（ＡＩＮ）接続、同期型光ネットワーク（ＳＯＮＥＴ）接続、デジタルＴ１、Ｔ３、Ｅ１、又はＥ３回線、デジタルデータサービス（ＤＤＳ）接続、ＤＳＬ（デジタル加入者回線）接続、イーサネット（登録商標）接続、ＩＳＤＮ（統合サービスデジタルネットワーク）回線、ダイヤルアップポート、例えば、Ｖ．９０、Ｖ．３４、又はＶ．３４ｂｉｓアナログモデム接続、ケーブルモデム、ＡＴＭ（非同期転送モード）接続、又はＦＤＤＩ（ファイバ分散データインターフェース）若しくはＣＤＤＩ（銅線分散データインターフェース）接続のうち、任意の１つ以上を含み、あるいは該任意の１つ以上とインターフェースをとり得る。さらに、通信が、ＷＡＰ（ワイヤレスアプリケーションプロトコル）、ＧＰＲＳ（General  Packet  Radio  Service）、ＧＳＭ（登録商標）（Global  System  for  Mobile  Communication）、ＣＤＭＡ（符号分割多重アクセス）若しくはＴＤＭＡ（時分割多重アクセス）、セルラーフォンネットワーク、ＧＰＳ（グローバルポジショニングシステム）、ＣＤＰＤ（セルラーデジタルパケットデータ）、ＲＩＭ（リサーチインモーション社）デュプレックスページングネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）無線、又はＩＥＥＥ８０２．１１ベースの無線周波数ネットワークを含む、様々なワイヤレスネットワークのうち任意のものに対するリンクをさらに含み得る。ネットワーク１２０は、さらに、ＲＳ−２３２シリアル接続、ＩＥＥＥ−１３９４（Ｆｉｒｅｗｉｒｅ）接続、ファイバチャネル接続、ＩｒＤＡ（赤外線）ポート、ＳＣＳＩ（スモールコンピュータシステムインターフェース）接続、ＵＳＢ（ユニバーサルシリアルバス）接続、又は、他の有線若しくはワイヤレスの、デジタル若しくはアナログの、インターフェース若しくは接続、メッシュ、若しくはＤｉｇｉ（登録商標）ネットワーキングのうち、任意の１つ以上含み、あるいは該任意の１つ以上とインターフェースをとることができる。
【００１３】
システム１０５は、プロセッサ１３０、ネットワークインターフェース１３５、及びメモリ１４０を一般に含む。いくつかの実施形態に従い、メモリ１４０は、様々な方法を実行するための、プロセッサ１３０により実行されることが可能なロジック（例えば、命令）１４５を含む。例えば、ロジックは、ビデオゲームクライアントアプリケーション（以降、「ゲーミングアプリケーション１５０」）を含むことができ、これは、本明細書においてさらに説明される機能性を提供するように構成される。
【００１４】
システム１０５に帰する、本明細書に説明される機能性は、クライアント１１５内でさらに実行されてもよいことが理解されるであろう。すなわち、クライアント１１５は、本明細書に説明される機能性を実行するようにプログラムされることができる。別の例において、システム１０５とクライアント１１５とが協働して、本明細書に説明される機能性を提供してもよく、したがって、クライアント１１５は、システム１０５とクライアント１１５とがクライアント／サーバ関係において動作するような、システム１０５と相互作用するクライアント側アプリケーションを提供される。複雑な計算の機能は、サーバ１０５によって実行されることができると同時に、より少ない計算リソースを必要とする簡素な動作は、クライアント１１５によって実行されることができ、例えば、データ収集及びデータ表示などである。
【００１５】
一般に、ユーザインターフェースモジュール１２５は、システム１０５によって実行されて、ユーザがシステム１０５と相互作用することを可能にする様々なグラフィカルユーザインターフェース（ＧＵＩ）を提供することができる。いくつかの例において、ＧＵＩが、アプリケーション１５０の実行によって生成される。ユーザは、例えばクライアント１１５を用いて、システム１０５と相互作用することができる。システム１０５は、クライアントのためのウェブベースのインターフェースを生成することができる。
【００１６】
アプリケーション１５０は、ユーザ装置（例えば、クライアント１１５）、例えば、スマートフォン又はタブレットデバイスなどにおいて、ローカルに実行されることができる。別法として、アプリケーション１５０は、ネットワークを通じて、ユーザ装置によってアクセスされることができる。ゆえに、アプリケーション１５０は、サーバ上で実行され、ブラウザアプリケーションを用いてユーザ装置によってアクセスされることができる。サーバは、アプリケーション１５０のＧＵＩを、標準又はモバイルのウェブサイトのウェブページとして供給することになる。
【００１７】
いくつかの実施形態において、ゲーミングアプリケーション１５０は、ゲーミング体験、例えば、ユーザがゲームプレーに参加するところの仮想ゲーミング環境などを、ユーザに提供するように構成される。仮想ゲーミング環境の例には、これらに限られないが、ロールプレイングゲーム、１人用シューター（first  person  shooter）ゲーム、マルチプレーヤゲーム、スポーツの（sporting）ゲームなどが含まれる。
【００１８】
ゲーミングアプリケーション１５０は、仮想カードバトルと仮想ゲーム活動との双方を提供するように構成され、仮想ゲーム活動は、少なくとも部分的に、仮想カードバトルに結果に基づく。
【００１９】
下記の図２〜図１１は、仮想カードバトルと仮想ゲーム活動との双方の例示的なスクリーンショットを含む。こうした例示は単に例であり、仮想カードゲームに基づく仮想活動を可能にするロジック及び／又はアルゴリズムが他の仮想ゲーム体験に拡張され得ることに言及することは、注目に値する。
【００２０】
次に図２を参照すると、第１のプレーヤが第１のフットボールチームのための複数のカードを提供されている。ゲーミングアプリケーション１５０は、仮想ゲームを実施して１つ以上のスキルをランダムに選択するように構成され、上記スキルは、例えば、ほんの数例を挙げると、パワー（power）、視野（vision）、意識（awareness）、スピード（speed）、及び素早さ（agility）などである。これらスキルは、第１のフットボールチームのための複数のカードの上方に表示される第２のフットボールチームのプレーヤについての類似の又は類似でないスキルに対して対抗させられる。ユーザは、ディフェンスマンのための防御（defend）又は攻撃プレーヤのためのシュート（shot）を選択することによって、プレーヤが攻撃プレーヤであるか又は防御プレーヤであるかを選択することができる。いくつかの実施形態において、ＧＵＩ２００は、プレーヤがシュート選択と防御選択との間で切り換えるようにトグルすることができる選択可能ボタン２０５を含むことができる。
【００２１】
詳細に、仮想カード２１０テオ・アイラス（Teo  Eiras）は、複数のスキル値、例えば、パワー４５、視野４３、意識４６、スピード３８、及び素早さ３８などを備える。各仮想カードは、その独自の、スキル値の順列（permutations）を有することになる。上記スキル値は、差異値（differential  values）を決定することに対して本明細書において説明される比較算定に利用される。
【００２２】
図３において、仮想カードが、プレーヤによる選択に対して強調表示される。プレーヤは、いくつかの実施形態において、選択のために複数のカードを通してスクロールすることができる。別の実施形態において、プレーヤは、アプリケーション１５０によってランダムに選択されることができる。上記実施形態において、プレーヤは、第３のペアリングのために自身の仮想カードを選択している。アプリケーション１５０によりランダムに選択される仮想カードは、プレーヤが自身の仮想カードを選択し終えるまで、クエスチョンマークでブロックされる。
【００２３】
２つのカードバトル比較が行われており、差異値が算定されている。第１のペアリングにおいて、差異値２１５は−５３１であり、第２のペアリングについての第２の差異値は−２３５である。
【００２４】
図４は、複数の仮想カードバトルペアを例示している。プレーヤは、キックオフ（kick  off）ボタン２２０を選択して、仮想カードバトルを実行することができる。
【００２５】
ユーザは、仮想カードバトルにおける使用のためのカードを選択することができる（あるいは、仮想カードは、システムによってランダムに選択されることができる）。各プレーヤが自身の仮想カードをいったん選択すると、図４に例示されるとおり、チームが整列させられる。図５において、図２のとおりの防御又はシュートをプレーヤが選択することを可能にする選択可能ボタンに代わって、仮想カードバトルの各々の結果が表示される。プレーヤは、自身が仮想活動のための基礎として利用したい、仮想カードバトルペアリングのうちいずれかを選択することができる。
【００２６】
いくつかの実施形態において、ゲーミングアプリケーション１５０は、各々のあり得る仮想カード対戦について、困難さの算定を表示するように構成される。例えば、第２のフットボールチームの仮想カード２２５のジェイムズ・メルバ（James  Melba）が仮想カード２３０のハンス・ディートリック（Hans  Dietrich）と対戦し、結果として、マイナス２３５のスコアと共に「非常に厳しい（very  hard）」の困難さ算定２３５がもたらされることになる。この困難さ算定は、ハンス・ディートリックに関連付けられた視野２７及び意識３９のスキル値と対して比較されたジェイムズ・メルバについての選択されたスキル値の意識１６０及びスピード１４１とにおける差異である。
【００２７】
ゆえに、ハンス・ディートリックの、ジェイムズ・メルバに対して仮想カード対決に勝利する見込みは、低い。
【００２８】
第１のユーザが、ハンス・ディートリックの仮想カードを選択する場合、ゲーミングアプリケーション１５０は、困難度に対して、仮想プレイングカードにより表現される各プレーヤについての選択されたスキルレベルを用いて、比較分析を実行するように構成される。困難さの括り（bracket）は、ゲーミング活動についての困難度に関連付けられた差異値の範囲を含む。例えば、困難度の「容易」が、ゼロ乃至−４０の差異値の範囲に関連付けられ得る。別の例において、中くらいの困難度が、−４１乃至−７５の差異値の範囲に関連付けられ得る。上記範囲は、所望されるとおり層化されてよい。
【００２９】
一意の困難度に関連付けられた差異値の上記範囲の各々が、同様に、仮想活動のための活動属性の選択にリンクされる。一例示的な仮想の活動が、図１０に関して例示され、説明される。
【００３０】
図７及び図８は、仮想カードバトルの開始と対応する仮想活動とを例示している。詳細には、図７は、１対１の仮想カード対決を例示している。図８には、仮想カード対決の結果が例示されており、予測されるとおり、ハンス・ディートリックは、２３５ポイントの差異で、ジェイムズ・メルバに対するバトルに敗れている。上記実施形態は、実際のカードバトルの前に行われる（precedes）困難さ算定に等しい差異値を例示しているが、使用される確率算定は、困難さ算定とは異なる差異値を生じさせてもよいことが理解されるであろう。例えば、確率に基づいて、差異値に基づき不利な立場のパーティ（party）がそれにかかわらずカードバトルに勝利し、あるいは、−２３５より大きい、より小さい負の差異値で敗れることがある。上記差異値の大きさ（magnitude）は、仮想活動の様々な属性について、困難度２４０を選択することに使用される。
【００３１】
図１０は、仮想活動３００、例えばゴールキック活動などを例示しており、仮想活動３００は、仮想カードバトルの結果に起因して選択される／影響される困難（又は、複雑）度を有する複数の属性を有する。例えば、仮想カードゲームの結果の負の差異値に起因して、ゴールキックは、第１の属性において、過酷な角度に置かれたゴール３０５を含む。さらに、第２の属性が、キッカー３１５に近接した３人のディフェンダー３１０の配置を含む。第３の属性が、キッカー３１５とゴール３０５との間の距離を含み、さらなる第４の属性が、風速計３２０により示されるとおり、時間あたり１４キロメートルの横風を含む。
【００３２】
いくつかの実施形態において、ゴールキーパー３２５のスキル又は挙動が、差異値、又は、差異値に対して選択される差異値範囲に従って、システムにより選択的に調整されることができる。
【００３３】
ゆえに、他の属性が、より積極的なゴールキーパー、又は焦点のはずれたゴールのビューを含むことができる。別の属性が、サイズにおいて実質的に低減されたターゲットエリア、又は、移動し又は不安定であるターゲットエリアを含み得る。いくつかの実施形態において、困難度は、複数の属性、例えば、対向するプレーヤの数、環境条件、ターゲットエリア又はサイズ、照準安定化、ターゲット距離、及びこれらの様々な組み合わせなどを含む。上記属性の各々は、同様に、プレーヤのスキル値に対して詳細に合わせられることができる。例えば、プレーヤが、比較的低い視野スキル値を有する場合、仮想活動の属性には、ゴールをぼやけて見えさせることが含まれ得る。
【００３４】
対照的に、仮想カードバトルにおける差異値がゼロに近づくとき、より少ない負の属性が選択され、あるいは、属性のいくつかの負性（negativity）が大きさにおいて低減される。例えば、差異が負の１００である場合、中間のディフェンダーが１人だけである可能性があり、風が時間あたり５キロメートルに低減される可能性がある。さらに、キッカーが、ゴールに対してわずかにより近く置かれることができる。差異値が正になるとき、属性は、キッカーの好みでゆがめる（skew）ことができ、例えば、ゴールキーパーを取り除くこと、キッカーをゴールのすぐ前に移動することなどである。
【００３５】
上記属性を合わせるために使用されるアルゴリズムは、設計要件に従って変動してもよく、しかし、いかなる活動も、前に行われる仮想カードバトルの結果に基づいて選択される困難さ属性を有する。いくつかの実施形態において、仮想カードバトルは、同じタイプの活動を通じたバトルを含むことができる。例えば、システムは、コーナーキックのアクションに相対して、２つの仮想カード間における仮想カードバトルを行うことができる。カードバトルの後に続く仮想活動は、仮想カードバトルにおけるパーティのうちの一方を伴うコーナーキック活動である。
【００３６】
別の例として、差異値が容易の困難度の範囲内に入る場合、この困難度は、（１）ゴールの中央に整列されたプレーヤ、（２）ゴールの前にゆっくりなゴールキーパーのみ、及び、（３）横風なし、の仮想活動の活動属性に関連付けられる。念のために、上記は本テクノロジーの単に一例示的な実施形態であり、限定であることは意図されない。
【００３７】
念のために、困難度に関連付けられた活動属性の量又は数は、困難さが増加するとき、増加し得る。例えば、「厳しい」困難度のための活動属性の数は５であり、一方、「中間の」困難度のための活動属性の数は３である。
【００３８】
同じ原理が、差異が結果として負の困難度（負の差異）をもたらすか又は正の困難度（正の差異）をもたらすかにかかわらず、適用される。
【００３９】
アプリケーション１５０は、活動のために予め決定された属性を利用することができ、あるいは、仮想活動を作成するためにランダム又はスキルベースの属性を利用することができる。例えば、ディフェンダー、ゴールキーパー、風、及び距離の属性が、活動がコーナーキックであるため、選択される。他の仮想活動が、カードゲームバトルの間に選択されたスキルに基づいて、異なる属性の選択を結果としてもたらし得る。例えば、プレーヤが低い視野スキルスコアを有し、フリーキックに関するカードバトルに敗れる場合、フリーキック仮想活動の属性には、小さいゴールターゲット、又は見かけにおいてぼやけているゴールが含まれ得る。
【００４０】
図１１は、本開示の一例示的な方法のフローチャートである。この方法は、第１のプレーヤのための仮想カードのセットと、第２のプレーヤのための仮想カードのセットとを選択するステップを含み得る。いくつかの実施形態において、プレーヤのうち一方には、ゲーミングシステムが含まれ得る。プレーヤにより選択されるカードは、カードごとのバトルの事例において、１回につき１つ選ばれることができ、あるいは別法として、プレーヤは、システムによるペア単位対決の前に、自身の仮想カードのすべてを選択することができる。ゆえに、プレーヤは、自身がバトルをしたい仮想カードのすべてを選択し、システムは、仮想カードのランダム選択をすることにより応答し、該仮想カードは、プレーヤにより選択された仮想カードとペアにされることになる。
【００４１】
使用される処理にかかわらず、仮想カードバトルには、カードのペアを含むことができ、１つは第１のプレーヤからであり、１つは第２のプレーヤからである。ゆえに、上記方法は、仮想カードバトルのための仮想カードのペア（仮想カードペア）のうち少なくとも１つの選択を受信すること（１１０５）を含み得る。再びになるが、実施形態のうちいくつかは、プレーヤが双方人間のプレーヤであるとき、システムがカードのペアの双方の選択を受信することを可能にする。システムが１プレーヤから仮想カードの選択を受信し、それから、システムがペアのための他方のカードを精選するところの実施形態において、システムは、仮想カードペアのうち一方だけを受信する。
【００４２】
いったんカードが選択されると、方法は、仮想カードペアの各々について、１つ以上のスキルを選択すること（１１１０）を含む。上記で提供された例において、システムは、スキル、例えば、素早さ、視野、又はカードに関連付けられた他のスキルなどをランダムに選択することができる。さらに、選択されたカードのスキルは、カードが属する対象事項に従って変動してもよい。例えば、フットボール選手を表現する仮想カードは、ベースボール選手を表現する仮想カードとは異なるスキルを有し得る。
【００４３】
次いで、方法は、１つ以上のスキルを用いて比較分析を実行することにより仮想カードバトルを実行して、差異値を算定すること（１１１５）を含む。いったん差異値が算定されると、方法は、システムが差異値を使用して仮想活動のための複数の属性を選択すること（１１２０）を含み得る。上記で言及されたとおり、仮想活動は仮想カードバトルのインタラクティブ版（interactive  version）である。
【００４４】
有利なことに、システムは、仮想カードバトルの結果が仮想の活動又はゲーミング体験を作り出すことに使用されるロジックを選択することを可能にすることによって、仮想ゲームの領域内で新しい、魅力のある（engaging）仮想活動を作成することができる。各仮想活動は、一意の（unique）ゲーミングインスタンスである潜在性を有し、そのインスタンスの属性は、カードバトル結果に基づいて選択される。
【００４５】
より詳細に、システムは、差異値が増加するとき、仮想活動の困難さ又は複雑さを選択的に改変することができる。例えば、差異値が増加するとき、仮想活動の属性は、数又は困難さにおいて増加してもよい。例として、差異値が−１００のときにゴールが３０メートルの距離に置かれる場合、差異値が−２００のときにゴールは５０メートルに置かれ得る。別法として、又は追加的に、差異値が−１００から−２００に移るとき、ゴールキーパーがサイズ又は素早さにおいて増加して、試行されるゴールをブロックしてもよい。
【００４６】
システムが、差異値を用いて仮想活動の初期条件をいったん決定すると、方法は、複数の属性を有する仮想活動を仮想カードバトルのプレーヤに提供すること（１１２５）を含み得る。仮想活動の一例示的な提供が、図１０に例示されている。
【００４７】
図１２は、前述された処理において困難値範囲を利用する方法を例示している。文脈のため、仮想カードペアが上記で説明された手法のうち任意のものを用いて仮想カードバトルのために選択されていることが仮定される。さらに、上記方法は、カードバトルの対象事項の、システムによってランダムにか又はプレーヤによってかのいずれかの、選択を伴い得る。上記で言及されたとおり、対象事項は、防御又はシュートを含み得る。防御構成において、仮想活動は、プレーヤが、キッカーとは対照的にゴールキーパー又はディフェンダーとして仮想活動に参加することを含むことになる。
【００４８】
上記方法は、仮想カードペアの各々について、１つ以上のスキルを選択すること（１２０５）を含む。再びになるが、１つ以上のスキルは、各々、スキルに関連付けられたスキル値を有する。
【００４９】
次いで、方法は、仮想カードペアの各々についての１つ以上のスキルを用いた仮想カードペアの比較分析を含む仮想カードペアを用いた仮想カードバトルを行って、差異値を確立すること（１２１０）を含み得る。
【００５０】
差異値が算定された後、方法は、差異値を差異値範囲と比較することによって仮想カードバトルの困難度を決定すること（１２１５）を含む。再びになるが、差異値範囲は、複数の属性を定義する様々な困難度に関連付けられる。例えば、ゼロ乃至−１００の困難度範囲内に入る差異値が、「難しい（difficult）」としてラベル付けされ得る。困難値範囲は、仮想活動についての属性の予め決定されたセットに関連付けられ得る。この事前決定は、システムが差異値の大きさに基づいて仮想活動のための属性をインテリジェントに選択することができる実施形態とは対照的に、システムがより静的な仕方において動作することを可能にする。ゆえに、いくつかの実施形態において、「難しい」差異値範囲に入る差異値を有するすべてのカードバトルが、属性の動的選択と比較して、仮想活動属性の同じセットを有する仮想活動を結果としてもたらすことになる。
【００５１】
方法は、選択された差異値範囲に関連付けられた複数の属性を用いて仮想活動を生成すること（１２２０）をさらに含み得る。
【００５２】
いくつかの実施形態において、本開示のシステムは、離散確率密度算定と、差異値ルックアップ関数（困難度に関連付けられた差異値の範囲を含むテーブルを使用する）と、仮想カードバトルに結び付けられた仮想活動の属性を動的に選択する乱数スクリプティングとを利用することができる。例として、差異値が使用されて困難度の「厳しい」が選択された場合、仮想活動、例えばコーナーキックなどのパラメータには、ディフェンダーの数、キックの角度、ゴールからの距離、風速などが含まれ得る。システムは、これらパラメータの各々についての値を選択する乱数ジェネレータ機能を実装することができる。
ゼロ乃至１０のスケールを用いて、システムにより生成される乱数がより大きくなるほど、与えられるパラメータがより難しくなる。
【００５３】
いくつかの実施形態において、方法は、（ａ）第１パーティ仮想カードの選択を受信することと、（ｂ）第２パーティ仮想カードの選択を受信することと、（ｃ）仮想カードバトルのための仮想カードペアを選択することであって、仮想カードペアは、第１パーティ仮想カードのうちの１つと第２パーティ仮想カードのうちの１つとを含む、ことと、（ｄ）仮想カードペアの各々について、１つ以上のスキルを選択することと、（ｅ）仮想カードペアの各々についての１つ以上のスキルを用いて仮想カードペアの比較分析を実行して、差異値を確立することと、（ｆ）差異値の範囲を含むテーブルのルックアップを実行することであって、各範囲は仮想カードバトルに基づく仮想活動の困難度に関連付けられ、ルックアップは、算定された差異値が入る差異値の範囲のうちいずれかを決定する、ことと、（ｇ）プレーヤが仮想活動に如何にして参加するかを定義する複数の選択された仮想活動パラメータの各々について、離散確率密度算定を実行することと、（ｈ）乱数スクリプティングを実行して、複数の選択された仮想活動パラメータの各々について、値を動的に選択することと、（ｉ）プレーヤに対して仮想活動を実行することと、をさらに含む。カードバトルのための困難値範囲と仮想活動パラメータの選択とを決定することに使用される差異値の算定を例示する疑似コードの一例示的な実施形態が、以下に提供される。システムは、一実施形態においてＰｙｔｈｏｎスクリプトを利用することができる。例示的なＰｙｔｈｏｎスクリプトは、困難値範囲を含むテーブルから値をルックアップする対決フローを例証する。
import  json
import  random
【００５４】
スクリプトの第１の部分は、離散確率密度に基づいて値のランダムリストを生成する。
def  DiscretePDF(  dist,  count=None  ):
returnlist  =  True
if  count  ==  None:
returnlist  =  False
count  =  1
total  =  sum(  dist.values(  )  )
result  =  [  ]
i  =  0
while  i  <  count:
val  =  random.uniform(  0,  total  )
cur  =  0
for  k,  v  in  dist.items(  ):
cur  +=  v
if  val  <=  cur:
result.append(  k  )
break
i  +=  1
if  returnlist:
return  result
else:
return  result[  0  ]
def  ResolveCardBattle(cardValuePlayer,  cardValueOpponent):
return  cardValuePlayer  -  cardValueOpponent
def  SelectDifficulty(cardBattleDelta):
difficulty  =  None
for  difficulty_key,  delta_range  in  tuning["Data"]["DifficultyLevelRanges"].items():
if  cardBattleDelta  >=  delta_range[0]  and  cardBattleDelta  <  delta_range[1]:
print  "Selected",  difficulty_key
difficulty  =  difficulty_key
break
return  difficulty
【００５５】
以下のスクリプトのセクションは、活動のクラスの選択を提供しており、この実施形態においては、パス活動が含まれる：
class  Scenario:
pass
def  play_match():
card_slots  =  [
(194,35),
(100,350),
(300,350),
(954,423),
(234,290)
]
【００５６】
仮想カードバトルからのデルタ値が以下で生成される：
for  card_slot  in  card_slots:
delta  =  ResolveCardBattle(*card_slot)
difficulty  =  SelectDifficulty(delta)
scenario  =  Scenario()
scenario.defenders  =  DiscretePDF(tuning["Data"]["KickingGames"]["DefenderDifficultyTuning"][difficulty])
scenario.wind  =  random.uniform(*tuning["Data"]["KickingGames"]["WindStrengthRange"][difficulty])
scenario.shot_angle  =  DiscretePDF(tuning["Data"]["KickingGames"]["ShotAngle"][difficulty])
scenario.shot_distance  =  DiscretePDF(tuning["Data"]["KickingGames"]["ShotDistance"][difficulty])
print  "Player  Card  Value",  card_slot[0]
print  "Opponent  Card  Value",  card_slot[1]
print  "The  following  are  the  basic  scenario  parameters  for  a  Shooting/Passing  Gameplay  scenario,"
print  "Based  on  the  above  card  values"
print  "These  values  would  feed  into  the  game  runtime  engine  to  generate  a  Shooting/Passing  attempt  visualization."
print  "--------------------------------------"
print  json.dumps(scenario.__dict__,  indent=4)
print  "--------------------------------------"
【００５７】
スクリプトの下記のセクションは、インタラクティブゲームのためにパラメータ選択を適合させることであって、上記で選択された差異値を用いて（さらに、値テーブルの困難値範囲を利用して）属性を選択する、ことと、さらに、乱数生成を利用して活動パラメータの各々について値を選択することとを提供する。
tuning  =  json.loads("""{
"Type":  "TuningData",
"Description":  "Tunables  used  for  the  interactivity  games",
"Data":  
{
"FieldMaxX":  33,
"FieldMaxZ":  52,
"AttemptTimeOutTime":  2,
"CardBattleWinBonus":  0,
"DifficultyLevelRanges":  
{
"VERY_EASY":  [175,  1000000],
"EASY":  [33,  174],
"MEDIUM":  [0,  32],
"HARD":  [-224,  -1],
"VERY_HARD":  [-1000000,  -225]
},
"KickingGames":  
{
"ChanceToWinOnGoodAction":  [0.9,  0.7,  0.4,  0.2,  0.05],
"TargetColors":  
{
"BIG":  [0.0,  1.0,  0.0],
"MEDIUM":  [1.0,  1.0,  0.0],
"SMALL":  [1.0,  0.0,  0.0]
},
"TargetColorRanges":  
{
"SMALL":  [0.0,  0.40],
"MEDIUM":  [0.40,  0.75],
"BIG":  [0.75,  1.0]
},
"NickingTargetCountsAsHit":  false,
"TimerTotalTime":  
[
3.0,
3.0,
3.0,
3.0,
3.0
],
"TimerFlashTime":  0.75,
"TimeToSlowTime":  0.85,
"LowHeightKick":  0.1,
"HighHeightKick":  3.3,
"MaxCurveForce":  100000,
"BallPastTargetCutOff":  7.5,
"MinSwipeSpeedCrossThreshold"  :  0.005,
"DefenderSpacing":  1.0,
"DefenderWallDist":  8.0,
"DefenderToMarkSpacingMin":  1.75,
"DefenderToMarkSpacingMax":  3,
"ExtrasMinDistSide":  3.0,
"ExtrasMaxDistSide":  6.0,
"ExtrasMinDistBall":  0.4,
"ExtrasMaxDistBall":  0.7,
"KickerOffset":  
[
-0.5,
0.0,
-5.5
],
"CameraOffset":  
[
0,
2.6,
-9.5
],
"CameraLookAtOffset":  
[
0,
1.5,
0
],
"PreCameraBlendTime":  1.0,
"PreCameraOffset":  
[
0,
4,
-20
],
"TargetScales":  [  1.1,  0.95,  0.8,  0.7,  0.6  ],
"TargetVanishChance":  [  0.0,  0.0,  0,  0,  0  ],
"TargetWhenToVanish":  3.25,
"WindStrengthRange":  
{
"VERY_EASY":  [0,  0],
"EASY":  [2,  5],
"MEDIUM":  [5,  10],
"HARD":  [10,  15],
"VERY_HARD":  [10,  20]
},
"WindChance":  [  0.0,  0.2,  0.5,  0.85,  1.0  ],
"DefendingScenarios":
{
"none"  :  [],
"1left"  :  [{"x":  1.25,  "y":  3.0}],
"1right"  :  [{"x":  -1.25,  "y":  3.0}],
"1closeleft"  :  [{"x":  0.4,  "y":  1.5}],
"1closeright"  :  [{"x":  -0.4,  "y":  1.5}],
"1centre":  [{"x":  0.0,  "y":  1.0}],
"2left":  [{"x":  -1.0,  "y":  1.0},  {"x":  0.5,  "y":  1.0}],
"2farright":  [{"x":  -0.90,  "y":  0.5},  {"x":  1.10,  "y":  3.0}],
"2farleft":  [{"x":  -1.10,  "y":  3.0},  {"x":  0.90,  "y":  0.5}],
"2right":  [{"x":  -0.5,  "y":  1.0},  {"x":  1.0,  "y":  1.0}],
"2closeleft"  :  [{"x":  -1.45,  "y":  4.0},  {"x":  0.25,  "y":  0}],
"2closeright"  :  [{"x":  -0.25,  "y":  0},  {"x":  1.45,  "y":  4.0}],
"2centreA"  :  [{"x":  -1.4,  "y":  0.5},  {"x":  0.0,  "y":  0.0}],
"2centreB"  :  [{"x":  0.0,  "y":  0.0},  {"x":  1.4,  "y":  0.5}],
"2block"  :  [{"x":  -0.4,  "y":  0.75},  {"x":  0.4,  "y":  3.75}],
"3left":  [{"x":  -0.8,  "y":  1.25},  {"x":  0.25,  "y":  0.5},  {"x":  2.0,  "y":  3.5}],
"3right":  [{"x":  -2.0,  "y":  3.5},  {"x":  -0.25,  "y":  0.5},  {"x":  0.8,  "y":  1.25}],
"3closeleft"  :  [{"x":  2.5,  "y":  5.0},  {"x":  0.0,  "y":  0.0},  {"x":  -1.0,  "y":  2.5}],
"3closeright"  :  [{"x":  1.0,  "y":  2.5},  {"x":  0,  "y":  0.0},  {"x":  -2.5,  "y":  5.0}],
"3centre"  :  [{"x":  -1.2,  "y":  3.0},  {"x":  0.0,  "y":  5.0},  {"x":  1.2,  "y":  2.0}]
},
"DefenderDifficultyTuning":
{
"VERY_EASY"  :
{
"none":  50,
"1left":  20,
"1right":  20,
"1closeleft":  5,
"1closeright":  5
},
"EASY"  :
{
"none":  10,
"1left":  30,
"1right":  30,
"1closeleft":  10,
"1closeright":  10,
"1centre":  10,
"2left":  0,
"2right":  0,
"2farright"  :  0,
"2farleft"  :  0,
"2closeleft"  :  0,
"2closeright"  :  0,
"2centreA"  :  0,
"2centreB"  :  0
},
"MEDIUM"  :
{
"none":  0,
"1left":  0,
"1right"  :  0,
"1closeleft"  :  10,
"1closeright"  :  10,
"1centre":  10,
"2left":  20,
"2right":  20,
"2closeleft"  :  20,
"2closeright"  :  20,
"2farright"  :  0,
"2farleft"  :  0,
"2centreA"  :  15,
"2centreB"  :  15,
"2block"  :  15,
"3left":  0,
"3right":  0,
"3closeleft"  :  0,
"3closeright"  :  0,
"3centre"  :  0
},
"HARD"  :
{
"none":  0,
"1left":  5,
"1right"  :  5,
"1closeleft"  :  5,
"1closeright"  :  5,
"1centre":  5,
"2left":  10,
"2right":  10,
"2closeleft"  :  10,
"2closeright"  :  10,
"2farright"  :  0,
"2farleft"  :  0,
"2centreA"  :  10,
"2centreB"  :  10,
"2block"  :  10,
"3left":  0,
"3right":  0,
"3closeleft"  :  0,
"3closeright"  :  0,
"3centre"  :  0
},
"VERY_HARD"  :
{
"none":  0,
"1left":  0,
"1right"  :  0,
"1closeleft"  :  0,
"1closeright"  :  0,
"1centre":  0,
"2left":  0,
"2right":  0,
"2closeleft"  :  0,
"2closeright"  :  0,
"2centreA"  :  5,
"2centreB"  :  5,
"2block"  :  5,
"3left":  15,
"3right":  15,
"3closeleft"  :  20,
"3closeright"  :  20,
"3centre"  :  15
}
},
"ShotAngle":  
{
"VERY_EASY":
{
"WideLeft":  0,
"NearLeft":  10,
"NoAngle":  80,
"NearRight":  10,
"WideRight":  0
},
"EASY":
{
"WideLeft":  0,
"NearLeft":  10,
"NoAngle":  80,
"NearRight":  10,
"WideRight":  0
},
"MEDIUM":
{
"WideLeft":  10,
"NearLeft":  25,
"NoAngle":  30,
"NearRight":  25,
"WideRight":  10
},
"HARD":
{
"WideLeft":  20,
"NearLeft":  20,
"NoAngle":  20,
"NearRight":  20,
"WideRight":  20
},
"VERY_HARD":
{
"WideLeft":  25,
"NearLeft":  15,
"NoAngle":  10,
"NearRight":  15,
"WideRight":  25
}
},
"ShotDistance":
{
"VERY_EASY":
{
"Near":  100,  
"Mid":  0,  
"Far":  0
},
"EASY":
{
"Near":  50,  
"Mid":  50,  
"Far":  0
},
"MEDIUM":
{
"Near":  0,  
"Mid":  50,  
"Far":  50
},
"HARD":
{
"Near":  0,  
"Mid":  0,  
"Far":  100
},
"VERY_HARD":
{
"Near":  0,  
"Mid":  0,  
"Far":  100
}
}
},
"ShootingGame":  
{
"ShotAngleValues"  :
{
"WideLeft":  -40,
"NearLeft":  -20,
"NoAngle":  0,
"NearRight":  20,
"WideRight":  40
},
"ShotDistanceValues"  :
{            
"Near":  20,
"Mid":  30,
"Far":  42
},
"ShotSpeeds"  :
{
"Near":  25,
"Mid":  40,
"Far":  45
}
}
}
}
""")
play_match()
【００５８】
スクリプトがいったん実行されて、仮想活動の属性が確率的に決定されると、仮想活動は、プレイ対決スクリプト呼び出しによって実行される。
【００５９】
下記のセクションは、仮想カードバトルの実行を通して選択される仮想活動を提供することに利用される一例示的なゲームスクリプトを説明する。
【００６０】
スクリプトが使用されて、様々なシュート距離から選択される：
public  enum  ShotDistances
{
Near,
Mid,
Far,
Invalid
};
【００６１】
スクリプトが使用されて、様々なシュート角度から選択される：
public  enum  ShotAngles
{
WideLeft,
NearLeft,
NoAngle,
NearRight,
WideRight,
Invalid
};
【００６２】
スクリプトが使用されて、様々なボールスピードから選択される：
public  enum  BallSpeed
{
Slow,
Medium,
Fast,
Invalid
};
【００６３】
全体の活動困難度が算定され、表示される：
//  困難さメーター（meter）について
public  enum  DifficultyLevel
{
VERY_EASY  =  -2,
EASY,
MEDIUM,
HARD,
VERY_HARD,
Count  =  5,
Invalid  =  -100
}
【００６４】
スクリプトがさらに使用されて、この事例において、キックするゲームを伴う活動スクリプトのクラスが選択される：
public  class  KickingGameScript
{
//-------------------------------------------------------------------------
//
//
//
//-------------------------------------------------------------------------
public  static  DifficultyLevel  GetDifficultyLevel(int  playerDifference,  DifficultyLevel  diffLevel  =  DifficultyLevel.Count)
{
if  (diffLevel  ==  DifficultyLevel.Count)
{
if  (Interactivity.Util.Tuning  ==  null)
{
Interactivity.Util.RefreshTuning();
}
foreach  (KeyValuePair<DifficultyLevel,  List<int>>  pair  in  Interactivity.Util.Tuning.DifficultyLevelRanges)
{
List<int>  range  =  pair.Value;
if  (range[0]  <=  playerDifference  &&  playerDifference  <=  range[1])
{
for  (int  i  =  (int)DifficultyLevel.VERY_EASY;  i  <=  (int)DifficultyLevel.VERY_HARD;  i++)
{
if  (pair.Key  ==  ((DifficultyLevel)i))
{
diffLevel  =  pair.Key;
}
}
}
}
}
return  diffLevel;
}
public  int  GetCurrentPlayerDifference()
{
return  user.player[current_slot_index]  -  opponent.player[current_slot_index];
}
public  DifficultyLevel  GetDifficultyLevel()
{
return  MatchFlowUtil.GetDifficultyLevel(GetCurrentPlayerDifference(),  tut_GetDifficultyLevelOverride());
}
protected  ShotDistances  GetShotDistance()
{
if  (eCurrentShotDistance  ==  ShotDistances.Invalid)
{
eCurrentShotDistance  =  random.DiscretePDF(Util.Tuning.KickingGames.ShotDistance[GetDifficultyLevel()])[0];
if  (tut_GetOverrideShotDistance()  !=  ShotDistances.Invalid)
{
eCurrentShotDistance  =  tut_GetOverrideShotDistance();
}
if  (eOverrideShotDistance  !=  ShotDistances.Invalid)
{
eCurrentShotDistance  =  eOverrideShotDistance;
}
}
return  eCurrentShotDistance;
}
protected  ShotAngles  GetShotAngle()
{
if  (eCurrentShotAngle  ==  ShotAngles.Invalid)
{
eCurrentShotAngle  =  random.DiscretePDF(Util.Tuning.KickingGames.ShotAngle[GetDifficultyLevel()])[0];
if  (tut_GetOverrideShotAngle()  !=  ShotAngles.Invalid)
{
eCurrentShotAngle  =  tut_GetOverrideShotAngle();
}
if  (eOverrideShotAngle  !=  ShotAngles.Invalid)
{
eCurrentShotAngle  =  eOverrideShotAngle;
}
}
return  eCurrentShotAngle;
}
override  protected  float  GetShotDistanceValue()
{
return  Util.Tuning.ShootingGame.ShotDistanceValues[GetShotDistance()];
}
override  protected  float  GetShotAngleValue()
{
return  Util.Tuning.ShootingGame.ShotAngleValues[GetShotAngle()];
}
override  protected  float  GetShotSpeed()
{
return  Util.Tuning.ShootingGame.ShotSpeeds[eCurrentShotDistance];
}
//  ここが値をとるところ（This  is  where  we  take  the  values）
protected  override  void  SetupNewAttempt()
{
ResetCharacterInstances();
EnableAllInteractiveCharacters(false);
PopulateBackgroundCharacters(playerInitData,  nonKeeperSlots,  teamPlayerInstances,  mInputData.SelectedPlayers);
PopulateBackgroundCharacters(opponentInitData,  nonKeeperSlots,  defenderInstances,  mInputData.SelectedOpponents);
CharacterInitData  playerKeeperInitData  =  new  CharacterInitData();
playerKeeperInitData.teamSlot  =  TeamSlotType.K;
playerKeeperInitData.playerGO  =  PlayerGoalie;
playerInitData.Add(playerKeeperInitData);
ReplaceCharacterModels(Kicker,  OpponentGoalie);
//  距離
eCurrentShotDistance  =  GetShotDistance();
float  fDistance  =  GetShotDistanceValue();
fShotAngle  =  GetShotAngleValue();
float  x  =  fDistance  *  Mathf.Sin(Mathf.Deg2Rad  *  fShotAngle);
float  z  =  fDistance  *  Mathf.Cos(Mathf.Deg2Rad  *  fShotAngle);
v3MomentOrigin  =  v3KickToPos  +  new  Vector3(x,  BallPrefab.transform.lossyScale.x  /  2.0f,  -z);
//  キッカー
Vector3  kickerPosition  =  new  Vector3(v3MomentOrigin.x,  0.0f,  v3MomentOrigin.z);
Kicker.transform.position  =  kickerPosition;
Kicker.transform.LookAt(v3KickToPos);
//  キッカーのオフセットも回転する
Vector3  kickerOffset  =  new  Vector3(Util.Tuning.KickingGames.KickerOffset[0],  Util.Tuning.KickingGames.KickerOffset[1],  Util.Tuning.KickingGames.KickerOffset[2]);
Vector3  kickerRotatedOffset  =  Kicker.transform.rotation  *  kickerOffset;            
Vector3  correctedKickerPosition  =  kickerPosition  +  kickerRotatedOffset;
Kicker.transform.position  =  correctedKickerPosition;
//  キッカーにおいてボールを作り出すので、アタッチされたときに動き回らない（create  the  ball  at  the  kicker,  so  it  doesn't  move  around  when  attached）
Quaternion  identityRotation  =  Quaternion.identity;
Instantiate(BallPrefab,  correctedKickerPosition,  identityRotation);
GameObject  ball  =  Interactivity.Ball.GetInstance();
Debug.DrawLine(ball.transform.position,  ball.transform.position  +  Vector3.up  *  2.0f,  Color.red,  10.0f);
ball.transform.parent  =  tempObjects;
ball.GetComponent<Ball>().TrajectoryPredictedEvent  +=  new  TrajectoryPredictedEventHandler(TrajectoryPredicted);
//  キックスピードを設定する
float  fKickSpeed  =  GetShotSpeed();
BallKicker2  ballKickScript  =  Kicker.GetComponent<BallKicker2>();
if  (  ballKickScript  !=  null  )
{
ballKickScript.SetKickSpeed(fKickSpeed);
}
////////////////////////////////
//  ゴールキーパー（Goalie）
Vector3  netToBall  =  v3MomentOrigin  -  v3KickToPos;
Vector3  v3GoaliePosition  =  v3KickToPos  +  netToBall.normalized  *  GoalieDistOffGoalline;
OpponentGoalie.transform.position  =  v3GoaliePosition;
OpponentGoalie.transform.LookAt(new  Vector3(v3MomentOrigin.x,  0.0f,  v3MomentOrigin.z));
if  (OpponentGoalie  !=  null)
{
AIKickInterceptorScript  goalieScript  =  OpponentGoalie.GetComponent<AIKickInterceptorScript>();
if  (goalieScript  !=  null)
{
goalieScript.Reset(v3GoaliePosition,  v3MomentOrigin);
goalieScript.TouchBallEvent  +=  GoalieTouchedBall;
}
}
base.SetupNewAttempt();
mCameraBlender.StartBlend();
}
Team  user;
Team  opponent;
int  current_slot_index;
void  PlayGame(Team  user,  Team  opponent)
{
this.user  =  user;
this.opponent  =  opponent;
int  num_players  =  5;
for(int  i  =  0;  i  <  num_players;  i++)
{
this.current_slot_index  =  i;
SetupNewAttempt();
WaitForAttemptToComplete();
}
}
}
【００６５】
図１３は、本システム及び方法の実施形態を実装することに使用され得る一例示的なコンピューティング装置１を例示している。図１３のシステム１は、コンピューティング装置、ネットワーク、サーバ、又はこれらの組み合わせなどの文脈において実装され得る。図１３のコンピューティング装置１は、１つ以上のプロセッサ１０とメインメモリ２０とを含む。メモリ２０は、部分的に、プロセッサ１０による実行のための命令及びデータを記憶する。メモリ２０は、動作しているとき、実行可能コードを記憶し得る。図１３のシステム１は、大容量記憶装置３０、ポータブル記憶装置４０、出力装置５０、ユーザ入力装置６０、表示システム７０、及び周辺装置８０をさらに含む。
【００６６】
図１３に示されるコンポーネントは、単一のバス９０を介して接続されるものとして表されている。コンポーネントは、１つ以上のデータトランスポート手段を通して接続され得る。プロセッサ１０及びメモリ２０は、ローカルマイクロプロセッサバスを介して接続されてもよく、大容量記憶装置３０、周辺装置８０、ポータブル記憶装置４０、及び表示システム７０は、１つ以上の入力／出力（Ｉ／Ｏ）バスを介して接続されてもよい。
【００６７】
大容量記憶装置３０は、磁気ディスクドライブ又は光学ディスクドライブと共に実装されることがあり、プロセッサユニット１０による実行のためのデータ及び命令を記憶する不揮発記憶装置である。大容量記憶装置３０は、本テクノロジーの実施形態を実装するシステムソフトウェアを、そのソフトウェアをメインメモリ２０にロードする目的で、記憶し得る。
【００６８】
ポータブル記憶装置４０は、ポータブル不揮発記憶媒体、例えば、フロッピーディスク、コンパクトディスク、デジタルビデオディスク、又はＵＳＢ記憶装置などと関連して動作して、図１３のコンピュータシステム１に及び該システム１から、データ及びコードを入力し及び出力する。本テクノロジーの実施形態を実装するシステムソフトウェアは、こうしたポータブル媒体に記憶され、ポータブル記憶装置４０を介してコンピュータシステム１に入力されてもよい。
【００６９】
ユーザ入力装置６０は、ユーザインターフェースの部分を提供する。ユーザ入力装置６０は、英数字及び他の情報を入力するための英数字キーパッド、例えばキーボードなど、又は、ポインティング装置、例えば、マウス、トラックボール、スタイラス、又はカーソル方向キーなどを含み得る。さらなるユーザ入力装置６０には、これらに限られないが、発話認識システム、顔認識システム、モーションベース入力システム、ジェスチャベースシステムなどが含まれ得る。例えば、ユーザ入力装置６０には、タッチスクリーンが含まれ得る。さらに、図２に示されるとおりのシステム１には、出力装置５０が含まれる。適切な出力装置には、スピーカー、プリンタ、ネットワークインターフェース、及びモニタが含まれる。
【００７０】
表示システム７０には、液晶ディスプレイ（ＬＣＤ）又は他の適切な表示装置が含まれ得る。表示システム７０は、テキストの及びグラフィックの情報を受信し、この情報を表示装置に対する出力のために処理する。
【００７１】
周辺装置８０には、さらなる機能性をコンピュータシステムに追加する任意タイプのコンピュータサポート装置が含まれ得る。周辺装置８０には、モデム又はルータが含まれ得る。
【００７２】
図２のコンピュータシステム１において提供されるコンポーネントは、本テクノロジーの実施形態での使用に適し得るコンピュータシステムにおいて典型的に見られるものであり、当分野においてよく知られるこうしたコンピュータコンポーネントの広いカテゴリを表すことが意図される。ゆえに、図２のコンピュータシステム１は、パーソナルコンピュータ、ハンドヘルドコンピューティング装置、電話、モバイルコンピューティング装置、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、又は任意の他のコンピューティング装置であり得る。コンピュータは、異なるバス構成、ネットワーク化されたプラットフォーム、マルチプロセッサプラットフォーム等をさらに含み得る。様々なオペレーティングシステムが、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、ＰａｌｍＯＳ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ｉＯＳ（登録商標）（２０１０年６月以前のｉＰｈｏｎｅ（登録商標）  ＯＳとして知られる）、ＱＮＸ（登録商標）、及び他の適切なオペレーティングシステムを含め、使用されてもよい。
【００７３】
本明細書に説明される処理を実行することに適した任意のハードウェアプラットフォームが、本明細書に提供されるシステム及び方法での使用に適することは、注目に値する。コンピュータ可読記憶媒体は、中央処理ユニット（ＣＰＵ）、プロセッサ、マイクロコントローラ又は同様のものに命令を提供することに参加する任意の１つ又は複数の媒体を参照する。こうした媒体は、これらに限られないが、不揮発媒体及び揮発媒体、例えば、それぞれ、光学又は磁気ディスク及びダイナミックメモリなどを含む形態をとり得る。コンピュータ可読記憶媒体の一般的形態には、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気記憶媒体、ＣＤ‐ＲＯＭディスク、デジタルビデオディスク（ＤＶＤ）、任意の他の光学記憶媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨＥＰＲＯＭ、任意の他のメモリチップ又はカートリッジが含まれる。
【００７４】
本テクノロジーの態様のための動作を実行するコンピュータプログラムコードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋又は同様のものなどのオブジェクト指向プログラミング言語と“Ｃ”プログラミング言語又は類似のプログラミング言語などの従来の手続き型プログラミング言語とを含む１つ以上のプログラミング言語の任意の組み合わせにおいて書かれることができる。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に且つリモートのコンピュータ上で部分的に、あるいはリモートのコンピュータ又はサーバ上で全体的に実行され得る。後半のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）を含む任意タイプのネットワークを通してユーザのコンピュータに結合されてもよく、あるいは、接続は、外部のコンピュータに対して（例えば、インターネットサービスプロバイダを用いてインターネットを通して）行われてもよい。
【００７５】
以下における請求項内のすべてのミーンズ又はステッププラスファンクション要素の対応する構造、材料、動き、及び均等物は、具体的に請求されるとおり、他の請求された要素との組み合わせにおいてその機能を実行する任意の構造、材料、又は動きを含むことが意図される。本テクノロジーの説明は、例示及び説明の目的で提示されており、しかし、網羅的であること、又は開示された形態における本テクノロジーに限定されることは意図されない。多くのモディフィケーション及びバリエーションが、本テクノロジーの範囲及び主旨から逸脱することなく、当業者に対して明らかになるであろう。例示的な実施形態は、本テクノロジーの原理とその実際的な適用とを最も良く説明し、考えられる具体的な使用に適するとおりの様々なモディフィケーションを有する様々な実施形態に対して当業者が本テクノロジーを理解することを可能にするために、選ばれ、説明されている。
【００７６】
本テクノロジーの態様は、本テクノロジーの実施形態に従う方法、装置（システム）、及びコンピュータプログラム製品についてのフローチャート例示及び／又はブロック図を参照して上記で説明されている。フローチャート例示及び／又はブロック図の各ブロックと、フローチャート例示及び／又はブロック図における複数のブロックの組み合わせとが、コンピュータプログラム命令によって実装され得ることが理解されるであろう。上記コンピュータプログラム命令は、汎用目的コンピュータ、特別目的コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生じさせることができ、したがって、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、フローチャート及び／又はブロック図の一ブロック又は複数ブロックに指定される機能／動きを実施する手段を作成する。
【００７７】
上記コンピュータプログラム命令は、さらに、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の仕方において機能するように指図することができるコンピュータ可読媒体に記憶されることができ、したがって、コンピュータ可読媒体に記憶された命令は、フローチャート及び／又はブロック図の一ブロック又は複数ブロックに指定される機能／動きを実施する命令を含む製造品を生じさせる。
【００７８】
コンピュータプログラム命令は、さらに、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードされて、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で実行させて、コンピュータにより実施されるプロセスを生じさせることができ、したがって、コンピュータ又は他のプログラム可能装置上で実行される命令は、フローチャート及び／又はブロック図の一ブロック又は複数ブロックに指定される機能／動きを実施するプロセスを提供する。
【００７９】
図におけるフローチャート及びブロック図は、本テクノロジーの様々な実施形態に従って、システム、方法、及びコンピュータプログラム製品のあり得る実装についてのアーキテクチャ、機能性、及び動作を例示している。このことに関連し、フローチャート又はブロック図の中の各ブロックは、指定された論理機能を実施する１つ以上の実行可能命令を含むコードのモジュール、セグメント、又は部分を表現し得る。さらに、いくつかの代替的な実装において、ブロックの中に記された機能は、図に記された順序以外で発生し得ることが留意されるべきである。例えば、連続して示される２つのブロックは、実際、実質的に同時に実行されてもよく、あるいは、上記２つのブロックは、時に、関与する機能性に依存して、逆の順序において実行されてもよい。さらに、ブロック図及び／又はフローチャート例示の各ブロックと、ブロック図及び／又はフローチャート例示における複数のブロックの組み合わせとは、指定された機能又は動きを実行する特別目的ハードウェアベースシステム、又は、特別目的ハードウェアとコンピュータ命令との組み合わせによって実装され得ることが留意される。
【００８０】
様々な実施形態が上記で説明されたが、これらは単に例として提示されており、限定でないことが理解されるべきである。上記説明は、本発明の範囲を本明細書に明記される具体的な形式に限定するものではない。ゆえに、好適な実施形態の幅広さ及び範囲は、上述された例示的な実施形態のいずれかによって限定されるべきではない。上記説明は限定的でなく例示的であることが理解されるべきである。反対に、本説明は、別記の請求項により定義され、そうでなければ当業者により十分理解されるとおり、本テクノロジーの主旨及び範囲内に含まれ得るとき、上記の代替、モディフィケーション、及び均等物をカバーすることが意図される。ゆえに、本テクノロジーの範囲は、上記説明を参照して決定されるべきでなく、しかし代わって、別記の請求項をその完全な範囲の均等物と共に参照して決定されるべきである。
【図１】
2017029731.tif 000003
【図２】
2017029731.tif 000004
【図３】
2017029731.tif 000005
【図４】
2017029731.tif 000006
【図５】
2017029731.tif 000007
【図６】
2017029731.tif 000008
【図７】
2017029731.tif 000009
【図８】
2017029731.tif 000010
【図９】
2017029731.tif 000011
【図１０】
2017029731.tif 000012
【図１１】
2017029731.tif 000013
【図１２】
2017029731.tif 000014
【図１３】
2017029731.tif 000015
【外国語明細書】
2017029731000001.pdf