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