以下の詳細な説明では、その一部を構成する添付の図面を参照する。図面において、文脈上別段の指示がない限り、通常、類似の記号は類似のコンポーネントを識別する。詳細な説明、図面、および特許請求の範囲に記載されている例示的な実施形態は、限定することを意味するものではない。本明細書に提示される主題の趣旨または範囲から逸脱することなく、他の実施形態が利用されてよく、他の変更を行われてよい。本明細書に一般的に記載され、図面に示される本開示の態様は、多種多様な異なる構成において配置、置換、結合、分離、および設計することができ、これらはすべて本明細書で企図される。
本明細書における「いくつかの実施形態(some embodiments)」、「実施形態(an embodiment)」、「例示的な実施形態(an example embodiment)」などへの言及は、説明された実施形態が特定の機能、構造、または特徴を含み得るが、すべての実施形態が必ずしも特定の機能、構造、または特徴を含み得るとは限らないことを示す。さらに、そのような句は必ずしも同じ実施形態を指しているわけではない。さらに、特定の機能、構造、または特徴が実施形態に関連して説明される場合、そのような機能、構造、または特徴は、明示的に説明されるかどうかにかかわらず、他の実施形態に関連して影響を受ける可能性がある。
オンラインゲームプラットフォーム(「ユーザ生成コンテンツプラットフォーム」、または「ユーザ生成コンテンツシステム」とも呼ばれる)は、ユーザが相互に相互作用するための様々な方法を提供する。たとえば、オンラインゲームプラットフォームのユーザは、共通の目標に向かって協力したり、様々な仮想ゲームアイテムを共有したり、相互に電子メッセージを送信したりすることができる。オンラインゲームプラットフォームのユーザは、仮想キャラクタとしてゲームに参加し、ゲーム固有の役割を演じることができる。たとえば、仮想キャラクタは、各キャラクタに特定の役割が割り当てられ、その役割に対応する衣類、鎧、武器、スキルなどのパラメータが関連付けられているチームまたはマルチプレイヤ環境の一部であってよい。別の例では、仮想キャラクタは、たとえば、単一のプレイヤがゲームの一部である場合、コンピュータで生成されたキャラクタであり得る1つまたは複数のノンプレイヤキャラクタ(NPC)によって結合され得る。
オンラインゲームプラットフォームでは、プラットフォームのユーザ(開発者)が新しいゲーム、キャラクタ、およびコンテンツを作成できる場合もある。たとえば、オンラインゲームプラットフォームのユーザは、新しいキャラクタ、アイテム、または他のコンテンツを作成、設計、および/またはカスタマイズして、他のユーザがそれを利用できるようにすることができる。
特定のオンラインゲームに関連付けられる第1の地域またはロケールにおいて、新しいユーザコンテンツが生成され得る。地域またはロケールは、たとえば、都市、州、国、大陸などの地理的地域、または他の方法で(たとえば、主に話されている言語または方言によって)定義された地理的地域を指す場合がある。新しいユーザコンテンツには、ロケール固有のカスタマイズが存在する場合がある。たとえば、アメリカ国内のコンテンツ作成者によって作成されたコンテンツにおいてはアメリカ英語のスペルが使用される場合があるが、イギリスのコンテンツ作成者によって作成されたコンテンツにおいてはイギリス英語が使用される場合がある。さらに、他のカスタマイズ、たとえば、記号、絵文字、通貨アイコン、あるいは他のテキストまたは非テキストコンテンツアイテムなどの使用は、ロケール固有の文化的慣習に従う場合がある。ロケール固有のカスタマイズは、日付(たとえば、月/日/年または日-月-年)、数字(小数点の代わりにカンマを使用)、または他のコンテンツなどのコンテンツにも適用できる。ゲームが別の地域においてアクセスまたはプレイされる場合、新しいコンテンツは通常、元の言語でのみ存在し、ソースの場所に固有のローカリゼーションが適用される。たとえば、ゲームの目的がピザ屋を建設してアイテムを販売することであるゲームにおいては、アイテムの価格がゲームコンテンツ内で$記号、たとえば、$5.50とともに表示される場合があり、これは他の通貨記号を使用する場合がある他の場所からゲームをプレイするゲームプレイヤにとって不適切な場合がある。
ゲームコンテンツは、第1の地域またはロケールに対して同様に生成され得る。したがって、ゲームが別の地域においてアクセスまたはプレイされる場合、ゲームコンテンツは通常、ゲーム開発者または他の関係者によって翻訳されない限り、元のローカリゼーションに存在する。
ゲームプラットフォームの所有者または管理者の目的は、新しいユーザコンテンツ、ゲームコンテンツ、およびゲームに関連付けられる動的コンテンツのローカリゼーションを含み得る。ゲームプラットフォームの運営者にとっての技術的な問題は、ゲームコンテンツが利用できないロケールにおけるプレイヤがゲームをプレイして楽しむために役立つことができる、ゲームプラットフォームに関連付けられる動的コンテンツを含むゲームコンテンツの翻訳を提供することである。
オンラインゲームプラットフォームは大規模になる可能性があり、時間とともに変化する複数の動的コンテンツ、および新しいユーザコンテンツを急速に生成するユーザベースも含む。したがって、動的コンテンツを正確に翻訳またはローカライズするゲームプラットフォームは、従来の欠点なしに事実上すべてのゲームを効果的にローカライズすることができる。
たとえば、従来のローカリゼーションにおいては、ゲームプラットフォームの運営者は、翻訳の遅延後に展開するために、静的コンテンツに基づいて手動で翻訳を行う必要があった。最初の翻訳の遅延は、審査、品質管理、および適切なコンテンツがメディアを介して追加のロケールに配信されるようにするための他の手段を含み得る。しかしながら、オンラインゲームプラットフォームは常に新しいコンテンツを作成しているため、従来の手法を採用することは困難または不可能になっている。
別の手法は、自動翻訳サービス、たとえば、翻訳を提供することができる翻訳APIを使用することである。そのようなサービスの重要な制限は、これらのサービスがゲームコンテンツのコンテキストにおいて正確または有用な翻訳を提供できないことが多いことである。たとえば、ゲームプラットフォームおよびそれらのプラットフォームにおいてプレイされるゲームは、辞書や標準言語のテキストに含まれていないテキストコンテンツを含んでいることがよくある。そのようなテキストコンテンツは、たとえば、ゲームまたはプラットフォーム固有のスラング、名詞、および他の用語を含む場合がある。
他の制限は、翻訳を生成する際の子供の安全または子供に適したコンテンツの欠如に関連している。たとえば、不適切な翻訳は、多くの場合、アメリカ英語地域における「宝箱(treasure chest)」というフレーズが韓国地域における「宝乳房(treasure boob)」に翻訳されるなどの一般的な項目から生じる可能性がある。さらに、いくつかのコンテンツプロバイダは、従来の方法では適切に翻訳することが難しい場合がよくあるプラットフォーム固有の専門用語またはスラングを有している場合がある。たとえば、障害物コースの「オビー(obby)」などのスラング用語、良いゲームを表す「gg」、オンラインデートをする人を識別するための「OD'er」、ゲームの所有者または管理者を表す「admin」、および他の一般的なスラング用語は、誤訳されたり、翻訳されなかったり、ユーザにとって不適切な言葉を使用して翻訳されたりする可能性がある。そのようなテキストのドメイン固有の性質により、翻訳サービスが翻訳を提供できなかったり、不十分または使用できない翻訳を提供したりすることがある。
本開示は、コンテンツが作成されるのとほぼ同じ速さでゲームコンテンツを処理し、新しいロケールに変換する新規のシステムアーキテクチャおよび方法を提供することによって、上記の欠点に対処する。ゲームコンテンツは、事実上すべてのロケールに展開するために解析、ローカライズ、および記憶され得、したがって、複数のロケールからゲームにアクセスするユーザは、特にそれぞれのロケールに関連付けられる新しいリリースを待たずにローカライズされた動的コンテンツを提供され得る。これにより、同じゲームの複数のユーザがそれぞれの言語でゲームコンテンツを見ることができるようになる。したがって、同じゲームの複数のユーザが異なる言語で同時にプレイする、たとえば、同じゲームセッションまたはゲーム環境に参加し、彼らのロケールに基づいて調整された同じビジュアルコンテンツを閲覧することもできる。
システムアーキテクチャはまた、ゲーム開発者が翻訳されたコンテンツを取得することと、コンテンツを翻訳するために翻訳サービス(たとえば、ゲームプラットフォームによって提供される)を利用することと、以前に翻訳されたコンテンツを操作することと、優先度の高いコンテンツを他のコンテンツとは異なるレートで翻訳するように指示することと、そうでなければ、ゲームの翻訳されたコンテンツの品質と適時性を確保することとを可能にすることができる。翻訳テーブルのインテリジェントな解析と記憶を通じて、高品質のオンラインゲーム体験を確保しながら、迅速なローカリゼーションを実現することができる。
図1は、本開示のいくつかの実装形態による、例示的なシステムアーキテクチャ100を示している。図1および他の図面は、同様の要素を識別するために同様の参照番号を使用している。「110」などの参照番号の後の文字は、テキストがその特定の参照番号を有する要素を具体的に参照していることを示す。「110」などの後続の文字のないテキスト中の参照番号は、その参照番号を有する図面中の要素のいずれかまたはすべてを指す(たとえば、テキスト中の「110」は、図面中の参照番号「110a」、「110b」、および/または「110n」を指す)。
システムアーキテクチャ100(本明細書では「システム」とも呼ばれる)は、オンラインゲームプラットフォーム102、およびクライアントデバイス110aおよび110b(本明細書では一般に「クライアントデバイス110」と呼ばれる)を含む。オンラインゲームプラットフォーム102およびクライアントデバイス110は、ネットワークまたは複数のネットワークを介して結合される。
オンラインゲームプラットフォーム102は、とりわけ、ゲームサーバ104、ローカリゼーションサーバ106(たとえば、専用ローカリゼーションサーバ、またはゲームサーバ104内に実装される)、翻訳サーバ108(たとえば、専用翻訳サーバ、またはゲームサーバ104内に実装される)、翻訳サービス109、ローカリゼーションAPI111、プリプロセッサアーキテクチャ113、ゲームコンテンツサービス114、翻訳ストレージサービス116、ローカリゼーション変更キュー124、ローカリゼーション変更プロセッサ126(たとえば、専用チェンジサーバ、またはゲームサーバ104内に実装される)、ゲームコンテンツデータベース120、および翻訳データベース122を含むことができる。ゲームコンテンツデータベース120および翻訳データベース122はまた、データストアと呼ばれ得る。クライアントデバイス110は、ゲームアプリケーション112、および入力/出力(I/O)インターフェース(たとえば、入力/出力デバイス)を含むことができる。入出力デバイスは、マイクロフォン、スピーカ、ヘッドホン、ディスプレイデバイス、マウス、キーボード、ゲームコントローラ、タッチスクリーン、仮想現実コンソールなどのうちの1つまたは複数を含むことができる。
システムアーキテクチャ100は、説明のために提供されている。異なる実装形態では、システムアーキテクチャ100は、図1に示されるものと同じまたは異なる方法で構成された同じ、より少ない、より多い、または異なる要素を含み得る。
いくつかの実装形態では、システムアーキテクチャ100の様々な要素を相互接続するネットワークは、パブリックネットワーク(たとえば、インターネット)、プライベートネットワーク(たとえば、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN))、ワイヤードネットワーク(たとえば、イーサネットネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワーク、Wi-Fi(登録商標)ネットワーク、またはワイヤレスLAN(WLAN))、セルラーネットワーク(たとえば、5Gネットワーク、ロングタームエボリューション(LTE)ネットワークなど)、ルータ、ハブ、スイッチ、サーバコンピュータ、またはそれらの組合せを含み得る。
いくつかの実装形態では、データストア120および122は、非一時的コンピュータ可読メモリ(たとえば、ランダムアクセスメモリ)、キャッシュ、ドライブ(たとえば、ハードドライブ)、フラッシュドライブ、データベースシステム、あるいはデータを記憶することができる別のタイプのコンポーネントまたはデバイスであり得る。データストア120および122はまた、複数のコンピューティングデバイス(たとえば、複数のサーバコンピュータ)にまたがることができる複数のストレージコンポーネント(たとえば、複数のドライブまたは複数のデータベース)を含み得る。
いくつかの実装形態では、オンラインゲームプラットフォーム102および関連付けられるコンポーネントは、1つまたは複数のコンピューティングデバイスを有するサーバ(たとえば、クラウドコンピューティングシステム、ラックマウントサーバ、サーバコンピュータ、物理サーバのクラスタなど)を含むことができる。
いくつかの実装形態では、オンラインゲームサーバ104は、1つまたは複数のコンピューティングデバイス(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなど)、オンラインゲームサーバ104上で動作を実行し、ユーザにオンラインゲームサーバ104へのアクセスを提供するために使用され得るデータストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェアコンポーネント、および/またはハードウェアコンポーネントを含み得る。いくつかの実装形態では、オンラインゲームサーバ104は、独立したシステムであってもよく、複数のサーバを含んでいてもよく、別のシステムまたはサーバの一部であってもよい。
オンラインゲームサーバ104はまた、オンラインゲームサーバ104によって提供されるコンテンツへのアクセスをユーザに提供するために使用され得るウェブサイト(たとえば、ウェブページ)またはアプリケーションバックエンドソフトウェアを含み得る。たとえば、ユーザは、クライアントデバイス110上でゲームアプリケーション112を使用してオンラインゲームサーバ104にアクセスし得る。
いくつかの実装形態では、オンラインゲームサーバ104は、ユーザ間の接続を提供するソーシャルネットワークの一種であってもよく、ユーザ(たとえば、エンドユーザまたは消費者)がオンラインゲームサーバ104上で他のユーザと通信できるようにするユーザ生成コンテンツシステムの一種であってもよく、通信は、ボイスチャット(たとえば、同期および/または非同期の音声通信)、ビデオチャット(たとえば、同期および/または非同期のビデオ通信)、テキストチャット(たとえば、同期および/または非同期のテキストベースの通信)、および/または仮想現実/拡張現実チャット(たとえば、同期および/または非同期のアバタベースの通信)を含み得る。本開示のいくつかの実装形態では、「ユーザ」は、単一の個人として表され得る。しかしながら、本開示の他の実装形態は、ユーザのセットまたは自動化されたソースによって制御されるエンティティである「ユーザ」(たとえば、作成ユーザ)を包含する。たとえば、ユーザ生成コンテンツシステムにおいてコミュニティまたはグループとしてフェデレーションされた個々のユーザのセットは、「ユーザ」と見なされる場合がある。
いくつかの実装形態では、オンラインゲームサーバ104は、仮想ゲームサーバであり得る。たとえば、ゲームサーバは、ネットワークを介してクライアントデバイス110を使用してゲームにアクセスし得る、またはそれと相互作用し得るユーザのコミュニティにシングルプレイヤまたはマルチプレイヤゲームを提供し得る。いくつかの実装形態では、ゲーム(本明細書では「ビデオゲーム」、「オンラインゲーム」、または「仮想ゲーム」とも呼ばれる)は、たとえば、2次元(2D)ゲーム、3次元(3D)ゲーム(たとえば、3Dユーザ生成ゲーム)、仮想現実(VR)ゲーム、または拡張現実(AR)ゲームであり得る。いくつかの実装形態では、ユーザは他のユーザとのゲームプレイに参加し得る。いくつかの実装形態では、ゲームは、ゲームの他のユーザとリアルタイムでプレイされ得る。いくつかの実装形態では、ゲームは、複数のロケールにわたって複数の言語でプレイされる場合がある。
いくつかの実装形態では、ゲームプレイは、ゲーム(たとえば、105)内でクライアントデバイス(たとえば、110)を使用する1人または複数のプレイヤの相互作用、またはクライアントデバイス110のディスプレイまたは他の出力デバイスにおける相互作用の提示を指す場合がある。
いくつかの実装形態では、ゲーム105は、ゲームコンテンツ130(たとえば、デジタルメディアアイテム)および/またはローカライズされたコンテンツ131をエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードすることができる電子ファイルを含むことができる。いくつかの実装形態では、ゲームサーバ104と協働して遂行するゲームエンジンに関連して、ゲームアプリケーション112が遂行され、ゲーム105がレンダリングされ得る。レンダリングは、ローカライズされたアセット138を使用してローカライズされたゲームコンテンツ130を含み得る。いくつかの実装形態では、ゲーム105は、共通のルールのセットまたは共通の目標を有し得、ゲームの環境は、共通のルールのセットまたは共通の目標を共有する。いくつかの実装形態では、ゲームが異なれば、ルールまたは目標も互いに異なる場合がある。
いくつかの実装形態では、ゲームは、複数の環境がリンクされ得る1つまたは複数の環境(本明細書では「ゲーム環境」または「仮想環境」とも呼ばれる)を有し得る。環境の例としては、3次元(3D)環境がある。ゲームアプリケーション112の1つまたは複数の環境は、本明細書では、集合的に「世界」または「ゲーム世界」または「仮想世界」または「宇宙」と呼ばれ得る。世界の例は、ゲームの3D世界であり得る。たとえば、ユーザは、別のユーザによって作成された別の仮想環境にリンクされた仮想環境を構築し得る。仮想ゲームのキャラクタは、隣接する仮想環境に入るために仮想境界を越えることができる。
3D環境または3D世界は、ゲームコンテンツを表す幾何学的データの3次元表現を使用するグラフィックスを使用する(または、少なくとも、幾何学的データの3D表現が使用されているかどうかに関係なく、ゲームコンテンツを3Dコンテンツとして表示する)ことに留意されたい。2D環境または2D世界は、ゲームコンテンツを表す幾何学的データの2次元表現を使用するグラフィックスを使用する。
いくつかの実装形態では、オンラインゲームサーバ104は、1つまたは複数のゲーム105をホストすることができ、ユーザがクライアントデバイス110のゲームアプリケーション112を使用してゲーム105と相互作用することを可能にすることができる。オンラインゲームサーバ104のユーザは、ゲーム105をプレイ、作成、相互作用、または構築し、他のユーザと通信し、ならびに/またはオブジェクトおよびコンテンツ130を作成および構築し得る。たとえば、ユーザ生成コンテンツ130を生成する際に、ユーザは、とりわけ、キャラクタ、キャラクタの装飾、相互作用型ゲームのための1つまたは複数の仮想環境を作成してもよく、ゲーム105において使用される構造を構築してもよい。いくつかの実装形態では、ユーザは、プラットフォーム内通貨(たとえば、仮想通貨)などのゲーム仮想ゲームオブジェクトを、オンラインゲームサーバ104の他のユーザと購入、販売、または交換することができる。
いくつかの実装形態では、オンラインゲームサーバ104は、ゲームコンテンツ130を、ローカライズされたアセット138を使用してレンダリングされたゲームアプリケーション(たとえば、112)に送信し得る。いくつかの実装形態では、ゲームコンテンツ130(本明細書では「コンテンツ」とも呼ばれる)は、オンラインゲームサーバ104またはゲームアプリケーションに関連付けられる任意のデータまたはソフトウェア命令(たとえば、ゲームオブジェクト、ゲーム、ユーザ情報、ビデオ、画像、コマンド、メディアアイテムなど)を指す場合がある。いくつかの実装形態では、ゲームコンテンツ130はまた、クライアントデバイス110のオンラインゲームサーバ104またはゲームアプリケーション112を通じて使用、作成、共有、または描写されるオブジェクトを指すこともある。たとえば、コンテンツ130は、パーツ、モデル、キャラクタ、アクセサリ、ツール、武器、衣類、建物、車両、通貨、植物相、動物相、前述のコンポーネント(たとえば、建物の窓)などを含み得る。ローカライズされたアセット138は、特定のロケールに関連付けられるテキストまたはテキストデータを含むことができる。したがって、ゲームコンテンツ130をレンダリングするとき、オンラインゲームプラットフォーム102は、ローカライズされたコンテンツ131をレンダリングするために、ローカライズされたアセット138を使用してローカライズされたゲームコンテンツを提供し得る。
ゲーム105をホストするオンラインゲームサーバ104は、限定ではなく、例示の目的で提供されていることに留意されたい。いくつかの実装形態では、オンラインゲームサーバ104は、あるユーザから1人または複数の他のユーザへの通信メッセージを含むことができる1つまたは複数のメディアアイテムをホストし得る。メディアアイテムは、これらに限定されないが、デジタルビデオ、デジタルムービー、デジタル写真、デジタル音楽、オーディオコンテンツ、メロディ、ウェブサイトのコンテンツ、ソーシャルメディアの更新、電子書籍、電子雑誌、デジタル新聞、デジタルオーディオ書籍、電子ジャーナル、ウェブブログ、電子コミックブック、ソフトウェアアプリケーションなどを含むことができる。いくつかの実装形態では、メディアアイテムは、デジタルメディアアイテムをエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して遂行またはロードできる電子ファイルであり得る。
いくつかの実装形態では、ゲーム105は、特定のユーザまたは特定のユーザのグループ(たとえば、プライベートゲーム)に関連付けられ得るか、またはオンラインゲームサーバ104(たとえば、パブリックゲーム)にアクセスできるユーザに広く利用可能にされ得る。いくつかの実装形態では、オンラインゲームサーバ104が1つまたは複数のゲーム105を特定のユーザまたはユーザのグループに関連付ける場合、オンラインゲームサーバ104は、ユーザアカウント情報(たとえば、ユーザ名およびパスワードなどのユーザアカウント識別子)を使用して、特定のユーザをゲーム105に関連付けることができる。
いくつかの実装形態では、オンラインゲームサーバ104またはクライアントデバイス110は、オンラインゲームプラットフォーム102を通じてローカライズされたローカライズされたコンテンツ131を提供するゲームエンジン107およびゲームアプリケーション112を含み得る。いくつかの実装形態では、ゲームエンジン107は、ローカライズされたコンテンツ131およびゲームコンテンツ130を含むゲーム105の開発または遂行のために使用され得る。たとえば、ゲームエンジン107は、とりわけ、2D、3D、VR、またはARグラフィックスのためのレンダリングエンジン(「レンダラ」)、物理エンジン、衝突検出エンジン(および衝突応答)、サウンドエンジン、スクリプト機能、アニメーションエンジン、人工知能エンジン、ネットワーキング機能、ストリーミング機能、メモリ管理機能、スレッド機能、シーングラフ機能、またはシネマティクスのビデオサポートなどの機能を含み得る。ゲームエンジン107のコンポーネントは、ローカライズされたアセット138を使用して適切にローカライズされたコンテンツ130を含む、ゲーム105を計算およびレンダリングするために役立つコマンド(たとえば、レンダリングコマンド、衝突コマンド、物理コマンドなど)を生成し得る。いくつかの実装形態では、クライアントデバイス110のゲームアプリケーション112は、ゲームエンジン107、または両方の組合せと連携して、独立して動作し得る。
いくつかの実装形態では、オンラインゲームサーバ104およびクライアントデバイス110の両方は、ゲームエンジン(それぞれ、107および112)を遂行し得る。ゲームエンジン107を使用するオンラインゲームサーバ104は、ゲームエンジン機能の一部またはすべてを実行(たとえば、物理コマンド、レンダリングコマンドなどを生成)してもよく、またはゲームエンジン機能の一部またはすべてをクライアントデバイス110のゲームエンジン107にオフロードしてもよい。いくつかの実装形態では、各ゲーム105は、オンラインゲームサーバ104上で実行されるゲームエンジン機能と、クライアントデバイス110上で実行されるゲームエンジン機能との間で異なる比率を有し得る。たとえば、オンラインゲームサーバ104のゲームエンジン107は、少なくとも2つのゲームオブジェクト間に衝突がある場合に物理コマンドを生成するために使用され得、一方、追加のゲームエンジン機能(たとえば、レンダリングコマンドの生成)は、クライアントデバイス110にオフロードされ得る。いくつかの実装形態では、オンラインゲームサーバ104およびクライアントデバイス110上で実行されるゲームエンジン機能の比率は、ゲームプレイ条件に基づいて(たとえば、動的に)変更され得る。たとえば、特定のゲーム105のゲームプレイに参加するユーザの数がしきい値数を超える場合、オンラインゲームサーバ104は、クライアントデバイス110によって以前に実行された1つまたは複数のゲームエンジン機能を実行し得る。
たとえば、ユーザは、クライアントデバイス110上でゲーム105をプレイし得、制御命令(たとえば、右、左、上、下、ユーザ選択、またはキャラクタの位置および速度情報などのユーザ入力)をオンラインゲームサーバ104に送信し得る。クライアントデバイス110から制御命令を受信した後、オンラインゲームサーバ104は、制御命令に基づいて、ゲームプレイ命令(たとえば、レンダリングコマンド、衝突コマンドなどの、グループゲームプレイまたはコマンドに参加しているキャラクタの位置および速度情報)をクライアントデバイス110に送信し得る。たとえば、オンラインゲームサーバ104は、クライアントデバイス110のためのゲームプレイ命令を生成するために、制御命令に対して1つまたは複数の論理動作(たとえば、ゲームエンジン107を使用して)を実行し得る。他の例では、オンラインゲームサーバ104は、制御命令のうちの1つまたは複数を、あるクライアントデバイス110から、ゲーム105に参加している他のクライアントデバイス(たとえば、クライアントデバイス110aからクライアントデバイス110b)に渡し得る。クライアントデバイス110は、ゲームプレイ命令を使用して、クライアントデバイス110のディスプレイ上に提示するためにゲームプレイをレンダリングし得る。
いくつかの実装形態では、制御命令は、ユーザのキャラクタのゲーム内アクションを示す命令を指す場合がある。たとえば、制御命令は、右、左、上、下、ユーザ選択、ジャイロスコープの位置および方向データ、力センサデータなどのゲーム内アクションを制御するためのユーザ入力を含み得る。制御命令は、キャラクタの位置および速度情報を含み得る。いくつかの実装形態では、制御命令は、オンラインゲームサーバ104に直接送信される。他の実装形態では、制御命令は、クライアントデバイス110から別のクライアントデバイスに(たとえば、クライアントデバイス110aからクライアントデバイス110bに)送信され得、他のクライアントデバイスは、ゲームエンジン107を使用してゲームプレイ命令を生成する。制御命令は、音声通信メッセージまたはオーディオデバイス(たとえば、スピーカ、ヘッドホンなど)上の別のユーザからの他のサウンド、たとえば、本明細書で説明するオーディオ空間化技法を使用して生成される音声通信または他のサウンドを再生するための命令を含み得る。
いくつかの実装形態では、ゲームプレイ命令は、クライアントデバイス110がマルチプレイヤゲームなどのゲーム105のゲームプレイ、およびコンテンツ130またはローカライズされたコンテンツ131をレンダリングすることを可能にする命令を指す場合がある。ゲームプレイ命令は、ユーザ入力(たとえば、制御命令)、キャラクタの位置および速度情報、またはコマンド(たとえば、物理コマンド、レンダリングコマンド、衝突コマンドなど)のうちの1つまたは複数を含み得る。ローカライズされたコンテンツ131は、ゲームプレイ命令(たとえば、テキストの位置など)に基づいてレンダリングされるキャラクタに関連付けられる翻訳されたテキストを含み得る。
いくつかの実装形態では、オンラインゲームサーバ104は、ユーザによって作成されたコンテンツ130をデータストア120に記憶し得る。いくつかの実装形態では、オンラインゲームサーバ104は、ユーザに提示され得るキャラクタカタログおよびゲームカタログを維持する。いくつかの実装形態では、ゲームカタログは、オンラインゲームサーバ104に記憶されたゲームの画像を含む。さらに、ユーザは、選択されたゲームに参加するために、キャラクタカタログからキャラクタ(たとえば、ユーザまたは他のユーザによって作成されたキャラクタ)を選択し得る。キャラクタカタログは、オンラインゲームサーバ104に記憶されたキャラクタの画像を含む。いくつかの実装形態では、キャラクタカタログ内のキャラクタのうちの1つまたは複数は、ユーザによって作成またはカスタマイズされた可能性がある。いくつかの実装形態では、選択されたキャラクタは、キャラクタのコンポーネントのうちの1つまたは複数を定義するキャラクタ設定を有する場合がある。
いくつかの実装形態では、ユーザのキャラクタは、コンポーネントの構成を含むことができ、コンポーネントの構成および外観、より一般的にはキャラクタの外観は、キャラクタ設定によって定義され得る。いくつかの実装形態では、ユーザのキャラクタのキャラクタ設定は、少なくとも部分的にユーザによって選択され得る。他の実装形態では、ユーザは、デフォルトのキャラクタ設定または他のユーザによって選択されたキャラクタ設定でキャラクタを選択し得る。たとえば、ユーザは、あらかじめ定義されたキャラクタ設定を有するキャラクタカタログからデフォルトのキャラクタを選択し得、ユーザは、キャラクタ設定の一部を変更する(たとえば、カスタマイズされたロゴのシャツを追加する)ことによってデフォルトのキャラクタをさらにカスタマイズし得る。キャラクタ設定は、オンラインゲームサーバ104によって特定のキャラクタに関連付けられ得る。
いくつかの実装形態では、クライアントデバイス110はそれぞれ、パーソナルコンピュータ(PC)、モバイルデバイス(たとえば、ラップトップ、モバイル電話、スマートフォン、タブレットコンピュータ、またはネットブックコンピュータ)、ネットワーク接続テレビ、ゲームコンソール、仮想現実(VR)デバイス、拡張現実(AR)デバイスなどのコンピューティングデバイスを含み得る。いくつかの実装形態では、クライアントデバイス110は、「ユーザデバイス」と呼ばれることもある。いくつかの実装形態では、1つまたは複数のクライアントデバイス110は、任意の時点でオンラインゲームサーバ104に接続し得る。クライアントデバイス110の数は、例示として提供されていることに留意されたい。いくつかの実装形態では、任意の数のクライアントデバイス110が使用され得る。
いくつかの実装形態では、各クライアントデバイス110は、それぞれ、ゲームアプリケーション112のインスタンスを含み得る。一実施形態では、ゲームアプリケーション112は、オンラインゲームサーバ104によってホストされる仮想ゲーム内の仮想キャラクタを制御するなど、ユーザがオンラインゲームサーバ104を使用およびそれと相互作用すること、またはゲーム105、画像、ビデオアイテム、ウェブページ、ドキュメントなどのコンテンツ130を閲覧またはアップロードすることを可能にし得る。一例では、ゲームアプリケーションは、ウェブサーバによって提供されコンテンツ(たとえば、仮想環境内の仮想キャラクタなど)にアクセス、検索、提示、またはナビゲートすることができるウェブアプリケーション(たとえば、ウェブブラウザと連動して動作するアプリケーション)であり得る。別の例では、ゲームアプリケーションは、クライアントデバイス110に対してローカルにインストールおよび遂行され、ユーザがオンラインゲームサーバ104と相互作用することを可能にするネイティブアプリケーション(たとえば、モバイルアプリケーション、アプリ、またはゲームプログラム)であり得る。ゲームアプリケーションは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、または提示し得る。ある実装形態では、ゲームアプリケーションはまた、ウェブページに埋め込まれる埋め込まれたメディアプレイヤ(たとえば、フラッシュ(登録商標)プレイヤ)を含み得る。
本開示の態様によれば、ゲームアプリケーション112は、ユーザがコンテンツ130を構築、作成、編集、オンラインゲームサーバ104にアップロードするだけでなく、オンラインゲームサーバ104と相互作用する(たとえば、オンラインゲームサーバ104によってホストされるゲーム105をプレイする)ためのオンラインゲームサーバプリケーションであり得る。したがって、ゲームアプリケーションは、オンラインゲームサーバ104によってクライアントデバイス110に提供され得る。別の例では、ゲームアプリケーションは、サーバからダウンロードされるアプリケーションであり得る。
いくつかの実装形態では、ユーザは、ゲームアプリケーション112を介してオンラインゲームサーバ104にログインし得る。ユーザは、ユーザアカウント情報(たとえば、ユーザ名およびパスワード)を提供することによってユーザアカウントにアクセスし得、ユーザアカウントは、オンラインゲームサーバ104の1つまたは複数のゲーム105に参加するために利用可能な1つまたは複数のキャラクタに関連付けられる。いくつかの実装形態では、適切な資格情報があれば、ゲーム開発者は、他のユーザによって所有される、または関連付けられているプラットフォーム内通貨(たとえば、仮想通貨)、アバタ、特殊能力、アクセサリ、および/またはコンテンツ130などのゲーム仮想ゲームオブジェクトへのアクセスを取得し得る。
一般に、オンラインゲームサーバ104によって実行されるものとして一実装形態で説明される機能はまた、適切な場合、他の実装形態では、クライアントデバイス110またはサーバによっても実行することができる。さらに、特定のコンポーネントに起因する機能は、一緒に動作する異なるコンポーネントまたは複数のコンポーネントによって実行することができる。オンラインゲームサーバ104はまた、適切なアプリケーションプログラミングインターフェース(API)を通じて他のシステムまたはデバイスに提供されるサービスとしてアクセスすることができ、したがって、ウェブサイトにおける使用に限定されない。
いくつかの実装形態では、オンラインゲームサーバプラットフォームは、ゲームコンテンツサービス114を含み得る。いくつかの実装形態では、ゲームコンテンツサービス114は、オンラインゲームサーバ104がローカリゼーションのためにオンラインゲームプラットフォーム102内でコンテンツ130を提供することを可能にするシステム、アプリケーション、またはモジュールであり得る。いくつかの実装形態では、ゲームコンテンツサービス114は、図4および図5に示されるフローチャートに関連して以下で説明される動作のうちの1つまたは複数を実行し得る。
一般に、ゲームコンテンツサービス114は、ローカリゼーションAPI111およびプリプロセッサアーキテクチャ113を通じてゲームサーバ104と有効に通信している。ローカリゼーションAPI111は、コンテンツ130をプリプロセッサアーキテクチャ113に送信できるように、ゲームサーバ104に公開されてもよい。いくつかの実装形態では、ローカリゼーションAPI111およびプリプロセッサアーキテクチャ113は、ゲームサーバ104を通じて遂行され得る。
プリプロセッサアーキテクチャ113は、コンテンツ130を、ビジュアルコンテンツ132であるゲームコンテンツの一部と、テキストコンテンツ133であるゲームコンテンツの一部とに変換し得る。ビジュアルコンテンツ132はまた、いくつかの実装形態では、テキストコンテンツを含み得る。たとえば、ローカリゼーションAPI111が、特定のゲームコンテンツ130の翻訳を無視するようにプリプロセッサアーキテクチャに指示する場合、ゲームコンテンツは、翻訳されずにビジュアルコンテンツ132としてデータストア120に記憶され得る。
ゲームコンテンツサービス114は、いくつかの実装形態では、ビジュアルコンテンツ132がゲーム変更イベント136に関連付けられるように指示し得る。ゲーム変更イベント136は、特定のコンテンツ130の表示またはレンダリングに従事するためのトリガまたはイベントであり得る。他の実装形態では、ゲーム変更イベント136は省略され得る。
ゲームコンテンツサービス114はまた、テキストコンテンツ133を翻訳サービス109に送ることもできる。翻訳サービス109は、機械翻訳サービス、マニュアル翻訳ポータル、またはテキストコンテンツ133の少なくとも一部を翻訳134に翻訳するように構成された他の翻訳コンポーネントを含み得る。翻訳134は、第1のロケール(たとえば、クライアントロケールA)の第1の言語から、第2のロケール(たとえば、クライアントロケールB)に関連付けられる第2の言語への翻訳であり得る。いくつかの実装形態では、翻訳134は、第1の言語から、複数のロケールに関連付けられる複数の第2の言語へのものであり得る。
翻訳サービス109は、特定のロケールに基づいて、任意の地域固有の言語プロトコルを適用し得る。たとえば、子供の安全または子供に適したコンテンツのガイドライン、ロケール固有のスラングガイドライン、および/または他の適切なガイドラインを、翻訳サービス109のプロトコルに形成し得る。プロトコルは、ユーザコンテキスト(たとえば、ユーザのロケールまたは地域)、ユーザプロファイル(たとえば、ユーザの年齢)、および/またはユーザ設定に基づいて、コンテンツをブロックすることができるコンテンツレーティングを含み得る。したがって、翻訳サービス109は、正しいコンテンツがユーザに提示されるようにするためにプロトコルを適用し得る。
翻訳134は、翻訳ストレージサービス116によって処理され、データストア122に記憶されるように送られてもよい。いくつかの実装形態では、翻訳134はまた、ゲーム変更イベント136にも関連付けられる。いくつかの他の実装形態では、ゲーム変更イベント136は省略され得る。
ゲーム105の遂行中、ローカリゼーション変更キュー124は、クライアントデバイス110上でコンテンツをレンダリングするために、ゲームアプリケーション112から命令を受信する場合がある。コンテンツに対するリクエストに応答して、ローカリゼーション変更キュー124は、ローカライズされたアセット138を検索し得る。ローカライズされたアセット138およびコンテンツ130は、ローカリゼーション変更プロセッサ126によって処理され、ローカライズされたコンテンツ131にレンダリングされ得る。いくつかの実装形態では、ゲームサーバ104は、コンテンツを独立して、またはローカリゼーション変更プロセッサ126と併せてローカライズし得る。
図2は、いくつかの実装形態による、例示的なプリプロセッサアーキテクチャ113を示す図である。いくつかの実装形態では、プリプロセッサアーキテクチャ113は、ローカリゼーションサーバ106または別の処理デバイス上で実装および/または遂行されるソフトウェアサービスであり得る。プリプロセッサアーキテクチャアーキテクチャ113に関連して説明される1つまたは複数のサブ部分は、いくつかの実装形態ではハードウェアにおいて実装され得る。
いくつかの実装形態では、プリプロセッサアーキテクチャ113は、ゲームコンテンツ130からビジュアルコンテンツ132およびテキストコンテンツ133を抽出するように構成された変換モジュール202を含み得る。変換モジュール202はまた、抽出したビジュアルコンテンツ132およびテキストコンテンツ133の処理が任意の順に実行され得るように抽出したビジュアルコンテンツ132およびテキストコンテンツ133の評価および変換を制御し得ることに留意されたい。さらに、変換モジュール202はまた、シリアルまたはパラレル処理アーキテクチャを含む、任意の適切なおよび/または別個の処理パイプラインへの翻訳を指示し得る。変換は、データストア214にデータを記憶するために利用され得る。
一般に、プリプロセッサアーキテクチャ113は、評価エンジン204a、204b、および204c(本明細書では一般に評価エンジン204と呼ばれる)を通じて形成されるプリプロセッシングパイプラインを含む。評価エンジン204は、翻訳基準を満たすテキストのみがオンラインゲームプラットフォーム102に記憶されるように、テキストの様々な品質を識別するように構成される。翻訳基準は、これらに限定されないが、ゲームを進めるために必要なコンテンツ、ゲームで目標を達成するために必要なコンテンツ、ゲームを進めるために必要なコンテンツ、ゲームの一部のコンテンツを理解するために必要なコンテンツ、および他の適切な基準を含み得る。たとえば、判定器(adjudicator)210は、ゲームコンテンツ130が許可されたソースによって提供されたかどうかを決定するために、評価器(evaluator)204を通じて提供されたテキストを評価し得る。判定器210はまた、ゲームコンテンツ130がゲーム105にとって重要であるかどうかを決定することができる。たとえば、しきい値数未満のユーザに固有のコンテンツ(たとえば、ユーザのペットの名前)、翻訳される可能性が低いコンテンツ(たとえば、秘密のコード)、一時的なテキスト(たとえば、チャットメッセージ)、他の動的コンテンツ、および/または他の特定のテキストは重要ではないと決定される場合がある。一般に、評価エンジン204は、任意の数の解析されたテキスト文字列を作成するために、継続的に動作し、一時データ212をソートし得る。解析されたテキスト文字列は、オンラインゲームプラットフォーム102に記憶するためのデータベースエントリとして形成され得る。
いくつかの実装形態では、評価器204は、データストア122に記憶するためのテキストの候補データベースエントリのプールを生成するように構成される。判定器210は、残りのデータベースエントリのプールを作成するために、候補データベースエントリのサブセットを選択するように構成され得る。判定器210は、重要度ランキングを生成し、重要度ランキングが第1のしきい値を満たさないエントリをフィルタリングするために、残りのデータベースエントリのプール内のエントリを評価し得る。第1のしきい値を満たすエントリは、翻訳および記憶のためにテキストコンテンツ133として送信される。
重要度ランキングの第1のしきい値は、コンテンツ固有および/またはプラットフォーム固有の指標を含むいくつかの指標に基づき得る。これらの指標は、指標の強度に基づいて評価エンジンまたは変換エンジンに組み合わされ、たとえば、同じコンテンツを見た一意のユーザの数に基づいてスコアを決定したり、コンテンツを特徴とするゲームセッションおよび/またはゲームインスタンスに基づいてスコアを決定したりする。評価器204は、各インジケータに重みを適用し、評価器自体の何らかのステータス、たとえば、承認済み、決定的でない、拒否などを決定し得る。判定器210は、第1のしきい値の値を生成するために、評価器204の応答をさらに組み合わせる。
いくつかの実装形態では、重要度ランキング値は、クライアントロケールBなどのクライアントロケールにおいて正確に表現されるテキストデータの重要度の尺度である。いくつかの実装形態では、重要度ランキング値は、ゲームコンテンツ130を閲覧するユーザの数、ゲームコンテンツ130に関連付けられるセッションの数、およびゲームコンテンツ130のソースに基づく。
いくつかの実装形態では、重要度ランキング値は、ゲームの年齢(たとえば、特定のゲームのリリース日)、ゲームの人気度(たとえば、コンピューティングリソースを制限するためのより高いしきい値)、プレイヤ数、および他の適切な基準などの、あらかじめ構成された、またはあらかじめ設定されたしきい値の手動操作スキームに基づいている。たとえば、新しいゲームは、最初にゲームのコンテンツを見るユーザの数がより少なくなる場合があり、したがって、そのようなゲームにはより低いしきい値が選択され得る。別の例では、人気のあるゲームは、より高いしきい値が設定されている場合がある。指標のしきい値および/または重みの設定は、ゲームごとのプレイヤ数のパーセンテージにさらに基づき得る。使用され得る別の指標は、ゲームに関連付けられる開発者が新しい開発者(プラットフォーム上に以前のコンテンツがほとんどまたはまったくない人)であるか、または知られている開発者であるかに基づいている。しきい値および/または重みは、ゲームコンテンツの自動翻訳がゲームに適したレートで発生できるように選択される。たとえば、ゲームの人気が高まっている場合、しきい値および/または重みに適切な値を選択することによって、他のゲームよりも速い速度で翻訳が実行され得る。
いくつかの実装形態では、重要度ランキング値は、他の要因および/あるいは手動操作または機械トレーニングに基づいている。さらに、他の実装形態では、翻訳サーバ108による翻訳の前に不適切な候補データベースエントリを除外するためにブール式が使用され得るように、重要度ランキング値を正規化され得る。
プリプロセッサアーキテクチャ113を通じて、ゲームコンテンツサービス114による処理の前に、翻訳に適した候補を選択する(または同等に、不適切な候補を削除する)ために、ゲームコンテンツ130を前処理することができる。様々な形態のゲームコンテンツ130が、オンラインゲームプラットフォーム102におけるローカリゼーションのために処理され得る。ゲームコンテンツ130は、ビジュアルデータ132、テキスト133、および他のデータも含むことができる。テキスト133の少なくとも一部を翻訳すると、オンラインゲームプラットフォーム102は、ローカライズされたコンテンツ131をレンダリングして、1つまたは複数のクライアントロケールに送信することができる。
図3は、いくつかの実装形態による、例示的なゲームコンテンツ302および対応するローカライズされたコンテンツ304を示す図である。図3に示されるように、ゲームコンテンツ302は、ビジュアルデータ321およびテキストデータ323を含むことができる。さらに、ゲームコンテンツ302におけるテキストデータ323は第1の言語であるため、ゲームコンテンツ302の次元D1は、第1の言語の言語特性に関連付けられ得る。
ローカライズされたコンテンツ304はまた、ビジュアルデータ321および翻訳されたテキストデータ343を含み得る。さらに、ローカライズされたコンテンツ304は、第2の言語で翻訳されたテキストデータ343を含むため、ローカライズされたコンテンツ304の次元D2は、第2の言語の言語特性に基づいてD1と異なり得る。図3に示される例では、テキストデータ323よりも長い翻訳されたテキストデータ343を収容するために、D2はD3よりも大きい。したがって、オンラインゲームプラットフォーム102が、ローカライズされたアセット138およびゲームコンテンツ130を使用して、ローカライズされたコンテンツ131を積極的にレンダリングするので、テキストデータ343は、第1の言語と第2の言語との間の特性の違いに関係なく、第2のクライアントロケールにおいて正確に表示され得る。
図2に見られるように、ローカリゼーションは、翻訳された単語が十分に収まるまで、外側の長方形を広げる必要がある。他の調整は、たとえば、利用可能な翻訳から次元D1に最も近い単語を選択すること、テキストサイズを自動スケーリングすること(たとえば、テキストデータと翻訳されたテキストデータの語長または語幅の違いに基づいて、サイズを縮小または拡大すること)、ワードラップすること、テキストを切り捨てること、ソーステキストデータ(323)の検出されたフォント/色/他のビジュアル態様に一致する、および/または次元D1に適合するターゲットフォントを選択すること、リターゲティング動作(たとえば、背景対、前景、オブジェクトの同一性などのコンテンツ特性を考慮してビジュアルコンテンツを調整する)を実行すること、あるいはこれらの様々な技法の組合せを含むことができる。このようにして、オンラインゲームプラットフォーム102は、不適切な配置、テキストのサイズ変更、可視性、および他の問題などの、オンザフライ翻訳の多くの技術的欠陥を克服する。ゲームコンテンツがローカライズされるときに行われる調整を開発者が制御できるように、コンテンツをローカライズする際に行うことができる特定の調整を、ゲームコンテンツに関連付けられる開発者にオプションとして提供することができる。
以下、オンラインゲームプラットフォーム102を含むシステムアーキテクチャ100の動作方法について、図4および図5を参照して詳細に説明する。
図4は、いくつかの実装形態による、動的コンテンツの自動ローカリゼーションの例示的な方法400を示すフローチャートである。方法400はブロック402において開始する。ブロック402において、第1のクライアントロケールからゲームに関連付けられるビジュアルコンテンツが受信される。いくつかの態様では、ビジュアルコンテンツは、第1の言語によって第1のクライアントロケールにおいて表されるテキストを含む。さらに、テキストは、第1の言語によって部分的に表現され、他の言語によって部分的に表現され得る。したがって、異なる実装形態では、テキスト全体またはテキスト全体よりも少ないテキストの一部が、以下に説明するように処理され得る。さらに、他の態様によれば、テキストは、第1の言語の適切な使用によって部分的に表現され、口語または一般的な用語によって部分的に表現され得る。したがって、翻訳から省略され得る部分を識別するために、テキストがさらに解析され得る。
テキストを含む任意の部分を識別するために、受信したビジュアルコンテンツ(たとえば、図1のコンテンツ130)を処理することができる。たとえば、ゲーム105においては、コンテンツ130は、その上にレンダリングされた1つまたは複数の側面にテキストを含む標識または建物を含み得る。ゲームコンテンツサービス114は、テキストを識別して抽出し得る。いくつかの実装形態では、第1のクライアントロケールに迅速にサービスを提供するために、受信したコンテンツの完全なコピーをデータストア120に記憶し得る。他の実装形態では、テキストの一部またはすべてがないコンテンツ130の部分的なレンダリングは、データストア120に記憶され得る。
いくつかの実装形態では、ゲーム105は、1つまたは複数のゲームセッションを含み得る。たとえば、ゲームエンジン107および/またはゲームサーバ104は、各セッションが独自の環境を有する、同じゲーム105の多くのセッションを可能にし得る(たとえば、5人のプレイヤがピザショップゲームのセッションを一緒にプレイし、別々の3人のプレイヤが同じゲームの別のセッションをプレイすることができる)。両方のゲームセッションにおいて開発者が提供するコンテンツは同じであるが、仮想アバタ、ユーザ生成コンテンツ、およびプレイヤの他のコンテンツは固有のものであり、環境は、それぞれのプレイヤによるアクションに基づいて、異なる方法で開発される(たとえば、ショップとピザのメニューは異なる)。
さらに、「ロケール」は、個々のユーザまたはクライアントデバイス110に関連付けられ、同じ「ゲームセッション」内で、ユーザはゲームコンテンツのローカライズされたバージョンを受信するか、または受信するべきである(たとえば、アメリカ人、ブラジル人、およびドイツ人がすべて同じセッションに参加している場合、ゲームコンテンツは英語、ポルトガル語、およびドイツ語、または他のそのようなコンテンツのローカリゼーションでレンダリングされる)。したがって、異なるゲームセッションに関連付けられる異なるコンテンツも、本明細書で説明するように処理および翻訳され得る。
受信したビジュアルコンテンツは、図1を参照して説明した代表的なビジュアル部分およびテキスト部分を含むコンテンツ130であり得る。代表的なビジュアル部分とテキスト部分はまた、前処理によって分離され得る。たとえば、プリプロセッシングアーキテクチャ113は、ゲームコンテンツサービス114による処理の前に、テキストの一部または全体を分離し得る。さらに、プリプロセッシングアーキテクチャ113は、以下に説明するように、解析、ランキング、およびフィルタリングに関連する他の機能を実行し得る。ブロック402の後にブロック404が続き得る。
ブロック404において、不適切な候補エントリがフィルタリングされる。いくつかの実装形態では、プリプロセッシングアーキテクチャ113は、テキストおよびビジュアルコンテンツに基づいて候補データベースエントリを作成するために、受信したビジュアルコンテンツを前処理し得る。いくつかの実装形態では、候補データベースエントリは、データストア120に記憶するための第1の言語で受信したコンテンツを表す。候補データベースエントリは、画像データのハッシュを含む任意の適切な編成方式に従って編成され得る。候補データベースエントリは、図2に示されるパイプラインアーキテクチャにおいて処理され得る。
プリプロセッシングモジュール113はさらに、残りのデータベースエントリのプールを作成するために、候補データベースエントリのサブセットを選択し得る。候補データベースエントリのサブセットの削除は、任意のフィルタリング基準を通じて有効にされ得る。
いくつかの実装形態によれば、フィルタリング基準は、これらに限定されないが、不快なコンテンツ、口語的なコンテンツ、婉曲表現、搾取的なコンテンツ、ブロックされたソースからのコンテンツ、無許可のソースからのコンテンツ、新しいユーザまたは非常に新しく作成されたユーザアカウントからのコンテンツ、および他の適切な基準に基づくフィルタリングを含み得る。ブロック404の後にブロック406が続き得る。
ブロック406において、候補エントリが翻訳ランキングのために評価される。いくつかの実装形態では、エントリを評価することは、ランキングを生成するために残りのデータベースエントリのプール内のエントリを評価することを含むことができる。
いくつかの実装形態では、ランキングは、テキストの特定の部分を翻訳する必要があるかどうかを決定するための任意の適切なランキングである。ランキングは、重要度ランキング、信頼度ランキング、エンゲージメントランキング、または別の適切なランキングであり得る。いくつかの実装形態では、重要度ランキングは、テキストデータが第2の、または他のクライアントロケールにおいて正確に表現されることの重要性の尺度である。いくつかの実装形態によれば、信頼度ランキングは、テキストの翻訳に関連付けられる必要性のレベルがあるというランキングである。必要性のレベルは、テキストがローカリゼーションのために翻訳されるという信頼度を表している。これは、テキストが翻訳されるという信頼度が低い、またはまったくないテキスト部分と比較したものである。いくつかの実装形態によれば、エンゲージメントランキングは、翻訳候補が第2の、または他のロケールにおいてゲーム105とのさらなるまたは増加したエンゲージメントをもたらすランキングである。
エントリを評価すると、プリプロセッシングアーキテクチャ113はまた、第1のしきい値を満たさないランキング(たとえば、重要度ランキング)を有する残りのデータベースエントリのプールからエントリを除去するためにフィルタリングを実装し得る。一般に、第1のしきい値は、ゲーム105への関与に関連付けられる分析および測定基準または他の品質測定基準の分析を通じて、ゲーム開発者によって選択され得る。第1のしきい値は、特定のゲームのプレイ履歴を通じて変更され得、ゲーム105と対話するユーザのタイプまたは年齢に応じて異なる場合がある。ブロック406の後にブロック408が続き得る。
ブロック408において、第2のクライアントロケールに関連付けられる少なくとも第2の言語で翻訳されたテキストを生成するために、テキストが変換される。たとえば、翻訳サービス109は、ブロック408においてテキストの一部または全部を翻訳し得る。いくつかの実装形態では、ゲーム開発者は、オンラインゲームプラットフォーム102へのアクセスを通じて、翻訳してもよく、翻訳の変更をしてもよい。
いくつかの実装形態では、テキストの一部のみが翻訳され得る。翻訳されるテキストの部分は、適切な文法のテキストの部分を含んでもよく(たとえば、攻撃的または文法的に正しくない言語が使用されている場合)、第1の言語のテキストの部分を含んでもよく(たとえば、複数の言語が使用されている場合)、および/または、そうでなければ重要性がランク付けされたテキストの部分を含むことができる。ブロック408の後にブロック410が続き得る。
ブロック410において、翻訳されたテキストはデータベースに記憶され、記憶された翻訳されたテキストはビジュアルコンテンツに関連付けられる。いくつかの実装形態では、翻訳されたテキスト134は、翻訳データベース122に記憶される。いくつかの実装形態では、翻訳されたテキストは、ビジュアルコンテンツ132とは別に記憶される。このようにして、オンラインゲームプラットフォーム102の計算および記憶効率は、2つ以上の言語で完全な翻訳およびレンダリングされたアイテムを記憶する従来のシステムと比較して向上する。
さらに、いくつかの実装形態では、翻訳テーブルは、方法400の以前の反復において翻訳されたテキストの文字列から形成され得る。たとえば、評価器204は、類似の候補テキスト文字列を識別して、分割動作を実行するために、データベース214内のデータを検査し得る。さらに、評価器204はまた、他の同様であるが不十分な文字列の連結動作を実行し得る。さらに、一部の翻訳動作では、テキストの一部が完全に無視される場合がある。したがって、比較的コンパクトな翻訳テーブルが維持され得る。これらのシナリオおよび実装形態では、ローカライズされたコンテンツ131をレンダリングするための完全に翻訳されたフレーズを形成するために、テキストの一部が翻訳テーブルから取得されて、連結される。このようにして、ゲーム開発者との相互作用を制限または削減する必要があり、それによってゲームのほぼ完全に自動化されたローカリゼーションが実現される。
翻訳データベース122に記憶されたデータを利用して、オンラインゲームプラットフォーム102は、プリプロセッサ113を通じて新しく生成されたゲームコンテンツ130を迅速に処理することと、すでに翻訳に関連付けられているテキストを識別してフィルタリングすることと、1つまたは複数のランキング(たとえば、重要性、信頼度、エンゲージメント)に基づいて必要なテキストを翻訳することと、ビジュアルコンテンツ132をゲーム変更イベントまたはゲーム105の別の態様のいずれかに関連付けることとを行うことができる。その後、ローカライズされたコンテンツは、以下で説明するように、第2のクライアントロケールからのユーザリクエストに基づいて迅速かつ正確にレンダリングされ得る。
図4は、5つのブロック402~410を示しているが、異なる実装形態では、ブロックのうちの1つまたは複数を省略したり、並行して実行したり、他のブロックと組み合わせたりすることができる。いくつかの実装形態では、ブロック402~410のうちの1つまたは複数が複数のブロックに分割されてもよく、および/または追加のブロックが方法の一部として実行されてもよい。たとえば、いくつかの実装形態では、ブロック406は、フィルタリング後に残っているすべてのエントリが翻訳されるように省略され得る。
さらに、ブロック402~410は、上記とは異なる順序で実行(または、反復)することができ、および/あるいは1つまたは複数のステップを省略することができる。たとえば、ブロック406は、たとえば、(たとえば、1つまたは複数のゲームセッション内で)コンパクトな翻訳テーブルの作成において、テキストの複数の文字列または同じテキスト文字列全体の複数の部分文字列を評価するために、複数回実行され得る。さらに、ブロック408は、たとえば、コンパクトな翻訳テーブルを作成するために複数の文字列を翻訳するために、複数回実行され得る。このように、プラットフォームに記憶されたデータを使用して、ゲームセッションのすべての部分が適切に翻訳されるか、または翻訳テーブルを通じて翻訳可能であることが確認されるまで、方法400の部分が繰り返され得る。いくつかの実装形態では、テキストのサブセットのみが翻訳され、一部のグローバルコンテンツはテキストを翻訳するために重要ではない場合がある。
図5は、いくつかの実装形態による、動的コンテンツの自動ローカリゼーションの追加の例示的な方法500を示すフローチャートである。方法500は、方法400と同様に、ゲームコンテンツサービス114および/またはオンラインゲームプラットフォーム102の他の部分を通じて実行され得る。
方法500は、ブロック502において開始し得る。ブロック502において、ビジュアルコンテンツに対するリクエストを第2のクライアントロケールから受信することができる。ビジュアルコンテンツに対するリクエストは、クライアントデバイス110上のゲームアプリケーション112によって生成されたリクエストであり得る。リクエストは、ゲームサーバ104がデータベース120に記憶された1つまたは複数のコンテンツを識別し得るように、ゲーム105に関連する命令を含み得る。ブロック502の後にブロック506が続き得る。
ブロック506において、リクエストに関連付けられるゲーム変更イベントが受信され得る。ゲーム変更イベントは、いくつかの実装形態によっては省略され得ることに留意されたい。しかしながら、ゲーム変更イベントが統合されている場合、ローカリゼーションのためにデータベース120および122からゲームコンテンツを迅速に突き止めるために、ゲーム変更イベントが使用され得る。
本明細書で使用されるように、ゲーム変更イベント136は、ゲーム105において特定のゲームコンテンツをレンダリングすることに関連付けられる任意の形式のトリガイベントを含み得る。たとえば、トリガイベントは、これらに限定されないが、ウェイポイントを通過するキャラクタまたはアバタの移動、ゲーム全体内のサイドクエストまたはミニゲームの完了、ゲームでのキャラクタまたはアバタの方向転換、ゲームにおけるアイテムまたはコンテンツの取得、ゲーム内インベントリまたはゲームにおけるステータス画面へのアクセス、ゲームにおけるオブジェクトまたはコンテンツの操作、およびゲームにおける他の同様のイベントを含むことができる。他のトリガイベントは、これらに限定されないが、ゲーム内のアイテムの購入、ゲーム内のアイテムの取引、ゲーム内のボックスまたはリポジトリを開くこと、およびゲームにおける他の同様のイベントを含むことができる。さらに、トリガイベントはまた、キャラクタまたはアバタの変更、ゲームの終了、ゲームのリセット、および他の同様のイベントなどの、現実世界でのゲームとの相互作用を含むことができる。前述の例は、トリガおよび/またはトリガイベントのすべての形式を表すわけではなく、したがって、すべての適切なトリガの網羅的なリストとして解釈されるべきではないことは容易に理解されるべきである。
本開示の範囲から逸脱することなく、他のトリガがユーザ、クライアント、およびゲーム開発者によって実装され得る。開発者には、たとえばAPIを介して、翻訳の利用を制御するためのコントロールが提供される場合もある。たとえば、APIを使用すると、開発者は特定のコンテンツの翻訳を取得するための呼出しを行うことができるようになる場合がある。ブロック506の後にブロック508が続き得る。
ブロック508において、第2のクライアントロケールおよびゲーム変更イベントに基づいて、ローカライズされたコンテンツがレンダリングされ得る。いくつかの実装形態では、ゲーム変更イベントがコンテンツのクライアントデバイスへの配信を駆動する場合、ローカリゼーション変更キュー124は、ローカライズされたアセット138を作成するために、ビジュアルコンテンツ132および翻訳されたテキスト134を検索し得る。ローカライズされたアセット138は、第2のクライアントロケール、言語、およびリクエストに関連付けられる他のクライアント属性に基づく。さらに、ゲーム変更イベント136は、データベース120および122内のインデックスを決定して、そこからローカリゼーションデータを迅速に検索し得る。その後、またはほぼ同時に、ローカリゼーション変更プロセッサは、ローカリゼーション変更キューからローカライズされたアセット138を取得し、ローカライズされたコンテンツ131をレンダリングし得る。
いくつかの実装形態では、ゲーム変更イベントがローカライズされたコンテンツの配信を駆動しない場合、ローカリゼーション変更プロセッサ126は、データベース120から検索するビジュアルコンテンツ132を決定するために、受信したコンテンツおよび現在のゲーム105に対するリクエストを利用し得る。同様に、翻訳データベース122からの記憶された翻訳ツリーのどの部分がローカライズされたコンテンツ131をレンダリングするために必要であるかを決定するために、第2のクライアントロケールが使用され得る。したがって、ローカリゼーション変更プロセッサ126は、受信したコンテンツリクエストに基づいて、ローカライズされたコンテンツ131をレンダリングし得る。ブロック508の後にブロック510が続き得る。
ブロック510において、ローカライズされたコンテンツは、第2のクライアントロケールにおけるクライアントデバイスに送信され得る。ローカリゼーション変更プロセッサは、ローカライズされたコンテンツ131をゲームサーバ104に渡して、1つまたは複数のクライアントデバイスに配布し得る。さらに、ローカライズされたコンテンツ131は、複数のロケールが適切にローカライズされたコンテンツを提供されるように、2つ以上のロケールにローカライズされ得る。
いくつかの実装形態では、ゲーム105は、1つまたは複数のゲームセッションを含み得る。たとえば、ゲームエンジン107および/またはゲームサーバ104は、各セッションが独自の環境を有する、同じゲーム105の多くのセッションを可能にし得る(たとえば、5人のプレイヤがピザショップゲームのセッションを一緒にプレイし、別々の3人のプレイヤが同じゲームの別のセッションをプレイすることができる)。両方のゲームセッションにおいて開発者が提供するコンテンツは同じであるが、仮想アバタ、ユーザ生成コンテンツ、およびプレイヤの他のコンテンツは固有のものであり、環境は、それぞれのプレイヤによるアクションに基づいて、異なる方法で開発される(たとえば、ショップとピザのメニューは異なる)。
さらに、「ロケール」は、個々のユーザまたはクライアントデバイス110に関連付けられ、同じ「ゲームセッション」内で、ユーザはゲームコンテンツのローカライズされたバージョンを受信するか、または受信するべきである(たとえば、アメリカ人、ブラジル人、およびドイツ人がすべて同じセッションに参加している場合、ゲームコンテンツは英語、ポルトガル語、およびドイツ語、または他のそのようなコンテンツのローカリゼーションでレンダリングされる)。したがって、異なるゲームセッションに関連付けられる異なる言語も、本明細書で説明するように処理および配信され得る。
ブロック502~510は、上記とは異なる順序で実行(または、反復)することができ、および/あるいは1つまたは複数のステップを省略することができる。たとえば、ブロック508は、たとえば、(たとえば、1つまたは複数のゲームセッション内で)複数のローカライズされたアセットをレンダリングするために、複数回実行され得る。このように、プラットフォームに記憶されたデータを使用して、ゲームセッションのすべての部分がクライアントロケールに対して適切にレンダリングされるまで、方法500の部分が繰り返され得る。いくつかの実装形態では、アセットのサブセットのみがローカライズされ、一部のグローバルアセットはテキストを翻訳するために重要ではない場合がある。
図6は、本明細書で説明される1つまたは複数の機能を実装するために使用され得る例示的なコンピューティングデバイス600のブロック図である。一例では、コンピュータ/クライアントデバイス(たとえば、図1の110)を実装することと、本明細書に記載の適切な方法実装形態を実行することとを行うために、デバイス600が使用され得る。コンピューティングデバイス600は、任意の適切なコンピュータシステム、サーバ、または他の電子またはハードウェアデバイスであり得る。たとえば、コンピューティングデバイス600は、メインフレームコンピュータ、デスクトップコンピュータ、ワークステーション、ポータブルコンピュータ、または電子デバイス(ポータブルデバイス、モバイルデバイス、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックス、携帯情報端末(PDA)、メディアプレイヤ、ゲームデバイス、ウェアラブルデバイスなど)であってよい。いくつかの実装形態では、デバイス600は、プロセッサ602、メモリ604、入力/出力(I/O)インターフェース606、およびオーディオ/ビデオ入力/出力デバイス614を含む。
プロセッサ602は、プログラムコードを遂行し、デバイス600の基本的な動作を制御するための1つまたは複数のプロセッサおよび/または処理回路であり得る。「プロセッサ」は、データ、信号、または他の情報を処理する任意の適切なハードウェアおよび/またはソフトウェアシステム、メカニズム、あるいはコンポーネントを含む。プロセッサは、汎用中央処理装置(CPU)、複数の処理装置、機能を達成するための専用回路、または他のシステムを備えたシステムを含み得る。処理は特定の地理的な場所に限定される必要はなく、時間的な制限もない。たとえば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」などにおいてその機能を実行し得る。処理の一部は、異なる時間に、異なる場所で、異なる(または、同じ)処理システムによって実行され得る。コンピュータは、メモリと通信する任意のプロセッサであり得る。
メモリ604は、通常、プロセッサ602によるアクセスのためにデバイス600において提供され、たとえば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気的消去可能読取り専用メモリ(EEPROM)、フラッシュメモリなどであり得、プロセッサによって遂行するための命令を記憶するために適しており、プロセッサ602とは別に配置され、および/またはプロセッサ602と統合されている、任意の適切なプロセッサ可読ストレージ媒体であり得る。メモリ604は、オペレーティングシステム608、1つまたは複数のアプリケーション610、たとえば翻訳アプリケーションおよびデータベース612を含む、プロセッサ602によってコンピューティングデバイス600上で動作するソフトウェアを記憶することができる。いくつかの実装形態では、アプリケーション610は、プロセッサ602が本明細書に記載の機能を実行する(または、その機能を制御する)ことを可能にする命令、たとえば、図4および図5に関して説明される方法のいくつかまたはすべてを含むことができる。
たとえば、アプリケーション610は、翻訳アプリケーションおよび/またはデータベースモジュール612を含むことができ、本明細書で説明するように、オンラインゲームコンテンツサーバ(たとえば、104)のために動的コンテンツのローカリゼーションを提供することができる。あるいは、メモリ604内の任意のソフトウェアを、任意の他の適切なストレージ場所またはコンピュータ可読媒体に記憶することができる。さらに、メモリ604(および/または他の接続されたストレージデバイス)は、本明細書で説明される機能において使用される命令およびデータを記憶することができる。メモリ604および他のタイプのストレージ(磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「ストレージデバイス」と見なすことができる。
I/Oインターフェース606は、サーバデバイス600を他のシステムおよびデバイスとインターフェースすることを可能にする機能を提供することができる。たとえば、ネットワーク通信デバイス、ストレージデバイス(たとえば、メモリおよび/またはデータストア120、122)、および入力/出力デバイスは、インターフェース606を介して通信することができる。いくつかの実装形態では、I/Oインターフェースは、入力デバイス(キーボード、ポインティングデバイス、タッチスクリーン、マイクロフォン、カメラ、スキャナなど)および/または出力デバイス(ディスプレイデバイス、スピーカデバイス、プリンタ、モータなど)を含むインターフェースデバイスに接続することができる。
オーディオ/ビデオ入力/出力デバイス614は、ユーザ入力を受信するために使用することができるユーザ入力デバイス(たとえば、マウスなど)、ディスプレイデバイス(たとえば、画面、モニタなど)、および/またはグラフィカルおよび/またはビジュアル出力を提供するために使用できる、入力デバイスとディスプレイデバイスの組合せを含むことができる。
説明を容易にするために、図6は、プロセッサ602、メモリ604、I/Oインターフェース606、およびソフトウェアブロック608および610のそれぞれについて1つのブロックを示している。これらのブロックは、1つまたは複数のプロセッサあるいは処理回路、オペレーティングシステム、メモリ、I/Oインターフェース、アプリケーション、および/またはソフトウェアエンジンを表す場合がある。他の実装形態では、デバイス600は、図示されるコンポーネントのすべてを有さない場合があり、および/または本明細書に示されるものの代わりに、またはそれに加えて、他のタイプの要素を含む他の要素を有する場合がある。オンラインゲームサーバ104は、本明細書のいくつかの実装形態において説明されるような動作を実行するものとして説明されるが、オンラインゲームサーバ104または同様のシステムの任意の適切なコンポーネントまたはコンポーネントの組合せ、あるいはそのようなシステムに関連付けられる任意の適切なプロセッサまたは複数のプロセッサは、説明された動作を実行し得る。
ユーザデバイスはまた、本明細書に記載の機能を実装および/または使用することができる。例示的なユーザデバイスは、デバイス600と同様の何らかのコンポーネント、たとえば、プロセッサ602、メモリ604、およびI/Oインターフェース606を含むコンピュータデバイスであり得る。クライアントデバイスに適したオペレーティングシステム、ソフトウェア、およびアプリケーションは、メモリにおいて提供され、プロセッサによって使用することができる。クライアントデバイスのI/Oインターフェースは、ネットワーク通信デバイス、ならびに入力デバイスおよび出力デバイス、たとえば、サウンドをキャプチャするためのマイクロフォン、画像またはビデオをキャプチャするためのカメラ、ユーザ入力をキャプチャするためのマウス、ユーザのジェスチャーを認識するためのジェスチャーデバイス、ユーザ入力を検出するためのタッチスクリーン、サウンドを出力するためのオーディオスピーカデバイス、画像またはビデオを出力するためのディスプレイデバイス、あるいは他の出力デバイスに接続することができる。オーディオ/ビデオ入力/出力デバイス614内のディスプレイデバイスは、本明細書で説明されるように前処理および後処理の画像を表示するために、たとえば、デバイス600に接続され(または、含まれ)てよく、そのようなディスプレイデバイスは、任意の適切なディスプレイデバイス、たとえば、LCD、LED、またはプラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、プロジェクタ、または他の視覚的ディスプレイデバイスを含むことができる。いくつかの実装形態は、たとえば、テキストを話す音声出力または合成などのオーディオ出力デバイスを提供することができる。
本明細書に記載の1つまたは複数の方法(たとえば、方法400および/または500)は、コンピュータ上で遂行することができるコンピュータプログラム命令またはコードによって実装することができる。たとえば、コードは、1つまたは複数のデジタルプロセッサ(たとえば、マイクロプロセッサまたは他の処理回路)によって実装することができ、非一時的コンピュータ可読媒体(たとえば、ストレージ媒体)、たとえば、磁気、光学、電磁、あるいは半導体またはソリッドステートメモリを含む半導体ストレージ媒体、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、リジッドマグネティックディスク、光ディスク、ソリッドステートメモリドライブなどを含むコンピュータプログラム製品に記憶することができる。プログラム命令はまた、たとえば、サーバ(たとえば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されるサービスとしてのソフトウェア(SaaS)の形で、電子信号に含まれ、電子信号として提供され得る。あるいは、1つまたは複数の方法をハードウェア(論理ゲートなど)において実装することも、ハードウェアとソフトウェアの組合せにおいて実装することもできる。ハードウェアの例は、プログラマブルプロセッサ(たとえば、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などがある。1つまたは複数の方法は、システムで実行されているアプリケーションの一部またはコンポーネントとして、あるいは他のアプリケーションおよびオペレーティングシステムと組み合わせて実行されているアプリケーションまたはソフトウェアとして実行することができる。
本明細書で説明する1つまたは複数の方法は、任意のタイプのコンピューティングデバイスにおいて実行できるスタンドアロンプログラム、ウェブブラウザにおいて実行されるプログラム、モバイルコンピューティングデバイス(たとえば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブルデバイス(腕時計、アームバンド、ジュエリ、ヘッドウェア、ゴーグル、グラスなど)、ラップトップコンピュータなど)において実行されるモバイルアプリケーション(「アプリ」)で実行することができる。一例では、クライアント/サーバアーキテクチャを使用することができ、たとえば、モバイルコンピューティングデバイス(クライアントデバイスとして)は、ユーザ入力データをサーバデバイスに送信し、サーバから出力用(たとえば、表示用)の最終出力データを受信する。別の例では、すべての計算は、モバイルコンピューティングデバイス上のモバイルアプリ(および/または他のアプリ)内で実行することができる。別の例では、計算は、モバイルコンピューティングデバイスと1つまたは複数のサーバデバイスとの間で分割することができる。
説明は、特定の実装形態に関して説明されてきたが、これらの特定の実装形態は単なる例示であり、限定的ではない。例に示されている概念は、他の例および実装形態に適用され得る。
本開示で説明される機能ブロック、動作、機能、方法、デバイス、およびシステムは、当業者に知られているように、システム、デバイス、および機能ブロックの異なる組合せに統合されてもよく、分割されてもよいことに留意されたい。特定の実装形態のルーチンを実装するために、任意の適切なプログラミング言語およびプログラミング技法が使用され得る。異なるプログラミング技法、たとえば、手続き型またはオブジェクト指向が採用され得る。ルーチンは、単一の処理デバイスまたは複数のプロセッサにおいて遂行され得る。ステップ、操作、または計算は特定の順序で提示される場合があるが、異なる特定の実装形態において順序が変更され得る。いくつかの実装形態では、本明細書においてシーケンシャルとして示されている複数のステップまたは動作が同時に実行されてもよい。