(57)【要約】【課題】  処理を自由に分割できるネットワークゲーム制御方法を提供する。【解決手段】  端末装置種別取得手段１ａが、端末装置２から、ゲームへの参加要求４を取得する。サーバ検出手段１ｅが、存在するサーバを検出する。実行先決定手段１ｃが、多段階の処理で構成される処理において、端末装置種別毎に定義されている実行先定義情報を参照し、各段階の処理の実行先を決定し、決定した内容を処理分配情報記憶手段１ｆに格納する。役割指示手段１ｇが、端末装置２に対して、分配された処理の種別を通知し、サーバに対して、分配された処理の種別を通知する。【選択図】  図１
2006014981.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して、コンピュータゲームを提供する為のネットワークゲーム制御方法において、
端末装置種別取得手段が、端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得し、
サーバ検出手段が、前記端末装置までの通信経路に存在するサーバを検出し、
実行先決定手段が、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納し、
役割指示手段が、前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する、
ことを特徴とするネットワークゲーム制御方法。
【請求項２】
ゲーム進行管理手段が、前記ゲームのオブジェクトの動作指示を検出すると、前記ゲームに関係している前記端末装置及び前記サーバの前記処理分配情報を参照し、前記動作指示に関係する前記ゲーム画像生成処理のうち、他の装置に分配しないと判断された処理を実行し、生成されたデータを、前記端末装置までの通信経路を介して送信することを特徴とする請求項１記載のネットワークゲーム制御方法。
【請求項３】
前記実行先決定手段は、装置間の前記通信経路の回線帯域に応じて、各段階の処理の実行先を決定することを特徴とする請求項１記載のネットワークゲーム制御方法。
【請求項４】
ネットワークを介して、コンピュータゲームを提供する為のネットワークゲームプログラムにおいて、
コンピュータに、
端末装置種別取得手段が、端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得し、
サーバ検出手段が、前記端末装置までの通信経路に存在するサーバを検出し、
実行先決定手段が、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納し、
役割指示手段が、前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する、
処理を実行させることを特徴とするネットワークゲームプログラム。
【請求項５】
ネットワークを介して、コンピュータゲームを提供する為のネットワークゲーム装置において、
端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得する端末装置種別取得手段と、
前記端末装置までの通信経路に存在するサーバを検出するサーバ検出手段と、
多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納する実行先決定手段と、
前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する役割指示手段と、
を有することを特徴とするネットワークゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク経由でゲームを提供するネットワークゲーム制御方法に関し、特に、多様な端末に対応したクライアントサーバ型及びピアツーピア型ネットワークゲーム制御方法に関する。
【背景技術】
【０００２】
ユーザがゲームを楽しむ方法について、家庭用ゲーム機を用いる方法、パーソナルコンピュータ（ＰＣ）を用いる方法、業務用ゲーム機を用いる方法等の方法がある。これらとは別に、ネットワークゲームなるゲーム概念が誕生し、非常に注目を集めている。ネットワークゲームでは、ユーザは、ネットワークを経由して、ユーザの知らない第三者もしくは複数の第三者とゲームを楽しむことができる。
【０００３】
現在、ユーザが既に所有している家庭用ゲーム機やＰＣを使用して、ネットワークゲームを実行できるようになっている。
そして、ネットワークゲーム仲介装置を介して、各ユーザの端末装置種別が異なっていても、均等な条件でネットワークゲームを実行できる方法も提案されている（例えば、特許文献１参照）。
【特許文献１】特開２００１−２５２４７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、現在、端末装置として予定されているのは、家庭用ゲーム機やＰＣに限られ、ユーザを増やすには他の端末装置も使用できることが望ましく、マルチプラットフォーム環境が求められている。
【０００５】
また、端末装置の能力が低い場合、ネットワーク側の処理負荷が大きくなるという問題がある。そして、従来のネットワークゲーム制御方法は、ネットワーク側の処理負荷が大きい場合、処理を固定的に複数のサーバに分割しており、処理効率が低い。
【０００６】
本発明は、このような点に鑑みてなされたものであり、様々な端末装置種別に対応できるマルチプラットフォーム環境のネットワークゲーム制御方法を提供することを目的とする。
【０００７】
また、本発明の他の目的は、利用される端末装置種別、回線帯域及び処理負荷等に応じて、処理を動的に自由に分割できるネットワークゲーム制御方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明では、上記課題を解決するために、図１に示すようなネットワークゲーム制御方法が提供される。
図１のネットワークを介して、コンピュータゲームを提供する為のネットワークゲーム制御方法において、端末装置種別取得手段１ａが、端末装置２から、ゲームへの参加要求を受信すると、端末装置２から端末装置種別の情報を取得する。サーバ検出手段１ｅが、端末装置２までの通信経路に存在するサーバを検出する。実行先決定手段１ｃが、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも端末装置種別毎に定義されている実行先定義情報を参照し、実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報１ｄとして処理分配情報記憶手段１ｆに格納する。役割指示手段１ｇが、端末装置２に対して、実行先決定手段１ｃで端末装置２に分配された処理の種別を通知し、サーバ検出手段１ｅで検出されたサーバに対して、実行先決定手段１ｃでサーバに分配された処理の種別を通知する。
【０００９】
このようなネットワーク制御方法によれば、端末装置種別取得手段１ａにより、端末装置２からのゲームへの参加要求に応じて、端末装置２から端末装置種別の情報が取得される。次に、サーバ検出手段１ｅにより、端末装置２までの通信経路に存在するサーバが検出される。その後、実行先決定手段１ｃにより、実行先定義情報に従って、各段階の処理の実行先が決定される。決定された内容は処理分配情報１ｄとして処理分配情報記憶手段１ｆに格納される。そして、役割指示手段１ｇにより、端末装置２に対して、実行先決定手段１ｃで端末装置２に分配された処理の種別が通知される。最後に、サーバ検出手段１ｅで検出されたサーバに対して、実行先決定手段１ｃでサーバに分配された処理の種別が通知される。
【発明の効果】
【００１０】
本発明では、各段階の実行先決定方針が端末装置種別毎に定義されていて、それに基づいて、各段階の処理の実行先を決定するようにした。このようにすると、異なる複数の端末装置種別が、コンピュータゲームに参加しても、端末装置毎に、効率的なゲーム画像生成処理を実行できるので、より多くのユーザを獲得できる。
【００１１】
さらに、本発明では、コンピュータゲームに参加する端末装置種別に応じて、ゲーム画像生成処理の実行先決定をするようにした。このようにすると、通信経路に存在するサーバの処理負荷が、端末装置種別に応じて動的に決定されるので、処理効率が向上する。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の、実施の形態を図面を参照して説明する。まず、発明の概要について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本発明の概念図である。ネットワークゲーム制御方法は、１つ以上のサーバと端末とから構成される。１つ以上のサーバと端末とは、通信サービスによって接続されている。ネットワークゲーム制御方法の中心的役割を果たすサーバをセンタサーバ１とし、センタサーバ１が、接続している様々な端末の機能や性能に応じて、一連のゲーム処理の中から、センタサーバ１で実行する処理と非センタサーバ３で実行する処理と端末装置２で実行する処理とを、動的に判断する。
【００１３】
本発明は、センタサーバ１と非センタサーバ３と端末装置２とから構成される。センタサーバ１は、ネットワークゲーム制御方法の中枢である。ネットワークゲーム制御方法は、クライアントサーバ型の場合、１つ以上のサーバと端末装置とから成り、多様な端末に対応したクライアントサーバ型及びピアツーピア型のネットワークゲーム制御方法である。クライアントサーバ型の場合、１つ以上のサーバが存在し、センタサーバ１のみかセンタサーバ１と非センタサーバ３とから構成される。ピアツーピア型の場合、二つ以上の端末が存在し、どれか１つの端末がセンタサーバ１と同等のものとなる。非センタサーバ３は、センタサーバ１を補佐するものである。端末装置２は、ユーザがシステムにサービス要求する場合に、利用するものである。センタサーバ１と非センタサーバ３と端末装置２とは、ネットワークで接続されている。
【００１４】
センタサーバ１は、端末装置種別取得手段１ａと実行先定義情報データベース１ｂと実行先決定手段１ｃと処理分配情報１ｄとサーバ検出手段１ｅと処理分配情報記憶手段１ｆと役割指示手段１ｇとゲーム進行管理手段１ｈとから構成される。端末装置種別取得手段１ａは、端末装置２から、端末装置種別を取得する。実行先定義情報データベース１ｂは、多段階の処理で構成されるゲーム画像生成処理において、利用される全ての端末装置２と利用される全ての非センタサーバ３との各段階の実行先決定方針が実行先定義情報として格納されている。実行先決定手段１ｃは、実行先定義情報より、多段階の処理の中で、どの処理をどの装置で実行するか決定する。処理分配情報１ｄは、実行先決定手段１ｃで決定された情報である。サーバ検出手段１ｅは、端末装置２までの通信経路に存在するサーバを検出する。処理分配情報記憶手段１ｆは、処理分配情報１ｄを記録する。役割指示手段１ｇは、参加要求４のある端末装置２に対して、実行先決定手段１ｃで端末装置２に分配された処理の種別を通知し、サーバ検出手段１ｅで検出された非センタサーバ３に対して、実行先決定手段１ｃで非センタサーバ３に分配された処理の種別を通知する。ゲーム進行管理手段１ｈは、ゲームのオブジェクトの動作指示を検出すると、ゲームに関係している端末装置２及び非センタサーバ３の処理分配情報１ｄを参照し、動作指示に関係するゲーム画像生成処理の内、他の装置に分配しないと判断された処理を実行し、生成されたデータを、端末装置２及び非センタサーバ３へ通信経路を介して送信する。
【００１５】
このようにすると、センタサーバ１は端末装置２から参加要求４を受け取り、端末装置種別取得手段１ａにより端末装置２の情報を入手する。そして、サーバ検出手段１ｅによりセンタサーバ１から端末装置２までの通信経路の非センタサーバ３の情報を入手する。その後、実行先定義情報データベース１ｂから端末装置２と非センタサーバ３との情報を入手し、実行先決定手段１ｃによりどの処理をどの装置で実行するか決定する。その決定内容を処理分配情報記憶手段１ｆに記録し、役割指示手段１ｇにより端末装置２と非センタサーバ３とに通知を送信する。こうして、ゲーム進行管理手段１ｈにより、ゲームを開始する。
【００１６】
このようにしてネットワークゲームを実行すると、センタサーバ１を中心として、動的に様々な情報を活用し、最適な環境を構築できる。利用される情報としては、通信経路の能力や負荷と非センタサーバ３の能力や負荷と端末装置２の能力や負荷とがある。そして、単一のアプリケーションで、一種類の端末装置２だけでなく複数種類の端末装置２に対応したネットワークゲームを実現でき、これによって、汎用性が向上し、より多くのユーザを獲得できる。さらに、それぞれの端末装置２に対する分散アプリケーションの適用方法を変化させるので、より効果的に、端末装置２とサーバとを含めたシステム全体のハードウェアとネットワークとの処理効率を最適化できる。
【００１７】
以下、本発明の実施の形態を具体的に説明する。
図２は、ネットワークゲームシステムの概念図である。
ネットワークゲームシステム１００は、センタサーバ７００と第１エッジサーバ１００ｂと第１エッジサーバ１００ｃと第２エッジサーバ１００ｄと第２エッジサーバ１００ｅと第３エッジサーバ１００ｆと場合によってはさらに複数のサーバと端末装置３００ａと端末装置３００ｂと端末装置（ＳＴＢ）３００ｃと端末装置３００ｄと端末装置（ゲーム機）３００ｅと端末装置（ＰＣ）３００ｆと場合によってはさらに複数の端末装置とから構成される。センタサーバ７００は、ネットワークゲームシステム１００を制御する。第１エッジサーバ１００ｂと第１エッジサーバ１００ｃと第２エッジサーバ１００ｄと第２エッジサーバ１００ｅと第３エッジサーバ１００ｆと端末装置３００ａと端末装置３００ｂと端末装置３００ｃと端末装置３００ｄと端末装置３００ｅと端末装置３００ｆとは、センタサーバ７００を補助する。センタサーバ７００と第１エッジサーバ１００ｂと第１エッジサーバ１００ｃと第２エッジサーバ１００ｄと第２エッジサーバ１００ｅと第３エッジサーバ１００ｆと場合によってはさらに複数のサーバと端末装置３００ａと端末装置３００ｂと端末装置（ＳＴＢ）３００ｃと端末装置３００ｄと端末装置（ゲーム機）３００ｅと端末装置（ＰＣ）３００ｆと場合によってはさらに複数の端末装置とは、通信サービスで接続される。
【００１８】
なお、ネットワークゲームシステム１００は、センタサーバ７００と非センタサーバ８００と端末装置３００とから構成される。センタサーバ７００と非センタサーバ８００と端末装置３００とは、通信サービスで接続される。
【００１９】
図３は、センタサーバの機能を示す図である。センタサーバ７００は、ネットワークゲームシステム１００の中心的役割を果たし、全ての機能を有している。
ネットワークゲームシステム１００は、処理実行先決定部５０１とゲーム進行管理部５０２とゲームデータベース４０１と端末データベース４０２と経路データベース４０３と非センタサーバデータベース４０４と経路帯域データベース４０５とサーバ負荷データベース４０６とオブジェクトデータベース４０７とオブジェクト構成ポリゴンデータベース４０８とポリゴン相対座標データベース４０９とポリゴン構成ピクセルデータベース４１０とピクセル相対座標データベース４１１と背景データベース４１２とから構成される。処理実行先決定部５０１とゲーム進行管理部５０２とゲームデータベース４０１と端末データベース４０２と経路データベース４０３と非センタサーバデータベース４０４と経路帯域データベース４０５とサーバ負荷データベース４０６とオブジェクトデータベース４０７とオブジェクト構成ポリゴンデータベース４０８とポリゴン相対座標データベース４０９とポリゴン構成ピクセルデータベース４１０とピクセル相対座標データベース４１１と背景データベース４１２とは、電気的に接続されている。
【００２０】
処理実行先決定部５０１は、ネットワークゲーム開始前のネットワークゲームシステム１００の処理をする。ゲームで登場するキャラクタを、オブジェクトとその下の概念のポリゴンとさらにその下の概念のピクセルとに分け、それぞれの処理をどの装置に実行させるかを動的に判断する。
【００２１】
ゲーム進行管理部５０２は、ネットワークゲーム開始後のネットワークゲームシステム１００の処理をする。実際にゲームを進め、センタサーバ７００と非センタサーバ８００と端末装置３００とは、処理の中で、分配された処理を実行するかもしくは分配されていない処理を下位の装置に送信する。
【００２２】
ゲームデータベース４０１は、ゲームのアプリケーションソフトウェアそのものを記録する。あるゲームを実現するのに必要な機能も記録する。
端末データベース４０２は、端末装置３００に使用されている具体的な端末装置３００の名称とその端末装置３００の能力とを記録する。端末装置３００の機能分割単位は上述のゲーム機能分割単位と一致する。端末装置３００によって、端末装置３００の所有する機能は、端末装置３００に実装されるＣＤ−ＲＯＭ(Compact Disc Read Only Memory)等の媒体により拡張される可能性がある。この際、異なるバージョンのＣＤ−ＲＯＭを実装した同一の端末装置３００は、異なる機能を持つので、別のものとしてエントリする。
【００２３】
経路データベース４０３は、ネットワークの中に存在する全ての経路を記録する。例えば、センタサーバ７００から、都道府県と市町村とからなる地域ブロックに至る経路を記録する。端末装置３００単位で経路を管理すると効率が悪いので、複数の端末装置３００を１つの地域ブロックとしてまとめる。
【００２４】
非センタサーバデータベース４０４は、ネットワークの中に存在する全てのサーバの能力を記録する。非センタサーバ８００のタイプや所在地も記録する。個々の非センタサーバ８００に対して所有機能を記録する方法もあるが、ここでは、非センタサーバ８００をタイプでまとめて、そのタイプの所有機能を記録する。
【００２５】
経路帯域データベース４０５は、ネットワークの中に存在する全ての経路の利用状況を、リアルタイムに記録する。利用状況は、経路上のネットワーク機器から、統計情報を取得する。
【００２６】
サーバ負荷データベース４０６は、ネットワークの中に存在する全てのサーバの利用状況を、リアルタイムに記録する。サーバ負荷データベース４０６はセンタサーバ７００に存在し、非センタサーバ８００の現在の負荷は、非センタサーバ８００が定期的にセンタサーバ７００に通知するか、センタサーバ７００が定期的に非センタサーバ８００に問い合わせるかで取得する。
【００２７】
オブジェクトデータベース４０７は、ゲーム内のキャラクタの中心座標と向きと姿勢を記録する。例えば、あるキャラクタの情報例として、座標は（Ｘ０、Ｙ０、Ｚ０）であり、向きは（Ｕ０、Ｖ０、Ｗ０）であり、姿勢はパターン番号Ａ０である。
【００２８】
オブジェクト構成ポリゴンデータベース４０８は、キャラクタを構成するポリゴンの情報を記録する。つまり、キャラクタをポリゴンに変換する手法を記録する。
ポリゴン相対座標データベース４０９は、キャラクタの向きと姿勢とからポリゴンの相対座標を記録する。
【００２９】
なお、この情報は単純に生成すると、各キャラクタの各姿勢と各向きとに対して、該当する各ポリゴン毎に情報を記録する必要がある。しかし、情報量を減らすこともできる。例えば、複数のポリゴン間に主従関係を作り、従ポリゴンの相対座標を、主ポリゴンと従ポリゴンとの隣接点での従ポリゴンの向きで表現する。すると、例えば、キックの姿勢について、胴体ポリゴンに対して太ももポリゴンが（０、０、−１）から（１、０、０）へ変化したといえる。ここで、（０、０、−１）は、Ｚ軸方向に下に足が伸びていることを示し、（１、０、０）は、Ｘ軸方向に前に足が出ていることを示している。これによって、足の長いキャラクタでも短いキャラクタでも、太ももポリゴンを（０、０、−１）から（１、０、０）にするという表現だけでキックを表現できる。太ももポリゴンを通常の座標で表現しようとすると、足の長いキャラクタの太ももポリゴンと足の短いキャラクタの太ももポリゴンとは、大きさが異なるため、キック時の座標も当然に異なり、各キャラクタの各姿勢の各向きに対して、一つ一つポリゴン座標を定義しなくてはならなくなる。
【００３０】
ポリゴン構成ピクセルデータベース４１０は、ポリゴンを構成するピクセルの情報を記録する。つまり、ポリゴンをピクセルに変換する手法を記録する。さらに、テクスチャが定義されている場合、テクスチャを貼り付ける関数も記録する。
【００３１】
ピクセル相対座標データベース４１１は、ポリゴンの角度からピクセルの相対座標を記録する。
背景データベース４１２は、ゲーム空間の座標に対応する背景を記録する。
【００３２】
図４は、非センタサーバと端末装置との機能を示す図である。非センタサーバ８００と端末装置３００との機能は、ゲーム進行管理部５０２ａとオブジェクト構成ポリゴンデータベース４０８ａとポリゴン相対座標データベース４０９ａとポリゴン構成ピクセルデータベース４１０ａとピクセル相対座標データベース４１１ａと背景データベース４１２ａとから構成される。ゲーム進行管理部５０２ａとオブジェクト構成ポリゴンデータベース４０８ａとポリゴン相対座標データベース４０９ａとポリゴン構成ピクセルデータベース４１０ａとピクセル相対座標データベース４１１ａと背景データベース４１２ａとは、電気的に接続されている。各項目は、同じ名称について、上述したセンタサーバ７００の機能と同じである。
【００３３】
なお、仮に、非センタサーバ８００と端末装置３００との機能として、背景データベース４１２ａが無い場合もあり、その場合は、その装置に背景情報が無いために、背景の処理ができないことになる。
【００３４】
ここでは、ゲームに関する様々な処理の中で、画面の描画に特化して説明する。ネットワークゲームシステム１００のアプリケーションソフトウェアは、１つのコアプログラムたるオブジェクト層処理部１０４ａと複数の動的な処理部とから構成される。
【００３５】
なお、コアプログラムは、便宜上、クライアントサーバ型の場合１つのサーバで、ピアツーピア型の場合１つの端末で、実行されるとする。しかし、実際は、ユーザ認証やユーザ登録や対戦相手探索や対戦相手決定等の処理は、複数のコンピュータに分割される可能性がある。
【００３６】
図５は、ゲーム進行管理部を示す図である。ゲーム進行管理部５０２は、画像送信部１０２と画像受信部１０３と画像処理部１０４とから構成される。画像送信部１０２は、データを圧縮したりパケット化して画像を送信する。画像受信部１０３は、データを復元したりデパケット化して画像を受信する。画像処理部１０４は、実際に、オブジェクトとポリゴンとピクセルとの画像処理を実行する。
【００３７】
図６は、画像処理部を示す図である。画像処理部１０４は、オブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとから構成される。
オブジェクト層処理部１０４ａは、ゲーム進行の論理やアルゴリズムを処理し、基本的なオブジェクトの生成、移動、変更及び削除等を処理する。そして、実際のオブジェクトの描画はオブジェクト層処理部１０４ａに含まれず、下位層のポリゴン層処理部１０４ｂに含まれる。さらに、複数のユーザが参加する場合は、ユーザ相互のInteraction処理をする。
【００３８】
オブジェクトとして、ゲームを構成するキャラクタ、背景及び点数等が存在する。
具体的には、オブジェクトの絶対座標を把握し、オブジェクト描画関数を呼び出すという２段階の処理である。
【００３９】
ポリゴン層処理部１０４ｂは、オブジェクト層処理部１０４ａの結果として呼び出されるオブジェクト描画関数を実装し、オブジェクトを構成する各要素としてのポリゴンの移動、変更等を処理する。そして、実際のポリゴンの描画はポリゴン層処理部１０４ｂに含まれず、下位層のピクセル層処理部１０４ｃに含まれる。
【００４０】
具体的には、オブジェクトをポリゴンに分解し、ポリゴンの絶対座標を把握し、ポリゴン描画関数を呼び出すという２段階の処理である。
ピクセル層処理部１０４ｃは、ポリゴン層処理部１０４ｂの結果として呼び出されるポリゴン描画関数を実装し、ポリゴンを構成する各要素としてのピクセルの移動、変更等を処理する。
【００４１】
具体的には、ポリゴンをピクセルに分解し、ピクセルの絶対座標を把握し、ピクセル描画関数を呼び出すという２段階の処理である。
図７は、図６の理解を進める図である。説明は上述の通りである。
【００４２】
なお、オブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとの下半分のDraw＿Object()とDraw＿Polygon()とは、実際の処理を現在のコンピュータで実行するか下位のコンピュータで実行するかを分岐する部分であり、図６では、分かり易くする為にＩｆ文で分岐している。しかし、実際の運用では、Ｉｆ文ではなく、受信端末の種別や能力に基づいて処理関数ポインタを設定する。このように関数ポインタを用いることにより、柔軟性を高めることができる。
【００４３】
また、端末のハードが３次元描画（例えば、DirectXである）のハード処理機能を持っている場合、オブジェクトをポリゴンに分解するポリゴン層処理部１０４ｂは、３次元描画形式のポリゴンに分解する３次元描画用ポリゴン層処理部１０４ｂを用いるのが適切である。OpenGL形式の場合も同様である。
【００４４】
図８は、画像送信部を示す図である。画像送信部１０２は、オブジェクト層パケット化処理部１０２ａとポリゴン層パケット化処理部１０２ｂとピクセル層パケット化処理部１０２ｃとから構成される。
【００４５】
オブジェクト層パケット化処理部１０２ａは、オブジェクト層処理部１０４ａの結果をパケットデータに変換して、他のサーバもしくは端末に送信する処理をする。パケットデータに変換する前に、データ圧縮を行うことも可能である。
【００４６】
具体的には、オブジェクト描画関数をパケット化する。
ポリゴン層パケット化処理部１０２ｂは、ポリゴン層処理部１０４ｂの結果をパケットデータに変換して、他のサーバもしくは端末に送信する処理をする。パケットデータに変換する前に、データ圧縮を行うことも可能である。
【００４７】
具体的には、ポリゴン描画関数をパケット化する。
ピクセル層パケット化処理部１０２ｃは、ピクセル層処理部１０４ｃの結果をパケットデータに変換して、他のサーバもしくは端末に送信する処理をする。パケットデータに変換する前に、データ圧縮やＦＥＣ、インターリーブ等の高信頼性付加処理を行うことも可能である。さらに、ピクセル層処理部１０４ｃの結果を圧縮する場合は、ＭＰＥＧ２（Moving Picture Experts Group）等の非可逆圧縮を用いることも可能である。
【００４８】
具体的には、ピクセル描画関数をパケット化する。
図９は、画像受信部を示す図である。画像受信部１０３は、オブジェクト層デパケット化処理部１０３ａとポリゴン層デパケット化処理部１０３ｂとピクセル層デパケット化処理部１０３ｃとから構成される。
【００４９】
オブジェクト層デパケット化処理部１０３ａは、オブジェクト層パケットを受信しポリゴン層処理部１０４ｂに渡す処理をする。データの圧縮が行われている場合は、データの復元を実行する。高信頼性処理が行われている場合は解除してデータの復元を実行する。
【００５０】
具体的には、パケット化されたオブジェクト描画関数を受信し、ポリゴン層処理部１０４ｂの中のオブジェクト描画関数を呼び出す。
ポリゴン層デパケット化処理部１０３ｂは、ポリゴン層パケットを受信しピクセル層処理部１０４ｃに渡す処理をする。データの圧縮が行われている場合は、データの復元を実行する。高信頼性処理が行われている場合は解除してデータの復元を実行する。
【００５１】
具体的には、パケット化されたポリゴン描画関数を受信し、ピクセル層処理部１０４ｃの中のポリゴン描画関数を呼び出す。
ピクセル層デパケット化処理部１０３ｃは、ピクセル層パケットを受信しピクセル層の描画の処理をする。データの圧縮が行われている場合は、データの復元を実行する。高信頼性処理が行われている場合は解除してデータの復元を実行する。
【００５２】
具体的には、パケット化されたピクセル描画関数を受信する。
このような様々な処理部を利用して、例えば、ＭＰＥＧ２形式の機能を有するＳＴＢを用いたユーザからアクセスを受け付けた場合、参加するゲームや対戦相手等を決定する。この時点で、センタサーバ７００は、端末装置３００の種別を入手している。ここで例えば、端末装置３００がＳＴＢであることから、能力が低いため、オブジェクト層処理とポリゴン層処理とはセンタサーバ７００で実行し、ピクセル層処理は非センタサーバ８００で実行することに決定する。
【００５３】
ここで、センタサーバ７００は、センタサーバ７００のオブジェクト層処理のオブジェクト描画関数へのポインタ(Draw＿Object())が、センタサーバ７００のポリゴン層処理のオブジェクト描画関数(Draw＿Object＿Real())を指すように設定する。この例では、ＭＰＥＧ２の配信になる場合として、３次元描画形式やOpenGL形式のポリゴンにする必要はないのでGenericなポリゴン層処理を実行する。但し、Genericなポリゴン層処理は必須ではなく、３次元描画形式やOpenGL形式のどちらかを転用しても良い。ここでの処理のように、上位プログラムの関数ポインタに、適切に下位プログラムの関数を代入していくことで、動的な処理方法の決定ができる。
【００５４】
センタサーバ７００のポリゴン層処理のポリゴン描画関数へのポインタ(Draw＿Polygon())が、センタサーバ７００のポリゴン層パケット化処理のポリゴンパケット送信関数(Draw＿Polygon＿Dispatch())を指すように設定する。ポリゴンパケットの送信先は、非センタサーバ８００である。センタサーバ７００は非センタサーバ８００にコネクションを張り、ユーザの参加するゲームの処理を実現する為に必要な情報を、非センタサーバ８００に転送しておく。ここでの処理のように、関数ポインタに、パケット化処理の関数を代入していくことで、下位の装置へ処理を移管できる。
【００５５】
非センタサーバ８００は、非センタサーバ８００のポリゴン層デパケット化処理によって、センタサーバ７００からのパケットを受信し、非センタサーバ８００のピクセル層処理のポリゴン描画関数(Draw＿Polygon＿Real())に渡す。この手続きは、非センタサーバ８００のポリゴン層デパケット化処理のポリゴンパケット受信関数(Draw＿Polygon＿Real())が、非センタサーバ８００のピクセル層処理のポリゴン描画関数(Draw＿Polygon＿Real())を指すように設定することで、実現できる。
【００５６】
非センタサーバ８００は、非センタサーバ８００のピクセル層処理のピクセル描画関数へのポインタ(Draw＿Pixel())が、非センタサーバ８００のＭＰＥＧ２対応のピクセル層パケット化処理のピクセルパケット送信関数(Draw＿Pixel())を指すように設定する。この関数では、１画面分程度のピクセルデータを蓄積して、そのデータ毎にＭＰＥＧ２圧縮を実行する。さらに、信頼性向上のためにＦＥＣによる冗長性付与とインターリーブ等とを施す。そして、ピクセルパケットを端末装置３００へ送信する。
【００５７】
端末装置３００は、端末装置３００のピクセル層デパケット化処理によって、非センタサーバ８００からのパケットを受信し、描画する。
つまり、本実施の形態では、端末装置３００の種別より、センタサーバ７００と非センタサーバ８００と端末装置３００との処理を分担し、上位プログラムの関数ポインタに、適切に下位プログラムの関数を代入していくことで、動的な処理方法の決定ができる。この関数ポインタがポイントする関数の実体は、様々な処理の中に存在する。そして、装置間の処理の分担は、本来の処理の関数を呼ぶ代わりにパケット送信関数を呼び、受信側のデパケット化処理がパケットを受信し、本来の処理の関数を呼ぶことで実現される。
【００５８】
図１０は、実行先決定部の処理結果の第１の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａを実行し、第１エッジサーバ１００ｂがポリゴン層処理部１０４ｂを実行し、第２エッジサーバ１００ｅがピクセル層処理部１０４ｃを実行し、端末が何も実行しない、と判断した場合の図である。
【００５９】
センタサーバ７００は、オブジェクト層処理部１０４ａにより、オブジェクト層の画像処理を実行する。
センタサーバ７００の判断の中で、第１エッジサーバ１００ｂがポリゴン層処理部１０４ｂを実行するという判断に従う。
【００６０】
センタサーバ７００は、オブジェクト層パケット化処理部１０２ａにより、オブジェクトをパケット化する。
ネットワークゲームシステム１００内のネットワークでパケット転送する。
【００６１】
第１エッジサーバ１００ｂは、オブジェクト層デパケット化処理部１０３ａにより、オブジェクトをデパケット化する。
第１エッジサーバ１００ｂは、ポリゴン層処理部１０４ｂにより、ポリゴン層の画像処理を実行する。
【００６２】
センタサーバ７００の判断の中で、第２エッジサーバ１００ｅがピクセル層処理部１０４ｃを実行するという判断に従う。
第１エッジサーバ１００ｂは、ポリゴン層パケット化処理部１０２ｂにより、ポリゴンをパケット化する。
【００６３】
ネットワークゲームシステム１００内のネットワークでパケット転送する。
第２エッジサーバ１００ｅは、ポリゴン層デパケット化処理部１０３ｂにより、ポリゴンをデパケット化する。
【００６４】
第２エッジサーバ１００ｅは、ピクセル層処理部１０４ｃにより、ピクセル層の画像処理を実行する。
センタサーバ７００の判断の中で、端末装置３００が描画するという判断に従う。
【００６５】
第２エッジサーバ１００ｅは、ピクセル層パケット化処理部１０２ｃにより、ピクセルをパケット化する。
ネットワークゲームシステム１００内のネットワークでパケット転送する。
【００６６】
端末装置３００は、ピクセル層デパケット化処理部１０３ｃにより、ピクセルをデパケット化する。
端末装置３００は、描画する。
【００６７】
図１１は、実行先決定部の処理結果の第２の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａを実行し、第１エッジサーバ１００ｂがポリゴン層処理部１０４ｂを実行し、端末がピクセル層処理部１０４ｃを実行する、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００６８】
具体的には、第２エッジサーバ１００ｅと端末装置３００とが端末装置３００に統合され、そのためピクセル層の伝送が不要となっている。
図１２は、実行先決定部の処理結果の第３の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａを実行し、端末がポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとを実行する、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００６９】
具体的には、第１エッジサーバ１００ｂと第２エッジサーバ１００ｅと端末装置３００とが端末装置３００に統合され、そのためポリゴン層とピクセル層との伝送が不要となっている。
【００７０】
図１３は、実行先決定部の処理結果の第４の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとを実行し、第１エッジサーバ１００ｂがピクセル層処理部１０４ｃを実行し、端末が何も実行しない、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００７１】
具体的には、センタサーバ７００と第１エッジサーバ１００ｂとがセンタサーバ７００に統合され、そのためオブジェクト層の伝送が不要となっている。そして、第２エッジサーバ１００ｅが第１エッジサーバ１００ｂとなる。
【００７２】
図１４は、実行先決定部の処理結果の第５の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとを実行し、端末が何も実行しない、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００７３】
具体的には、センタサーバ７００と第１エッジサーバ１００ｂと第２エッジサーバ１００ｅとがセンタサーバ７００に統合され、そのためオブジェクト層とポリゴン層との伝送が不要となっている。
【００７４】
図１５は、実行先決定部の処理結果の第６の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａを実行し、第１エッジサーバ１００ｂがポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとを実行し、端末が何も実行しない、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００７５】
具体的には、第１エッジサーバ１００ｂと第２エッジサーバ１００ｅとが第１エッジサーバ１００ｂに統合され、そのためポリゴン層の伝送が不要となっている。
図１６は、実行先決定部の処理結果の第７の例を示す図である。この図は、センタサーバ７００がオブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとを実行し、端末がピクセル層処理部１０４ｃを実行する、場合の概念図である。図１０と比べると、原則的に各処理部を実行するコンピュータが異なるだけである。
【００７６】
具体的には、センタサーバ７００と第１エッジサーバ１００ｂとがセンタサーバ７００に統合され、そのためオブジェクト層の伝送が不要となっている。そして、第２エッジサーバ１００ｅと端末装置３００とが端末装置３００に統合され、そのためピクセル層の伝送が不要となっている。
【００７７】
図１７は、ネットワーク経由でデータを転送する場合の例を示す図である。（Ａ）は端末装置３００ｅが高性能端末の場合であり、（Ｂ）は端末装置３００ｂが中性能端末の場合であり、（Ｃ）は、端末装置３００ｃが低性能端末の場合である。
【００７８】
高性能端末は、能力が高いため、多くの処理が可能である。低性能端末は、能力が低いため、多くの処理は不可能である。中性能端末は、その中間である。
本実施の形態の画像処理はオブジェクト処理とポリゴン処理とピクセル処理との３段階に分かれており、ネットワーク４００への負荷をなるべく軽減するため、なるべく多くの処理を端末装置３００ｂ、３００ｃ、３００ｅでさせる。各処理後のデータについて、オブジェクト処理後のデータ量はポリゴン処理後のデータ量より軽く、ポリゴン処理後のデータ量はピクセル処理後のデータ量より軽い。
【００７９】
例えば、端末装置３００ｅが高性能端末である（Ａ）の場合、端末装置３００ｅ以外のコンピュータでオブジェクト処理のみ実行し、端末装置３００ｅでポリゴン処理とピクセル処理とを実行する。端末装置３００ｂが中性能端末である（Ｂ）の場合、端末装置３００ｂ以外のコンピュータでオブジェクト処理とポリゴン処理とを実行し、端末装置３００ｂでピクセル処理のみ実行する。端末装置３００ｃが低性能端末である（Ｃ）の場合、端末装置３００ｃ以外のコンピュータでオブジェクト処理とポリゴン処理とピクセル処理とを実行し、端末装置３００ｃでは何も実行しない。
【００８０】
なお、データ転送する前に、ネットワーク４００の負荷を軽減させる為に、データ圧縮処理としてＭＰＥＧエンコード等の処理をする。そして、ネットワークプロトコル処理としてＵＤＰ(User Datagram Protocol)やＴＣＰ(Tape Carrier Package)等の処理をする。ネットワーク４００を経由した後、再び、ネットワークプロトコル処理としてＵＤＰやＴＣＰ等の処理をする。最後に、データ復元処理としてＭＰＥＧデコード等の処理をする。
【００８１】
図１８は、ＰＣが端末の場合の概念図である。この場合は、原則として図１１と同様である。
異なるのは、背景画像をポリゴン層処理部１０４ｂで処理することである。
【００８２】
そして、端末がＰＣであり３次元描画形式の処理機能を持っているので、ポリゴン層処理部１０４ｂは３次元描画形式のポリゴンを生成する。しかるに、ネットワークでのパケット転送においても３次元描画関数コールに対応したパケットを使用し、ピクセル層処理部１０４ｃは３次元描画形式のポリゴンを描画する。
【００８３】
この処理の流れは３つのコンピュータを利用し、センタサーバ７００はオブジェクト層処理部１０４ａを実行し、第１エッジサーバはポリゴン層処理部１０４ｂを実行し、端末はピクセル層処理部１０４ｃを実行し、１つのコンピュータが１つの処理をするので平均的であるといえる。
【００８４】
図１９は、ＳＴＢ（Set Top Box）が端末の場合の概念図である。この場合は、原則として図１３と同様である。
異なるのは、背景画像をピクセル層処理部１０４ｃで処理することである。
【００８５】
そして、端末がＳＴＢであり能力が低いので、ピクセル層処理部１０４ｃを実行することができない。第１エッジサーバがピクセル層処理部１０４ｃを実行し、ピクセルデータを転送することになるが、このピクセルデータはデータ量が大きい。よって、ピクセルデータを、ピクセル層パケット化処理部１０２ｃでＭＰＥＧ２圧縮し、ネットワークでのパケット転送においてもＭＰＥＧ２圧縮したパケットを使用し、ピクセル層デパケット化処理部１０３ｃでＭＰＥＧ２圧縮したパケットを受信する。
【００８６】
この処理の流れは３つのコンピュータを利用し、センタサーバ７００はオブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとを実行し、第１エッジサーバはピクセル層処理部１０４ｃを実行し、端末は何も実行せず、ネットワークの処理負荷が大きいといえる。
【００８７】
図２０は、ゲーム機が端末の場合の概念図である。この場合は、原則として図１２と同様である。
異なるのは、背景画像をポリゴン層処理部１０４ｂで処理することである。
【００８８】
そして、端末がゲーム機であり３次元描画の処理機能を持っているので、ポリゴン層処理部１０４ｂは３次元描画用のポリゴンを生成する。しかるに、ピクセル層処理部１０４ｃは３次元描画用のポリゴンを描画する。
【００８９】
この処理の流れは２つのコンピュータを利用し、センタサーバ７００はオブジェクト層処理部１０４ａを実行し、端末はポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとを実行し、ネットワークの処理負荷が小さいといえる。
【００９０】
ここで、図１８と図１９と図２０とを利用して、対戦型シューティングゲームの例について説明する。このゲームは、ダンジョンの中を動き回りながら、他のプレイヤが操る敵キャラクタと撃ち合い、敵キャラクタを倒していくゲームである。ここでは、プレイヤＡはＰＣで、プレイヤＢはＳＴＢで、プレイヤＣはゲーム機であるとする。また、このゲームのサーバは、センタサーバ７００と非センタサーバ８００たる第１エッジサーバとの２段階構成をとっている。プレイヤＡの直近の第１エッジサーバを第１エッジサーバＡとし、プレイヤＢの直近の第１エッジサーバを第１エッジサーバＢとし、プレイヤＣの直近の第１エッジサーバを第１エッジサーバＣとする。センタサーバ７００と各第１エッジサーバとの間は、信頼性を保つため、ＴＣＰによるデータ伝送を実行する。
【００９１】
まず、プレイヤＡがゲームに参加した時に、このゲームのオブジェクト層処理部１０４ａ（コアプログラム）は、端末装置３００がＰＣであることを認識し、オブジェクト層処理部１０４ａをセンタサーバ７００で実行すると決定する。オブジェクト層処理部１０４ａで計算されたキャラクタの位置と姿勢と向きとから、キャラクタの腕と頭と銃等との各部を構成するポリゴンの位置情報を計算するポリゴン層処理部１０４ｂは、第１エッジサーバＡで実行すると決定する。さらに、ＰＣであるから、端末装置３００で３次元描画形式のポリゴンの描画を実行するのが適切であると判断して、第１エッジサーバＡのポリゴン層処理部１０４ｂは、３次元描画形式のポリゴンを生成するポリゴン層処理部１０４ｂを使用すると決定する。第１エッジサーバＡのポリゴン層パケット化処理部１０２ｂにより、ポリゴンデータをＰＣに伝送する。このパケット化されたポリゴンデータは、３次元描画関数コールに対応している。また、３次元描画形式ではなくOpenGL形式である場合、OpenGL形式もポリゴン層の描画に相当するので、第１エッジサーバＡでOpenGL形式のポリゴンを生成するポリゴン層処理部１０４ｂを使用する。そして、端末装置３００へのパケット化されたポリゴンデータは、OpenGL関数コールに対応している。非センタサーバ８００で、センタサーバ７００から渡されたオブジェクトデータの処理を実行するだけでなく、スコアや背景等の様々な画面構成要素の処理を実行できる。例えば、非センタサーバ８００は、キャラクタの位置と姿勢と向きとから、背景となるダンジョンの描画も実行する。この場合、非センタサーバ８００にこのダンジョンの情報が格納されている必要がある。ＰＣは、３次元描画関数コールに対応している必要がある。この機能は、他のゲームでも使用でき、汎用性のあるものである。仮に、ポリゴン層処理部１０４ｂを、非センタサーバ８００ではなくＰＣで実行する場合、ＰＣについてポリゴン層処理部１０４ｂを今回のゲームに特化したものにする必要がある。このために前もって、ＰＣに、今回のゲームに特化したソフトウェアを何らかの方法でインストールしておく必要がある。ネットワークからのダウンロードによってインストールする方法もあるので、必ずしもプレイヤＡがインストールを意識する必要はない。第１エッジサーバＡからプレイヤＡのＰＣへのパケット伝送において、使用回線帯域を抑える為に、可逆データ圧縮を実行し、ある程度の信頼性を確保しつつパケット伝送処理負荷を抑えるために、再送機能をアプリケーションレベルで実装したＵＤＰを使用する。
【００９２】
プレイヤＢのＳＴＢの場合、ＭＰＥＧ２画像を再生する能力しか持たないので、第１エッジサーバＢで生成したピクセルデータをＭＰＥＧ２圧縮する必要がある。ＭＰＥＧ２圧縮は処理負荷が重く、第１エッジサーバＢの負荷を軽減する為に、オブジェクト層処理部１０４ａとポリゴン層処理部１０４ｂとは、センタサーバ７００で実行する。第１エッジサーバＢは、ポリゴンデータと背景情報とを合成してピクセル層処理部１０４ｃによりピクセルデータを生成する。第１エッジサーバＢは、このピクセルデータをＭＰＥＧ２圧縮する。さらに、ＭＰＥＧ２圧縮したデータに信頼性向上の為に、ＦＥＣデータの付与とインターリーブ等とを実行し、ＵＤＰでＳＴＢにパケット伝送する。プレイヤＢのＳＴＢは、パケットからペイロードデータを取り出し、インターリーブとＦＥＣとの復元処理を実行し、ＭＰＥＧ２デコードにより画像を再生する。第１エッジサーバＢにおいて、ピクセルデータをＭＰＥＧ２データにエンコードする場合、ＭＰＥＧ２では動き予測を行う。これは、今回のようにポリゴンが動作を実行する場合には、前後のポリゴンレベルの動作を元にして通常のマクロブロック単位でマッチング比較による方法よりも、はるかに高い精度で動き予測を実行できる。このように、自然画でないＣＧのゲーム画像の特性を生かして、圧縮効率と圧縮速度とを高めることができる。
【００９３】
プレイヤＣのゲーム機の場合、汎用的なOpenGLと３次元描画とのライブラリをＣＤ−ＲＯＭで提供できないとする。このため、このゲームに対応したＣＤ−ＲＯＭを用意して、ゲーム機で、ポリゴン層処理部１０４ｂとピクセル層処理部１０４ｃとを実行する。センタサーバ７００で生成されたオブジェクトデータは、直接端末装置３００であるゲーム機に伝送される。ゲーム機は、このデータを、ゲーム機のグラフィック機能で扱うのに最も適したポリゴンとピクセルとに変換して描画する。背景情報は、ＣＤ−ＲＯＭから取り出す。オブジェクトデータは、帯域的には、ポリゴンデータとピクセルデータとより小さいが、パケット喪失の影響が大きいので、信頼性の高いＴＣＰを用いて伝送される。
【００９４】
次に、対戦将棋ゲームの例についても説明する。このゲームにおいて、センタサーバ７００は、対戦するプレイヤが決定した後、そのプレイヤの端末装置の能力に応じて、センタサーバ７００の処理実行先決定部５０１により全ての処理が各端末装置３００に分配される。なお、お互いの端末装置３００だけでは、処理の実行が困難な場合は、サーバを介在させることも可能である。その後、センタサーバ７００の介在の必要がなくなり、プレイヤの端末装置３００同士のピアツーピア通信によってゲームが進行する。ここでは、プレイヤＡはＰＣで、プレイヤＢはＳＴＢであるとする。
【００９５】
この場合、お互いの端末装置３００の能力に応じて、お互いの端末装置３００がどこまで処理を実行するかを決定する。ＳＴＢがＭＰＥＧ２画像しか受け取れないとすると、ＰＣがあたかもサーバのように、自分の画面を描画すると共に相手の画面のＭＰＥＧ２データも生成する。なお、プレイヤＡとプレイヤＢとがＳＴＢの場合、センタサーバ７００と非センタサーバ８００とが介在する可能性も有り、プレイヤＡとプレイヤＢとにＭＰＥＧ２データを伝送することになる。
【００９６】
図２１は、処理実行先決定部の処理であり、ゲーム開始前の処理を示すフローチャートである。この処理は、センタサーバ７００と０以上のエッジサーバからなる非センタサーバ８００と端末装置３００とが実行する。
【００９７】
［Ｓ１０１］端末装置３００は、ユーザの入力により、実行するゲームの情報を受け取る。そして、端末装置３００は、実行するゲームの情報を、センタサーバ７００に引き渡す。
【００９８】
［Ｓ１０２］端末装置３００は、ユーザの入力により、ユーザの利用している端末装置３００の種類の情報を受け取る。そして、端末装置３００は、端末装置３００の種類の情報を、センタサーバ７００に引き渡す。
【００９９】
［Ｓ１０３］端末装置３００は、ユーザの入力により、ユーザの利用している端末装置３００の能力や機能の情報を受け取る。そして、端末装置３００は、端末装置３００の能力や機能の情報を、センタサーバ７００に引き渡す。なお、端末装置３００の能力や機能は、本来的なものでなく、ＣＤ−ＲＯＭ等で新たに獲得した能力や機能のことである。
【０１００】
［Ｓ１０４］センタサーバ７００は、ゲームデータベース４０１と端末データベース４０２とＳ１０１により入力された情報とＳ１０２により入力された情報とＳ１０３により入力された情報とから、ゲームに必要な機能と端末機能の情報を受け取る。
【０１０１】
［Ｓ１０５］端末装置３００は、ユーザの入力により、実行する端末装置３００の位置情報を受け取る。そして、端末装置３００は、実行する端末装置３００の位置情報を、センタサーバ７００に引き渡す。
【０１０２】
［Ｓ１０６］センタサーバ７００は、経路データベース４０３と非センタサーバデータベース４０４と経路帯域データベース４０５とサーバ負荷データベース４０６とＳ１０５により入力された情報とから、センタサーバ７００と端末装置３００との間の経路情報とその経路上の非センタサーバ８００の有無とその経路上の利用状況とその経路上の非センタサーバ８００の利用状況とを受け取る。
【０１０３】
［Ｓ１０７］センタサーバ７００は、Ｓ１０４とＳ１０６とから入手した情報より、動的に総合判断して、センタサーバ７００と非センタサーバ８００と端末装置３００との処理を決定する。
【０１０４】
［Ｓ１０８］センタサーバ７００は、非センタサーバ８００と端末装置３００に、処理の内容を通知する。
［Ｓ１０９］非センタサーバ８００は、センタサーバ７００から、Ｓ１０８の処理の内容を受け取る。
【０１０５】
［Ｓ１１０］端末装置３００は、センタサーバ７００から、Ｓ１０８の処理の内容を受け取る。
図２２は、図１１におけるゲーム進行管理部の具体的なゲーム開始後の処理を示すフローチャートの前半である。この処理は、センタサーバ７００と０以上のエッジサーバからなる非センタサーバ８００と端末装置３００とが実行する。
【０１０６】
［Ｓ１２１］センタサーバ７００は、ユーザからキー操作により、オブジェクト（キャラクタ）の変更等の情報を受け付ける。
［Ｓ１２２］センタサーバ７００は、Ｓ１２１の情報より、キャラクタの絶対座標と向きと姿勢とを更新して、古いキャラクタ情報から新しいキャラクタ情報を生成する。
【０１０７】
［Ｓ１２４］センタサーバ７００は、キャラクタの種別と絶対座標と向きと姿勢とを引数として、各オブジェクトについて、オブジェクト描画関数を呼び出す。
［Ｓ１２５］この場合のオブジェクト描画関数を実装するポリゴン層処理部は、第１エッジサーバで実行されるので、オブジェクト描画関数の実体は第１エッジサーバにある。第１エッジサーバは、キャラクタの種別から、このキャラクタを構成するポリゴン情報を取得する。
【０１０８】
［Ｓ１２６］第１エッジサーバは、Ｓ１２４のキャラクタの向きと姿勢とから、各ポリゴンのキャラクタの中心座標に対する相対座標を取得する。
［Ｓ１２７］第１エッジサーバは、Ｓ１２４のキャラクタの種別と絶対座標とＳ１２６のポリゴンの相対座標とから、ポリゴンの絶対座標を計算する。
【０１０９】
［Ｓ１２８］第１エッジサーバは、ポリゴンの種別と絶対座標とテクスチャと角度とを引数として、各ポリゴンについて、ポリゴン描画関数を呼び出す。そして、図２３のＡに進む。
【０１１０】
図２３は、図１１におけるゲーム進行管理部の具体的なゲーム開始後の処理を示すフローチャートの後半である。
［Ｓ１２９］図２２のＡより、この場合のポリゴン描画関数を実装するピクセル層処理部は、端末で実行されるので、ポリゴン描画関数の実体は端末にある。端末は、ポリゴンの種別から、このポリゴンを構成するピクセル情報を取得する。
【０１１１】
［Ｓ１３０］端末は、Ｓ１２８のポリゴンの角度から、各ピクセルのポリゴンの中心座標に対する相対座標を取得する。
［Ｓ１３１］端末は、Ｓ１２８のポリゴンの種別と絶対座標とＳ１３０のピクセルの相対座標とから、ピクセルの絶対座標を計算する。
【０１１２】
［Ｓ１３２］端末は、ピクセルの種別と絶対座標とを引数として、各ピクセルについて、ピクセル描画関数を呼び出す。
［Ｓ１３３］端末は、各ピクセルについて、ピクセル描画関数を実行する。
【０１１３】
［Ｓ１３４］端末は、絶対座標で実際に描画する。場合により、テクスチャの貼り付けを実行する。
なお、上記の処理機能は、サーバコンピュータとクライアントコンピュータとによって実現することができる。その場合、センタサーバ７００が有すべき機能の処理内容を記述したサーバプログラム、および端末装置３００が有すべき機能の処理内容を記述したクライアントプログラムが提供される。サーバプログラムをサーバコンピュータで実行することにより、センタサーバ７００の処理機能がサーバコンピュータ上で実現される。また、クライアントプログラムをクライアントコンピュータで実行することにより、端末装置３００の処理機能がクライアントコンピュータ上で実現される。
【０１１４】
処理内容を記述したサーバプログラムやクライアントプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ:Hard Disk Drive）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【０１１５】
サーバプログラムやクライアントプログラムを流通させる場合には、たとえば、各プログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、クライアントプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータからクライアントコンピュータにクライアントプログラムを転送することもできる。
【０１１６】
サーバプログラムを実行するサーバコンピュータは、たとえば、可搬型記録媒体に記録されたサーバプログラムを、自己の記憶装置に格納する。そして、サーバコンピュータは、自己の記憶装置からサーバプログラムを読み取り、サーバプログラムに従った処理を実行する。なお、サーバコンピュータは、可搬型記録媒体から直接サーバプログラムを読み取り、そのサーバプログラムに従った処理を実行することもできる。
【０１１７】
クライアントプログラムを実行するクライアントコンピュータは、たとえば、可搬型記録媒体に記録されたクライアントプログラムもしくはサーバコンピュータから転送されたクライアントプログラムを、自己の記憶装置に格納する。そして、クライアントコンピュータは、自己の記憶装置からクライアントプログラムを読み取り、クライアントプログラムに従った処理を実行する。なお、クライアントコンピュータは、可搬型記録媒体から直接クライアントプログラムを読み取り、そのクライアントプログラムに従った処理を実行することもできる。また、クライアントコンピュータは、サーバコンピュータからクライアントプログラムが転送される毎に、逐次、受け取ったクライアントプログラムに従った処理を実行することもできる。
【０１１８】
図２４は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ１０は、ＣＰＵ(Central Processing Unit)１１によって装置全体が制御されている。ＣＰＵ１１には、バス１７を介してＲＡＭ１２、ハードディスクドライブ（ＨＤＤ）１３、グラフィック処理装置１４、入力インタフェース１５、および通信インタフェース１６が接続されている。
【０１１９】
ＲＡＭ１２には、ＣＰＵ１１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２には、ＣＰＵ１１による処理に必要な各種データが格納される。ＨＤＤ１３には、ＯＳやアプリケーションプログラムが格納される。
【０１２０】
グラフィック処理装置１４には、モニタ２１が接続されている。グラフィック処理装置１４は、ＣＰＵ１１からの命令に従って、画像をモニタ２１の画面に表示させる。入力インタフェース１５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１５は、キーボード２２やマウス２３から送られてくる信号を、バス１７を介してＣＰＵ１１に送信する。
【０１２１】
通信インタフェース１６は、ネットワーク２４に接続されている。通信インタフェース１６は、ネットワーク２４を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
【０１２２】
（付記１）  ネットワークを介して、コンピュータゲームを提供する為のネットワークゲーム制御方法において、
端末装置種別取得手段が、端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得し、
サーバ検出手段が、前記端末装置までの通信経路に存在するサーバを検出し、
実行先決定手段が、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納し、
役割指示手段が、前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する、
ことを特徴とするネットワークゲーム制御方法。
【０１２３】
（付記２）  ゲーム進行管理手段が、前記ゲームのオブジェクトの動作指示を検出すると、前記ゲームに関係している前記端末装置及び前記サーバの前記処理分配情報を参照し、前記動作指示に関係する前記ゲーム画像生成処理のうち、他の装置に分配しないと判断された処理を実行し、生成されたデータを、前記端末装置までの通信経路を介して送信することを特徴とする付記１記載のネットワークゲーム制御方法。
【０１２４】
（付記３）  前記実行先決定手段は、装置間の前記通信経路の回線帯域に応じて、各段階の処理の実行先を決定することを特徴とする付記１記載のネットワークゲーム制御方法。
【０１２５】
（付記４）  前記実行先決定手段は、各装置の処理負荷を監視して前記処理負荷に応じて、各段階の処理の実行先を決定することを特徴とする付記１記載のネットワークゲーム制御方法。
【０１２６】
（付記５）  前記実行先決定手段は、各端末装置の能力に応じて、各段階の処理の実行先を決定することを特徴とする付記１記載のネットワークゲーム制御方法。
（付記６）  前記ゲームが対戦型ネットワークゲームの場合、前記端末装置種別取得手段は、参加要求を出力した前記端末装置と前記端末装置と対戦する対戦相手端末装置との端末種別の情報を取得し、
前記サーバ検出手段は、前記端末装置と前記対戦相手端末装置とのゲーム対戦時の通信経路に存在するサーバを検出し、
前記実行先決定手段は、前記端末装置と前記対戦相手端末装置とのそれぞれの前記端末装置種別に応じて、前記ゲーム画面生成処理の各段階の処理の実行先を、前記サーバ検出手段で検出された前記サーバ、前記端末装置及び前記対戦相手端末装置の何れかに決定する、
ことを特徴とする付記１記載のネットワークゲーム制御方法。
【０１２７】
（付記７）  ネットワークを介して、コンピュータゲームを提供する為のネットワークゲームプログラムにおいて、
コンピュータに、
端末装置種別取得手段が、端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得し、
サーバ検出手段が、前記端末装置までの通信経路に存在するサーバを検出し、
実行先決定手段が、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納し、
役割指示手段が、前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する、
処理を実行させることを特徴とするネットワークゲームプログラム。
【０１２８】
（付記８）  ネットワークを介して、コンピュータゲームを提供する為のネットワークゲーム装置において、
端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得する端末装置種別取得手段と、
前記端末装置までの通信経路に存在するサーバを検出するサーバ検出手段と、
多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納する実行先決定手段と、
前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する役割指示手段と、
を有することを特徴とするネットワークゲーム装置。
【０１２９】
（付記９）  ネットワークを介して、コンピュータゲームを提供する為のネットワークゲームプログラムを記録したコンピュータ読み取り可能な記録媒体において、
コンピュータに、
端末装置種別取得手段が、端末装置から、ゲームへの参加要求を受信すると、前記端末装置から端末装置種別の情報を取得し、
サーバ検出手段が、前記端末装置までの通信経路に存在するサーバを検出し、
実行先決定手段が、多段階の処理で構成されるゲーム画像生成処理において、各段階の実行先決定方針が少なくとも前記端末装置種別毎に定義されている実行先定義情報に従って、各段階の処理の実行先を決定し、決定した内容を処理分配情報として処理分配情報記憶手段に格納し、
役割指示手段が、前記端末装置に対して、前記実行先決定手段で前記端末装置に分配された処理の種別を通知し、前記サーバ検出手段で検出された前記サーバに対して、前記実行先決定手段で前記サーバに分配された処理の種別を通知する、
処理を実行させることを特徴とするネットワークゲームプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図面の簡単な説明】
【０１３０】
【図１】本発明の概念図である。
【図２】ネットワークゲームシステムの概念図である。
【図３】センタサーバの機能を示す図である。
【図４】非センタサーバと端末装置との機能を示す図である。
【図５】ゲーム進行管理部を示す図である。
【図６】画像処理部を示す図である。
【図７】図６の理解を進める図である。
【図８】画像送信部を示す図である。
【図９】画像受信部を示す図である。
【図１０】実行先決定部の処理結果の第１の例を示す図である。
【図１１】実行先決定部の処理結果の第２の例を示す図である。
【図１２】実行先決定部の処理結果の第３の例を示す図である。
【図１３】実行先決定部の処理結果の第４の例を示す図である。
【図１４】実行先決定部の処理結果の第５の例を示す図である。
【図１５】実行先決定部の処理結果の第６の例を示す図である。
【図１６】実行先決定部の処理結果の第７の例を示す図である。
【図１７】ネットワーク経由でデータを転送する場合の例を示す図である。（Ａ）は端末装置が高性能端末の場合であり、（Ｂ）は端末装置が中性能端末の場合であり、（Ｃ）は、端末装置が低性能端末の場合である。
【図１８】ＰＣが端末の場合の概念図である。
【図１９】ＳＴＢが端末の場合の概念図である。
【図２０】ゲーム機が端末の場合の概念図である。
【図２１】処理実行先決定部の処理であり、ゲーム開始前の処理を示すフローチャートである。
【図２２】図１１におけるゲーム進行管理部の具体的なゲーム開始後の処理を示すフローチャートの前半である。
【図２３】図１１におけるゲーム進行管理部の具体的なゲーム開始後の処理を示すフローチャートの後半である。
【図２４】本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【符号の説明】
【０１３１】
１  センタサーバ
２  端末装置
３  非センタサーバ
４  参加要求
１ａ  端末装置種別取得手段
１ｂ  実行先定義情報データベース
１ｃ  実行先決定手段
１ｄ  処理分配情報
１ｅ  サーバ検出手段
１ｆ  処理分配情報記憶手段
１ｇ  役割指示手段
１ｈ  ゲーム進行管理手段
【図１】
2006014981.tif 000003
【図２】
2006014981.tif 000004
【図３】
2006014981.tif 000005
【図４】
2006014981.tif 000006
【図５】
2006014981.tif 000007
【図６】
2006014981.tif 000008
【図７】
2006014981.tif 000009
【図８】
2006014981.tif 000010
【図９】
2006014981.tif 000011
【図１０】
2006014981.tif 000012
【図１１】
2006014981.tif 000013
【図１２】
2006014981.tif 000014
【図１３】
2006014981.tif 000015
【図１４】
2006014981.tif 000016
【図１５】
2006014981.tif 000017
【図１６】
2006014981.tif 000018
【図１７】
2006014981.tif 000019
【図１８】
2006014981.tif 000020
【図１９】
2006014981.tif 000021
【図２０】
2006014981.tif 000022
【図２１】
2006014981.tif 000023
【図２２】
2006014981.tif 000024
【図２３】
2006014981.tif 000025
【図２４】
2006014981.tif 000026