JP2016527576A - 情報処理装置、制御方法、プログラム及び記録媒体 - Google Patents

情報処理装置、制御方法、プログラム及び記録媒体 Download PDF

Info

Publication number
JP2016527576A
JP2016527576A JP2016504409A JP2016504409A JP2016527576A JP 2016527576 A JP2016527576 A JP 2016527576A JP 2016504409 A JP2016504409 A JP 2016504409A JP 2016504409 A JP2016504409 A JP 2016504409A JP 2016527576 A JP2016527576 A JP 2016527576A
Authority
JP
Japan
Prior art keywords
drawing command
unit
information processing
processing apparatus
screen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016504409A
Other languages
English (en)
Other versions
JP6200062B2 (ja
Inventor
哲史 岩崎
哲史 岩崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Square Enix Holdings Co Ltd
Original Assignee
Square Enix Holdings Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Square Enix Holdings Co Ltd filed Critical Square Enix Holdings Co Ltd
Publication of JP2016527576A publication Critical patent/JP2016527576A/ja
Application granted granted Critical
Publication of JP6200062B2 publication Critical patent/JP6200062B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • A63F13/497Partially or entirely replaying previous game actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Processing Or Creating Images (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

情報処理装置は、描画装置に画面を描画させるための描画命令を取得し、取得した描画命令を記録する。また情報処理装置は、記録した描画命令を、画面を描画する描画装置に出力する。

Description

本発明は、情報処理装置、制御方法、プログラム及び記録媒体に関し、特に画面描画のシミュレーション技術に関する。
電子ゲームやソフトウェアアプリケーション等のプログラムは、その開発過程において仕様等により定められた所望の動作や機能が実現されるか否か、あるいは機能実現に係るハードウェアに与える負荷等の試験がなされる。またプログラムの中には、実際に製品としてリリース(販売や配信)されて一般のユーザが使用するまでの間にも、1段階以上のフェーズにおいて、実際に複数人のテストユーザに使用させて同様の項目を試験することがなされる。
後者の試験は、特にMMORPG等のサーバを介して提供がなされるサービスに係るプログラムにおいて行われる。通常、後者の試験は、製品の一部の機能を限定的なユーザに自由に操作させることにより行われる所謂「αテスト」、製品の一部または全ての機能を限定的または非限定的なユーザに自由に操作させることにより行われる「βテスト」があり、設定された期間内においてユーザ操作等に起因して生じる挙動が試験される。
ところで、上述したような試験では、所望の動作や機能が実現されなかった場合、あるいは想定外の動作が発見された場合、同一の動作等が再現される状況(操作パターン、負荷状況等)を特定し、必要な修正を行い、再度同一の状況に至った際に改善された(所謂バグフィックス)か否かをチェックする。しかしながら、バグフィックスのチェックのために再度同一の状況に至らしめることは必ずしも容易でない条件を要する場合がある。このため、現実的にはユーザの操作入力等をログ(キーやボタン入力等の履歴)として記録しておき、チェック時には該ログを再生することにより、同一の状況を再現する手法がとられている(特開2012−063818号公報、特開2013−149178号公報)。
しかしながら、このような操作入力のログを使用する場合、同一の状況が再現されない場合がありえる。通常、画面描画を伴うようなプログラムでは、画面の更新頻度(フレームレート)により決定される1フレーム期間内に、画面描画に必要なパラメータの更新処理や描画を行うハードウェアへの命令、及び該ハードウェアによる描画処理を完了させることが理想的である。一方で、画面に描画されるオブジェクト数が多い場合や同時に行われるスレッド数が多い場合等、表示フレームレートと処理フレームレートとが異なる状況が生じうる。つまり、表示更新間隔と各フレームに係る処理が完了する時間間隔とは様々なパラメータによって変動し得る。従って、操作入力のログを記録した際の処理フレームレートと、チェック時の処理フレームレートが異なっていた場合、処理にずれが蓄積していき、同一の状況を再現することが困難であった。特に、画面の描画内容に係るバグフィックスを目的とする試験の場合、描画周りの処理の修正によりバグフィックスしたのか、あるいはフレーム変動を含む別の要因により所望の動作が実現されたのかを特定できない可能性があった。
本発明はこのような従来技術の課題に鑑みてなされたものである。本発明は、同一の描画内容を再現する情報処理装置、制御方法、プログラム及び記録媒体を提供する。
本発明の第1の態様は、描画手段に画面を描画させるための描画命令を取得する取得手段と、取得手段により取得された描画命令を記録する記録手段と、記録手段により記録された描画命令を、画面を描画する描画手段に出力する出力手段と、を有する情報処理装置を提供する。
本発明の第2の態様は、描画手段に画面を描画させるための描画命令を取得する取得工程と、取得工程において取得された描画命令を記録する記録工程と、記録工程において記録された描画命令を、画面を描画する描画手段に出力する出力工程と、を有する情報処理装置の制御方法を提供する。
さらに、本発明の特徴は、(添付の図面を参照して)以下の例示的な実施形態の記載により明らかになるだろう。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の非限定的な実施形態に係る、サーバシステムを含むクラウド型ビデオゲームシステムアーキテクチャのブロック図 本発明の非限定的な実施形態に係る、ゲームプレイ中におけるデータネットワークを介したクライアント装置のセットとのインタラクションを示した、図1Aのクラウド型ビデオゲームシステムアーキテクチャのブロック図 本発明の非限定的な実施形態に係る、図1Bのアーキテクチャの様々な物理的構成要素を示したブロック図 図2Aの変形例 図2A及び2Bの物理的構成要素により実現され得、かつゲームプレイ中に動作しうる、図1Bのアーキテクチャにおけるサーバシステムの様々なモジュールを示したブロック図 本発明の非限定的な実施形態に係る、描画命令ジェネレータにより行われるビデオゲーム処理セットの実行を示したフローチャート 本発明の非限定的な実施形態に係る、受信した映像及び音声の各々を処理するためのクライアント装置の動作を示したフローチャート 少なくとも1つの実施形態に係る描画サーバ200Rの機能構成を簡易的に示したブロック図 少なくとも1つの実施形態の描画サーバ200Rにおいて実行される、画面描画処理を例示したフローチャート
図1Aは、本発明の非限定的な実施形態に係るクラウド型ビデオゲームシステムアーキテクチャを概略的に示している。該アーキテクチャは、インターネット130等のデータネットワークを介してサーバシステム100のような情報処理装置に接続されたクライアント装置120n(nは1≦n≦Nであり、Nはビデオゲームに参加しているユーザ数を示す)を含みうる。クラウド型システムアーキテクチャ内のクライアント装置の数Nは特に限定されるものではないことは理解されるべきである。
サーバシステム100は、複数のクライアント装置のユーザにより同時に観賞され得る仮想空間を提供する。場合によっては、該仮想空間はビデオゲームを示し得、あるいはコミュニケーションをサポートするツールまたはコミュニケーションにおけるユーザ体験を改良するツールとして用いられる視覚的効果を提供し得る。各ユーザは、仮想空間内に配置された対応するアバタを操作し、該空間内を移動できる。ユーザが仮想区間内でアバタを操作する際、該空間内に設定された視点についての画面が、該ユーザのクライアント装置に提供される。該視点は、予め定められた固定の視点から選択される、またはユーザによるアバタの移動操作に係り変更されるものであってよい。
クライアント装置120n(1≦n≦N)の構成は、特に限定されるものではない。いくつかの実施形態において、1以上のクライアント装置120n(1≦n≦N)は、パーソナルコンピュータ(PC)、家庭用ゲーム機(コンソール)、携帯ゲーム機、スマートテレビ、セットトップボックス(STB)等であってもよい。他の実施形態において、1以上のクライアント装置120n(1≦n≦N)は、携帯電話、電子手帳(PDA)、タブレットのような通信または計算装置であってもよい。
クライアント装置120n(1≦n≦N)の各々は、各々のローカルアクセスネットワーク(不図示)を介することを含む、あらゆる好適な方式でインターネット130に接続していてもよい。また、サーバシステム100は、ローカルアクセスネットワーク(不図示)を介してインターネット130に接続してもよいが、サーバシステム100はローカルアクセスネットワークの媒介なく、インターネット130と直接接続してよい。サーバシステム100と1以上のクライアント装置120n(1≦n≦N)との接続は、1以上のチャネルを含んでいてもよい。これらのチャネルは、物理的及び/または論理的リンクによりなされ、無線周波数、光ファイバ、光空間(free-space optical)、同軸ケーブル、及びツイストペアを含む様々な物理的媒体を回遊してもよい。チャネルはUDPやTCP/IPのようなプロトコルに従ってもよい。また、1以上のチャネルが、仮想プライベートネットワーク(VPN)でサポートされていてもよい。いくつかの実施形態では、1以上の接続はセッションベースでなされてもよい。
サーバシステム100は、クライアント装置120n(1≦n≦N)のユーザが、ビデオゲームを個々に(即ち、シングルプレイヤ用ビデオゲーム)または集団で(即ち、マルチプレイヤ用ビデオゲーム)プレイすることを可能であってもよい。またサーバシステム100は、他のプレイヤによりプレイされるゲームを観戦することを、クライアント装置120n(1≦n≦N)のユーザに可能にさせてもよい。ビデオゲームの非限定的な例は、レジャー、教育及び/またはスポーツについてプレイされるゲームを含みうる。しかし、ビデオゲームは貨幣損益の可能性をユーザに提示する必要はない。
またサーバシステム100は、ビデオゲームをテストする、及び/またはサーバシステム100を管理することをクライアント装置120n(1≦n≦N)のユーザに可能にさせてもよい。
サーバシステム100は、場合によっては1以上のゲームサーバを含む1以上の演算リソースを含んでもよいし、場合によってはユーザデータベース10を含む1以上のデータベースを有するあるいは該データベースにアクセスするものであってもよい。ユーザデータベース10は、識別データ、財務データ、位置データ、人口統計データ、接続データ等のような、様々なユーザ及びクライアント装置120n(1≦n≦N)についてのアカウント情報を格納しうる。ゲームサーバは、共通のハードウェア内に統合される、あるいは場合によってはインターネット130を介することを含む通信リンクを介して接続される異なるサーバ群であってもよい。同様に、データベースはサーバシステム100内に統合される、あるいは場合によってはインターネット130を介する通信リンクを介してサーバシステム100に接続されるものであってもよい。
サーバシステム100は、管理アプリケーションまたはポータルを規定するコンピュータ読み取り可能な命令を実行してもよい。該コンピュータ読み取り可能な命令が実行されると、管理アプリケーションは、ゲームプレイより前等、ゲーム環境外のクライアント装置120n(1≦n≦N)とのインタラクションを扱う。例えば、該管理アプリケーションは、ユーザクラス(「プレイヤ」、「観戦者」、「管理者」または「テスター」等)に属する1つのクライアント装置120n(1≦n≦N)のユーザを登録し、インターネットを介してユーザの接続性が追跡され、ゲームのインスタンスを開始する、参加する、終了する、または終了させるために、非限定的ないくつかの機能のうちのユーザコマンドに応答する。該目的の達成のため、管理アプリケーションはユーザデータベース10にアクセスする必要があってもよい。
管理アプリケーションは、非限定的な2〜3の可能性を挙げると、「プレイヤ」、「観戦者」、「管理者」及び「テスター」を含む異なるユーザクラスのユーザと、異なるインタラクションをしてもよい。故に、一例において管理アプリケーションは、ユーザデータベース10へのアカウントの設定及びプレイするビデオゲームの選択をプレイヤ(即ち「プレイヤ」ユーザクラスのユーザ)が可能なように、プレイヤとのインタフェースとして機能しうる。該選択に従い、管理アプリケーションはサーバ側ビデオゲームアプリケーションを起動しうる。サーバ側ビデオゲームアプリケーションは、仮想世界内のキャラクタ、アバタ、レースカー、コックピット等の制御をプレイヤに可能ならしめる、プレイヤについてのモジュールセットを実行するコンピュータ読み取り可能な命令により定義されうる。マルチプレイヤ用ビデオゲームの場合、仮想世界は2以上のプレイヤにより共有され得、1人のプレイヤのゲームプレイが他のプレイヤに影響を及ぼし得る。他の例では管理アプリケーションは、ユーザデータベース10へのアカウントの設定、及びユーザが観戦を所望する進行中のビデオゲームのリストからのビデオゲームの選択を観戦者(即ち「観戦者」ユーザクラスのユーザ)に可能ならしめる、観戦者とのインタフェースとして機能しうる。該選択に従い、管理アプリケーションは、観戦者が他のユーザのゲームプレイを観賞できるが該ゲーム内のアクティブキャラクタの制御はできないように、該観戦者についての機能モジュールセットを起動しうる(別段の指示がない限り、「ユーザ」との文言が採用された場合、「プレイヤ」ユーザクラスと「観戦者」ユーザクラスの両方に等しく適用されることを意味する)。
更なる例において、管理アプリケーションは、管理アプリケーション自体の様々な機能の変更、更新の実行、及びプレイヤ/管理者アカウントの管理を管理者(即ち「管理者」ユーザクラス)が可能なように、管理者とのインタフェースとして機能しうる。
さらに別の例では、管理アプリケーションは、テスト用のビデオゲームの選択をテスター(即ち「テスター」ユーザクラスのユーザ)が可能なように、テスターとのインタフェースとして機能しうる。該選択に従い、管理アプリケーションは、ビデオゲームのテストをテスターに可能ならしめる、テスター用のモジュールセットを起動しうる。
図1Bは、「プレイヤ」または「観戦者」ユーザクラスのユーザについての、ゲームプレイ中におけるクライアント装置120n(1≦n≦N)とサーバシステム100との間に生じるインタラクションを示している。
いくつかの非限定的な実施形態において、サーバ側ビデオゲームアプリケーションは、クライアント装置120n(1≦n≦N)のようなクライアント装置において実行中のコンピュータ読み取り可能な命令セットにより定義されうるクライアント側ビデオゲームアプリケーションと協働してもよい。クライアント側ビデオゲームアプリケーションの使用は、ゲームをプレイまたは観戦するため及びゲーム機能にアクセスするために、ユーザ用にカスタマイズされたインタフェースを提供してもよい。他の非限定的な実施形態において、クライアント装置は、該クライアント装置により直接的に実行可能なクライアント側ビデオゲームアプリケーションを特徴づけるものではない。むしろ、Webブラウザがクライアント装置の視点(perspective)からのインタフェースとして使用されてもよい。該Webブラウザは、サーバ側ビデオゲームアプリケーションとのインタラクションを最適化するように、自身のソフトウェア環境におけるクライアント側ビデオゲームアプリケーションのインスタンスを自身で作成してもよい。
任意のクライアント装置において(独立にまたはブラウザ内で)実行されるクライアント側ビデオゲームアプリケーションは、受信したユーザ入力及び検出されたユーザ動作を、インターネット130を介してサーバシステム100に送信されうる「クライアント装置入力」に変換しうる。
図1Bに示されている実施形態では、クライアント装置120n(1≦n≦N)の各々は、クライアント装置入力140n(1≦n≦N)をそれぞれ生成し得る。サーバシステム100は、様々なクライアント装置120n(1≦n≦N)から受信したクライアント装置入力140n(1≦n≦N)を処理し、該様々なクライアント装置120n(1≦n≦N)についての「メディア出力」150n(1≦n≦N)をそれぞれ生成しうる。メディア出力150n(1≦n≦N)は、(スクリーン上に表示された場合に画像を示す)符号化された映像コンテンツのストリーム及び(スピーカを介して再生された場合に音を示す)音声を含みうる。メディア出力150n(1≦n≦N)は、パケットの形でインターネット130を介して送信されうる。クライアント装置120n(1≦n≦N)の特定の1つに向けられたパケットは、インターネット130を介して該装置にルートされるように、このような方法でアドレスされうる。クライアント装置120n(1≦n≦N)の各々は、サーバシステム100から受信したパケット内のメディア出力をバッファして処理する電気回路、画像を表示するためのディスプレイ、及び音声を出力する振動子(例えばスピーカ)を含んでいてもよい。また、追加の出力装置は、動作を誘導するための電気機械システム等を提供してもよい。
映像データのストリームは、「フレーム」に分割されうることは理解されるべきである。ここでは、「フレーム」との文言は映像データのフレームと該映像データによりあらわされる画像との間の1対1対応の存在を要求するものではない。即ち、映像データの1つのフレームについて、表示される各画像の全体を示すデータを含めることも可能であるし、映像データの1つのフレームについて、画像の一部のみを示すデータを含めること、及び適切に再構成されて表示されるために、画像についてさらに2以上のフレームを要求することも可能である。同様に、映像データの1つのフレームは、M<NであるN個の画像が映像データのM個のフレームを用いて示される等、1以上の完全な画像を示すデータを含んでいてもよい。
《1.サーバシステム100(分散型アーキテクチャ)》
図2Aは、サーバシステム100の構成要素の非限定的な物理的構成の第1の態様を示している。本実施形態では、サーバシステム100の個々のサーバが、専用の機能を実行するよう構成されうる。例えば、計算サーバ200Cは、ユーザ入力に基づいてビデオゲーム内の状態変化の追跡についての役割を担い、描画サーバ200Rは、グラフィックス(映像データ)の描画についての役割を担い得る。
クライアント装置120n(1≦n≦N)のユーザは、プレイヤまたは参加者となり得る。場合によっては、1人のプレイヤと観戦者なし、複数のプレイヤと1人の観戦者、1人のプレイヤと複数の観戦者、及び複数のプレイヤと複数の観戦者等で構成されてもよいことは理解されるべきである。
簡単のため、以下の説明では単一の描画サーバ200Rに単一の計算サーバ200Cが接続されているものとする。しかしながら、1以上の描画サーバ200Rが同一の計算サーバ200Cに接続される、あるいは1以上の計算サーバ200Cが同一の描画サーバ200Rに接続されるものであってもよいことは理解されるべきである。複数の描画サーバ200Rが存在する場合、あらゆる適切な地理的領域に分散されるものであってもよい。
図2Aの構成要素の非限定的な物理的構成に示されるように、計算サーバ200Cは1以上の中央演算装置(CPU)220C、222C及びランダムアクセスメモリ(RAM)230Cを有していてもよい。CPU220C、222Cは、例えば通信バスアーキテクチャを介してRAM230Cにアクセス可能である。2つのCPU220C、222Cのみが示されているが、計算サーバ200Cのいくつかの実装例では、より多数のCPUあるいは単一のCPUのみが提供されてもよい。また、計算サーバ200Cは、ビデオゲームに参加しているクライアント装置の各々から、インターネット130を介してクライアント装置入力を受信する受信機を有していてもよい。以下に記載される実施形態の例では、クライアント装置120n(1≦n≦N)は、ビデオゲームに参加しているものとし、従って、受信したクライアント装置入力は、クライアント装置入力140n(1≦n≦N)を含みうる。非限定的な実施形態において、受信機はネットワークインタフェース要素(NIC)210C2により実装されてよい。
さらに計算サーバ200Cは、描画命令セット204m(1≦m≦M)を出力する送信機をさらに有していてもよい。非限定的な実施形態において、Mはユーザ(またはクライアント装置)の数を示すが、このことは全ての実施形態、特に1つの描画命令セットを複数のユーザ間で共有し得る態様において、必要ではない。故に、Mは単に、生成された描画命令セットの数を示す。計算サーバ200Cから出力された描画命令セット204m(1≦m≦M)は、描画サーバ200Rに送信されうる。非限定的な実施形態において、送信機は、ネットワークインタフェース要素(NIC)210C1により実装され得る。一実施形態において計算サーバ200Cは、描画サーバ200Rに直接接続されてもよい。他の実施形態では計算サーバ200Cは、インターネット130であってもよいし、その他のネットワークであってもよいネットワーク260を介して描画サーバ200Rに接続されてもよい。仮想プライベートネットワーク(VPN)は、ネットワーク260を介して計算サーバ200Cと描画サーバ200Rとの間に確立されてもよい。
描画サーバ200Rにおいて、計算サーバ200Cにより送信された描画命令セット204m(1≦m≦M)は、(ネットワークインタフェース要素(NIC)210R1により実装され得る)受信機において受信され、1以上のCPU220R、222Rに対して導かれうる。CPU220R、222Rは、グラフィックス処理装置(GPU)240R、250Rに接続されてもよい。非限定的な例として、GPU240Rは、GPUコア242Rのセット及びビデオランダムアクセスメモリ(VRAM)246Rを含んでもよい。同様に、GPU250RはGPUコア252Rのセット及びビデオランダムアクセスメモリ(VRAM)256Rを含んでもよい。CPU220R、222Rの各々は、GPU240R、250Rの各々に接続されていてもよいし、GPU240R、250Rの集合に接続されていてもよい。CPU220R、222RとGPU240R、250Rとの間の通信は、例えば通信バスアーキテクチャを用いて確立されてよい。2つのCPU及び2つのGPUのみが示されるが、描画サーバ200Rの特定の実装例では、2以上のCPU及びGPUがあってもよいし、単一のCPUまたはGPUだけであってもよい。
CPU220R、222Rは、描画命令セット204m(1≦m≦M)をグラフィックス出力ストリーム206n(1≦n≦Nであり、Nはビデオゲームに参加しているユーザ(またはクライアント装置)の数を示す)に変換するために、GPU240R、250Rと協働しうる。具体的には、クライアント装置120n(1≦n≦N)の各々についてN種のグラフィックス出力ストリーム206n(1≦n≦N)があり得る。このことは、さらに詳細が後述されるだろう。さらに描画サーバ200Rは、これを介してグラフィックス出力ストリーム206n(1≦n≦N)がクライアント装置120n(1≦n≦N)の各々に送信されうる、(ネットワークインタフェース要素(NIC)210R2により実装され得る)送信機をさらに有していてもよい。
《2.サーバシステム100(ハイブリッドアーキテクチャ)》
図2Bは、サーバシステム100の構成要素の非限定的な物理的構成の第2の態様を示している。本実施形態ではハイブリッドサーバ200Hは、ユーザ入力に基づいてビデオゲーム内の状態変化の追跡とグラフィックス(映像)の描画の両方の役割を担いうる。
図2Bの構成要素の非限定的な物理的構成に示されるように、ハイブリッドサーバ200Hは1以上の中央演算装置(CPU)220H、222H及びランダムアクセスメモリ(RAM)230Hを有していてもよい。CPU220H、222Hは、例えば通信バスアーキテクチャを介してRAM230Hにアクセスできる。2つのCPU220H、222Hのみが示されているが、より多数のCPUまたは単一のCPUのみがハイブリッドサーバ200Hのいくつかの実装例において提供されてもよいことは理解されるべきである。またハイブリッドサーバ200Hは、ビデオゲームに参加するクライアント装置の各々からインターネット130を介してクライアント装置入力を受信する受信機を有していてもよい。以下に記載される実施形態の例では、クライアント装置120n(1≦n≦N)は、ビデオゲームに参加しているものとし、故に受信したクライアント装置入力は、クライアント装置入力140n(1≦n≦N)を含んでもよい。非限定的な実施形態において、受信機はネットワークインタフェース要素(NIC)210Hにより実装され得る。
また、CPU220H、222Hは、描画処理装置(GPU)240H、250Hに接続されていてもよい。非限定的な例ではGPU240Hは、GPUコア242のセット及びビデオランダムアクセスメモリ(VRAM)246Hを含んでいてもよい。同様にGPU250Hは、GPUコア252Hのセット及びビデオランダムアクセスメモリ(VRAM)256Hを含んでいてもよい。CPU220H、222Hの各々は、GPU240H、250Hの各々またはGPU240H、250Hの集合に接続されていてもよい。CPU220H、222HとGPU240H、250Hとの通信は、例えば通信バスアーキテクチャを用いて確立されてもよい。2つのCPUと2つのGPUのみが示されているが、ハイブリッドサーバ200Hの特定の実装例では、2以上のCPUがあってもよいし、CPUまたはGPUが単一のみであってさえよい。
描画命令セット204m(1≦m≦M)を、参加している各クライアント装置につき1つであるグラフィックス出力ストリーム206n(1≦n≦N)に変換するために、CPU220H、222HはGPU240H、250Hと協働する。具体的には、参加しているクライアント装置120n(1≦n≦N)の各々に対して、N種のグラフィックス出力ストリーム206n(1≦n≦N)が存在しうる。グラフィックス出力ストリーム206n(1≦n≦N)は、非限定的な実施形態において少なくともNIC210Hにより部分的に実装され得る、送信機を介してクライアント装置120n(1≦n≦N)の各々に送信されうる。
《3.サーバシステム100(機能概要)》
ゲームプレイの間、サーバシステム100は、モジュールセットで構成されうるサーバ側ビデオゲームアプリケーションを実行する。図2Cを参照すると、これらのモジュールは描画命令ジェネレータ270、描画機能モジュール280、及び映像符号化器285を含んでいてよい。これらのモジュールは、上述した計算サーバ200Cと描画サーバ200R(図2A)及び/またはハイブリッドサーバ200H(図2B)の物理的構成要素により実現されうる。例えば、図2Aの非限定的な実施形態に関しては、描画命令ジェネレータ270は計算サーバ200Cにより実現され、描画機能モジュール280及び映像符号化器285は描画サーバ200Rにより実現されうる。図2Bの非限定的な実施形態に関しては、ハイブリッドサーバ200Hは描画命令ジェネレータ270、描画機能モジュール280、及び映像符号化器285を実現しうる。
本実施形態の例は、図を簡略化するために単一の描画命令ジェネレータ270について議論する。しかしながら、サーバシステム100の実際の実装において、描画命令ジェネレータ270と同様の多くの描画命令ジェネレータが平行に実行されうる。したがって、サーバシステム100は、同一のビデオゲームの複数の独立したインスタンス化または複数の異なるビデオゲームの同時のインスタンス化をサポートしうる。また、ビデオゲームは、あらゆる種類の1人プレイヤ用ビデオゲームまたはマルチプレイヤ用ゲームであってもよいことは理解されるべきである。
描画命令ジェネレータ270は、計算サーバ200Cまたはハイブリッドサーバ200Hの所定の物理的構成要素により実現されてもよい。具体的には、描画命令ジェネレータ270は、(計算サーバ200CのCPU220C、222Cやハイブリッドサーバ200HのCPU220H、222Hのような)CPUにより実行可能なコンピュータ読み取り可能な命令として符号化されうる。該命令は、(計算サーバ200Cの)RAM230C、(ハイブリッドサーバ200Hの)RAM230H、あるいは他の記憶領域に、描画命令ジェネレータ270により使用される定数、変数及び/または他のデータとともに明白に(tangibly)格納されうる。いくつかの実施形態において描画命令ジェネレータ270は、(計算サーバ200CのCPU220C、222Cやハイブリッドサーバ200HのCPU220H、222Hのような)CPUにより実行されているオペレーティングシステムによりサポートされうる、 バーチャルマシンの環境において実行されてもよい。
描画機能モジュール280は描画サーバ200R(図2A)あるいはハイブリッドサーバ200H(図2B)の所定の物理的構成要素により実現されてもよい。一実施形態において、描画機能モジュール280は、1以上のGPU(図2Aの240R、250R、図2Bの240H、250H)が引き受けてもよいし、CPUリソースを利用してもよいししなくてもよい。
映像符号化器285は、描画サーバ200R(図2A)またはハイブリッドサーバ200H(図2B)の所定の物理的構成要素により実現されてよい。本技術分野に属する当業者は、映像符号化器285を実現する種々の手法があることは容易に理解するだろう。図2Aの実施形態において、映像符号化器285はCPU220R、222R及び/またはGPU240R、250Rにより実現されうる。図2Bの実施形態では、映像符号化器285はCPU220H、222H及び/またはGPU240H、250Hにより実現されうる。その他の実施形態では、映像符号化器285は、分離された符号化チップ(不図示)により実現されてもよい。
動作において、描画命令ジェネレータ270は、受信したクライアント装置入力140n(1≦n≦N)に基づいて描画命令セット204m(1≦m≦M)を生成しうる。受信したクライアント装置入力は、行き先となる描画命令ジェネレータ270を示すデータ(例えばアドレス)、及び/または、由来するユーザ及び/またはクライアント装置を示すデータを場合によっては運ぶものであってよい。
描画命令は、映像データのフレームまたは映像データの一連のフレームを生成するように専用グラフィックス生成装置(GPU)に導くために用いられうる命令を示す。図2Cを参照すると、描画命令セット204m(1≦m≦M)は、描画機能モジュール280による映像データのフレームの生成をもたらす。これらのフレームにより示される画像は、描画命令ジェネレータ270にプログラム化された、クライアント装置入力140n(1≦n≦N)に応じた機能として変更されうる。例えば、描画命令ジェネレータ270は、所定の特定の要因に応じてユーザに(将来のインタラクションが異なる、より挑戦的とさせる、あるいはより刺激的とさせる)進行体験を提供するような方法でプログラムされ得、一方で、他の特定の要因への応答は、回帰や終了の体験をユーザに与えるだろう。描画命令ジェネレータ270への指示はバイナリ実行可能なファイルの形式で固定され得るが、クライアント装置入力140n(1≦n≦N)は対応するクライアント装置120n(1≦n≦N)を使用するプレイヤのインタラクション動作があるまで不明である。結果として、提供される特定のクライアント装置入力に応じて、様々な種類の生じ得る結果が存在してもよい。プレイヤ/観戦者と描画命令ジェネレータ270の間のクライアント装置120n(1≦n≦N)を介した該インタラクションは、「ゲームプレイ」や「ビデオゲームをプレイしている」等として言及されうる。
描画機能モジュール280は、複数の映像データストリーム205n(1≦n≦Nであり、Nはビデオゲームに参加しているユーザ/クライアント装置の数を示す)を生成するために描画命令セット204m(1≦m≦M)を処理しうる。故に、一般にユーザごとに(あるいはクライアント装置ごとにも同等)、1つの映像データストリームが生成されてよい。描画が実行されている場合、3次元空間(例えば物理オブジェクト)あるいは2次元空間(例えばテキスト)に示される1以上のオブジェクトについてのデータは、特定のGPU240R、250R、240H、250Hのキャッシュメモリ(不図示)に展開される。該データは、GPU240R、250R、240H、250Hにより、適切なVRAM246R、256R、246H、256Hに格納されうる2次元画像を示すデータに変換されうる。このようにして、VRAM246R、256R、246H、256Hは、ゲーム画面についての画素値の一時的な格納領域を提供しうる。
映像符号化器285は、映像データストリーム205n(1≦n≦N)の各々に含まれる映像データを、対応する圧縮/符号化された映像データのストリームに圧縮及び符号化しうる。グラフィックス出力ストリームとして言及される、圧縮/符号化された映像データの結果であるストリームは、クライアント装置基準で生成されうる。本実施形態の例では映像符号化器285は、クライアント装置120n(1≦n≦N)の各々についてのグラフィックス出力ストリーム206n(1≦n≦N)を生成しうる。追加のモジュールが、インターネット130を介して送信可能なように映像データをパケット形式にするよう提供されてもよい。映像データストリーム205n(1≦n≦N)に含まれる映像データ、及び任意のグラフィックス出力ストリームに含まれる圧縮/符号化された映像データは、複数のフレームに分割されうる。
《4.描画命令の生成》
以下、描画命令ジェネレータ270による描画命令の生成が、図2C、3A及び3Bを参照してより詳細に説明される。具体的には、描画命令ジェネレータ270の実行は、いかに詳細が説明されるメインゲームプロセス300Aとグラフィックス制御プロセス300Bを含むいくつかのプロセスを伴いうる。
〈メインゲームプロセス〉
メインゲームプロセス300Aは、図3Aを参照して説明される。メインゲームプロセス300Aは、連続的なループとして繰り返し実行しうる。メインゲームプロセス300Aの一部として、実行中、クライアント装置入力が受信されうる動作310Aが提供されうる。ビデオゲームが観戦の可能性がない1人プレイヤ用ビデオゲームである場合、単一のクライアント装置(例えばクライアント装置1201)からのクライアント装置入力(例えばクライアント装置入力1401)が動作310Aの一部として受信される。ビデオゲームがマルチプレイヤ用ビデオゲームまたは観戦の可能性がある1人プレイヤ用ゲームである場合、1以上のクライアント装置からのクライアント装置入力が、動作310Aの一部として受信されうる。
非限定的な例示の目的で、任意のクライアント装置からの入力は、該任意のクライアント装置のユーザが、制御下にあるキャラクタに対して移動、ジャンプ、キック、旋回、揺動、押す、引く等をさせることを所望していることを伝送しうる。代替的あるいは追加的に、該任意のクライアント装置からの入力は、1以上の音声、映像またはゲームプレイ設定を変更する、ゲームをロード/セーブする、あるいはネットワークセッションの作成やセッションへの参加を行うために、該任意のクリア案と装置のユーザによりなされたメニュー選択を伝送しうる。代替的あるいは追加的に、該任意のクライアント装置からの入力は、該任意のクライアント装置のユーザが特定のカメラ視野(例えば1人称または3人称)の選択、あるいは仮想世界内の視野の再配置を所望していることを伝送しうる。
動作320Aで、ゲームステートは、動作310Aにおいて受信したクライアント装置入力の少なくとも一部及び他のパラメータに基づいて更新されうる。ゲームステートの更新は、次の動作を伴いうる。
第1に、ゲームステートの更新は、クライアント装置入力が受信されうるクライアント装置に関連付けられたユーザ(プレイヤまたは観戦者)の所定の特性(property)を更新することを伴いうる。これらの特性は、ユーザデータベース10に格納されうる。ユーザデータベース10に保持されて動作320において更新されうるユーザ特性の例は、カメラ視野の選択(例えば1人称、3人称)、プレイモード、選択された音声または映像の設定、スキルレベル、顧客グレード(例えばゲスト、プレミアム等)を含みうる。
第2に、ゲームステートの更新は、クライアント装置入力の解釈に基づいて、仮想世界内の所定のオブジェクトの属性を更新することを伴いうる。属性が更新されるオブジェクトは、いくつかのケースでは2次元または3次元モデルにより示されてもよいし、プレイキャラクタ、非プレイキャラクタ及び他のオブジェクトを含みうる。プレイヤキャラクタである場合、更新されうる属性はオブジェクトの位置、強さ、武器/防具、経過した寿命、特殊能力、速さ/方向(速度)、アニメーション視覚的効果、エネルギ、弾薬等を含みうる。他のオブジェクト(背景、植物、建物、乗り物、スコアボード等)である場合、更新されうる属性は、該オブジェクトの位置、速度、アニメーション、ダメージ/体力、視覚的効果、テキスト内容等を含みうる。
クライアント装置入力とは別のパラメータは、上述した(ユーザの)特性及び(仮想世界オブジェクトの)属性に影響を与えうることは理解されるべきである。例えば、様々なタイマ(経過時間、特定のイベントからの時間、一日の仮想時刻、プレイヤ総数、ユーザの地理的位置等)が、ゲームステートの様々な態様に影響を及ぼしてもよい。
動作320Aの実行に加えてゲームステートが更新されると、メインゲームプロセス300Aは動作310Aに戻ってもよく、前回のメインゲームプロセスを終了してから受信した新たなクライアント装置入力が収集され、処理される。
〈グラフィックス制御プロセス〉
以下、グラフィックス制御プロセスとして言及される第2のプロセスについて、図3Bを参照して説明する。メインゲームプロセス300Aとは分離されて示されるが、グラフィックス制御プロセス300Bはメインゲームプロセス300Aの延長として実行してもよい。グラフィックス制御プロセス300Bは継続的に実行し、描画命令セット204m(1≦m≦M)の生成をもたらす。観戦の可能性がない1人プレイヤ用ビデオゲームの場合、1人のユーザ(即ちN=1)のみが存在し、故に衛星される描画命令セット2041(即ちM=1)の結果は1つのみである。場合によっては、N(ユーザ数)は1より多い。例えば、マルチプレイヤ用ビデオゲームの場合、複数の独立した描画命令セット(M>1)が複数のプレイヤについて生成されることが必要であり、従って各プレイヤについて1つである複数のサブプロセスが並行して実行しうる。一方、観戦の可能性がある(同様に、複数ユーザであり、故にN>1)1人プレイヤ用ゲームの場合、単一の描画命令セット2041(M=1)のみが存在し得る、結果である映像データストリームは、描画機能モジュール280により複数の観戦者にも複製されうる。もちろん、これらはただの実装の例であり、限定として取られるべきものではない。
映像データストリーム205n(1≦n≦N)の1つを要求する任意のユーザについてのグラフィックス制御プロセス300Bの動作を考える。動作310Bにおいて、描画命令ジェネレータ270は該任意のユーザについて描画されるオブジェクトを決定しうる。この動作は、以下の種類のオブジェクトを識別することを含んでいてよい。
第1に、この動作は、仮想世界から任意のユーザについての「ゲーム画面描画範囲」(「シーン」としても知られる)内にある、これらのオブジェクトを識別することを含みうる。ゲーム画面描画範囲は、任意のユーザのカメラの投影(perspective)から「観ることが可能」な、仮想世界の一部を含みうる。これは、仮想世界内のオブジェクトに関連するカメラの位置及び方向に依るものであってもよい。動作310Bの非限定的な実装例において、錐台が仮想世界に適用され、該錐台内のオブジェクトが保持またはマークされる。錐台は、任意のユーザのカメラの位置に置かれた頂点を有し、該カメラの方向性により規定される方向を有するものであってもよい。
第2に、この動作は、仮想世界内に現れないが、それにも関わらず任意のユーザについて描画される必要がありうる追加のオブジェクトを識別することを含みうる。例えば、これらの追加のオブジェクトは、非限定的な2〜3の可能性を挙げると、テキストメッセージ、グラフィックス警告及びダッシュボードインジケータを含んでもよい。
動作320Bで、描画命令ジェネレータ270は、動作310Bにおいて識別されたオブジェクトを、グラフィックス(映像データ)に描画するための命令セット204m(1≦m≦M)を生成しうる。描画は、視野及び適用される照明状態に従って、1つのオブジェクトまたはオブジェクト群の3次元または2次元座標の、表示可能な画像を示すデータへの変換を参照してもよい。これは、例えばここに参照により組み込まれる「"Computer Graphics and Geometric Modelling: Implementation & Algorithms", Max K. Agoston, Springer-Verlag London Limited, 2005」に記載されるような、あらゆるアルゴリズム及び技術を用いて達成されうる。描画命令は、ワシントン州レドモンドのマイクロソフト(登録商標)社の「Direct3D」及びオレゴン州ビーバートンのクロノスグループにより管理される「OpenGL」等の3Dアプリケーション・プログラミング・インタフェース(API)に適合する形式を有するものであってもよい。
動作330Bで、動作320Bにおいて生成された描画命令は描画機能モジュール280に出力されうる。これは、描画機能モジュール280に送信する描画命令セット204m(1≦m≦M)への、生成された描画命令のパケット化を伴いうる。
《5.グラフィックス出力の生成》
描画機能モジュール280は、描画命令セット204m(1≦m≦M)を解釈し、参加しているN台のクライアント装置120n(1≦n≦N)ごとに1つである、複数の映像データストリーム205n(1≦n≦N)を生成しうる。描画は、(図2Aの)CPU220R、222Rまたは(図2Bの)CPU220H、222Hの制御の下、GPU240R、250R、240H、250Hにより実現されうる。1つの参加者のクライアント装置に係る映像データのフレームが生成されるレートは、フレームレートとして参照されうる。
N名のユーザが存在する実施形態において、N種の映像データストリーム205n(1≦n≦N)は、描画命令セット204m(1≦m≦MでありM=N)のそれぞれが生成され得る。この場合、描画機能はユーザ間で共有されない。しかしながら、少数の描画命令セットが描画機能モジュール280により処理される必要があるように、N種の映像データストリーム205n(1≦n≦N)は、M個の描画命令セット204m(1≦m≦MでありMはNより小さい)から生成されてもよい。この場合、少ない数の描画命令セ204m(1≦m≦MであってM<N)からより多い数の映像データストリーム205n(1≦n≦N)を生成するために、描画機能モジュール280は共有または複製を行ってもよい。このような共有または複製は、複数のユーザ(例えば観戦者)が同一のカメラ画角を観ることを所望した場合に普及するものであってもよい。故に、描画機能モジュール280は、生成された映像データストリームが1以上の観戦者に複製されるように機能を実行してもよい。
次に、映像データストリーム205n(1≦n≦N)の各々における映像データは、映像符号化器285により符号化され、グラフィックス出力ストリームとして参照され得、各クライアント装置に関連付けられた一連の符号化映像データが得られる。図2A〜2Cの実施形態の例において、クライアント装置120n(1≦n≦N)の各々についての一連の符号化映像データはグラフィックス出力ストリーム206n(1≦n≦N)として参照される。
映像符号化器285は、デジタル映像についての映像圧縮または展開を可能にする、実行する、または定義する装置(またはコンピュータ読み取り可能な命令セット)であってもよい。映像圧縮は、(画素位置、色値等で表現される)デジタル画像データのオリジナルストリームを、より少ないビットを用いるが実質的に同一の情報を伝送するデジタル画像データの出力ストリームに変換しうる。あらゆる適切な圧縮アルゴリズムが用いられてよい。データ圧縮に加え、映像データの特定のフレームの符号化に用いられる符号化処理は、暗号化を伴ってもよいし、伴わなくともよい。
上述の手法で生成されたグラフィックス出力ストリーム206n(1≦n≦N)は、インターネット130を介して各クライアント装置に送信されうる。非限定的な例示目的で、グラフィックス出力ストリームは、各々がヘッダ及びペイロードを有するパケットに、セグメント化あるいは形式化されてもよい。任意のユーザについての映像データに含まれるパケットのヘッダは、該任意のユーザに関連付けられたクライアント装置のネットワークアドレスを含んでもよく、ペイロードは全部または一部として映像データを含んでもよい。非限定的な実施形態において、所定の映像データを符号化するために用いられる圧縮アルゴリズムの身元(identity)及び/またはバージョンが、該映像データを伝送する1以上のパケットのコンテンツ内に符号化されてもよい。符号化映像データの他の送信手法は、本技術分野に属する当業者には思い当たるかもしれない。
本開示は個々が2D画像を示す映像データの描画にフォーカスするものであるが、本発明は3次元効果を生成するために、フレームごとに複数の2D画像を示す映像データの描画の可能性を除外するものではない。
《6.クライアント装置におけるゲーム画面再生》
以下、非限定的な例示の目的で、クライアント装置120n(1≦n≦N)のいずれかであってよい、任意のユーザに関連付けられたクライアント装置により実行されうるクライアント側ビデオゲームアプリケーションの動作を示す図4Aを参照する。動作にあたり、クライアント側ビデオゲームアプリケーションは、非限定的な2〜3の可能性を挙げると、クライアント装置により直接実行可能であってもよいし、Webブラウザにおいて起動してもよい。
動作410Aで、(グラフィックス出力ストリーム206n(1≦n≦N)のうちの)1つのグラフィックス出力ストリームは、実施形態に応じて描画サーバ200R(図2A)から、あるいはハイブリッドサーバ200H(図2B)から、インターネット130を介して受信されてもよい。受信されたグラフィックス出力ストリームは複数のフレームに分割されうる圧縮/符号化された映像データを含みうる。
動作420で、映像データの圧縮/符号化されたフレームは、符号化/圧縮処理に用いられた符号化/圧縮アルゴリズムを補間する展開アルゴリズムに従って復号/展開される。非限定的な実施形態において、映像データの符号化/圧縮に用いられた符号化/圧縮アルゴリズムの身元またはバージョンは、予め知らされていてもよい。他の実施形態において、映像データの符号化/圧縮に用いられた符号化/圧縮アルゴリズムの身元またはバージョンは、映像データ自体が添付されてもよい。
動作430Aで、映像データの(復号/展開された)フレームが処理されうる。これは、バッファへの映像データの復号/展開されたフレームの配置、誤り訂正、複数の連続するフレームにおけるデータの順序付け及び/または合成、アルファブレンディング、欠損したデータの一部の補間等を含みうる。該結果は、毎フレーム基準でユーザに提示される最終画像を示す映像データとなり得る。
動作440Aで、最終画像がクライアント装置の出力機構を介して出力されうる。例えば、コンポジット映像フレームが、クライアント装置のディスプレイに表示されうる。
《7.音声生成》
以下、音声生成処理として言及される3番目の処理が、図3Cを参照して説明される。音声生成処理は、知覚可能な音声ストリームを要求する各ユーザについて、継続的に実行されうる。一実施形態において、音声生成処理はグラフィックス制御プロセス300Bと無関係に実行されてよい。他の実施形態において、音声生成処理及びグラフィックス制御処理の実行が連動されてもよい。
動作310Cで、描画命令ジェネレータ270は、生成される音声を決定しうる。具体的に該動作は、音量(音の強さ)及び/または仮想世界内においてユーザへの近さに応じて、地形音響特性に影響を及ぼす仮想世界内のオブジェクトに関連付けられたこれらの音声を特定することを含みうる。
動作320Cで、描画命令ジェネレータ270は音声セグメントを生成しうる。音声セグメントの継続期間は映像フレームの継続期間に及んでもよいし、いくつかの実施形態では音声セグメントは映像フレームよりも少ない頻度で生成されてもよいし、他の実施形態では音声セグメントは映像フレームよりも高い頻度で生成されてもよい。
動作330Cで、音声セグメントは例えば音声符号化器により符号化され得、符号化音声セグメントが得られる。音声符号化器は、音声圧縮または展開アルゴリズムを可能にする、実行する、または定義する装置(または命令セット)であってもよい。音声圧縮は、(徐々に振幅及び位相が変化する音波として表現される)デジタル音声のオリジナルストリームを、より少ないビットを使用するが実質的に同一の情報を伝送するデジタル音声データの出力ストリームに変換しうる。あらゆる適切な圧縮アルゴリズムが用いられてよい。音声圧縮に加え、特定の音声セグメントの符号化に用いられる符号化処理は暗号化を適用してもよいし、しなくてもよい。
いくつかの実施形態において、音声セグメントは計算サーバ200C(図2A)またはハイブリッドサーバ200H(図2B)のいずれかの専用ハードウェア(例えばサウンドカード)により生成されてもよいことは理解されるべきである。図2Aの分散型構成に適用可能な代替的実施形態において、音声セグメントは描画命令ジェネレータ270によりスピーチパラメータ(例えばLPCパラメータ)にパラメータ化されてもよく、スピーチパラメータは描画サーバ200Rにより、配信先のクライアント装置(例えばクライアント装置120またはクライアント装置120A)に再配信されうる。
上述した方式で生成された符号化された音声は、インターネット130を介して送信される。非限定的な例示を目的として、符号化された音声入力は、各々がヘッダ及びペイロードを有するパケットに分解及び形式化されうる。ヘッダは、音声生成処理が実行されるユーザに関連付けられたクライアント装置のアドレスを伝送してもよく、ペイロードは符号化された音声を含んでいてもよい。非限定的な実施形態において、任意の音声セグメントの符号化に用いられる圧縮アルゴリズムの身元及び/またはバージョンは、該任意のセグメントを伝送する1以上のパケットのコンテンツ内に符号化されてもよい。符号化された音声を送信する他の手法は、本技術分野に属する当業者には思い当たるかもしれない。
以下、非限定的な例示を目的として、クライアント装置120n(1≦n≦N)のいずれかであってよい、任意のユーザに関連付けられたクライアント装置の動作を示す図4Bを参照する。
動作410Bで、符号化された音声セグメントが(実施形態に応じて)計算サーバ200C、描画サーバ200R、またはハイブリッドサーバ200Hから受信されうる。動作420Bで、符号化処理に用いられた圧縮アルゴリズムを補間する展開アルゴリズムに従って、符号化された音声は復号されうる。非限定的な実施形態において、音声セグメントの符号化に用いられた圧縮アルゴリズムの身元またはバージョンは、音声セグメントを伝送する1以上のパケットのコンテンツ内で特定されてもよい。
動作430Bで、(復号された)音声セグメントが処理されうる。これは、バッファ内への復号された音声セグメントの配置、誤り訂正の実行、複数の連続する波形合成等を含みうる。該結果は、毎フレーム基準でユーザに提示される最終音声となり得る。
動作440Bで、最終的に生成された音声は、クライアント装置の出力機構を介して出力されうる。例えば、音声はクライアント装置のサウンドカードまたはスピーカを介して再生されうる。
《8.非限定的な実施形態の具体的開示》
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態では簡単のため、図2Aに示したような、ゲームコンテンツに係る種々の演算を行い描画命令を送出する描画命令ジェネレータ270としての計算サーバ200Cと、計算サーバ200Cから送出された描画命令に基づいて画面の描画処理を行う描画機能モジュール280としての描画サーバ200Rとの構成に係り、描画サーバ200Rにおいて行われる処理を例に説明する。つまり、以下では情報処理装置の一例としての、取得した描画命令に基づいた画面描画処理を行う描画サーバ200Rに、本発明を適用した例を説明する。しかし、本発明は、図2Aのような構成に限られるものではなく、画面の描画を行うハードウェアに対して描画命令がなされるものであれば、描画命令を行うエンティティ(描画命令ジェネレータ270)と画面の描画を行うエンティティ(描画機能モジュール280)とが一体の装置内に設けられるような構成であっても適用可能である。即ち、本発明は、いずれかの手法により描画命令を取得し、該描画命令に基づいた画面描画処理を行う任意の機器に適用可能である。
《描画サーバ200Rの構成》
図5は、本発明の実施形態に係る描画サーバ200Rの機能構成を示すブロック図である。描画サーバ200Rの概要については上述した通りだが、図5では、本実施形態において特徴的な動作をする描画サーバ200R内の機能構成について、より簡略的かつ詳細を示したものである。
図5に示されるように、本実施形態において描画サーバ200Rは、図2Aに示した構成を代替する構成を含む複数の機能構成を有する。図2Aとの関係においてCPU501はCPU220RまたはCPU222Rを、メモリ503はRAM230Rを、GPU507はGPU240RまたはGPU250Rを、VRAM508はVRAM246RまたはVRAM256Rを、通信部504はNIC210R1または210R2を代替する。
通信部504は、描画サーバ200Rが有する外部装置との通信インタフェースである。通信部504は、本実施形態では計算サーバ200Cから描画命令、及び該描画命令により描画した画面の送付先(クライアント装置120)を特定するための情報とを受信する。また通信部504は、対応するクライアント装置120に対して描画命令に基づいて描画された画面データをグラフィックス出力206として送信する。
記憶媒体502は、例えばメモリ503とは異なり恒久的にデータを記憶する、不揮発性メモリやHDD等の記憶装置である。本実施形態では画面の描画に必要な、各種描画オブジェクトに係るデータ(モデルデータ、テクスチャデータ、描画プログラム等)は記憶媒体502に予め記憶されているものとして説明する。しかしながら、本発明の実施はこれに限られるものでなくてよく、各種描画オブジェクトに係るデータは、計算サーバ200Cから受信して記憶媒体502に格納されるものであってもよいし、特定の外部装置から通信部504を介して取得されるものであってもよい。
セレクタ505はCPU501の制御の下、描画命令の取得及び伝送先への伝送の動作を制御する。セレクタ505は、通信部504を介して描画命令を取得した場合、該描画命令を描画機能モジュール280であるCPU501あるいはGPU507に伝送する。またこのときセレクタ505は、取得した描画命令を蓄積部506に伝送する。蓄積部506は、計算サーバ200Cから発行された描画命令を、その発行タイミングあるいはその受信タイミング、及び対応する画面の送信先を特定する情報に関連付けて時系列順に蓄積する。言い換えれば、蓄積部506は、発行された描画命令のログをクライアント装置120ごとに蓄積するデータベースである。一方、描画サーバ200Rにおいてテストモードの実行が選択された場合、通信部504が描画命令を取得しないため、セレクタ505は、蓄積部506に蓄積された描画命令を、時系列順に取得して描画機能モジュール280であるCPU501あるいはGPU507に伝送する。なお、本実施形態では簡単のため描画サーバ200Rにおいてテストモードの実行が選択された場合、通信部504が描画命令を取得しないものとして説明するが、本発明の実施はこれに限られるものではない。即ち、テストモードはクライアント装置120へのサービス提供(画面提供)と並行して実行されてもよく、テストモードにおいても通信部504が描画命令を取得してもよいことは理解されよう。本実施形態の描画サーバ200Rでは、このように動作するセレクタ505及び蓄積部506を設けることにより、一度なされた描画命令と同様の描画処理をテストモードにおいて再現することができる。即ち、上述したように同一の描画内容がなされる状況を再現することができる。従って、例えば描画命令を固定とした上で、描画周りの処理に係るデバッグを行うこともできる。
《画面描画処理》
このような構成をもつ本実施形態の描画サーバ200Rの画面描画処理について、図6のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、CPU501が、例えば記憶媒体502に記憶されている対応する処理プログラムを読み出し、メモリ503に展開して実行することにより実現することができる。なお、本画面描画処理は、例えば通信部504が描画命令を受信した際、あるいはテストモードに描画サーバ200Rが設定された際に開始されるものとして説明する。
S601で、CPU501は、現在描画サーバ200Rがテストモードに設定されているか否かを判断する。描画サーバ200Rがテストモードに設定されていると判断した場合、CPU501は処理をS604に移す。描画サーバ200Rがテストモードに設定されていないと判断した場合、CPU501は処理をS602に移す。
S602で、セレクタ505はCPU501の制御の下、通信部504が受信した描画命令(対象命令)を描画機能モジュール280に伝送するとともに、例えば受信タイミング及び対応するクライアント装置120(対象機器)を特定する情報を関連付けて対象命令を蓄積部506に伝送し、格納させる。
S603で、描画機能モジュール280は、CPU501及びGPU507が連動して、受信した対象命令に基づき、対象機器に送信する画面の描画処理を行う。描画処理の完了後、例えばGPU507は描画した画面に係るデータを出力し、本画面描画処理を完了する。
一方、S601において描画サーバ200Rがテストモードになされていると判断した場合、セレクタ505はS604で、蓄積部506から関連付けられている時系列順に対象機器に係る描画命令の順次取得を開始する。なお、本実施形態の画面描画処理では、簡単のため1台の対象機器についての描画命令のログが蓄積部506に蓄積されるものとして説明する。しかしながら、本発明の実施はこれに限られるものではなく、例えば複数人により同時プレイされるゲームに係るテストを行う場合、蓄積部506には複数のクライアント装置120の各々について描画命令のログが蓄積される構成であってよい。
S605で、セレクタ505は、取得した描画命令に関連付けられていた受信タイミングの情報に基づいて、順次取得した描画命令を対象命令として描画機能モジュール280に伝送する。受信タイミングの情報は、連続して蓄積部506に格納された描画命令を描画機能モジュール280に送出するタイミングの相対関係を示すために用いられる。即ち、例えば35msの間隔で受信した描画命令AとBとは、それらの受信タイミングの差分から35msの情報を取得できるため、セレクタ505は取得した描画命令Aを送出した後、不図示の内蔵タイマで35msの経過後に描画命令Bを送出すればよい。
S606で、描画機能モジュール280は、受信した対象命令に基づき、画面の描画処理を行う。描画処理の完了後、例えばGPU507は描画した画面に係るデータを出力する。なお、本ステップにおいて生成する画面は、テストを目的としたものであるため、対象機器へは必ずしも送信される必要はない。
S607で、CPU501は、セレクタ505がまだ送出していない描画命令が蓄積部506に存在するか否かを判断する。まだ送出していない描画命令が存在すると判断した場合、CPU501は処理をS605に戻す。送出していない描画命令が存在しないと判断した場合、CPU501は本画面描画処理を完了する。
本処理により、本実施形態の描画サーバ200Rは実際に受信した描画命令を蓄積部506に保持し、テストモードにおいて該描画命令を蓄積部506から取得し、例えば受信したタイミングに従って描画機能モジュール280への描画命令の送出を実現することができる。即ち、従来のクライアント装置120によりなされた操作入力のログを記録して処理を行う場合に比べて、同一の描画内容が再現されるように画面描画処理のテストを行うことができる。
さらに、本実施形態で例示したように計算サーバ200Cと描画サーバ200R、即ち描画命令ジェネレータ270と描画機能モジュール280が分離されているシステム構成においては、本実施形態で説明したように描画命令を格納してテストを行うことで、ゲームコンテンツに係る全体処理において生じたバグが、いずれの機器が原因であるかを分離してデバッグすることができる。つまり、描画命令の生成に係る処理あるいはハードウェアに問題があるのか、描画命令に基づいて画面描画処理を行う処理あるいはハードウェアに問題があるかを分別してデバッグを行うことができる。
なお、本実施形態では同一の描画内容の再現を行うために、描画命令を格納するものとして説明したが、格納した描画命令はこれ以外にも利用可能である。例えば、描画サーバ200Rが複数のクライアント装置120に係る画面の描画処理を並行実行する際の負荷テストとして、複数のクライアント装置120の各々について蓄積部506に格納された描画命令を、受信タイミングに応じて並行して描画機能モジュール280に送出してもよい。この際、送出した描画命令は同時期に取得されたもの、同一のゲームコンテンツに係り取得されたものに限られる必要はなく、所望の負荷条件に応じて選択されてよい。また、上述したようにαテスト(ゲームプレイ)等では限定的な人数のユーザについてしか描画命令の格納をすることができないが、このような場合であってもゲームプレイ時よりも高い負荷を描画サーバ200Rにおいて実現したい場合、取得した描画命令を複数出力する、即ち取得した1セットの描画命令を3セット等に増加して描画機能モジュール280に送出してもよい。これにより、並行して実行される画面の描画処理の数を簡易的に増加させることができるため、負荷発生時の描画サーバ200Rにおける障害発生や描画される成果物である画面の画質への影響等を容易にテストすることができる。
以上説明したように、本実施形態の情報処理装置は同一の描画内容を再現することができる。情報処理装置は、描画装置に画面を描画させるための描画命令を取得し、取得した描画命令を記録する。また情報処理装置は、記録した描画命令を、画面を描画する描画装置に出力する。
[その他の実施形態]
例示的な実施形態を参照して本発明を説明してきたが、記載した例示的な実施形態に発明が限られるものでないことは理解されよう。以下の特許請求の範囲は、このような変形、等価な構成及び機能の全てを包含するように、広範な解釈を許容されよう。また、本発明に係る情報処理装置及び制御方法は、1以上のコンピュータにおいて該手法が実行されるプログラムにより実現可能である。プログラムは、コンピュータ読み取り可能な記録媒体に格納されることで、または電気的な通信回線を介して、提供/配信可能である。
本出願は、その全体がここに参照により援用される、2013年8月6日に出願された米国仮出願第61/862590号の利益を主張するものである。

Claims (10)

  1. 描画手段に画面を描画させるために用いられ、ユーザ入力に基づいて生成された描画命令を取得する取得手段と、
    前記取得手段により取得された描画命令を記録する記録手段と、
    前記記録手段により記録された描画命令を複製し、画面を描画する前記描画手段に該複製した描画命令を出力する出力手段と、を有する情報処理装置。
  2. 前記出力手段は、前記取得手段により描画命令が取得されない場合に、前記複製された描画命令を出力する請求項1に記載の情報処理装置。
  3. 前記出力手段は、前記複製された描画命令を複数の前記描画手段に並行して出力する請求項1または2に記載の情報処理装置。
  4. 前記記録手段は、前記取得された描画命令に関連付けて、該描画命令の生成または取得に対応するタイミング情報を記録し、
    前記出力手段は、関連付けられた前記タイミング情報に基づいて前記複製された描画命令を出力する請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記描画手段は前記情報処理装置に含まれ、
    前記出力手段により出力された前記複製された描画命令に基づいて前記描画手段により描画された画面、及び該画面が描画される際の前記情報処理装置における能力を評価する評価手段をさらに有する請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記記録手段は、前記取得手段により取得された描画命令に基づいて前記描画手段により描画された画面の送信先の情報を記録し、
    前記出力手段は、1つの送信先について前記記録された描画命令を複製し、複製された複数の描画命令を前記描画手段に出力する請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 前記取得手段は、外部機器から描画命令を取得する請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 描画手段に画面を描画させるために用いられ、ユーザ入力に基づいて生成された描画命令を取得する取得工程と、
    前記取得工程において取得された描画命令を記録する記録工程と、
    前記記録手段により記録された描画命令を複製し、画面を描画する前記描画手段に該複製した描画命令を出力する出力工程と、を有する情報処理装置の制御方法。
  9. 描画手段を有するコンピュータを含む1以上のコンピュータを、請求項1乃至7のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
  10. 請求項9に記載のプログラムを記録したコンピュータが読み取り可能な記録媒体。
JP2016504409A 2013-08-06 2014-08-01 情報処理装置、制御方法、プログラム及び記録媒体 Active JP6200062B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361862590P 2013-08-06 2013-08-06
US61/862,590 2013-08-06
PCT/JP2014/070957 WO2015020178A1 (en) 2013-08-06 2014-08-01 Information processing apparatus, control method, program, and recording medium

Publications (2)

Publication Number Publication Date
JP2016527576A true JP2016527576A (ja) 2016-09-08
JP6200062B2 JP6200062B2 (ja) 2017-09-20

Family

ID=52461502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016504409A Active JP6200062B2 (ja) 2013-08-06 2014-08-01 情報処理装置、制御方法、プログラム及び記録媒体

Country Status (6)

Country Link
US (1) US9904972B2 (ja)
EP (1) EP3030968A4 (ja)
JP (1) JP6200062B2 (ja)
CN (1) CN105453051B (ja)
CA (1) CA2918725C (ja)
WO (1) WO2015020178A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017216667A (ja) * 2016-05-31 2017-12-07 フォーブ インコーポレーテッド 画像提供システム
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
CN111951366B (zh) * 2020-07-29 2021-06-15 北京蔚领时代科技有限公司 一种云原生3d场景游戏方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US20060274072A1 (en) * 2005-06-07 2006-12-07 Microsoft Corporation System and method for validating the graphical output of an updated software module
US20100211933A1 (en) * 2009-02-19 2010-08-19 Nvidia Corporation Debugging and perfomance analysis of applications
US20120081378A1 (en) * 2010-10-01 2012-04-05 Jean-Francois Roy Recording a Command Stream with a Rich Encoding Format for Capture and Playback of Graphics Content

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219032B1 (en) * 1995-12-01 2001-04-17 Immersion Corporation Method for providing force feedback to a user of an interface device based on interactions of a controlled cursor with graphical elements in a graphical user interface
US20110157196A1 (en) 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
JP5588807B2 (ja) 2010-09-14 2014-09-10 エスペック株式会社 環境試験装置用コントローラ、及びこれを有する環境試験装置、並びにこの環境試験装置用デバッガ
JP5076132B1 (ja) 2011-05-25 2012-11-21 株式会社スクウェア・エニックス・ホールディングス 描画制御装置、その制御方法、プログラム、記録媒体、描画サーバ、及び描画システム
GB2491819A (en) 2011-06-08 2012-12-19 Cubicspace Ltd Server for remote viewing and interaction with a virtual 3-D scene
JP2013149178A (ja) 2012-01-23 2013-08-01 Arp Co Ltd デバッガ機能を利用したテストコード自動生成プログラム
CN102866919B (zh) * 2012-07-31 2014-11-05 电子科技大学 一种基于云端绘制的大规模三维场景多人协同创作方法
CN202844541U (zh) * 2012-08-09 2013-04-03 陈滟滪 一种全息显示的电子游戏设备
CN102830938A (zh) * 2012-09-13 2012-12-19 济南大学 一种基于手势动画的3d人机交互方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US20060274072A1 (en) * 2005-06-07 2006-12-07 Microsoft Corporation System and method for validating the graphical output of an updated software module
US20100211933A1 (en) * 2009-02-19 2010-08-19 Nvidia Corporation Debugging and perfomance analysis of applications
US20120081378A1 (en) * 2010-10-01 2012-04-05 Jean-Francois Roy Recording a Command Stream with a Rich Encoding Format for Capture and Playback of Graphics Content

Also Published As

Publication number Publication date
WO2015020178A1 (en) 2015-02-12
CA2918725A1 (en) 2015-02-12
EP3030968A4 (en) 2017-05-10
EP3030968A1 (en) 2016-06-15
US20160163017A1 (en) 2016-06-09
CA2918725C (en) 2020-09-29
US9904972B2 (en) 2018-02-27
JP6200062B2 (ja) 2017-09-20
CN105453051A (zh) 2016-03-30
CN105453051B (zh) 2018-12-28

Similar Documents

Publication Publication Date Title
JP6310073B2 (ja) 描画システム、制御方法、及び記憶媒体
JP5987060B2 (ja) ゲームシステム、ゲーム装置、制御方法、プログラム及び記録媒体
JP6576245B2 (ja) 情報処理装置、制御方法及びプログラム
JP6196668B2 (ja) クラウド型ゲームシステムにおける描画リソースの動的割り当て
JP6232423B2 (ja) 情報処理装置、描画装置、方法及びプログラム
JP6069528B2 (ja) 画像処理装置、画像処理システム、画像処理方法、及び記憶媒体
US9873045B2 (en) Systems and methods for a unified game experience
JP6341986B2 (ja) 描画装置、その描画方法、プログラム及び記録媒体
JP6379107B2 (ja) 情報処理装置並びにその制御方法、及びプログラム
JP7419554B2 (ja) ゲーム内プレイヤー支援用に事前に記録されたゲームプレイビデオのサーフェシング
JP6200062B2 (ja) 情報処理装置、制御方法、プログラム及び記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170517

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170814

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170824

R150 Certificate of patent or registration of utility model

Ref document number: 6200062

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250