(57)【特許請求の範囲】
【請求項１】
通信可能に接続された複数の端末装置に対してゲームを提供するサーバであって、
前記端末装置から送信される入力情報に応じて前記ゲームを進行させるゲーム進行手段と、
所定の時間間隔で、前記端末装置に前記ゲームの進行に応じたゲーム用画面の１フレームを表示させるために当該端末装置において実行される複数の描画コマンドであって、描画するオブジェクトを特定可能なオブジェクト情報と当該オブジェクトを描画する座標を特定可能な座標情報とを含む少なくとも複数の第１の種類の描画コマンドが記述されたフレーム情報を前記ゲームの進行に応じて生成する生成手段と、
前記生成されたフレーム情報を圧縮する圧縮手段と、
前記圧縮されたフレーム情報を前記端末装置に送信する送信手段と、
を備え、
前記ゲーム用画面は、同一形状の複数の単位オブジェクトが縦方向及び／又は横方向に連続して配置される領域を含み、
前記フレーム情報は、少なくとも前記連続して配置される前記複数の単位オブジェクトを描画する複数の前記第１の種類の描画コマンドが当該単位オブジェクトが配置される順序に従って記述されており、
前記第１の種類の描画コマンドは、直前に記述された前記第１の種類の描画コマンドが存在する場合には、前記オブジェクトを描画する座標と、当該直前に記述された前記第１の種類の描画コマンドの座標情報によって特定される座標との差異を前記座標情報として含む、
サーバ。
【請求項２】
請求項１記載のサーバであって、
前記フレーム情報は、描画可能なオブジェクトの回転角度を特定可能な回転角度情報を含む第２の種類の描画コマンドが記述され、
前記第２の種類の描画コマンドは、直前に記述された前記第２の種類の描画コマンドが存在する場合には、前記オブジェクトの回転角度と、当該直前に記述された前記第２の種類の描画コマンドの回転角度情報によって特定される回転角度との差異を前記回転角度情報として含む、
サーバ。
【請求項３】
請求項１又は２記載のサーバであって、
前記ゲームは、前記複数の端末装置をそれぞれ操作する複数のユーザによって同時にプレイされ、
前記生成手段は、前記複数の端末装置毎に前記フレーム情報を生成し、
前記送信手段は、前記圧縮されたフレーム情報を前記複数の端末装置毎に送信する、
サーバ。
【請求項４】
サーバによって、当該サーバと通信可能に接続された複数の端末装置に対してゲームを提供する方法であって、
前記端末装置から送信される入力情報に応じて前記ゲームを進行させ、
所定の時間間隔で、前記端末装置に前記ゲームの進行に応じたゲーム用画面の１フレームを表示させるために当該端末装置において実行される複数の描画コマンドであって、描画するオブジェクトを特定可能なオブジェクト情報と当該オブジェクトを描画する座標を特定可能な座標情報とを含む少なくとも複数の第１の種類の描画コマンドが記述されたフレーム情報を前記ゲームの進行に応じて生成し、
前記生成されたフレーム情報を圧縮し、
前記圧縮されたフレーム情報を前記端末装置に送信し、
前記ゲーム用画面は、同一形状の複数の単位オブジェクトが縦方向及び／又は横方向に連続して配置される領域を含み、
前記フレーム情報は、少なくとも前記連続して配置される前記複数の単位オブジェクトを描画する複数の前記第１の種類の描画コマンドが当該単位オブジェクトが配置される順序に従って記述されており、
前記第１の種類の描画コマンドは、直前に記述された前記第１の種類の描画コマンドが存在する場合には、前記オブジェクトを描画する座標と、当該直前に記述された前記第１の種類の描画コマンドの座標情報によって特定される座標との差異を前記座標情報として含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームを提供するサーバ及び方法に関し、詳しくは、通信可能に接続された複数の端末装置に対してゲームを提供するサーバ及び方法に関する。
【背景技術】
【０００２】
従来より、インターネット等の通信回線を介して接続されたパソコン、スマートフォン又はゲーム専用端末等のユーザ端末に対してオンラインゲームを提供するシステムが知られている（例えば、特許文献１参照）。例えば、一般にクラウドゲーミングと呼ばれるサービスを提供するシステムでは、ユーザ端末から送信される入力情報に基づいて、ゲームの進行に応じた演算処理や画像処理をサーバ側で行って、演算結果を動画としてユーザ端末に送信している。また、例えば、一般にマルチプレイヤオンラインゲームと呼ばれるサービスを提供するシステムでは、ゲームの専用端末や専用ソフトウェアをインストールしたユーザ端末とサーバとの間で専用のプロトコルを用いた通信を行うことによって、多くのユーザで同時にプレイするゲームの提供を実現している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０６６５２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したクラウドゲーミングでは、ゲーム用画面を動画としてユーザ端末に送信するから、大容量の動画を送信するにはネットワークに負荷がかかり、例えば、通信が不安定なモバイルネットワーク等を介して接続されたユーザ端末に対しては、十分な品質のゲーム用画面を提供することが難しい。さらに、動画を圧縮して容量を低減させる場合であっても、この圧縮処理によってサーバ側のＣＰＵに負荷がかかるから、例えば、多くのユーザで同時にプレイするゲームのようにサーバ側のＣＰＵに負荷がかかるゲームの提供には適しているとは言えない。また、上述したマルチプレイヤオンラインゲームでは、専用端末等とサーバとの間の通信に用いる専用プロトコルを開発する必要が生じてしまう。
【０００５】
本発明の実施形態は、オンラインゲームを提供する際のサーバ側の負荷を軽減すると共に通信量を低減することを目的の一つとする。本発明の他の目的は、本明細書全体を参照することにより明らかとなる。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係るサーバは、通信可能に接続された複数の端末装置に対してゲームを提供するサーバであって、所定のプログラムを実行可能な１又は複数のプロセッサを備え、前記所定のプログラムは、前記端末装置から送信される入力情報に応じて前記ゲームを進行させるゲーム進行モジュールと、所定の時間間隔で、前記端末装置に前記ゲームの進行に応じたゲーム用画面の１フレームを表示させるために当該端末装置において実行される複数の描画コマンドであって、描画するオブジェクトを特定可能なオブジェクト情報と当該オブジェクトを描画する座標を特定可能な座標情報とを含む少なくとも複数の第１の種類の描画コマンドが記述されたフレーム情報を前記ゲームの進行に応じて生成する生成モジュールと、前記生成されたフレーム情報を圧縮する圧縮モジュールと、前記圧縮されたフレーム情報を前記端末装置に送信する送信モジュールと、を備える。
【０００７】
本発明の一実施形態に係る方法は、通信可能に接続された複数の端末装置に対してゲームを提供する方法であって、前記端末装置から送信される入力情報に応じて前記ゲームを進行させ、所定の時間間隔で、前記端末装置に前記ゲームの進行に応じたゲーム用画面の１フレームを表示させるために当該端末装置において実行される複数の描画コマンドであって、描画するオブジェクトを特定可能なオブジェクト情報と当該オブジェクトを描画する座標を特定可能な座標情報とを含む少なくとも複数の第１の種類の描画コマンドが記述されたフレーム情報を前記ゲームの進行に応じて生成し、前記生成されたフレーム情報を圧縮し、前記圧縮されたフレーム情報を前記端末装置に送信する。
【発明の効果】
【０００８】
本発明の様々な実施形態によって、オンラインゲームを提供する際のサーバ側の負荷を軽減すると共に通信量を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るサーバ１０を含むシステム１のネットワーク構成を概略的に示すブロック図。
【図２】一実施形態におけるゲームプログラム５０のモジュール構成を概略的に示すブロック図。
【図３】一実施形態における統計情報管理テーブルの一例を示す説明図。
【図４】一実施形態におけるフレーム情報生成・送信処理の一例を示すフロー図。
【図５】一実施形態におけるゲーム用画面６０の一例を示す説明図。
【図６】一実施形態におけるフレーム情報の一例を示す説明図。
【図７】一実施形態におけるフレーム情報の他の例を示す説明図。
【図８】一実施形態における統計情報取得処理の一例を示すフロー図。
【発明を実施するための形態】
【００１０】
図１は、本発明の一実施形態に係るサーバ１０を含むシステム１のネットワーク構成を概略的に示すブロック図である。図１に示すように、一実施形態におけるサーバ１０は、一般的なコンピュータとして構成される端末装置３０とインターネット等の通信網２０を介して通信可能に接続されており、この端末装置３０を操作するユーザに対して様々なゲームを提供することができる。なお、サーバ１０には端末装置３０以外の図示しない端末装置も通信可能に接続される。また、サーバ１０は、端末装置３０を操作するユーザに対してゲーム以外の様々なデジタルコンテンツを提供することができ、デジタルコンテンツの提供以外の様々なインターネットサービスを提供することができ、更に、複数の端末装置３０を操作する複数のユーザ間の様々なコミュニケーションを実現するプラットフォームを提供することができる。
【００１１】
サーバ１０は、図示のとおり、ＣＰＵ（プロセッサ）１１と、メインメモリ１２と、ユーザＩ／Ｆ１３と、通信Ｉ／Ｆ１４と、外部メモリ１５と、ディスクドライブ１６とを含み、これらの各構成要素がバス１７を介して互いに電気的に接続されている。ＣＰＵ１１は、外部メモリ１５からオペレーティングシステムやオンラインゲームの進行を制御するための制御用プログラム等の様々なプログラムをメインメモリ１２にロードし、ロードしたプログラムに含まれる命令を実行する。メインメモリ１２は、ＣＰＵ１１が実行するプログラムを格納するために用いられ、例えば、ＤＲＡＭによって構成される。
【００１２】
ユーザＩ／Ｆ１３は、例えば、オペレータの入力を受け付けるキーボードやマウス等の情報入力装置と、ＣＰＵ１１の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。通信Ｉ／Ｆ１４は、ハードウェア、ファームウェア、又はＴＣＰ／ＩＰドライバやＰＰＰドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網２０を介して端末装置３０と通信可能に構成される。
【００１３】
外部メモリ１５は、例えば磁気ディスクドライブで構成され、オンラインゲームの進行を制御するための制御用プログラム等の様々なプログラムが記憶される。また、外部メモリ１５には、ゲームにおいて用いられる各種データも記憶され得る。外部メモリ１５に記憶され得る各種データは、サーバ１０と通信可能に接続されるサーバ１０とは物理的に別体のデータベースサーバに格納されてもよい。ディスクドライブ１６は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ等の各種の記憶メディアに格納されたデータを読み込み、又は、これらの記憶メディアにデータを書き込む。例えば、記憶メディアに格納されたゲームアプリケーションやゲームデータ等のデータは、ディスクドライブ１６により読み込まれ、外部メモリ１５にインストールされる。
【００１４】
一実施形態において、サーバ１０は、階層構造の複数のウェブページから成るウェブサイトを管理するウェブサーバであり、端末装置３０に対してゲームサービスを提供することができる。端末装置３０は、ウェブページを表示するためのＨＴＭＬデータをサーバ１０から取得し、取得したＨＴＭＬデータを解析して、当該ウェブページを端末装置３０のユーザ（ゲームのユーザ）に提示することができる。このようなウェブページを介して提供されるゲームは、ブラウザゲームと称されることがある。外部メモリ１５には、このウェブページを表示するためのＨＴＭＬデータも記憶される。ＨＴＭＬデータは、ＨＴＭＬ等のマークアップ言語で記述されたＨＴＭＬ文書から成り、このＨＴＭＬ文書には、様々な画像が関連付けられる。また、ＨＴＭＬ文書には、ＡｃｔｉｏｎＳｃｒｉｐｔやＪａｖａＳｃｒｉｐｔ（登録商標）等のスクリプト言語等で記述されたプログラムが埋め込まれ得る。
【００１５】
外部メモリ１５には、端末装置３０においてブラウザソフトウェア以外の実行環境上で実行されるゲームアプリケーションも格納され得る。このゲームアプリケーションには、ゲームを実行するためのゲームプログラムや当該ゲームプログラム実行時に参照される画像データ等の各種データを含めることができる。ゲームプログラムは、例えば、Ｏｂｊｅｃｔｉｖｅ−Ｃ、Ｊａｖａ（登録商標）等のオブジェクト指向プログラミング言語で作成される。作成されたゲームプログラムは、各種データとともに、アプリケーションソフトウェアとして外部メモリ１５に記憶される。外部メモリ１５に記憶されたアプリケーションソフトウェアは、配信要求に応じて端末装置３０に配信される。サーバ１０から配信されたアプリケーションソフトウェアは、端末装置３０において、ＣＰＵ３１の制御に従って通信Ｉ／Ｆ３４を介して受信され、受信されたゲームプログラムが外部メモリ３５に送信され記憶される。このアプリケーションソフトウェアは、ユーザによる端末装置３０の操作に応じて起動され、端末装置３０に実装されたＮｇＣｏｒｅ（商標）やＡｎｄｒｏｉｄ（商標）等のプラットフォーム上で実行される。サーバ１０は、端末装置３０で実行されているゲームアプリケーションに対してゲームの進行に必要な各種データを提供する。また、サーバ１０は、端末装置３０から送信される各種データをユーザごとに記憶することで、ユーザごとにゲームの進行を管理することができる。
【００１６】
このように、サーバ１０は、ゲームサービスを提供するウェブサイトを管理し、当該ウェブサイトを構成するウェブページを端末装置３０からの要求に応じて配信することにより、ゲームを進行させることができる。また、サーバ１０は、このようなブラウザゲームとは代替的に、又は、ブラウザゲームに加えて、端末装置３０で実行されるゲームアプリケーションとの通信に基づいてゲームを進行させることができる。サーバ１０は、いずれの態様でゲームを提供するにしても、各ユーザを識別する識別情報ごとにゲームの進行に必要なデータを記憶することができる。詳細な説明は省略するが、サーバ１０は、ゲームの開始時のユーザの認証処理やゲームの進行に応じて発生する課金処理を行う機能を有することもできる。サーバ１０によって提供されるゲームには、アクションゲーム、ロールプレイングゲーム、スポーツ対戦ゲーム、カードゲーム等の任意のゲームが含まれる。サーバ１０のウェブサイト又はゲームアプリケーションによって実現されるゲームの種類は、本明細書において明示されたものに限られない。
【００１７】
端末装置３０は、一実施形態において、サーバ１０から取得したゲーム用ウェブサイトのウェブページをウェブブラウザ上で表示すると共にゲームアプリケーションを実行するためのアプリケーション実行環境を実装した任意の情報処理装置であり、スマートフォン、タブレット端末、及びゲーム専用端末等が含まれ得る。
【００１８】
端末装置３０は、図示のとおり、ＣＰＵ（プロセッサ）３１と、メインメモリ３２と、ユーザＩ／Ｆ３３と、通信Ｉ／Ｆ３４と、外部メモリ３５と、を含み、これらの各構成要素がバス３６を介して互いに電気的に接続されている。
【００１９】
ＣＰＵ３１は、外部メモリ３５からオペレーティングシステム等の様々なプログラムをメインメモリ３２にロードし、ロードしたプログラムに含まれる命令を実行する。メインメモリ３２は、ＣＰＵ３１が実行するプログラムを格納するために用いられ、例えば、ＤＲＡＭによって構成される。
【００２０】
ユーザＩ／Ｆ３３は、ユーザの入力を受け付ける情報入力装置と、ＣＰＵ３１の演算結果を出力する情報出力装置であり、タッチパネルを備える液晶ディスプレイなどの表示装置を含む。
【００２１】
通信Ｉ／Ｆ３４は、ハードウェア、ファームウェア、又は、ＴＣＰ／ＩＰドライバやＰＰＰドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網２０を介してサーバ１０と通信可能に構成される。
【００２２】
外部メモリ３５は、例えば磁気ディスクドライブやフラッシュメモリ等により構成され、オペレーティングシステム等の様々なプログラムを記憶する。また、外部メモリ３５は、サーバ１０から通信Ｉ／Ｆ３４を介してゲームアプリケーションを受信した場合には、この受信したゲームアプリケーションを記憶する。
【００２３】
このようなアーキテクチャを有する端末装置３０は、例えば、ＨＴＭＬ形式のファイル（ＨＴＭＬデータ）を解釈して画面表示するためのブラウザソフトウェアを備えており、このブラウザソフトウェアの機能によりサーバ１０から取得したＨＴＭＬデータを解釈して、受信したＨＴＭＬデータに対応するウェブページを表示することができる。また、端末装置３０は、ブラウザソフトウェアに組み込まれるプラグインソフト（例えば、アドビシステムズ社から提供されているＦｌａｓｈ  Ｐｌａｙｅｒ）を備えており、ＨＴＭＬデータに埋め込まれたＳＷＦ形式のファイルをサーバ１０から取得し、当該ＳＷＦ形式のファイルをブラウザソフトウェア及びプラグインソフトを用いて実行することができる。
【００２４】
端末装置３０においてゲームが実行されると、例えば、プログラムにより指示されたアニメーションや操作用アイコンが端末装置３０の画面に表示される。ユーザは、端末装置３０の入力インタフェースを用いてゲームを進行させるための指示を入力することができる。ユーザから入力された指示は、端末装置３０のブラウザやＮｇＣｏｒｅ（商標）等のプラットフォームの機能を通じてサーバ１０に伝達される。
【００２５】
次に、一実施形態におけるサーバ１０のＣＰＵ１１によって実行されるゲームプログラム５０について説明する。図２は、一実施形態におけるゲームプログラム５０のモジュール構成を示すブロック図である。ゲームプログラム５０は、図示するように、端末装置３０から送信される入力情報に応じてゲームを進行させるゲーム進行モジュール５１と、第１の時間間隔（所定の時間間隔）で、ゲームの進行に応じたゲーム用画面の１フレームを表示させるために端末装置３０において実行される複数の描画コマンドであって、描画するオブジェクトを特定可能なオブジェクト情報とこのオブジェクトを描画する座標を特定可能な座標情報とを含む複数の描画コマンドが記述されたフレーム情報をゲームの進行に応じて生成する生成モジュール５２と、生成されたフレーム情報を端末装置３０に対して送信するか否かを判定する判定モジュール５３と、生成されたフレーム情報を圧縮する圧縮モジュール５４と、端末装置３０に対して送信すると判定された圧縮されたフレーム情報を端末装置３０に対して送信する送信モジュール５５と、第２の時間間隔で、端末装置３０に対して描画実行時間情報を要求する要求モジュール５６と、を備える。
【００２６】
図３は、サーバ１０の外部メモリ１５等に構成される統計情報管理テーブルで管理される情報の一例を示す説明図である。一実施形態における統計情報管理テーブルは、図示するように、端末装置３０を識別する「端末ＩＤ」と対応付けて、この端末装置３０に対して描画実行時間情報を要求した時刻を示す「送信時刻」、この要求に応じて端末装置３０から送信された「描画実行時間情報」、この要求に応じて端末装置３０から送信された描画実行時間情報をサーバ１０で受信した時刻を示す「受信時刻」、この端末装置３０に対するフレームレート（単位時間当たりのフレーム数）の上限値を示す「フレームレート上限値」等の情報が管理されている。ここで、「描画実行時間情報」は、一実施形態では、端末装置３０において、ゲーム用画面の１フレームに対応するフレーム情報に記述された複数の描画コマンドの実行に要した時間の平均値（１フレーム描画するのに要する時間の平均値）であり、例えば、端末装置３０において直近の所定数（例えば、１０）のフレームに対応するフレーム情報に記述された複数の描画コマンドの実行に要した時間の移動平均値である。これらの統計情報管理テーブルで管理される情報を設定する動作については後述する。
【００２７】
次に、こうして構成された一実施形態におけるサーバ１０の動作について説明する。前述したように、一実施形態におけるサーバ１０は様々なゲームを提供可能であるが、本発明の一実施形態を説明するために適した例として、複数のユーザによって同時にプレイされるマルチユーザオンラインゲームの提供に関係する動作について説明する。
【００２８】
ここで、まず、一実施形態におけるマルチユーザオンラインゲームの概要を説明する。一実施形態におけるマルチユーザオンラインゲームでは、複数のユーザが自己のキャラクタ等を共通のゲーム空間内を移動させてゲームを進行させる。マルチユーザオンラインゲームのより具体的な例としては、ロールプレイングゲーム、シューティングゲーム、及びアクションゲーム等の様々なゲームを例示することができる。こうしたゲームを進行させる処理は、主にゲーム進行モジュール５１を実行することによって行われる。具体的には、例えば、端末装置３０からの入力情報として、キャラクタ等の移動操作に関する情報や所定のアクション（例えば、攻撃、会話、アイテムの取得等）の実行指示に関する情報等の様々な情報を受信し、この受信した入力情報に応じて、端末装置３０を操作するユーザに対応するキャラクタ等のゲーム空間内での現在位置を演算したり、指示されたアクションに応じた処理（例えば、他のユーザに対応するキャラクタやノンプレイヤキャラクタとの対戦処理、会話処理、及びアイテムの取得処理等）を行ったり、ユーザの獲得した得点を計算する。
【００２９】
次に、上述したゲームの進行に応じたゲーム用画面の端末装置３０への表示に関する動作について説明する。図４は、マルチユーザオンラインゲームの進行に応じたゲーム用画面を端末装置３０に表示させるためのフレーム情報生成・送信処理の一例を示すフロー図である。この処理は、サーバ１０によって所定の時間間隔で（例えば、４０ミリ秒毎に）繰り返し実行される。フレーム情報生成・送信処理では、まず、図示するように、ゲーム用画面の１フレームに対応するフレーム情報を生成する（ステップＳ１１０）。このフレーム情報は、マルチユーザオンラインゲームをプレイする複数のユーザ毎（即ち、端末装置３０毎）に生成される。端末装置３０に表示されるゲーム用画面６０の１フレームの一例を図５に示す。一実施形態におけるゲーム用画面６０は、ユーザが操作するユーザキャラクタのゲーム空間内における現在位置に応じた画面が表示され、図示するように、背景６２上に、ユーザが操作するユーザキャラクタ７０、他のユーザが操作するユーザキャラクタ７２、アイテム７４、及びユーザが獲得したスコア等をテキスト表示するスコア表示オブジェクト７６等の様々なオブジェクトが重畳して表示される。図示するように、背景６２は、縦横に所定の長さ（例えば、縦１６ピクセル×横１６ピクセル等）を有する同一形状（この例では矩形状）の複数のタイル画像（単位オブジェクト）が縦方向及び横方向に連続して配置される領域として構成されており、例えば、背景６２の左上隅の領域は、横方向に連続して配置される画像ファイルＩ１−Ｉ３と、その下側において横方向に連続して配置される画像ファイルＩ４−Ｉ６とによって構成されている。また、ユーザキャラクタ７０は、画像ファイルＩ７、Ｉ８及びＩ９によって構成され、ユーザキャラクタ７２は、画像ファイルＩ１０、Ｉ１１及びＩ１２によって構成され、アイテム７４は、画像ファイルＩ１３によって構成されている。
【００３０】
このように構成されたゲーム用画面６０の１フレームを表示させるために端末装置３０において実行される複数の描画コマンドがフレーム情報に記述される。描画コマンドは、例えば、端末装置３０のブラウザによって実行可能なコマンドである。図６は、図５に例示したゲーム用画面６０の１フレームを端末装置３０に表示させるための描画コマンドが記述されたフレーム情報８０の一例である。図示するように、フレーム情報８０の上段領域８２には、背景６２を描画するための描画コマンドが記述されており、この上段領域８２の下側の下段領域８４には、背景６２に重畳して配置する各オブジェクト（具体的には、ユーザキャラクタ７０、ユーザキャラクタ７２、アイテム７４、及びスコア表示オブジェクト７６）を描画するための描画コマンドが記述されている。描画コマンドには複数の種類が存在し、例えば、画像ファイルを描画するための「ｄｒａｗＩｍａｇｅ」コマンド、テキストを描画するための「ｆｉｌｌＴｅｘｔ」コマンド、描画するオブジェクトの回転角度を設定する「ｒｏｔａｔｅ」コマンド等の描画コマンドが存在する。一実施形態において、描画コマンド「ｄｒａｗＩｍａｇｅ」は、引数として、画像ファイルを特定するファイル名、及び、この画像ファイルを描画する座標を特定する座標情報を含み、この座標情報によって特定される座標にファイル名によって特定される画像ファイルを描画するためのコマンドである。また、描画コマンド「ｆｉｌｌＴｅｘｔ」は、引数として、描画するテキスト、及び、このテキストを描画する座標を特定する座標情報とを含み、座標情報によって特定される座標にテキストを描画するためのコマンドである。さらに、描画コマンド「ｒｏｔａｔｅ」は、引数として、オブジェクトの回転角度を含み、上述した「ｄｒａｗＩｍａｇｅ」や「ｆｉｌｌＴｅｘｔ」等のオブジェクトを描画する描画コマンドと組み合せて用いられ（例えば、オブジェクトを描画する描画コマンドの直前に記述され）、組み合せて用いられた描画コマンドによって描画するオブジェクトの回転角度を設定するためのコマンドである。なお、こうした描画コマンドの種類及び用法は例示であって、その他の種類の描画コマンドを適用することもできる。例えば、ＨＴＭＬ５のｃａｎｖａｓ要素に準じたその他の描画コマンドの種類及び用法や、他の規格に準じた描画コマンドの種類及び用法を適用することもできる。
【００３１】
フレーム情報の他の例であるフレーム情報９０を図７に示す。このフレーム情報９０は、上述したフレーム情報８０に基づいて生成される。フレーム情報９０は、具体的には、描画コマンド「ｄｒａｗＩｍａｇｅ」に含まれる座標情報が、直前に記述された同じ種類の描画コマンド「ｄｒａｗＩｍａｇｅ」に含まれる座標情報によって特定される座標との差異を座標情報として含むように変換されている。例えば、図示するように、「ｄｒａｗＩｍａｇｅ（“Ｉ２”，１３，−４）」という描画コマンドは、直前に記述された描画コマンド「ｄｒａｗＩｍａｇｅ（“Ｉ１”，−３，−４）」の座標情報によって特定される座標との差異を座標情報として含むように、「ｄｒａｗＩｍａｇｅ（“Ｉ２”，１６，０）」に変換されている。同様に、「ｄｒａｗＩｍａｇｅ（“Ｉ３”，２９，−４）」という描画コマンドは、「ｄｒａｗＩｍａｇｅ（“Ｉ３”，１６，０）」に変換されている。ここで、背景６２を構成する複数のタイル画像は、縦横に所定の長さを有する同一形状であるから、縦又は横に連続する２つのタイル画像の座標の差異は、何れの組合せにおいても同じ値となる（図７の例では、横に連続するタイル画像の座標の差異は「１６，０」となる）。また、フレーム情報９０は、描画コマンド「ｒｏｔａｔｅ」に含まれる回転角度情報が、直前に記述された同じ種類の描画コマンド「ｒｏｔａｔｅ」の回転角度情報によって特定される回転角度との差異を回転角度情報として含むように変換されている。例えば、図示するように、画像ファイル「Ｉ８」の回転角度を設定する描画コマンド「ｒｏｔａｔｅ（４５）」及び画像ファイル「Ｉ９」の回転角度を設定する描画コマンド「ｒｏｔａｔｅ（４５）」は、それぞれ「ｒｏｔａｔｅ（０）」に変換されている。ここで、例えば、ユーザキャラクタ７０を構成する画像ファイルＩ７−Ｉ９のように、１つのオブジェクトを構成する複数の画像ファイルはフレーム内において同じ回転角度が設定される傾向にあるから、この結果、直前に記述された描画コマンド「ｒｏｔａｔｅ」の回転角度情報によって特定される回転角度との差異は連続して値「０」となる傾向となる。フレーム情報８０及びフレーム情報９０は何れも、直前のフレームのフレーム情報に依存せず、フレーム情報内に１つのフレームを描画するために必要な情報が含まれている。
【００３２】
こうしてフレーム情報を生成すると、次に、生成したフレーム情報を端末装置３０に送信するか否かを判定する（ステップＳ１１２）。一実施形態においては、上述した統計情報管理テーブルで管理されている端末装置３０毎の「フレームレート上限値」の範囲内でフレーム情報が送信されるように、フレーム情報の送信の要否が判定される。例えば、このフレーム情報生成・送信処理が４０ミリ秒毎に繰り返し実行される場合には、フレーム情報をそのまま送信するとフレームレートは２５ｆｐｓ（１０００／４０ミリ秒）となるから、設定されている上限値が例えば２５ｆｐｓより小さい２０ｆｐｓである場合には、この上限値である２０ｆｐｓの範囲内となるように、２５フレームのうちの５フレームは（フレーム情報生成・送信処理を２５回実行するうちの５回は）フレーム情報を送信しないと判定される。また、例えば、端末装置３０毎に直近の実際のフレームレートを演算して統計情報管理テーブル等のテーブルを用いて管理し、この実際のフレームレートが上限値の範囲内となるまではフレーム情報を送信しないと判定するようにしても良い。なお、フレームレートの上限値の範囲内でフレーム情報が送信されるようにする方法は、これらに限定されない。また、統計情報管理テーブルの「フレームレート上限値」に値「０」が設定されている場合には、常に、フレーム情報を送信しないと判定される。「フレームレート上限値」の設定方法については後述する。
【００３３】
そして、フレーム情報を送信すると判定された場合には、このフレーム情報を圧縮して端末装置３０に送信し（ステップＳ１１４）、フレーム情報を送信しないと判定された場合には、このフレーム情報の送信をスキップして（ステップＳ１１６）、フレーム情報生成・送信処理を終了する。フレーム情報の圧縮は、様々な圧縮アルゴリズムを用いて行うことができ、例えば、「ｄｅｆｌａｔｅ」等の可逆圧縮アルゴリズムを用いて行うことができる。ここで、図７に例示したフレーム情報９０のように、座標情報や回転角度情報が直前の座標や回転角度との差異となるように変換されたフレーム情報を用いる場合には、上述したように、座標情報や回転角度情報（描画コマンドの引数）に同じ値が多く含まれるから、フレーム情報を圧縮する際の圧縮率がより高くなる。また、フレーム情報の圧縮は、複数のフレームを跨って行うことができ、例えば、フレームを跨って辞書を用いた圧縮を行うこともできる。こうしたフレーム情報生成・送信処理が繰り返し実行されると、端末装置３０では、受信したフレーム情報を復号すると共にフレーム情報に記述されている描画コマンドを例えばブラウザ上で実行し、ゲーム用画面６０のフレームが順に繰り返し表示される。なお、上述したフレーム情報９０のように、座標情報や回転角度情報が直前の座標や回転角度との差異となるように変換されたフレーム情報である場合には、端末装置３０において、座標情報や回転角度情報を、座標や回転角度を直接特定する情報に逆変換した上で、描画コマンドが実行される。
【００３４】
以上、ゲームの進行に応じたゲーム用画面の端末装置３０への表示に関する動作について説明した。次に、端末装置３０のパフォーマンスに関する統計情報の取得に関する動作について説明する。図８は、統計情報を取得するための統計情報取得処理の一例を示すフロー図である。この処理は、サーバ１０によって所定の時間間隔で（例えば、１００ミリ秒毎に）繰り返し実行される。統計情報取得処理では、まず、図示するように、端末装置３０に対して描画実行時間情報を要求する（ステップＳ２００）。この要求は、マルチユーザオンラインゲームをプレイする複数のユーザが操作する端末装置３０毎に行われる。描画実行時間情報の要求は、一実施形態では、サーバ１０によって管理されている現在時刻と、描画実行時間情報の送信を指示する情報とを端末装置３０に対して送信することによって行われる。これらの情報を受信した端末装置３０では、受信した現在時刻（サーバ１０が描画実行時間情報を要求した時刻）と端末装置３０における描画実行時間情報とをサーバ１０に対して送信する。ここで、一実施形態においては、端末装置３０において描画実行時間情報（例えば、１フレーム描画するのに要する時間の平均値）を管理する処理を行うように記述されたプログラムが実行され、このプログラムの実行によって管理されている描画実行時間情報がサーバ１０に対して送信される。
【００３５】
続いて、端末装置３０から受信した情報を統計情報管理テーブルに登録する（ステップＳ２１０）。具体的には、受信した現在時刻が「送信時刻」に設定され、受信した描画実行時間情報が「描画実行時間情報」に設定され、これらの情報を受信した時刻が「受信時刻」に設定される。
【００３６】
そして、端末装置３０に対するフレームレートの上限値を設定して（ステップＳ２２０）、この統計情報取得処理を終了する。フレームレートの上限値の設定は、様々な方法で行うことができる。例えば、描画実行時間情報に基づいて端末装置３０によって処理可能なフレームレートを上限値として設定することができる。具体的には、例えば、端末装置３０における１フレームの描画時間（の平均値）が５０ミリ秒である場合には、１秒当たりに描画できるフレーム数は２０となるから、フレームレートの上限値を２０ｆｐｓ（Ｆｒａｍｅｓ  Ｐｅｒ  Ｓｅｃｏｎｄ）又はそれより小さい値（例えば、２０ｆｐｓ×０．８＝１６ｆｐｓ）とすることができる。また、フレームレートの上限値を設定する他の方法として、例えば、端末装置３０に対して描画実行時間情報を要求してから端末装置３０から描画実行時間情報を受信するまでの経過時間（ラウンドトリップタイム（ＲＴＴ）、統計情報管理テーブルの送信時刻と受信時刻とに基づき計算することができる）に基づいて、端末装置３０によって処理可能なフレームレートを上限値として設定することができる。具体的には、例えば、フレームレートの上限値を実験値に基づいて「３０００／ＲＴＴ（ミリ秒）」と設定することができる。この場合、例えば、ＲＴＴが１００ミリ秒で有る場合には、フレームレートの上限値は３０ｆｐｓとなり、ＲＴＴが１５０ミリ秒で有る場合には、フレームレートの上限値は２０ｆｐｓとなる。このようにＲＴＴに基づいてフレームレートの上限値を設定することにより、例えば、モバイルネットワークにおいて基地局の切り替え（ハンドオーバー）が生じた場合等、一時的にＲＴＴが増大した場合に、フレームレートの上限値が小さくなって端末装置３０に対して送信されるフレーム情報が減少するから、端末装置３０における通信状況が回復した後に処理すべきフレーム情報が減少し、通常の処理への早期の復旧を図ることができる。また、ＲＴＴが所定の閾値（例えば、５００ミリ秒）を超える場合には、フレームレートの上限値に値「０」を設定するようにしても良い。こうすれば、端末装置３０における通信状況が極端に悪い場合に、フレーム情報の送信を停止することができるから、通常の処理へのより一層の早期の復旧を図ることができる。なお、ステップＳ２２０におけるフレームレートの上限値の設定は、統計情報取得処理とは別のタイミングで行うようにしても良い。
【００３７】
ここで、例えば、フレームレートの上限値に値「０」が設定され、図４に例示したフレーム情報生成・送信処理において、フレーム情報の送信が連続してスキップされる場合を考える。この場合、フレーム情報生成・送信処理ではサーバ１０から端末装置３０へのフレーム情報の送信は行われないから、例えば、ＴＣＰ通信におけるパケットロスが生じている場合であっても、端末装置３０から確認応答が送信されない状態のまま一定時間（例えば、３秒）が経過するのを待ってパケットの再送が行われることになり得る。しかしながら、一実施形態においては、端末装置３０へのフレーム情報の送信が行われない間も、前述した統計情報取得処理によって端末装置３０に対するデータ通信（描画実行時間情報の要求）が発生するから、ＴＣＰ通信における「ＴＣＰ  ｆａｓｔ  ｒｅｔｒａｎｓｍｉｔ」機能によって、上述した一定時間が経過するのを待つことなくパケットの再送が行われ、より早期にパケットロスを回復することができる。
【００３８】
以上説明した一実施形態におけるサーバ１０では、所定の時間間隔で、ゲーム用画面の１フレームを表示させるために端末装置３０において実行される複数の描画コマンドが記述されたフレーム情報を生成、圧縮して端末装置３０に送信する。従って、ゲーム用画面を動画として送信する場合と比較すると、描画コマンドの容量は小さく、また、圧縮処理に対する負荷も小さいから、端末装置３０との通信量を低減すると共にサーバ１０の負荷を軽減することができる。また、フレーム情報９０では、描画コマンド「ｄｒａｗＩｍａｇｅ」（第１の種類の描画コマンド）に含まれる座標情報が、直前に記述された同じ種類の描画コマンド「ｄｒａｗＩｍａｇｅ」に含まれる座標情報によって特定される座標との差異を座標情報として含むように変換されて、座標情報には同じ値が多く含まれるようになっているから、フレーム情報を圧縮する際の圧縮率をより高くすることができる。同様に、フレーム情報９０では、描画コマンド「ｒｏｔａｔｅ」（第２の種類の描画コマンド）に含まれる回転角度情報が、直前に記述された同じ種類の描画コマンド「ｒｏｔａｔｅ」の回転角度情報によって特定される回転角度との差異を回転角度情報として含むように変換されて、回転角度情報には同じ値が多く含まれるようになっているから、フレーム情報を圧縮する際の圧縮率をより高くすることができる。この結果、通信量をより一層低減することができる。
【００３９】
本明細書で説明された処理及び手順は、実施形態中で明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。より具体的には、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク、光ストレージ等の媒体に、当該処理に相当するロジックを実装することによって実現される。また、本明細書で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
【００４０】
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び／又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一のメモリに格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数のメモリまたは複数の装置に分散して配置された複数のメモリに分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
【００４１】
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。
【符号の説明】
【００４２】
１  システム
１０  サーバ
２０  通信網
３０  端末装置
５１  ゲーム進行モジュール
５２  生成モジュール
５３  判定モジュール
５４  圧縮モジュール
５５  送信モジュール
５６  要求モジュール
６０  ゲーム用画面
８０，９０  フレーム情報
【要約】
【課題】  オンラインゲームを提供する際のサーバ側の負荷を軽減すると共に通信量を低減する。
【解決手段】  一実施形態に係るサーバは、ゲームを進行させるゲーム進行モジュールと、第１の時間間隔でゲーム用画面の１フレームを表示させるために端末装置において実行される複数の描画コマンドが記述されたフレーム情報をゲームの進行に応じて生成する生成モジュールと、生成されたフレーム情報を端末装置に対して送信するか否かを判定する判定モジュールと、生成されたフレーム情報を圧縮する圧縮モジュールと、送信すると判定された圧縮されたフレーム情報を端末装置に対して送信する送信モジュールと、第２の時間間隔で端末装置に対して描画実行時間情報を要求する要求モジュールとを備えるゲームプログラムを実行可能なように構成されている。
【選択図】  図２【図１】
0005411385.tif 000002
【図２】
0005411385.tif 000003
【図３】
0005411385.tif 000004
【図４】
0005411385.tif 000005
【図５】
0005411385.tif 000006
【図６】
0005411385.tif 000007
【図７】
0005411385.tif 000008
【図８】
0005411385.tif 000009