図1は、本発明の一実施形態に係るサーバ10を含むシステム1のネットワーク構成を概略的に示すブロック図である。図1に示すように、一実施形態におけるサーバ10は、一般的なコンピュータとして構成される端末装置30とインターネット等の通信網20を介して通信可能に接続されており、この端末装置30を操作するユーザに対して様々なゲームを提供することができる。なお、サーバ10には端末装置30以外の図示しない複数の端末装置も通信可能に接続される。また、サーバ10は、端末装置30を操作するユーザに対してゲーム以外の様々なデジタルコンテンツを提供することができ、デジタルコンテンツの提供以外の様々なインターネットサービスを提供することができ、更に、複数の端末装置30を操作する複数のユーザ間の様々なコミュニケーションを実現するプラットフォームを提供することができる。
サーバ10は、図示のとおり、CPU(プロセッサ)11と、メインメモリ12と、ユーザI/F13と、通信I/F14と、外部メモリ15と、ディスクドライブ16とを含み、これらの各構成要素がバス17を介して互いに電気的に接続されている。CPU11は、外部メモリ15からオペレーティングシステムやオンラインゲームの進行を制御するための制御用プログラム等の様々なプログラムをメインメモリ12にロードし、ロードしたプログラムに含まれる命令を実行する。メインメモリ12は、CPU11が実行するプログラムを格納するために用いられ、例えば、DRAMによって構成される。
ユーザI/F13は、例えば、オペレータの入力を受け付けるキーボードやマウス等の情報入力装置と、CPU11の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。通信I/F14は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介して端末装置30と通信可能に構成される。
外部メモリ15は、例えば磁気ディスクドライブで構成され、オンラインゲームの進行を制御するための制御用プログラム等の様々なプログラムが記憶される。また、外部メモリ15には、ゲームにおいて用いられる各種データも記憶され得る。外部メモリ15に記憶され得る各種データは、サーバ10と通信可能に接続されるサーバ10とは物理的に別体のデータベースサーバに格納されてもよい。ディスクドライブ16は、CD−ROM、DVD−ROM、DVD−R等の各種の記憶メディアに格納されたデータを読み込み、又は、これらの記憶メディアにデータを書き込む。例えば、記憶メディアに格納されたゲームアプリケーションやゲームデータ等のデータは、ディスクドライブ16により読み込まれ、外部メモリ15にインストールされる。
一実施形態において、サーバ10は、階層構造の複数のウェブページから成るウェブサイトを管理するウェブサーバであり、端末装置30に対してゲームサービスを提供することができる。端末装置30は、ウェブページを表示するためのHTMLデータをサーバ10から取得し、取得したHTMLデータを解析して、当該ウェブページを端末装置30のユーザ(ゲームのユーザ)に提示することができる。このようなウェブページを介して提供されるゲームは、ブラウザゲームと称されることがある。外部メモリ15には、このウェブページを表示するためのHTMLデータも記憶される。HTMLデータは、HTML等のマークアップ言語で記述されたHTML文書から成り、このHTML文書には、様々な画像が関連付けられる。また、HTML文書には、ActionScriptやJavaScript(登録商標)等のスクリプト言語等で記述されたプログラムが埋め込まれ得る。
外部メモリ15には、端末装置30においてブラウザソフトウェア以外の実行環境上で実行されるゲームアプリケーションも格納され得る。このゲームアプリケーションには、ゲームを実行するためのゲームプログラムや当該ゲームプログラム実行時に参照される画像データ等の各種データを含めることができる。ゲームプログラムは、例えば、Objective−C、Java(登録商標)等のオブジェクト指向プログラミング言語で作成される。作成されたゲームプログラムは、各種データとともに、アプリケーションソフトウェアとして外部メモリ15に記憶される。外部メモリ15に記憶されたアプリケーションソフトウェアは、配信要求に応じて端末装置30に配信される。サーバ10から配信されたアプリケーションソフトウェアは、端末装置30において、CPU31の制御に従って通信I/F34を介して受信され、受信されたゲームプログラムが外部メモリ35に送信され記憶される。このアプリケーションソフトウェアは、ユーザによる端末装置30の操作に応じて起動され、端末装置30に実装されたNgCore(商標)やAndroid(商標)等のプラットフォーム上で実行される。サーバ10は、端末装置30で実行されているゲームアプリケーションに対してゲームの進行に必要な各種データを提供する。また、サーバ10は、端末装置30から送信される各種データをユーザごとに記憶することで、ユーザごとにゲームの進行を管理することができる。
このように、サーバ10は、ゲームサービスを提供するウェブサイトを管理し、当該ウェブサイトを構成するウェブページを端末装置30からの要求に応じて配信することにより、ゲームを進行させることができる。また、サーバ10は、このようなブラウザゲームとは代替的に、又は、ブラウザゲームに加えて、端末装置30で実行されるゲームアプリケーションとの通信に基づいてゲームを進行させることができる。サーバ10は、いずれの態様でゲームを提供するにしても、各ユーザを識別する識別情報ごとにゲームの進行に必要なデータを記憶することができる。詳細な説明は省略するが、サーバ10は、ゲームの開始時のユーザの認証処理やゲームの進行に応じて発生する課金処理を行う機能を有することもできる。サーバ10によって提供されるゲームには、アクションゲーム、ロールプレイングゲーム、スポーツ対戦ゲーム、カードゲーム等の任意のゲームが含まれる。サーバ10のウェブサイト又はゲームアプリケーションによって実現されるゲームの種類は、本明細書において明示されたものに限られない。
端末装置30は、一実施形態において、サーバ10から取得したゲーム用ウェブサイトのウェブページをウェブブラウザ上で表示すると共にゲームアプリケーションを実行するためのアプリケーション実行環境を実装した任意の情報処理装置であり、スマートフォン、タブレット端末、及びゲーム専用端末等が含まれ得る。
端末装置30は、図示のとおり、CPU(プロセッサ)31と、メインメモリ32と、ユーザI/F33と、通信I/F34と、外部メモリ35と、を含み、これらの各構成要素がバス36を介して互いに電気的に接続されている。
CPU31は、外部メモリ35からオペレーティングシステム等の様々なプログラムをメインメモリ32にロードし、ロードしたプログラムに含まれる命令を実行する。メインメモリ32は、CPU31が実行するプログラムを格納するために用いられ、例えば、DRAMによって構成される。
ユーザI/F33は、ユーザの入力を受け付ける情報入力装置と、CPU31の演算結果を出力する情報出力装置であり、タッチパネルを備える液晶ディスプレイなどの表示装置を含む。
通信I/F34は、ハードウェア、ファームウェア、又は、TCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介してサーバ10と通信可能に構成される。
外部メモリ35は、例えば磁気ディスクドライブやフラッシュメモリ等により構成され、オペレーティングシステム等の様々なプログラムを記憶する。また、外部メモリ35は、サーバ10から通信I/F34を介してゲームアプリケーションを受信した場合には、この受信したゲームアプリケーションを記憶する。
このようなアーキテクチャを有する端末装置30は、例えば、HTML形式のファイル(HTMLデータ)を解釈して画面表示するためのブラウザソフトウェアを備えており、このブラウザソフトウェアの機能によりサーバ10から取得したHTMLデータを解釈して、受信したHTMLデータに対応するウェブページを表示することができる。また、端末装置30は、ブラウザソフトウェアに組み込まれるプラグインソフト(例えば、アドビシステムズ社から提供されているFlash Player)を備えており、HTMLデータに埋め込まれたSWF形式のファイルをサーバ10から取得し、当該SWF形式のファイルをブラウザソフトウェア及びプラグインソフトを用いて実行することができる。
端末装置30においてゲームが実行されると、例えば、プログラムにより指示されたアニメーションや操作用アイコンが端末装置30の画面に表示される。ユーザは、端末装置30の入力インタフェースを用いてゲームを進行させるための指示を入力することができる。ユーザから入力された指示は、端末装置30のブラウザやNgCore(商標)等のプラットフォームの機能を通じてサーバ10に伝達される。
次に、一実施形態におけるサーバ10のCPU11によって実行されるゲームプログラム50について説明する。図2は、一実施形態におけるゲームプログラム50のモジュール構成を示すブロック図である。ゲームプログラム50は、図示するように、ゲームの進行を制御するように構成されたゲーム進行制御モジュール51と、端末装置30にゲームの進行に応じたゲーム用画面の1フレームを表示させるためにこの端末装置30において実行される複数の描画コマンドが記述されたフレーム情報であって、第1の端末装置30に表示させる第1のゲーム用画面に対応する第1のフレーム情報、及び、第2の端末装置30に表示させる第2のゲーム用画面に対応する第2のフレーム情報をゲームの進行に応じて生成するように構成された生成モジュール52と、端末装置30からの描画実行時間情報(所定情報)の送信に応じて特定された端末装置30の処理能力に基づいて、生成されたフレーム情報を端末装置30に対して送信するか否かを判定するように構成された判定モジュール53と、生成されたフレーム情報を圧縮する圧縮モジュール54と、端末装置30に対して送信すると判定された第1のフレーム情報及び第2のフレーム情報を第1の端末装置30及び第2の端末装置30にそれぞれ送信するように構成された送信制御モジュール55と、描画実行時間情報の送信を端末装置30に対して要求するように構成された要求モジュール56と、を備える。こうしたゲームプログラム50をCPU11に実行させることによって、一実施形態におけるサーバ10は、ゲームプログラム50が備える各モジュールの機能に対応する手段又はユニットとして機能することができる。
図3は、サーバ10の外部メモリ15等に構成される統計情報管理テーブルで管理される情報の一例を示す説明図である。一実施形態における統計情報管理テーブルは、図示するように、端末装置30を識別する「端末ID」と対応付けて、この端末装置30に対して描画実行時間情報を要求した時刻を示す「送信時刻」、この要求に応じて端末装置30から送信された「描画実行時間情報」、この要求に応じて端末装置30から送信された描画実行時間情報をサーバ10で受信した時刻を示す「受信時刻」、この端末装置30に対するフレームレート(単位時間当たりのフレーム数)の上限値を示す「フレームレート上限値」等の情報が管理されている。ここで、「描画実行時間情報」は、一実施形態では、端末装置30において、ゲーム用画面の1フレームに対応するフレーム情報に記述された複数の描画コマンドの実行に要した時間の平均値(1フレーム描画(表示)するのに要する時間の平均値)であり、例えば、端末装置30において直近の所定数(例えば、10)のフレームに対応するフレーム情報に記述された複数の描画コマンドの実行に要した時間の移動平均値である。これらの統計情報管理テーブルで管理される情報を設定する動作については後述する。
次に、こうして構成された一実施形態におけるサーバ10の動作について説明する。前述したように、一実施形態におけるサーバ10は様々なゲームを提供可能であるが、本発明の一実施形態を説明するために適した例として、複数のユーザによって同時にプレイされるマルチユーザオンラインゲームの提供に関係する動作について説明する。
ここで、まず、一実施形態におけるマルチユーザオンラインゲームの概要を説明する。一実施形態におけるマルチユーザオンラインゲームでは、複数のユーザが自己のキャラクタ等を共通のゲーム空間内を移動させてゲームを進行させる。マルチユーザオンラインゲームのより具体的な例としては、ロールプレイングゲーム、シューティングゲーム、及びアクションゲーム等の様々なゲームを例示することができる。こうしたゲームを進行させる処理は、主にゲーム進行制御モジュール51を実行することによって行われる。具体的には、例えば、端末装置30からの入力情報として、キャラクタ等の移動操作に関する情報や所定のアクション(例えば、攻撃、会話、アイテムの取得等)の実行指示に関する情報等の様々な情報を受信し、この受信した入力情報に応じて、端末装置30を操作するユーザに対応するキャラクタ等のゲーム空間内での現在位置を演算したり、指示されたアクションに応じた処理(例えば、他のユーザに対応するキャラクタやノンプレイヤキャラクタとの対戦処理、会話処理、及びアイテムの取得処理等)を行ったり、ユーザの獲得した得点を計算する。
次に、上述したゲームの進行に応じたゲーム用画面の端末装置30への表示に関する動作について説明する。図4は、マルチユーザオンラインゲームの進行に応じたゲーム用画面を端末装置30に表示させるためのフレーム情報生成・送信処理の一例を示すフロー図である。この処理は、サーバ10によって所定の時間間隔で(例えば、40ミリ秒毎に)繰り返し実行される。フレーム情報生成・送信処理では、まず、図示するように、ゲーム用画面の1フレームに対応するフレーム情報を生成する(ステップS110)。このフレーム情報は、マルチユーザオンラインゲームをプレイする複数のユーザ毎(即ち、端末装置30毎)に生成される。端末装置30に表示されるゲーム用画面60の1フレームの一例を図5に示す。一実施形態におけるゲーム用画面60は、ユーザが操作するユーザキャラクタのゲーム空間内における現在位置及び方向に応じた画面が表示され、図示するように、背景62上に、ユーザが操作するユーザキャラクタ70、他のユーザが操作するユーザキャラクタ72、アイテム74、及びユーザが獲得したスコア等をテキスト表示するスコア表示オブジェクト76等の様々なオブジェクトが重畳して表示される。図示するように、背景62は、縦横に所定の長さ(例えば、縦16ピクセル×横16ピクセル等)を有する同一形状(この例では矩形状)の複数のタイル画像(単位オブジェクト)が縦方向及び横方向に連続して配置される領域として構成されており、例えば、背景62の左上隅の領域は、横方向に連続して配置される画像ファイルI1−I3と、その下側において横方向に連続して配置される画像ファイルI4−I6とによって構成されている。また、ユーザキャラクタ70は、画像ファイルI7、I8及びI9によって構成され、ユーザキャラクタ72は、画像ファイルI10、I11及びI12によって構成され、アイテム74は、画像ファイルI13によって構成されている。
このように構成されたゲーム用画面60の1フレームを表示させるために端末装置30において実行される複数の描画コマンドがフレーム情報に記述される。描画コマンドは、例えば、端末装置30のブラウザによって実行可能なコマンドである。図6は、図5に例示したゲーム用画面60の1フレームを端末装置30に表示させるための描画コマンドが記述されたフレーム情報80の一例である。図示するように、フレーム情報80の上段領域82には、背景62を描画するための描画コマンドが記述されており、この上段領域82の下側の下段領域84には、背景62に重畳して配置する各オブジェクト(具体的には、ユーザキャラクタ70、ユーザキャラクタ72、アイテム74、及びスコア表示オブジェクト76)を描画するための描画コマンドが記述されている。描画コマンドには複数の種類が存在し、例えば、画像ファイルを描画するための「drawImage」コマンド、テキストを描画するための「fillText」コマンド、描画するオブジェクトの回転角度を設定する「rotate」コマンド等の描画コマンドが存在する。一実施形態において、描画コマンド「drawImage」は、引数として、画像ファイルを特定するファイル名、及び、この画像ファイルを描画する座標を特定する座標情報を含み、この座標情報によって特定される座標にファイル名によって特定される画像ファイルを描画するためのコマンドである。また、描画コマンド「fillText」は、引数として、描画するテキスト、及び、このテキストを描画する座標を特定する座標情報とを含み、座標情報によって特定される座標にテキストを描画するためのコマンドである。さらに、描画コマンド「rotate」は、引数として、オブジェクトの回転角度を含み、上述した「drawImage」や「fillText」等のオブジェクトを描画する描画コマンドと組み合せて用いられ(例えば、オブジェクトを描画する描画コマンドの直前に記述され)、組み合せて用いられた描画コマンドによって描画するオブジェクトの回転角度を設定するためのコマンドである。なお、こうした描画コマンドの種類及び用法は例示であって、その他の種類の描画コマンドを適用することもできる。例えば、HTML5のcanvas要素に準じたその他の描画コマンドの種類及び用法や、他の規格に準じた描画コマンドの種類及び用法を適用することもできる。
フレーム情報の他の例であるフレーム情報90を図7に示す。このフレーム情報90は、上述したフレーム情報80に基づいて生成される。フレーム情報90は、具体的には、描画コマンド「drawImage」に含まれる座標情報が、直前に記述された同じ種類の描画コマンド「drawImage」に含まれる座標情報によって特定される座標との差異を座標情報として含むように変換されている。例えば、図示するように、「drawImage(“I2”,13,−4)」という描画コマンドは、直前に記述された描画コマンド「drawImage(“I1”,−3,−4)」の座標情報によって特定される座標との差異を座標情報として含むように、「drawImage(“I2”,16,0)」に変換されている。同様に、「drawImage(“I3”,29,−4)」という描画コマンドは、「drawImage(“I3”,16,0)」に変換されている。ここで、背景62を構成する複数のタイル画像は、縦横に所定の長さを有する同一形状であるから、縦又は横に連続する2つのタイル画像の座標の差異は、何れの組合せにおいても同じ値となる(図7の例では、横に連続するタイル画像の座標の差異は「16,0」となる)。また、フレーム情報90は、描画コマンド「rotate」に含まれる回転角度情報が、直前に記述された同じ種類の描画コマンド「rotate」の回転角度情報によって特定される回転角度との差異を回転角度情報として含むように変換されている。例えば、図示するように、画像ファイル「I8」の回転角度を設定する描画コマンド「rotate(45)」及び画像ファイル「I9」の回転角度を設定する描画コマンド「rotate(45)」は、それぞれ「rotate(0)」に変換されている。ここで、例えば、ユーザキャラクタ70を構成する画像ファイルI7−I9のように、1つのオブジェクトを構成する複数の画像ファイルはフレーム内において同じ回転角度が設定される傾向にあるから、この結果、直前に記述された描画コマンド「rotate」の回転角度情報によって特定される回転角度との差異は連続して値「0」となる傾向となる。フレーム情報80及びフレーム情報90は何れも、直前のフレームのフレーム情報に依存せず、フレーム情報内に1つのフレームを描画するために必要な情報が含まれている。
上述したように、フレーム情報は、マルチユーザオンラインゲームをプレイする複数のユーザ毎に生成される。図8は、マルチユーザオンラインゲームをプレイする第1のユーザの端末装置30−1及び第2のユーザの端末装置30−2にそれぞれ表示されるゲーム用画面60−1及び60−2の1フレームの一例である。この例では、端末装置30−1を操作する第1のユーザがユーザキャラクタ70を操作し、端末装置30−2を操作する第2のユーザがユーザキャラクタ72を操作している。図示するように、各ユーザが操作する各ユーザキャラクタのゲーム空間内における現在位置及び方向に応じた画面が各端末装置30に表示される。例えば、図示するように、ユーザキャラクタ70を操作する第1のユーザ用のゲーム用画面60−1では、ユーザキャラクタ70が画面中央に表示され、このユーザキャラクタ70の左前方にアイテム74が表示されると共に右前方に第2のユーザが操作するユーザキャラクタ72が表示されている。一方、ユーザキャラクタ72を操作する第2のユーザ用のゲーム用画面60−2では、ユーザキャラクタ72が画面中央に表示され、このユーザキャラクタ72の左前方に第1のユーザが操作するユーザキャラクタ70が表示されると共に右前方にアイテム74が表示されている。また、各ゲーム用画面60−1及び60−2が有するスコアオブジェクト76には、対応するユーザが獲得したスコア等がそれぞれ表示されている。
図9は、マルチユーザオンラインゲームをプレイする第1のユーザの端末装置30−1、第2のユーザの端末装置30−2、及び、第1のユーザ及び第2のユーザの両方によって利用される端末装置30−3にそれぞれ表示されるゲーム用画面60−1、60−2及び60−3の一例である。この例では、端末装置30−1及び30−2に加え、端末装置30−3を用いてマルチユーザオンラインゲームが行われ、この端末装置30−3は、例えば、通信機能を有する一般的なテレビ受像機としても構成され、通信網20を介して一実施形態におけるサーバ10と通信可能に接続されている。この例では、図示するように、第1のユーザの端末装置30−1及び第2のユーザの端末装置30−2にそれぞれ表示されるゲーム用画面60−1及び60−2は、上端中央に上述したスコア表示オブジェクト76が配置され、その下側にユーザによる入力操作を受け付けるための入力操作領域100が配置されている。入力操作領域100は、図示するように、上下左右の方向等を入力する方向入力オブジェクト102と、各メニュー(図9においては、「1」,「2」,「3」,「4」と表示されている)の実行指示を入力するメニュー指示入力オブジェクト104とを有する。また、端末装置30−3に表示されるゲーム用画面60−3は、各ユーザキャラクタ70及び72のゲーム空間内における現在位置に応じた画面が表示され、入力操作領域100に相当する領域は含まれていない。各ユーザは、端末装置30−3のゲーム用画面60−3を確認しながら、端末装置30−1及び30−2に表示されているゲーム用画面60−1及び60−2の入力操作領域100(方向入力オブジェクト102及びメニュー指示入力オブジェクト104)をタッチ操作等することによって、各ユーザキャラクタ70及び72を移動させたり、各メニューを実行して、マルチユーザオンラインゲームを進行させることができる。なお、各ユーザキャラクタ70及び72のゲーム空間内における距離に応じて、ゲーム用画面60−3をズームイン又はズームアウトしたり、又、所定範囲よりも離れた場合に、ユーザキャラクタ70を含むサブ画面とユーザキャラクタ72を含むサブ画面とに分割してゲーム用画面60−3を表示するようにしても良い。なお、端末装置30−1及び30−2にゲーム用画面60−1及び60−2を表示させることなく、端末装置30−1及び30−2を、例えば、ジャイロセンサー、GPS、カメラ、音声入出力といった端末機能を利用した入力センサー(入力端末)として機能させることもできる。この場合、ゲーム用画面60−3が、端末装置30−3にのみ表示され、各ユーザは、端末装置30−3のゲーム用画面60−3を確認しながら、端末装置30−1及び30−2をタッチ操作等することによって、各ユーザキャラクタ70及び72を移動させたり、各メニューを実行して、マルチユーザオンラインゲームを進行させることができる。この場合、例えば、端末装置30−1及び30−2からの入力信号が無線LAN等を経由して端末装置30−3に送信され、この入力信号に応じた入力情報が端末装置30−3からサーバ10に対して送信される。
図8及び図9に例示したように、一実施形態におけるサーバ10では、複数の端末装置30に対応する複数の異なるゲーム用画面60が提供され、これらのゲーム用画面60の1フレームに対応するフレーム情報がステップS110において生成される。なお、図8及び図9に示したゲーム用画面60は例示であって、様々な複数の端末装置30及びその組合せに対して、様々な複数の異なるゲーム用画面60を提供することができる。
こうしてフレーム情報を生成すると、次に、生成したフレーム情報を端末装置30に送信するか否かを判定する(ステップS112)。一実施形態においては、上述した統計情報管理テーブルで管理されている端末装置30毎の「フレームレート上限値」の範囲内でフレーム情報が送信されるように、フレーム情報の送信の要否が判定される。例えば、このフレーム情報生成・送信処理が40ミリ秒毎に繰り返し実行される場合には、フレーム情報をそのまま送信するとフレームレートは25fps(1000/40ミリ秒)となるから、設定されている上限値が例えば25fpsより小さい20fpsである場合には、この上限値である20fpsの範囲内となるように、25フレームのうちの5フレームは(フレーム情報生成・送信処理を25回実行するうちの5回は)フレーム情報を送信しないと判定される。また、例えば、端末装置30毎に直近の実際のフレームレートを演算して統計情報管理テーブル等のテーブルを用いて管理し、この実際のフレームレートが上限値の範囲内となるまではフレーム情報を送信しないと判定するようにしても良い。なお、フレームレートの上限値の範囲内でフレーム情報が送信されるようにする方法は、これらに限定されない。また、統計情報管理テーブルの「フレームレート上限値」に値「0」が設定されている場合には、常に、フレーム情報を送信しないと判定される。「フレームレート上限値」の設定方法については後述する。
そして、フレーム情報を送信すると判定された場合には、このフレーム情報を圧縮して端末装置30に送信し(ステップS114)、フレーム情報を送信しないと判定された場合には、このフレーム情報の送信をスキップして(ステップS116)、フレーム情報生成・送信処理を終了する。フレーム情報の圧縮は、様々な圧縮アルゴリズムを用いて行うことができ、例えば、「deflate」等の可逆圧縮アルゴリズムを用いて行うことができる。ここで、図7に例示したフレーム情報90のように、座標情報や回転角度情報が直前の座標や回転角度との差異となるように変換されたフレーム情報を用いる場合には、上述したように、座標情報や回転角度情報(描画コマンドの引数)に同じ値が多く含まれるから、フレーム情報を圧縮する際の圧縮率がより高くなる。また、フレーム情報の圧縮は、複数のフレームを跨って行うことができ、例えば、フレームを跨って辞書を用いた圧縮を行うこともできる。こうしたフレーム情報生成・送信処理が繰り返し実行されると、端末装置30では、受信したフレーム情報を復号すると共にフレーム情報に記述されている描画コマンドを例えばブラウザ上で実行し、ゲーム用画面60のフレームが順に繰り返し表示される。なお、上述したフレーム情報90のように、座標情報や回転角度情報が直前の座標や回転角度との差異となるように変換されたフレーム情報である場合には、端末装置30において、座標情報や回転角度情報を、座標や回転角度を直接特定する情報に逆変換した上で、描画コマンドが実行される。
以上、ゲームの進行に応じたゲーム用画面の端末装置30への表示に関する動作について説明した。次に、端末装置30の処理能力に関する統計情報の取得に関する動作について説明する。図8は、端末装置30の処理能力を特定するために統計情報を取得する統計情報取得処理の一例を示すフロー図である。この処理は、サーバ10によって所定の時間間隔で(例えば、100ミリ秒毎に)繰り返し実行される。統計情報取得処理では、まず、図示するように、端末装置30に対して描画実行時間情報を要求する(ステップS200)。この要求は、マルチユーザオンラインゲームをプレイする複数のユーザが操作する端末装置30毎に行われる。描画実行時間情報の要求は、一実施形態では、サーバ10によって管理されている現在時刻と、描画実行時間情報の送信を指示する情報とを端末装置30に対して送信することによって行われる。これらの情報を受信した端末装置30では、受信した現在時刻(サーバ10が描画実行時間情報を要求した時刻)と端末装置30における描画実行時間情報とをサーバ10に対して送信する。ここで、一実施形態においては、端末装置30において描画実行時間情報(例えば、1フレーム描画するのに要する時間の平均値)を管理する処理を行うように記述されたプログラムが実行され、このプログラムの実行によって管理されている描画実行時間情報がサーバ10に対して送信される。
続いて、端末装置30から受信した情報を統計情報管理テーブルに登録する(ステップS210)。具体的には、受信した現在時刻が「送信時刻」に設定され、受信した描画実行時間情報が「描画実行時間情報」に設定され、これらの情報を受信した時刻が「受信時刻」に設定される。
そして、端末装置30に対するフレームレートの上限値を設定して(ステップS220)、この統計情報取得処理を終了する。フレームレートの上限値の設定は、様々な方法で行うことができる。例えば、描画実行時間情報に基づいて端末装置30によって処理可能なフレームレートを上限値として設定することができる。具体的には、例えば、端末装置30における1フレームの描画時間(の平均値)が50ミリ秒である場合には、1秒当たりに描画できるフレーム数は20となるから、フレームレートの上限値を20fps(Frames Per Second)又はそれより小さい値(例えば、20fps×0.8=16fps)とすることができる。また、フレームレートの上限値を設定する他の方法として、例えば、端末装置30に対して描画実行時間情報を要求してから端末装置30から描画実行時間情報を受信するまでの経過時間(ラウンドトリップタイム(RTT)、統計情報管理テーブルの送信時刻と受信時刻とに基づき計算することができる)に基づいて、端末装置30によって処理可能なフレームレートを上限値として設定することができる。具体的には、例えば、フレームレートの上限値を実験値に基づいて「3000/RTT(ミリ秒)」と設定することができる。この場合、例えば、RTTが100ミリ秒で有る場合には、フレームレートの上限値は30fpsとなり、RTTが150ミリ秒で有る場合には、フレームレートの上限値は20fpsとなる。このようにRTTに基づいてフレームレートの上限値を設定することにより、例えば、モバイルネットワークにおいて基地局の切り替え(ハンドオーバー)が生じた場合等、一時的にRTTが増大した場合に、フレームレートの上限値が小さくなって端末装置30に対して送信されるフレーム情報が減少するから、端末装置30における通信状況が回復した後に処理すべきフレーム情報が減少し、通常の処理への早期の復旧を図ることができる。また、RTTが所定の閾値(例えば、500ミリ秒)を超える場合には、フレームレートの上限値に値「0」を設定するようにしても良い。こうすれば、端末装置30における通信状況が極端に悪い場合に、フレーム情報の送信を停止することができるから、通常の処理へのより一層の早期の復旧を図ることができる。なお、ステップS220におけるフレームレートの上限値の設定は、統計情報取得処理とは別のタイミングで行うようにしても良い。
ここで、例えば、フレームレートの上限値に値「0」が設定され、図4に例示したフレーム情報生成・送信処理において、フレーム情報の送信が連続してスキップされる場合を考える。この場合、フレーム情報生成・送信処理ではサーバ10から端末装置30へのフレーム情報の送信は行われないから、例えば、TCP通信におけるパケットロスが生じている場合であっても、端末装置30から確認応答が送信されない状態のまま一定時間(例えば、3秒)が経過するのを待ってパケットの再送が行われることになり得る。しかしながら、一実施形態においては、端末装置30へのフレーム情報の送信が行われない間も、前述した統計情報取得処理によって端末装置30に対するデータ通信(描画実行時間情報の要求)が発生するから、TCP通信における「TCP fast retransmit」機能によって、上述した一定時間が経過するのを待つことなくパケットの再送が行われ、より早期にパケットロスを回復することができる。
以上説明した一実施形態におけるサーバ10では、端末装置30にゲームの進行に応じたゲーム用画面60の1フレームを表示させるために端末装置30において実行される複数の描画コマンドが記述されたフレーム情報であって、各端末装置30にそれぞれ表示させる各ゲーム用画面に対応するフレーム情報をゲームの進行に応じてそれぞれ生成し、この生成されたフレーム情報を各端末装置30にそれぞれ送信する。従って、各ゲーム用画面に対応するフレーム情報は、描画コマンドによって構成されるテキストベースの情報となるから、各ゲーム用画面に対応する動画ファイルを生成して送信する場合と比較して、サーバ側のCPU負荷を低減することができる。また、こうした端末装置30において実行される描画コマンドが記述されたフレーム情報を用いたゲーム用画面の表示は、例えば、既存のWeb技術を用いて実現することができるから、専用のプロトコル等を開発することなく、より簡易な仕組みで実現することができる。このように、より簡易な仕組みで端末毎に異なるゲーム用画面を表示させたり、端末毎に異なるゲーム用画面を表示させる際のサーバ側の負荷を低減することができる
また、一実施形態におけるサーバ10では、フレーム情報を生成、圧縮して端末装置30に送信する。従って、ゲーム用画面を動画ファイルとして送信する場合と比較すると、描画コマンドの容量は小さく、また、圧縮処理に対する負荷も小さいから、端末装置30との通信量を低減すると共にサーバ10の負荷を軽減することができる。また、フレーム情報90では、描画コマンド「drawImage」(第1の種類の描画コマンド)に含まれる座標情報が、直前に記述された同じ種類の描画コマンド「drawImage」に含まれる座標情報によって特定される座標との差異を座標情報として含むように変換されて、座標情報には同じ値が多く含まれるようになっているから、フレーム情報を圧縮する際の圧縮率をより高くすることができる。同様に、フレーム情報90では、描画コマンド「rotate」(第2の種類の描画コマンド)に含まれる回転角度情報が、直前に記述された同じ種類の描画コマンド「rotate」の回転角度情報によって特定される回転角度との差異を回転角度情報として含むように変換されて、回転角度情報には同じ値が多く含まれるようになっているから、フレーム情報を圧縮する際の圧縮率をより高くすることができる。この結果、通信量をより一層低減することができる。
また、一実施形態におけるサーバ10では、第1の時間間隔で、端末装置30にゲームの進行に応じたゲーム用画面の1フレームを表示させるためのフレーム情報を生成し、第2の時間間隔で、描画実行時間情報(所定情報)の送信を端末装置30に対して要求し、端末装置30からの描画実行時間情報の送信に応じて特定された端末装置30の描画時間やRTT(処理能力)に基づいてフレーム情報を端末装置30に対して送信するか否かを判定し、送信すると判定されたフレーム情報を端末装置30に対して送信する。従って、端末装置30の処理能力に応じて、フレーム情報の送信の有無を制御するから、端末装置30の処理能力に応じたより適切なフレームレートでゲーム用画面を送信することができる。
一実施形態では、端末装置30の処理能力として描画時間やRTTを例示したが、これらに限定されず、その他の情報を端末装置30の処理能力として用いることもできる。また、一実施形態では、描画時間やRTTに基づいてフレームレートの上限値を設定し、この上限値の範囲内でフレーム情報が送信されるようにしたが、必ずしもフレームレートの上限値を用いて制御する必要はない。描画時間やRTT等の端末装置30の処理能力に基づいてフレーム情報の送信の有無を判定する他の様々な方法を適用し得る。
本明細書で説明された処理及び手順は、実施形態中で明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。より具体的には、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク、光ストレージ等の媒体に、当該処理に相当するロジックを実装することによって実現される。また、本明細書で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び/又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一のメモリに格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数のメモリまたは複数の装置に分散して配置された複数のメモリに分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。