特許第6207558号(P6207558)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ エンパイア テクノロジー ディベロップメント エルエルシーの特許一覧

<>
  • 特許6207558-キャッシュデータの量を計算する方法 図000003
  • 特許6207558-キャッシュデータの量を計算する方法 図000004
  • 特許6207558-キャッシュデータの量を計算する方法 図000005
  • 特許6207558-キャッシュデータの量を計算する方法 図000006
  • 特許6207558-キャッシュデータの量を計算する方法 図000007
  • 特許6207558-キャッシュデータの量を計算する方法 図000008
  • 特許6207558-キャッシュデータの量を計算する方法 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6207558
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】キャッシュデータの量を計算する方法
(51)【国際特許分類】
   A63F 13/352 20140101AFI20170925BHJP
   A63F 13/822 20140101ALI20170925BHJP
   G06F 13/00 20060101ALI20170925BHJP
【FI】
   A63F13/352
   A63F13/822
   G06F13/00 357Z
   G06F13/00 520A
【請求項の数】20
【外国語出願】
【全頁数】19
(21)【出願番号】特願2015-173473(P2015-173473)
(22)【出願日】2015年9月3日
(62)【分割の表示】特願2013-43376(P2013-43376)の分割
【原出願日】2013年3月5日
(65)【公開番号】特開2016-5632(P2016-5632A)
(43)【公開日】2016年1月14日
【審査請求日】2015年9月3日
(31)【優先権主張番号】13/426,868
(32)【優先日】2012年3月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509348786
【氏名又は名称】エンパイア テクノロジー ディベロップメント エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100109586
【弁理士】
【氏名又は名称】土屋 徹雄
(72)【発明者】
【氏名】倉林 修一
(72)【発明者】
【氏名】吉田 尚史
(72)【発明者】
【氏名】鷹野 孝典
【審査官】 前地 純一郎
(56)【参考文献】
【文献】 特開2013−208426(JP,A)
【文献】 特開2012−003661(JP,A)
【文献】 特表2007−528762(JP,A)
【文献】 特開2010−191967(JP,A)
【文献】 米国特許第07293235(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F13/00−13/98
A63F 9/24
G06F13/00
(57)【特許請求の範囲】
【請求項1】
仮想空間を分割した複数のエリアそれぞれに対応する複数のキャッシュサーバを管理することと、
ゲームのプレイヤーから、前記複数のエリアのうち第1のエリアにいるプレイヤーキャラクターに関連する要求を受信することと、
前記要求に応じて、第2のエリアに対応する第2のキャッシュサーバから、前記第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を、前記第1のエリアと前記第2のエリアとの間の距離に基づいて、算出することと、
前記キャッシュデータの量に応じて、前記第2のエリアに関連付けられているデータを前記第2のキャッシュサーバから、前記第1のキャッシュサーバにコピーすることと、
を含み、
コピーする前記キャッシュデータの量は、前記距離が小さくなると、それに応じて増加する、
方法。
【請求項2】
前記プレイヤーキャラクターに関連する前記要求に基づいて、前記第1のエリアに位置するプレイヤーキャラクターの状況を分析することと、をさらに含む、請求項に記載の方法。
【請求項3】
前記プレイヤーキャラクターに関連する前記要求は、前記プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられている請求項1または2に記載の方法。
【請求項4】
第1のキャッシュサーバおよび第2のキャッシュサーバはインメモリキャッシュサーバである請求項1〜いずれか一項に記載の方法。
【請求項5】
前記第1のキャッシュサーバおよび前記第2のキャッシュサーバはそれぞれ、前記第1のエリアに関する情報および前記第2のエリアに関する情報をデータベースサーバからキャッシュに入れる請求項1〜いずれか一項に記載の方法。
【請求項6】
前記プレイヤーキャラクターの前記状況は、前記プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている請求項に記載の方法。
【請求項7】
前記第2のエリアに関連付けられている前記データは、前記第2のエリアの環境情報および前記第2のエリアにおける前記プレイヤーキャラクターの情報のうちの少なくとも1つを含む請求項1〜いずれか一項に記載の方法。
【請求項8】
仮想空間の複数のエリアを複数のキャッシュサーバに関連付けるように構成されたキャッシュマネージャであって、各キャッシュサーバは割り振られているエリアに関する情報をデータベースサーバからキャッシュに入れる、キャッシュマネージャと、
ゲームのプレイヤーから前記複数のエリアのうち第1のエリアにいるプレイヤーキャラクターの要求を受信するように構成された受信ユニットであって、前記プレイヤーキャラクターの前記要求は、前記プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられている、受信ユニットと、
前記要求に応じて、前記第1のエリアと第2のエリアとの距離に基づいて、前記第2のエリアに対応する第2のキャッシュサーバから、前記第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を、前記距離が小さくなると前記コピーするキャッシュデータの量が増大するように計算するように構成されたコピー係数計算器と、
前記キャッシュマネージャに、キャッシュコピーの前記計算された量に少なくとも部分的に基づいて、前記第2のエリアに関連付けられているデータを前記第2のキャッシュサーバから前記第1のキャッシュサーバにコピーするよう指示するように構成された命令ユニットと
を備える、ロードバランサ。
【請求項9】
前記プレイヤーキャラクターの前記要求に少なくとも部分的に基づいて前記プレイヤーキャラクターの状況を分析するプレイヤー状況分析器をさらに備える、請求項に記載のロードバランサ。
【請求項10】
前記第2のエリアに関連付けられている前記データは、前記第2のエリアの環境情報および前記第2のエリアにおける前記プレイヤーキャラクターの情報のうちの少なくとも1つを含む請求項8または9に記載のロードバランサ。
【請求項11】
前記第1のキャッシュサーバおよび前記第2のキャッシュサーバはインメモリキャッシュサーバである請求項8〜10いずれか一項に記載のロードバランサ。
【請求項12】
前記プレイヤーキャラクターの前記状況は、前記プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている請求項に記載のロードバランサ。
【請求項13】
ゲームデータを格納するデータベースサーバとゲームサーバとの間のロードバランシングを実施するためのプログラムを格納するコンピュータ可読ストレージ媒体であって、コンピュータを、
仮想空間のエリアとキャッシュサーバとの関連付けを管理するように構成されたキャッシュ管理モジュールであって、各キャッシュサーバは、対応するエリアに関連付けられている前記ゲームデータの一部を前記データベースサーバからキャッシュに入れる、キャッシュ管理モジュール、
第1のエリアと第2のエリアとの間の距離に少なくとも部分的に基づいて、前記第2のエリアに対応する第2のキャッシュサーバから前記第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されたコピー係数計算モジュール
として機能させるためのプログラムを記録し、
前記プログラムは、前記コンピュータを、前記距離が小さくなると前記コピーするキャッシュデータの量が増大するように機能させる、
コンピュータ可読ストレージ媒体。
【請求項14】
前記コピー係数計算モジュールは、プレイヤー状況分析モジュールによって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいてキャッシュコピーの前記量を計算するようにさらに構成されている、請求項13に記載のコンピュータ可読ストレージ媒体。
【請求項15】
前記第1のキャッシュサーバおよび前記第2のキャッシュサーバはインメモリキャッシュサーバである請求項13または14に記載のコンピュータ可読ストレージ媒体。
【請求項16】
仮想空間を分割した複数のエリアそれぞれに対応する複数のキャッシュサーバを管理することと、
前記複数のキャッシュサーバそれぞれが管理するエリア間をプレイヤーキャラクターが移動する確率、及び/又は、前記管理するエリア間の距離に基づいて、前記複数のキャッシュサーバ間のコピー係数を計算することと、
を含み、
前記コピー係数は、前記キャッシュサーバ間でコピーするキャッシュデータの量を示し、
前記コピー係数は、
前記移動の確率が高くなると、それに応じて増大し、前記距離が減少すると、それに応じて増大する、
方法。
【請求項17】
前記管理することは、
前記コピー係数に基づいて、前記複数のキャッシュサーバを動的に管理することを特徴とする請求項16に記載の方法。
【請求項18】
前記計算することは、
前記仮想空間のマップ情報に基づいて、前記プレイヤーキャラクターが移動する確率を計算することを特徴とする請求項16または17に記載の方法。
【請求項19】
仮想空間を分割した複数のエリアそれぞれに対応する複数のキャッシュサーバを管理するキャッシュマネージャと、
前記複数のキャッシュサーバそれぞれが管理するエリア間をプレイヤーキャラクターが移動する確率、及び、前記管理するエリア間の距離に基づいて、前記複数のキャッシュサーバ間のコピー係数を、前記移動の確率が高くなると、それに応じて増大し、前記距離が減少すると、それに応じて増大するように計算するコピー係数計算器と、
を備えるロードバランサ。
【請求項20】
ゲームデータを格納するデータベースサーバとゲームサーバとの間のロードバランシングを実施するためのプログラムを格納するコンピュータ可読ストレージ媒体であって、コンピュータを、
仮想空間を分割した複数のエリアそれぞれに対応する複数のキャッシュサーバを管理するキャッシュ管理モジュールと、
前記複数のキャッシュサーバそれぞれが管理するエリア間をプレイヤーキャラクターが移動する確率、及び、前記管理するエリア間の距離に基づいて、前記複数のキャッシュサーバ間のコピー係数を、前記移動の確率が高くなると、それに応じて増大し、前記距離が減少すると、それに応じて増大するように計算するコピー係数計算モジュールとして機能させるためのプログラムを記録する、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【0001】
大規模多人数同時参加型オンラインロールプレイングゲーム(MMORPG:massive multiplayer online role playing game)などのオンラインゲームを楽しむユーザの数は増え続けている。たとえば、米国のブリザードエンターテイメント(Blizzard(登録商標) Entertainment)により運営されるワールドオブウォークラフト(World of Warcraft)のユーザ数は、世界中で1200万人を超えている。前述のようにオンラインゲームを楽しむユーザの数が増え続けているので、クラウドコンピューティングシステムを使用したスケールアウトが重要となる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
しかし、クラウドコンピューティング環境を実施するための既存のインフラストラクチャは通常、電子メールアプリケーションおよびワードプロセッサなど、パーソナルコンピュータ上で稼働するビジネスアプリケーションに適合されているため、オンラインゲームを効率的に実施することは困難である。特に、MMORPGなどのオンラインゲームは、仮想世界においてクライアントにリアルタイムで情報を転送することが要求されるので、データベースサーバとゲームサーバとの間の通信がボトルネックとなる傾向がある。
【課題を解決するための手段】
【0003】
1つの例において、方法は、仮想空間に位置するプレイヤーキャラクターの状況を分析することであって、仮想空間は複数のエリアを有するように構成され、プレイヤーキャラクターは複数のエリアの中で第1のエリアに位置する、分析することと、分析された状況に少なくとも部分的に基づいて、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算することと、計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算することとを含むことができる。
【0004】
別の例において、方法は、ゲームキャラクターの状況および予想位置に少なくとも部分的に基づいて、データベースサーバのデータキャッシュを動的に構成することと、動的構成に少なくとも部分的に基づいて、ゲームキャラクターに関連付けられているゲームプレイヤーによって要求されるゲームデータをキャッシュに入れることとを含むことができる。
【0005】
さらに別の例において、ロードバランサは、仮想空間に位置するプレイヤーキャラクターの状況を分析するように構成されたプレイヤー状況アナライザであって、仮想空間は複数のエリアを有するように構成され、プレイヤーキャラクターは複数のエリアの中で第1のエリアに位置する、プレイヤー状況アナライザと、仮想空間の複数のエリアを複数のキャッシュサーバに関連付けるように構成されたキャッシュマネージャであって、各キャッシュサーバは割り振られているエリアに関する情報をデータベースサーバからキャッシュに入れる、キャッシュマネージャと、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算するように構成された移動確率計算器と、移動確率計算器によって計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されたコピー係数計算器とを含むことができる。
【0006】
さらに別の例において、コンピュータ可読ストレージ媒体は、ゲームデータを格納するデータベースサーバとゲームサーバとの間のロードバランシングを実施するためのプログラムを格納することができ、プログラムは、仮想空間のエリアとキャッシュサーバとの関連付けを管理するように構成されたキャッシュ管理モジュールであって、各キャッシュサーバは対応するエリアに関連付けられているゲームデータの一部をデータベースサーバからキャッシュに入れる、キャッシュ管理モジュールと、第1のエリアから第2のエリアへのゲームキャラクターの移動の確率および第1のエリアと第2のエリアとの間の距離に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されたコピー係数計算モジュールとを含むことができる。
【0007】
前述の概要は、例示的なものに過ぎず、限定的であることは全く意図されていない。上記で説明される例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および後段の詳細な説明を参照することにより明らかとなろう。
【0008】
本開示の前述の特徴およびその他の特徴は、添付の図面と合わせて、後段の説明および付属の特許請求の範囲を読めば明らかとなろう。これらの図面は開示によるいくつかの実施形態を示すに過ぎず、したがってその範囲を限定すると見なされるものではないことを理解し、本開示は添付の図面を用いてさらに具体的および詳細に説明される。
【図面の簡単な説明】
【0009】
図1】本明細書において説明される少なくとも一部の実施形態により構成される、ロードバランサが、データベースサーバとゲームサーバとの間のロードバランシングを提供する環境の例示を概略的に示す図である。
図2】本明細書において説明される少なくとも一部の実施形態により構成される、キャッシュサーバと仮想空間エリアとを関連付けるためのメッシュ構造の例示を示す図である。
図3】本明細書において説明される少なくとも一部の実施形態により構成される、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成されたロードバランサの例示を示す概略ブロック図である。
図4】本明細書において説明される少なくとも一部の実施形態により構成される、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成された例示のシステムを概略的に示す図である。
図5】本明細書において説明される少なくとも一部の実施形態により構成される、データベースサーバとゲームサーバとの間のロードバランシングを提供するためのプロセスを示す例示の流れ図である。
図6】本明細書において説明される少なくとも一部の実施形態により構成される、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうるコンピュータプログラム製品を示す図である。
図7】本明細書において説明される少なくとも一部の実施形態により構成される、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうる例示のコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0010】
以下の詳細な説明において、本明細書の一部を形成する添付の図面が参照される。図面において、文脈に別段の指示がない限り、類似する符号は概して、類似するコンポーネントを識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的であることを意図されていない。本明細書において提示される主題の精神または範囲を逸脱することなく、その他の実施形態が使用されてもよく、その他の変更が行われてもよい。本明細書において概括的に説明され、図面に示される本開示の態様が、多岐にわたるさまざまな構成において配置され、代替され、組み合わされ、分離され、設計されてもよく、それらすべてが本明細書において明示的に検討されることは容易に理解されよう。
【0011】
本開示は、とりわけ、MMORPGなどのオンラインゲームを伴うモバイルサービスをホスティングするクラウドコンピューティング環境におけるロードバランシングに関連する方法、装置、システム、デバイス、およびコンピュータプログラム製品を対象とする。
【0012】
データベースサーバとゲームサーバとの間のゲームのロードバランシングを提供するように構成されたロードバランサに対する技術が概して説明される。一部の例において、クラウドコンピューティング環境におけるゲームは、ゲートウェイサーバ、ゲームサーバ、およびデータベースサーバを含む3つのサーバレイヤを使用して実施されてもよい。一部の例において、ロードバランサは、データベースサーバとゲームサーバとの間のロードバランシングを提供して、トラフィックの増大に起因する両者間の通信ボトルネックを解決することができる。一部の例において、オンラインゲームの場合、ロードバランサは、データベースサーバとゲームサーバとの間のロードバランシングを提供して、ゲームの仮想空間に関する大量のゲームデータの読み出しによって生じる通信ボトルネックを解決することができる。
【0013】
一部の例において、ロードバランサは、ゲームの仮想空間内のプレイヤーキャラクターの位置および状況のうちの少なくとも1つに少なくとも部分的に基づいてデータベースサーバのデータキャッシュを動的に構成し、動的構成に少なくとも部分的に基づいてユーザ(またはプレイヤー)によって要求されたゲームデータをキャッシュに入れ、それによりゲームサーバからデータベースサーバへのデータアクセスを迅速化することができる。
【0014】
一部の例において、メモリ内キャッシュサーバなどのデータベースサーバから取り出されたデータをキャッシュに入れる複数のキャッシュサーバが、ゲームサーバからデータベースサーバへのアクセス数を減らすために使用されてもよい。
【0015】
一部の例において、オンラインゲームサービスの応答速度およびサービス提供キャパシティ(すなわち、ゲームを同時にプレイすることができるプレイヤーの数)を改善するため、ロードバランサは、複数のキャッシュサーバ間でデータのコピーを管理することができる。
【0016】
一部の例において、ロードバランサは、仮想空間を複数のエリアに分割して、各々のキャッシュサーバがエリアの1つに関するゲームデータをデータベースサーバからキャッシュに入れるように、複数のキャッシュサーバを管理することができる。ロードバランサは、キャッシュサーバとエリアの間の関連付けを管理することができる。
【0017】
一部の例において、ロードバランサは、ユーザからゲームデータの要求を受信して、受信した要求を参照して分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいて、第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算することができる。
【0018】
一部の例において、ロードバランサは、仮想空間のマップ情報を使用することにより、前もって確率を静的に計算することができる。
【0019】
一部の例において、次いでロードバランサは、計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバへのコピー係数、すなわち第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0020】
一部の例において、すべてのエリアおよびプレイキャラクターのコピー係数を管理することにより、キャッシュサーバは、プレイヤーキャラクターが移動する可能性の高いエリアに関する情報を動的および/または自動的に格納するように構成されてもよく、それによりゲームサーバからデータベースサーバへのアクセス数を減らすことができる。
【0021】
一部の例において、ロードバランサは、ゲームサーバおよびデータベースサーバから独立したネットワーク装置として実施されてもよい。したがって、ロードバランサは、オンラインゲームサービスの応答速度およびサービス提供キャパシティを改善するため、既存のインフラストラクチャおよびアプリケーションを大幅に変更することなくクラウドコンピューティング環境に導入されてもよい。
【0022】
図1は、本明細書において説明される少なくとも一部の実施形態による、ロードバランサが、データベースサーバとゲームサーバとの間のロードバランシングを提供する環境の例示を概略的に示す図である。図1に示されるように、ユーザクライアント110は、データベースサーバ130に格納されうるゲームデータの要求をゲームサーバ120に送信することができる。限定的ではなく、一例として、要求は、ゲームサーバ120によって提供されるオンラインゲームサービスのゲームのプレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。
【0023】
一部の実施形態において、データベースサーバ130は、1つまたは複数のプレイヤーキャラクターが存在しうるゲームの仮想空間に関するゲームデータを格納することができる。一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nは、データベースサーバ130に格納されたゲームデータの少なくとも一部をキャッシュに入れることができる。一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nは、それぞれ、仮想空間内の複数のエリアのうちの1つに関連付けられているゲームデータの少なくとも一部をデータベースサーバ130からキャッシュに入れることができる。限定的ではなく、一例として、キャッシュサーバ140−1、140−2、・・・、140−nは、メモリ内キャッシュサーバであってもよい。限定的ではなく、一例として、エリアのそれぞれのサイズは、クラウドコンピューティング環境に提供されるキャッシュサーバ140−1、140−2、・・・、140−nの合計数、および/またはキャッシュサーバ140−1、140−2、・・・、140−nのメモリ容量に応じて異なることもある。たとえば、クラウドコンピューティング環境に十分な数のキャッシュサーバ140−1、140−2、・・・、140−nが提供され、そのメモリ容量も十分である場合、エリアのサイズは比較的小さく設定されてもよいが、キャッシュサーバ140−1、140−2、・・・、140−nの数が十分ではない、および/またはそのメモリ容量が小さい場合は、エリアのサイズは比較的大きく設定されてもよい。
【0024】
一部の実施形態において、ロードバランサ150は、キャッシュサーバ140−1、140−2、・・・、140−nと仮想空間の関連付けを管理することができる。限定的ではなく、一例として、ロードバランサ150は、キャッシュサーバ140−1、140−2、・・・、140−nをそれぞれ、エリア160−1、160−2、・・・、160−nに割り振ることができ、キャッシュサーバ140−1、140−2、・・・、140−nにそれぞれ、エリア160−1、160−2、・・・、160−nに関連付けられているゲームデータをデータベースサーバ130からキャッシュに入れさせるかまたは取り出させることができる。
【0025】
一部の実施形態において、ロードバランサ150はまた、ユーザクライアント110からの要求をゲームサーバ120から受信することができる。次いで、ロードバランサ150は、受信した要求を分析することができ、それからユーザクライアント110に関連付けられているプレイヤーキャラクターの状況情報を取得することができる。限定的ではなく、一例として、状況情報は、プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つを含むことができる。
【0026】
一部の実施形態において、ロードバランサ150はまた、要求から取得された状況情報に少なくとも部分的に基づいて、エリア間の仮想空間内のプレイヤーキャラクターの移動の確率を計算することもできる。限定的ではなく、一例として、ロードバランサ150は、現在位置とその他のエリアとの間の距離を考慮に入れることによって、プレイヤーキャラクターの現在位置から仮想空間内のその他のエリアへの仮想空間内のプレイヤーキャラクターの移動の確率を計算することができる。
【0027】
一部の実施形態において、ロードバランサ150はまた、計算された確率に少なくとも部分的に基づいて、キャッシュサーバ140−1、140−2、・・・、140−n間のコピー係数、すなわちキャッシュサーバ140−1、140−2、・・・、140−n間でコピーするキャッシュデータの量を計算することができる。限定的ではなく、一例として、ロードバランサ150は、エリア160−1からエリア160−2へのユーザクライアント110に関連付けられているプレイヤーキャラクターの移動の計算された確率に少なくとも部分的に基づいて、エリア160−2に対応するキャッシュサーバ140−2からエリア160−1に対応するキャッシュサーバ140−1へのコピー係数、すなわちエリア160−2に対応するキャッシュサーバ140−2からエリア160−1に対応するキャッシュサーバ140−1にコピーするキャッシュデータの量を計算することができる。一部の実施形態において、キャッシュサーバ140−2からキャッシュサーバ140−1へのコピー係数は、エリア160−1からエリア160−2への移動の計算された確率が増大するのに応じて増大することがある。一部の実施形態において、キャッシュサーバ140−2からキャッシュサーバ140−1へのコピー係数は、エリア160−1とエリア160−2との間の距離が増大するのに応じて減少することがある。
【0028】
仮想空間内の点xに対応するキャッシュサーバから、仮想空間内の点xに対応するもう1つのキャッシュサーバに情報をコピーするためのコピー係数、すなわち、copy_factor(x,x)の例は、以下のような例示の式により計算されてもよい。
【数1】
【0029】
式1について、item_count(x)は、点xに対応するキャッシュサーバ内のキャッシュデータの量を示し、probability(x,x)は、点xから点xへのユーザクライアント110に関連付けられているプレイヤーキャラクターの移動の確率を示し、distance(x,x)は、仮想空間内の点xから点xまでの距離を示す。
【0030】
一部の実施形態において、ロードバランサ150は、上記の式1により計算されたコピー係数に少なくとも部分的に基づいて、キャッシュサーバ140−1、140−2、・・・、140−n間でキャッシュデータの計算された量をコピーすることによって、キャッシュサーバ140−1、140−2、・・・、140−nを動的に管理または構成することができ、それによりデータベースサーバ130とゲームサーバ120との間のロードバランシングをもたらすことができる。
【0031】
図2(A)および(B)はそれぞれ、本明細書において説明される少なくとも一部の実施形態による、キャッシュサーバと仮想空間エリアとを関連付けるためのメッシュ構造の例示、およびキャッシュデータをキャッシュサーバ間でコピーすることの例示を示す図である。示されているように、仮想空間200は、複数のエリア210−1、210−2、・・・、210−25に分割されてもよい。図2(A)および(B)は、空間200が25個の同じサイズのエリア210−1、210−2、・・・、210−25に分割されることを示すが、当業者であれば、空間20が任意のサイズおよび/または任意の数のエリアに分割されてもよいことが理解されよう。
【0032】
一部の実施形態において、エリア210−1、210−2、・・・、210−25に関するゲームデータは、データベースサーバ(たとえば、データベースサーバ130)に格納されてもよい。複数のキャッシュサーバ(たとえば、キャッシュサーバ140−1、140−2、・・・、140−n)は、データベースサーバへのアクセス数を減らすために、エリア210−1、210−2、・・・、210−25に関するゲームデータをデータベースサーバから取り出すことおよび/またはキャッシュに入れることができる。一部の実施形態において、複数のキャッシュサーバの各々は、エリア210−1、210−2、・・・、210−25の各々に関連付けられるかまたは割り振られてもよく、エリア210−1、210−2、・・・、210−25のうちの対応する1つに関するゲームデータをキャッシュに入れることができる。
【0033】
図2(A)に示されるように、プレイヤーキャラクターが現在エリア210−14に位置している場合、ロードバランサ(たとえば、ロードバランサ150)は、エリア210−14からその他のエリアへのプレイヤーキャラクターの移動の確率を計算することができ、他のエリアに対応する他のキャッシュサーバからエリア210−14に対応するキャッシュサーバへのコピー係数を計算することができる。限定的ではなく、一例として、ロードバランサが、エリア210−14から図2(A)に示される他のエリアへのプレイヤーキャラクターの移動の確率を見出して計算し、図2(B)に示されるエリアに対応するキャッシュサーバの各々のキャッシュデータの量を見出す場合、ロードバランサは、上記の式1に従って、他のエリアに対応するキャッシュサーバからエリア210−14に対応するキャッシュサーバへのそれぞれのコピー係数を計算することができる。ロードバランサは、上記の式1により計算されたコピー係数に少なくとも部分的に基づいて、キャッシュサーバ間でキャッシュデータをコピーすることによって、キャッシュサーバを動的に管理または構成することができ、それによりデータベースサーバとゲームサーバとの間のロードバランシングをもたらすことができる。
【0034】
図3は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成されたロードバランサの例示的な例を示す概略ブロック図である。示されるように、ロードバランサ150は、受信ユニット310、プレイヤー状況分析器320、キャッシュマネージャ330、移動確率計算器340、コピー係数計算器350、および命令ユニット360を含むことができる。別個のコンポーネントとして示されているが、さまざまなコンポーネントは、開示される主題の範囲内で検討される間に、追加のコンポーネントに分割されるか、より少ないコンポーネントに結合されるか、またはすべて除去されてもよい。
【0035】
受信ユニット310は、ゲームのユーザクライアントからプレイヤーキャラクターの要求を受信するように構成されてもよい。一部の実施形態において、プレイヤーキャラクターの要求は、プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。限定的ではなく、一例として、プレイヤーキャラクターのアクションは、ゲームの仮想空間における移動手段を使用したアクションに関連付けられてもよい。
【0036】
プレイヤーキャラクター分析器320は、仮想空間に位置するプレイヤーキャラクターの状況を分析するように構成されてもよい。一部の実施形態において、仮想空間は、複数のエリアを有するように構成されてもよく、プレイヤーキャラクターは、複数のエリアの中で第1のエリアに位置してもよい。限定的ではなく、一例として、プレイヤーキャラクターの状況は、プレイヤーキャラクターの位置情報、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターの機器の情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報に関連付けられてもよい。
【0037】
一部の実施形態において、プレイヤー状況分析器320は、プレイヤーキャラクターの要求に基づいてプレイヤーキャラクターの状況を分析することができる。限定的ではなく、一例として、要求はプレイヤーキャラクターの情報を含むことができ、プレイヤー状況分析器320は、要求からプレイヤーキャラクターの情報を取得して、取得した情報を使用してプレイヤーキャラクターの状況を分析することができる。
【0038】
キャッシュマネージャ330は、仮想空間の複数のエリア(たとえば、エリア160−1、160−2、・・・、160−n)を、複数のキャッシュサーバ(たとえば、キャッシュサーバ140−1、140−2、・・・、140−n)に関連付けるように構成されてもよい。一部の実施形態において、キャッシュサーバは各々、割り振られたエリアに関する情報をデータベースサーバ(たとえば、データベースサーバ130)からキャッシュに入れることができる。一部の実施形態において、キャッシュサーバは、メモリ内キャッシュサーバを含むことができる。
【0039】
移動確率計算器340は、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算するように構成されてもよい。一部の実施形態において、移動確率計算器340は、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報など、プレイヤー状況分析器320によって分析されたプレイヤーの状況に少なくとも部分的に基づいて確率を計算することができる。
【0040】
コピー係数計算器350は、移動確率計算器340によって計算された移動の確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバへのコピー係数、すなわち第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するように構成されてもよい。一部の実施形態において、コピー係数計算器350は、第1のエリアと第2のエリアとの間の距離を考慮して、第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0041】
命令ユニット360は、キャッシュマネージャ330に、コピー係数計算器350によって計算されたキャッシュコピーの量に少なくとも部分的に基づいて、第2のエリアに関連付けられているデータを第2のキャッシュサーバから第1のキャッシュサーバにコピーするよう指示し、それによりデータベースサーバとゲームサーバ間のロードバランシングをもたらすように構成されてもよい。一部の実施形態において、第2のエリアに関連付けられているデータは、第2のエリアの環境情報および第2のエリアにおけるプレイヤーキャラクターの情報のうちの少なくとも1つを含む。限定的ではなく、一例として、第1のエリアの環境情報および第2のエリアの環境情報は、それぞれ第1のエリアおよび第2のエリアの気象情報を含むことができる。
【0042】
図4は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するように構成された例示のシステムを概略的に示す図である。示されているように、ユーザが、たとえば、大規模多人数同時参加型オンラインロールプレイングゲーム(MMORPG)プログラムなどのゲームプログラムをユーザクライアント110上で稼働または実行する場合、ユーザクライアント110は、データベースサーバ130に格納されうる、仮想空間内のプレイヤーキャラクターに関連するゲームデータの要求をゲームサーバ120に送信することができる。次いで、ゲームサーバ120は、受信した要求をロードバランサ150に送信することができる。
【0043】
一部の実施形態において、ロードバランサ150内の受信ユニット310は、ゲームサーバからゲームデータの要求を受信することができる。次いで、受信ユニット310は、受信した要求をプレイヤー状況分析器320に送信することができる。一部の実施形態において、プレイヤー状況分析器320は、プレイヤーキャラクターの要求に基づいて、プレイヤーキャラクターのアクションまたは移動に関連付けられているプレイヤーキャラクターの状況を分析することができる。
【0044】
一部の実施形態において、キャッシュサーバ140−1、140−2、・・・、140−nと仮想空間エリアとの関連付けを管理することができる、ロードバランサ150内のキャッシュマネージャ330は、プレイヤー状況分析器320によって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいてプレイヤーキャラクターの現在の位置に対応するキャッシュサーバを含む、関連するキャッシュサーバを見出すことができる。
【0045】
一部の実施形態において、ロードバランサ150内の移動確率計算器340は、プレイヤー状況分析器320によって分析されたプレイヤーキャラクターの状況に少なくとも部分的に基づいて、プレイヤーキャラクターの現在の位置が属しうる第1の仮想空間エリアから第2の仮想空間エリアへのプレイヤーキャラクターの移動の確率を計算することができる。
【0046】
一部の実施形態において、ロードバランサ150内のコピー係数計算器350は、移動確率計算器340によって計算された確率に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから、第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算することができる。
【0047】
一部の実施形態において、命令ユニット360は、キャッシュマネージャ330に、キャッシュコピーの計算された量に少なくとも部分的に基づいて、第2のエリアに関連付けられているデータを第2のキャッシュサーバから第1のキャッシュサーバにコピーすることができる。
【0048】
一部の実施形態において、ロードバランサ150は、コピー係数計算器350によって計算された第2のキャッシュサーバから第1のキャッシュサーバにコピーするキャッシュデータの量に少なくとも部分的に基づいて、第2のキャッシュサーバから第1のキャッシュサーバにキャッシュデータの計算された量をコピーすることにより、キャッシュサーバ140−1、140−2、・・・、140−nを動的に管理または構成することができる。
【0049】
図5は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するためのプロセスを示す例示的な流れ図である。図5に示される方法は、上記で説明されている受信ユニット310、プレイヤー状況分析器320、キャッシュマネージャ330、移動確率計算器340、コピー係数計算器350、および命令ユニット360を含むロードバランサ150などのロードバランサにおいて実施されてもよい。例示のプロセスは、1つまたは複数のブロック500、510、520、および/または530によって示される、1つまたは複数の操作、アクション、または機能を含むことができる。別個のブロックとして示されているが、さまざまなブロックは、望ましい実施態様に応じて、追加のブロックに分割されるか、より少ないブロックに結合されるか、または除去されてもよい。プロセスは、ブロック500から開始する。
【0050】
ブロック500において、ロードバランサは、プレイヤーキャラクターに関連付けられているゲームのプレイヤーから、仮想空間に位置するプレイヤーキャラクターに関連する要求を受信することができる。限定的ではなく、一例として、要求は、プレイヤーキャラクターのアクションおよび移動のうちの少なくとも1つに関連付けられてもよい。一部の実施形態において、仮想空間は、複数のエリアを有するように構成されてもよく、プレイヤーキャラクターは、複数のエリアの中で第1のエリアに位置してもよい。プロセスは、ブロック500からブロック510へと進むことができる。
【0051】
ブロック510において、ロードバランサは、プレイヤーキャラクターに関連する要求に少なくとも部分的に基づいてプレイヤーキャラクターの状況を分析することができる。限定的ではなく、一例として、プレイヤーキャラクターの状況は、プレイヤーキャラクターの位置情報、レベル情報、機器情報、パーティ組織情報、クエスト情報、および移動手段情報のうちの少なくとも1つに関連付けられている。プロセスは、ブロック510からブロック520へと進むことができる。
【0052】
ブロック520において、ロードバランサは、複数のエリアの中で第1のエリアから第2のエリアへのプレイヤーキャラクターの移動の確率を計算することができる。一部の実施形態において、ロードバランサは、分析された状況に少なくとも部分的に基づいて確率を計算することができる。限定的ではなく、一例として、ロードバランサは、プレイヤーキャラクターのレベルの情報、プレイヤーキャラクターを含むパーティの組織情報、プレイヤーキャラクターのクエストの情報、およびプレイヤーキャラクターが使用している移動手段の情報を考慮して確率を計算することができる。プロセスは、ブロック520からブロック530へと進むことができる。
【0053】
ブロック530において、ロードバランサ150は、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量、すなわち第2のキャッシュサーバから第1のキャッシュサーバへのコピー係数を計算することができる。
【0054】
一部の実施形態において、ロードバランサは、計算された確率に少なくとも部分的に基づいて、コピーするキャッシュデータの量を計算することができる。
【0055】
一部の実施形態において、ロードバランサは、第1のエリアと第2のエリアとの間の距離にさらに基づいて、コピーするキャッシュデータの量を計算することができる。
【0056】
一部の実施形態において、第1のキャッシュサーバおよび第2のキャッシュサーバはそれぞれ、第1のエリアに関する情報および第2のエリアに関する情報をデータベースサーバからキャッシュに入れることができる。
【0057】
一部の実施形態において、移動の確率が高くなると、それに応じてキャッシュコピーの量も増大する。
【0058】
一部の実施形態において、ロードバランサは、第2のキャッシュサーバから第1のキャッシュサーバにキャッシュデータの計算された量をコピーすることにより、キャッシュサーバを動的に管理または構成することができる。
【0059】
本明細書において開示されるこのプロセスおよびその他のプロセスおよび方法について、プロセスおよび方法で実行される機能が異なる順序で実施されてもよいことを、当業者であれば理解するであろう。さらに、概説されるステップおよび操作は例として示されているに過ぎず、ステップおよび操作の一部は、開示される実施形態の本質を損なうことなく、オプションの、より少ないステップおよび操作に結合されてもよいか、または追加のステップおよび操作に拡大されてもよい。
【0060】
図6は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうるコンピュータプログラム製品を示す図である。プログラム製品600は、信号搬送媒体602を含むことができる。信号搬送媒体602は、たとえばプロセッサによって実行されるとき、図1図5に関して上記で説明される機能を提供することができる1つまたは複数の命令604を含むことができる。一例として、命令604は、仮想空間のエリアとキャッシュサーバとの関連付けを管理するための1つまたは複数の命令であって、各キャッシュサーバは対応するエリアに関連付けられているゲームデータの一部をデータベースサーバからキャッシュに入れる命令と、第1のエリアから第2のエリアへのゲームキャラクターの移動の確率および第1のエリアと第2のエリアとの間の距離に少なくとも部分的に基づいて、第2のエリアに対応する第2のキャッシュサーバから第1のエリアに対応する第1のキャッシュサーバにコピーするキャッシュデータの量を計算するための1つまたは複数の命令とを含むことができる。したがって、たとえば、図3を参照すると、ロードバランサ150は、命令604に応答して、図5に示されるブロックのうちの1つまたは複数を開始することができる。
【0061】
一部の実施形態において、信号搬送媒体602は、ハードディスクドライブ、CD、DVD,デジタルテープ、メモリなどのコンピュータ可読媒体606を含むことができるが、これらに限定されることはない。一部の実施形態において、信号搬送媒体602は、メモリ、読取り/書込み(R/W)CD、R/W DVDなどの記録可能媒体608を含むことができるが、これらに限定されることはない。一部の実施形態において、信号搬送媒体602は、デジタルおよび/またはアナログ通信媒体など(たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど)の通信媒体610を含むことができるが、これらに限定されることはない。したがって、たとえば、プログラム製品600は、RF信号搬送媒体602によってロードバランサ150の1つまたは複数のモジュールに搬送されてもよく、信号搬送媒体602は無線通信媒体610(たとえば、IEEE802.11規格に適合する無線通信媒体)により搬送される。
【0062】
図7は、本明細書において説明される少なくとも一部の実施形態による、データベースサーバとゲームサーバとの間のロードバランシングを提供するために使用されうる例示のコンピューティングデバイスを示すブロック図である。これらの例において、コンピューティングデバイス700の要素は、MMORPGなどのオンラインゲームを伴うモバイルサービスをホスティングするクラウドコンピューティングシステムのために配置または構成されてもよい。極めて基本的な構成702において、コンピューティングデバイス700は通常、1つまたは複数のプロセッサ704およびシステムメモリ706を含む。メモリバス708は、プロセッサ704とシステムメモリ706との間で通信するために使用されてもよい。
【0063】
望ましい構成に応じて、プロセッサ704は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそれらの任意の組合せを含む任意のタイプであってもよいが、これらに限定されることはない。プロセッサ704は、レベル1キャッシュ710およびレベル2キャッシュ712など、1つまたは複数のレベルのキャッシング、プロセッサコア714、およびレジスタ716を含むことができる。例示のプロセッサコア714は、演算論理装置(ALU:arithmetic logic unit)、浮動小数点演算ユニット(FPU:floating point unit)、デジタル信号処理コア(DSP Core)、またはそれらの任意の組合せを含むことができる。例示のメモリコントローラ718はまた、プロセッサ704と共に使用されてもよいか、または一部の実施態様において、メモリコントローラ718はプロセッサ704の内部部品であってもよい。
【0064】
望ましい構成に応じて、システムメモリ706は、(RAMなどの)揮発性メモリ、(たとえば、ROM、フラッシュメモリなどの)不揮発性メモリ、またはそれらの任意の組合せを含む任意のタイプであってもよいが、これらに限定されることはない。システムメモリ706は通常、オペレーティングシステム720、1つまたは複数のアプリケーション722、およびプログラムデータ724を含むことができる。アプリケーション722は、図3に示されるロードバランサ150のアーキテクチャに関して説明されているアクションを含むか、または図5に示される流れ図に関して説明されているアクションを含む本明細書において説明される機能を実行するように配置されうる命令726を含むことができる。プログラムデータ724は、命令726を実施するために使用されうるデータ(たとえば、キャッシュサーバと仮想空間エリアとを関連付けるためのメッシュ構造)を含むことができる。一部の実施形態において、アプリケーション722は、本明細書において説明されるロードバランサのための命令の実施態様のように、オペレーティングシステム720上でプログラムデータ724と共に動作するように配置されてもよい。
【0065】
コンピューティングデバイス700は、追加の特徴または機能、および追加のインターフェイスを有して、基本構成702と、任意の必要なデバイスおよびインターフェイスとの通信を容易にすることができる。たとえば、バス/インターフェイスコントローラ730は、ストレージインターフェイスバス734を介して基本構成702と1つまたは複数のデータストレージデバイス732との間の通信を容易にするために使用されてもよい。データストレージデバイス732は、取外し式ストレージデバイス736、非取外し式ストレージデバイス738、またはその組合せであってもよい。取外し式ストレージデバイスおよび非取外し式ストレージデバイスの例は、ほんの一部をあげると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、およびテープドライブを含む。例示のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータなどの情報の格納のための任意の方法または技術で実施された揮発性および不揮発性の、取外し式および非取外し式メディアを含むことができる。
【0066】
システムメモリ706、取外し式ストレージデバイス736、および非取外し式ストレージデバイス738は、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたはその他の磁気ストレージデバイス、もしくは望ましい情報を格納するために使用されうる、コンピューティングデバイス700によってアクセスされうる任意の他の媒体を含むが、これらに限定されることはない。任意のそのようなコンピュータストレージ媒体は、コンピューティングデバイス700の一部であってもよい。
【0067】
コンピューティングデバイス700はまた、さまざまなインターフェイスデバイス(たとえば、出力デバイス742、周辺インターフェイス744、および通信デバイス746)から基本構成702へのバス/インターフェイスコントローラ730を介する通信を容易にするためのインターフェイスバス740を含むこともできる。例示の出力デバイス742は、グラフィックス処理ユニット748およびオーディオ処理ユニット750を含み、これらは1つまたは複数のA/Vポート752を介してディスプレイまたはスピーカなどのさまざまな外部デバイスと通信するように構成されてもよい。例示の周辺インターフェイス744は、シリアルインターフェイスコントローラ754またはパラレルインターフェイスコントローラ756を含み、これらは1つまたは複数の入出力ポート758を介して入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)またはその他の周辺デバイス(たとえば、プリンタ、スキャナなど)などの外部デバイスと通信するように構成されてもよい。例示の通信デバイス746はネットワークコントローラ760を含み、これは1つまたは複数の通信ポート764を介するネットワーク通信リンク上の1つまたは複数のその他のコンピューティングデバイス762との通信を容易にするために配置されてもよい。
【0068】
ネットワーク通信リンクは、通信媒体の一例であってもよい。通信媒体は通常、搬送波または他のトランスポート機構などの変調データ信号のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって具現されてもよく、任意の情報搬送媒体を含むことができる。「変調データ信号」は、信号の特性セットの1つまたは複数を有する信号、もしくは信号の情報をエンコードするような方法で変更された信号であってもよい。限定的ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数(RF)、マイクロ波、赤外線(IR)および他の無線媒体などの無線媒体を含むことができるが、これらに限定されることはない。本明細書に使用されているコンピュータ可読媒体という用語は、ストレージ媒体および通信媒体の両方を含むことができる。
【0069】
コンピューティングデバイス700は、携帯電話、携帯情報端末(PDA)などの小型フォームファクターポータブル(またはモバイル)電子デバイス、パーソナルメディアプレイヤーデバイス、無線Web視聴デバイス、パーソナルハンドセットデバイス、アプリケーション固有デバイス、または上記の機能のいずれかを含む混合デバイスの一部として実施されてもよい。コンピューティングデバイス700はまた、ラップトップコンピュータおよびラップトップコンピュータ以外の構成を含むパーソナルコンピュータとして実施されてもよい。
【0070】
本開示は、本出願において説明される特定の実施形態に関して限定されるべきではなく、実施形態はさまざまな態様を例示することが意図されている。当業者には明らかであるように、その精神および範囲を逸脱することなく多くの変更および変形が行われてもよい。本明細書において列挙される方法および装置に加えて、本開示の範囲内の機能的に等価の方法および装置は、上記の説明から当業者には明らかとなるであろう。そのような変更および変形は、添付の特許請求の範囲内に含まれることが意図される。本開示は、添付の特許請求の範囲の条項、ならびにそのような特許請求の範囲が権利を有する等価物の全範囲によってのみ限定されるものとする。本開示が、当然変化しうるものである特定の方法、試薬、化合物組成、または生態系に限定されないことを理解されたい。また、本明細書において使用される用語が、特定の実施形態を説明することのみを目的としており、限定的であることは意図されていないことも理解されたい。
【0071】
本明細書における実質的にすべての複数形および/または単数形の用語の使用に対して、当業者は、状況および/または用途に適切なように、複数形から単数形に、および/または単数形から複数形に変換することができる。さまざまな単数形/複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【0072】
通常、本明細書において、特に添付の特許請求の範囲(たとえば、添付の特許請求の範囲の本体部)において使用される用語は、全体を通じて「オープンな(open)」用語として意図されていることが、当業者には理解されよう(たとえば、用語「含む(including)」は、「含むがそれに限定されない(including but not limited to)」と解釈されるべきであり、用語「有する(having)」は、「少なくとも有する(having at least)」と解釈されるべきであり、用語「含む(includes)」は、「含むがそれに限定されない(includes but is not limited to)」と解釈されるべきである、など)。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも1つの(at least one)」および「1つまたは複数の(one or more)」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「1つまたは複数の」または「少なくとも1つの」および「a」または「an」などの不定冠詞を含む場合であっても、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に1つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない(たとえば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう(たとえば、他の修飾語なしでの「2つの記載(two recitations)」の単なる記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、BおよびC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、およびCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。「A、B、またはC、などの少なくとも1つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている(たとえば、「A、B、またはCの少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AおよびBを共に、AおよびCを共に、BおよびCを共に、ならびに/またはA、B、およびCを共に、などを有するシステムを含むが、それに限定されない)。2つ以上の代替用語を提示する事実上いかなる離接する語および/または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方(one of the terms)、当該用語のいずれか(either of the terms)、または両方の用語(both terms)を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「AまたはB」は、「A」または「B」あるいは「AおよびB」の可能性を含むことが理解されよう。
【0073】
加えて、本開示の特徴または態様がマーカッシュ形式のグループに関して説明される場合、それにより本開示はまた、マーカッシュ形式のグループの構成要素の任意の個々の構成要素または構成要素のサブグループに関しても説明されることを、当業者であれば理解するであろう。
【0074】
書面による説明を行うことに関してなど、任意およびすべての目的のため、当業者によって理解されるであろうように、本明細書において開示されるあらゆる範囲はまた、任意およびすべての可能な下位範囲およびその下位範囲の組合せを網羅する。任意の一覧される範囲は、同範囲が少なくとも等価の2分の1、3分の1、4分の1、5分の1、10分の1などに分割されることを十分に説明および可能にするものと容易に理解されてもよい。非限定的な例として、本明細書において説明される各範囲は、下3分の1、中3分の1、および上3分の1などに容易に分解されてもよい。さらに当業者によって理解されるであろうように、「最大(up to)」、「少なくとも(at least)」などのようなすべての表現は、列挙される数を含み、引き続き上記で説明されている下位範囲に分解されてもよい範囲を示す。最後に、当業者には理解されるように、範囲は各々個別の構成要素を含む。したがって、たとえば、1〜3のセルを有するグループは、1、2、または3のセルを有するグループを称する。同様に、1〜5のセルを有するグループは、1、2、3、4、または5のセルを有するグループを称する、というようになる。
【0075】
以上の記述から、本開示のさまざまな実施形態は本明細書において例示の目的で説明されており、本開示の範囲および精神を逸脱することなくさまざまな変更が行われてもよいことが理解されよう。したがって、本明細書において開示されるさまざまな実施形態は、限定的であることを意図されておらず、真の範囲および精神は後段の特許請求の範囲により示される。
図1
図2
図3
図4
図5
図6
図7