(57)【要約】【課題】  複数の動的オブジェクトが仮想ゲーム空間内で動作する動画を表示するゲームにおいて、この動画を見た看者に違和感が生じるのを抑制しつつ、コンピュータにかかる負荷を低減することのできるゲームプログラム等を提供する。【解決手段】  ゲーム装置１はが備えるフレーム生成手段５１は、オブジェクトデータ更新手段５１ａとフレームデータ出力手段５１ｃとを有し、負荷軽減手段５４は、負荷検出手段５３が過大な負荷を検出した場合に、複数の動的オブジェクトのうち一部の動的オブジェクトを対象に、オブジェクトデータの更新頻度を低くする更新頻度低減手段５４ｂを有している。【選択図】図７
2011186834.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
仮想のゲーム空間内で複数の動的オブジェクトが動作する動画のフレームを、ディスプレイに表示させるべく所定のフレームレートで生成するフレーム生成手段、
前記フレームの生成に要する負荷を検出する負荷検出手段、及び
前記負荷を軽減する負荷軽減手段、として機能させ、
前記フレーム生成手段は、前記動的オブジェクトの状態を示すオブジェクトデータを更新するオブジェクトデータ更新手段と、前記動的オブジェクトを含むフレームを示すフレームデータを前記ディスプレイへ出力するフレームデータ出力手段とを有し、
前記負荷軽減手段は、前記負荷検出手段が所定の負荷を検出した場合に、複数の前記動的オブジェクトのうち一部の動的オブジェクトを更新頻度低減対象とし、該更新頻度低減対象の動的オブジェクトの状態を示すオブジェクトデータの更新頻度を低くする更新頻度低減手段を有することを特徴とするゲームプログラム。
【請求項２】
前記負荷検出手段は、前記フレームを生成したときのフレームレートが所定値以下になった場合に、前記フレームの生成に要する負荷が前記所定の負荷であると判定することを特徴とする請求項１に記載のゲームプログラム。
【請求項３】
前記負荷検出手段は、前記オブジェクトデータの更新開始から更新終了までに要した時間に基づき、前記フレームレートが前記所定値以下であるか否かを判定することを特徴とする請求項２に記載のゲームプログラム。
【請求項４】
前記動的オブジェクトは、プレイヤの操作に応じて前記ゲーム空間内で行動するプレイヤキャラクタと対戦する敵キャラクタであることを特徴とする請求項１乃至３の何れかに記載のゲームプログラム。
【請求項５】
前記負荷軽減手段は、複数の前記敵キャラクタに対して設定された所定の優先度に基づいて、前記更新頻度低減対象とする敵キャラクタを選択するオブジェクト選択手段を有することを特徴とする請求項４に記載のゲームプログラム。
【請求項６】
前記フレームは、前記仮想ゲーム空間内に配設した仮想カメラによって該仮想ゲーム空間を撮像したときの画像であり、
前記優先度は、前記ゲーム空間内において前記仮想カメラからの距離が大きい敵キャラクタほど、前記更新頻度低減対象として選択される可能性が高くなるように設定されていることを特徴とする請求項５に記載のゲームプログラム。
【請求項７】
前記オブジェクト選択手段は、所定数の敵キャラクタについて、前記更新頻度低減対象として選択する対象に含めないことを特徴とする請求項５又は６に記載のゲームプログラム。
【請求項８】
前記所定数の敵キャラクタは、前記更新頻度低減対象として選択される可能性が低いものから順に設定されていることを特徴とする請求項７に記載のゲームプログラム。
【請求項９】
前記負荷軽減手段は、前記更新頻度低減手段により、対象となり得る全ての敵キャラクタについてオブジェクトデータの更新頻度を低減した後、更に前記負荷検出手段が前記所定の負荷を検出した場合に、前記更新頻度低減手段により、前記優先度に基づいて再度選択した一部の敵キャラクタを更新頻度低減対象とし、該更新頻度低減対象の敵キャラクタの状態を示すオブジェクトデータの更新頻度を更に低くすることを特徴とする請求項５乃至８の何れかに記載のゲームプログラム。
【請求項１０】
前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、複数の前記動的オブジェクトのうち一部の動的オブジェクトを削除対象とし、該削除対象の動的オブジェクトを前記フレームから削除する動的オブジェクト削除手段を有することを特徴とする請求項１乃至９の何れかに記載のゲームプログラム。
【請求項１１】
前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、前記動的オブジェクト削除手段によって前記削除対象の動的オブジェクトを前記フレームから削除し、その後、更に前記負荷検出手段が前記所定の負荷を検出した場合に、残りの複数の動的オブジェクトのうち一部の動的オブジェクトを更新頻度低減対象とし、該更新頻度低減対象の動的オブジェクトについて、前記更新頻度低減手段によってオブジェクトデータの更新頻度を低くするよう構成されていることを特徴とする請求項１０に記載のゲームプログラム。
【請求項１２】
前記フレームは前記仮想ゲーム空間内に固定的に配置される静的オブジェクトを含み、
前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、前記静的オブジェクトを対象に、前記フレームから削除する静的オブジェクト削除手段を有することを特徴とする請求項１乃至１１の何れかに記載のゲームプログラム。
【請求項１３】
前記コンピュータを、
前記負荷軽減手段の実行対象とされている動的オブジェクトが存在する状態で、前記負荷検出手段が前記所定の負荷を検出しない場合に、該動的オブジェクトを元の状態に復元させるオブジェクト復元手段、
として機能させることを特徴とする請求項１乃至１２の何れかに記載のゲームプログラム。
【請求項１４】
前記オブジェクト復元手段は、複数の前記動的オブジェクトに対して設定された所定の優先度に基づいて、復元させる敵キャラクタを選択する復元対象選択手段を有することを特徴とする請求項１３に記載のゲームプログラム。
【請求項１５】
前記フレームは、前記仮想ゲーム空間内に配設した仮想カメラによって該仮想ゲーム空間を撮像したときの画像であり、
前記優先度は、前記ゲーム空間内において前記仮想カメラからの距離が小さい動的オブジェクトほど、前記復元対象選択手段により復元対象として選択される可能性が高くなるように設定されていることを特徴とする請求項１４に記載のゲームプログラム。
【請求項１６】
請求項１乃至１５の何れかに記載のゲームプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１７】
請求項１乃至１５の何れかに記載のゲームプログラムを読み込んで実行するコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ゲーム空間内にて複数の動的オブジェクト（例えば、敵キャラクタ）が動作する動画をディスプレイに表示するに際し、この動画のフレームを生成するときの負荷が過大になった場合に負荷を軽減させるためのゲームプログラム、該ゲームプログラムを記録した記録媒体、及びコンピュータ装置に関する。
【背景技術】
【０００２】
従来、アクションゲームなどにおいて、プレイヤが仮想ゲーム空間内のプレイヤキャラクタを操作し、次々と現れる複数の敵キャラクタと対戦してこれらを倒すことでゲームを進行していくものがある。このようなゲームでは、プレイヤキャラクタや敵キャラクタなどの動的オブジェクトが動作する様子を表す動画をディスプレイに表示するために、コンピュータが、動的オブジェクトの動作に応じて内容が刻々と変化する各フレーム（画像）を、所定のフレームレートで生成している。また、動的オブジェクトや、仮想ゲーム空間に含まれる背景やアイテムなどの様々のオブジェクトは、三次元のポリゴンデータで描画されることが多くなっている。
【０００３】
しかしながら、例えばフレームに含まれる動的オブジェクトが多くてポリゴンデータの計算量が増加したり、これに加えてエフェクト処理（例えば、攻撃の効果を表現するために、爆風や火花等を表すパーティクルのデータを生成する処理）を実行したりすることで、フレームを示すフレームデータを算出するのにコンピュータに過大な負荷が生じることがある。また、算出したフレームデータ量が過大であるために、ディスプレイへの描画処理においてコンピュータに過大な負荷が生じたりすることもある。このようにコンピュータの負荷が過大になると、所望のフレームレートでフレームを生成することができず、一又は複数のフレームをディスプレイに表示できなかったり、表示速度が遅くなったりするといった現象（いわゆる「処理落ち」）が発生する可能性がある。
【０００４】
このような現象の発生を抑制するため、コンピュータにかかる負荷を低減する取り組みが提案されている（特許文献１，２参照）。
【０００５】
例えば特許文献１では、フレームに含めるオブジェクトを描画するに際し、全てのオブジェクトについて三次元のポリゴンデータを使うことはしないようにしている。即ち、フレームに描画される仮想ゲーム空間は仮想カメラで映した奥行き感のある画像になっており、該仮想ゲーム空間において仮想カメラから一定距離未満に位置するオブジェクトは三次元のポリゴンデータで描画し、仮想カメラから一定距離以上離れているオブジェクトについては二次元スプライトデータで描画するようにしている。二次元スプライトデータは三次元ポリゴンデータよりも演算量が少なくて済むため、上記のようにすることでコンピュータの処理負荷を低減している。
【０００６】
また、特許文献２では、ディスプレイに描画するためのフレームデータが過大になった場合に、フレームから一部のオブジェクトを除外（非表示）することで、描画処理にかかる負荷を低減する手段が開示されている。またこの際、経時的に連続するフレームにおいて、除外するオブジェクトを互いに異なるせることで、同一オブジェクトが連続して除外されないようにし、オブジェクトが除外されていることを看者に気づかれにくいようにしている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１４１５６０号公報
【特許文献２】特許第２９４１２３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、上記特許文献１及び２に開示された手段の場合、かえってコンピュータの処理負荷が過大になる、適切に負荷を低減できない、看者に対して違和感を生じさせてしまう、という事態が起こる可能性がある。
【０００９】
具体的に説明すると、特許文献１に開示された手段の場合は、オブジェクトが仮想カメラに対して近付いたり遠ざかったりと頻繁に移動すると、三次元ポリゴンデータでの描画と二次元スプライトデータでの描画とを頻繁に切り換える必要がある。このように三次元ポリゴンデータでの描画と二次元スプライトデータでの描画とを頻繁に切り換えると、コンピュータの処理負荷が過大になってしまう可能性がある。
【００１０】
また、特許文献２に開示された手段の場合は、フレームデータを用いた描画処理に要する負荷を低減することはできても、その前処理であるフレームデータの算出処理に要する負荷を低減できる構成にはなっていない。従って、フレームデータの算出時の負荷が原因で処理落ちが生じる場合に、これを抑制できる手段は開示されていない。また、負荷低減のために、オブジェクトが表示／非表示を繰り返すことになるため、やはり看者に対して違和感を生じさせる可能性がある。
【００１１】
そこで本発明は、複数の動的オブジェクトが仮想ゲーム空間内で動作する動画を表示するゲームにおいて、この動画を見た看者に違和感が生じるのを抑制しつつ、コンピュータにかかる負荷を低減することのできるゲームプログラム、該ゲームプログラムを記録した記録媒体、及びコンピュータ装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明に係るゲームプログラムは、コンピュータを、仮想のゲーム空間内で複数の動的オブジェクトが動作する動画のフレームを、ディスプレイに表示させるべく所定のフレームレートで生成するフレーム生成手段、前記フレームの生成に要する負荷を検出する負荷検出手段、及び前記負荷を軽減する負荷軽減手段、として機能させ、前記フレーム生成手段は、前記動的オブジェクトの状態を示すオブジェクトデータを更新するオブジェクトデータ更新手段と、前記動的オブジェクトを含むフレームを示すフレームデータを前記ディスプレイへ出力するフレームデータ出力手段とを有し、前記負荷軽減手段は、前記負荷検出手段が所定の負荷を検出した場合に、複数の前記動的オブジェクトのうち一部の動的オブジェクトを更新頻度低減対象とし、該更新頻度低減対象の動的オブジェクトの状態を示すオブジェクトデータの更新頻度を低くする更新頻度低減手段を有している。
【００１３】
このような構成とすることにより、フレームの生成に要する負荷（即ち、オブジェクトデータの更新処理及びフレームを描画すべくフレームデータをディスプレイへ出力する処理のうち、一又は複数の処理に要する負荷）を低減することができる。加えて、更新頻度低減対象となった動的オブジェクトのオブジェクトデータの更新頻度を低くすることで負荷を軽減するため、表示されていたオブジェクトが唐突に非表示になったり、オブジェクトデータが三次元データから二次元データに切り替わったりすることがなく、看者に対して違和感を生じさせるのを抑制することができる。
【００１４】
また、前記負荷検出手段は、前記フレームを生成したときのフレームレートが所定値以下になった場合に、前記フレームの生成に要する負荷が前記所定の負荷であると判定するように構成されていてもよい。
【００１５】
また、前記負荷検出手段は、前記オブジェクトデータの更新開始から更新終了までに要した時間に基づき、前記フレームレートが前記所定値以下であるか否かを判定するように構成されていてもよい。
【００１６】
また、前記動的オブジェクトは、プレイヤの操作に応じて前記ゲーム空間内で行動するプレイヤキャラクタと対戦する敵キャラクタであってもよい。
【００１７】
また、前記負荷軽減手段は、複数の前記敵キャラクタに対して設定された所定の優先度に基づいて、前記更新頻度低減対象とする敵キャラクタを選択するオブジェクト選択手段を有していてもよい。
【００１８】
また、前記フレームは、前記仮想ゲーム空間内に配設した仮想カメラによって該仮想ゲーム空間を撮像したときの画像であり、前記優先度は、前記ゲーム空間内において前記仮想カメラからの距離が大きい敵キャラクタほど、前記更新頻度低減対象として選択される可能性が高くなるように設定されていてもよい。
【００１９】
また、前記オブジェクト選択手段は、所定数の敵キャラクタについて、前記更新頻度低減対象として選択する対象に含めないようにしてあってもよい。
【００２０】
また、前記所定数の敵キャラクタは、前記更新頻度低減対象として選択される可能性が低いものから順に設定されるようにしてもよい。
【００２１】
また、前記負荷軽減手段は、前記更新頻度低減手段により、対象となり得る全ての敵キャラクタについてオブジェクトデータの更新頻度を低減した後、更に前記負荷検出手段が前記所定の負荷を検出した場合に、前記更新頻度低減手段により、前記優先度に基づいて再度選択した一部の敵キャラクタを更新頻度低減対象とし、該更新頻度低減対象の敵キャラクタの状態を示すオブジェクトデータの更新頻度を更に低くするようにしてもよい。
【００２２】
また、前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、複数の前記動的オブジェクトのうち一部の動的オブジェクトを削除対象とし、該削除対象の動的オブジェクトを前記フレームから削除する動的オブジェクト削除手段を有していてもよい。
【００２３】
また、前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、前記動的オブジェクト削除手段によって前記削除対象の動的オブジェクトを前記フレームから削除し、その後、更に前記負荷検出手段が前記所定の負荷を検出した場合に、残りの複数の動的オブジェクトのうち一部の動的オブジェクトを更新頻度低減対象とし、該更新頻度低減対象の動的オブジェクトについて、前記更新頻度低減手段によってオブジェクトデータの更新頻度を低くするよう構成されていてもよい。
【００２４】
また、前記フレームは前記仮想ゲーム空間内に固定的に配置される静的オブジェクトを含み、前記負荷軽減手段は、前記負荷検出手段が前記所定の負荷を検出した場合に、前記静的オブジェクトを対象に、前記フレームから削除する静的オブジェクト削除手段を有していてもよい。
【００２５】
また、前記コンピュータを、前記負荷軽減手段の実行対象とされている動的オブジェクトが存在する状態で、前記負荷検出手段が前記所定の負荷を検出しない場合に、該動的オブジェクトを元の状態に復元させるオブジェクト復元手段、として機能させるよう構成されていてもよい。
【００２６】
また、前記オブジェクト復元手段は、複数の前記動的オブジェクトに対して設定された所定の優先度に基づいて、復元させる敵キャラクタを選択する復元対象選択手段を有していてもよい。
【００２７】
また、前記フレームは、前記仮想ゲーム空間内に配設した仮想カメラによって該仮想ゲーム空間を撮像したときの画像であり、前記優先度は、前記ゲーム空間内において前記仮想カメラからの距離が小さい動的オブジェクトほど、前記復元対象選択手段により復元対象として選択される可能性が高くなるように設定されていてもよい。
【００２８】
本発明に係る記録媒体は、上述した何れかのゲームプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２９】
本発明に係るコンピュータ装置は、上述した何れかのゲームプログラムを読み込んで実行するコンピュータ装置である。
【発明の効果】
【００３０】
本発明によれば、複数の動的オブジェクトが仮想ゲーム空間内で動作する動画を表示するゲームにおいて、この動画を見た看者に違和感を生じさせるのを抑制しつつ、コンピュータにかかる負荷を低減することのできるゲームプログラム、該ゲームプログラムを記録した記録媒体、及びコンピュータ装置を提供することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施の形態に係るゲーム装置（コンピュータ装置）の構成を示すブロック図である。
【図２】図１に示したゲーム装置とは別体を成すコントローラの構成を機能的に示すブロック図である。
【図３】図１に示すゲーム機により実行されるゲームについて、その戦闘シーンの動画を構成するフレームの一例を示す模式図である。
【図４】ゲーム装置が備える制御部の機能的な構成を示すブロック図である。
【図５】フレームに含め得る最大３０体の敵キャラクタについて設定されたソート優先度を例示する模式図である。
【図６】ゲーム装置が１つのフレームを生成する過程を示すフローチャートである。
【図７】ゲーム装置が負荷軽減処理を実行する過程を示すフローチャートである。
【図８】負荷軽減処理を説明するための模式図であり、（ａ）は削除処理の例、（ｂ）及び（ｃ）は更新頻度低減処理の例を示している。
【図９】６０ｆｐｓで生成された連続するフレームを示す模式図であり、更新頻度が６０回／秒、３０回／秒、及び１５回／秒の各敵キャラクタが表示されている。
【図１０】ゲーム装置が補正処理を実行する過程を示すフローチャートである。
【図１１】更新頻度が適正値に補正される敵キャラクタの具体例を示す模式図である。
【図１２】ゲーム装置が復元処理を実行する過程を示すフローチャートである。
【発明を実施するための形態】
【００３２】
以下、本発明の実施の形態に係るゲームプログラム、記録媒体、及びコンピュータ装置について、図面を参照しつつ説明する。
【００３３】
［ハードウェアの構成］
図１は、本発明の実施の形態に係るゲーム装置（コンピュータ装置）の構成を示すブロック図である。ゲーム装置１は、片手で持ち運びできる程度の寸法のボックス形状を成すハウジングに収納されており、図１に示すように、このゲーム装置１にはＣＰＵ（Central Processing Unit）３を有する制御部８が備えられている。制御部８においてＣＰＵ３は、データ転送を統括的に制御するメモリコントローラ２を介して、ＧＰＵ（Graphics Processing Unit）４、メインメモリ５、及びＤＳＰ（Digital Signal Processor）６に接続されている。また、メモリコントローラ２には、バス９を介して、コントローラ・インタフェース（以下、「インタフェース」は「Ｉ／Ｆ」と記す）１０、ビデオＩ／Ｆ１１、外部メモリＩ／Ｆ１２、オーディオＩ／Ｆ１３、及びディスクＩ／Ｆ１４が接続されている。そして、コントローラＩ／Ｆ１０には受信ユニット１５が接続され、オーディオＩ／Ｆ１３及びディスクＩ／Ｆ１４にはディスクドライブ１６が接続されている。
【００３４】
更に、ゲーム装置１が有するビデオＩ／Ｆ１１及びオーディオＩ／Ｆ１３には、外部機器であるモニタ（ディスプレイ）２０及びスピーカ２２が夫々に接続可能になっており、記録媒体としてのメモリカード２１及び光ディスク２３が、外部メモリＩ／Ｆ１２及びディスクドライブ１６に対して夫々装填可能になっている。
【００３５】
このうちＣＰＵ３は、図示しないブートＲＯＭに記録された起動プログラムを実行してメインメモリ５の初期化等を行った後、ディスクドライブ１６に装填された光ディスク２３に記録されているゲームプログラム２４を実行し、該ゲームプログラム２４の内容に応じたゲーム処理を行うものである。後に詳述するが、このゲーム処理の一例として、ＣＰＵ３は、経時的に変化する三次元の仮想ゲーム空間の各フレーム（画像）を示すフレームデータを算出し、該フレームデータを、メインメモリ５を介してＧＰＵ４へ受け渡すことを行う。また、メインメモリ５は、ＣＰＵ３の動作時に使用されるデータを記録する記録領域を有し、例えば、光ディスク２３から読み出されたゲームプログラム２４や各種のデータを記録する。
【００３６】
ＧＰＵ４は、三次元グラフィックスの表示に必要な計算処理を行う半導体チップで構成されており、ＣＰＵ３からの指示に基づいて画像処理を行う。例えば、ＧＰＵ４は、メインメモリ５の一部の記録領域や図示しない画像処理専用のメモリを用い、ＣＰＵ３から受信したフレームデータをレンダリング処理して各フレーム（画像）を生成することができ、このフレームは、メモリコントローラ２及びビデオＩ／Ｆ１１を介してモニタ２０に出力（表示）される。
【００３７】
ＤＳＰ６は、ＣＰＵ３がゲームプログラム２４を実行しているときに生成されるサウンドデータの処理を行うものであり、該サウンドデータを記録するためのＡＲＡＭ（Audio RAM）７が接続されている。ＤＳＰ６は、光ディスク２３から先読みしておいたサウンドデータをＡＲＡＭ７に記録しておき、適宜のタイミングでＡＲＡＭ７から読み出したサウンドデータを出力するものであり、ＤＳＰ６から出力されたサウンドデータは、メモリコントローラ２及びオーディオＩ／Ｆ１３を介してスピーカ２２から外部へ出力される。
【００３８】
一方、受信ユニット１５は、ゲーム装置１とは別体を成すコントローラ（Remote controller）３０（図２参照）から送られてきたデータを受信するものであり、受信したデータは、コントローラＩ／Ｆ１０及びメモリコントローラ２を介してＣＰＵ３へ送られる。外部メモリＩ／Ｆ１２は、メモリカード２１が装填された状態で該メモリカード２１内の記録領域にアクセス可能であり、該記録領域内のデータを読み出し、又はバックアップデータを書き込むことができる。
【００３９】
オーディオＩ／Ｆ１３に接続されたスピーカ２２は、上述したようにＤＳＰ６がＡＲＡＭ７から読み出したサウンドデータを外部へ出力する他、ディスクドライブ１６が光ディスク２３から読み出したサウンドデータを直接的に外部へ出力する。また、ディスクドライブ１６は、上述したように、装填された光ディスク２３に記録されたゲームプログラム２４を読み出し、このゲームプログラム２４をオーディオＩ／Ｆ１３又はディスクＩ／Ｆ１４へ出力する。
【００４０】
図２は、ゲーム装置１とは別体を成すコントローラ３０の構成を機能的に示すブロック図である。コントローラ３０は、例えばプラスチック成型により形成された略直方体形状を成すハウジングを有しており、片手で把持可能な寸法に設計されている。そして、図２に示すように、コントローラ３０は、撮像情報演算部３１、通信部３２、操作部３３、加速度センサ３４、及びバイブレータ３５を備えている。
【００４１】
撮像情報演算部３１は、赤外線フィルタ３１ａ、レンズ３１ｂ、撮像素子３１ｃ、及び画像処理回路３１ｄを有しており、赤外線フィルタ３１ａは、外部からの入射光のうち赤外線のみをレンズ３１ｂへ通過させる。レンズ３１ｂは、赤外線フィルタ３１ａを通過した赤外線を集光して撮像素子３１ｃへ出射する。撮像素子３１ｃは、例えばＣＭＯＳセンサのような固体撮像素子であって、レンズ３１ｂが集光した赤外線を撮像して画像データを生成する。ここで、ゲーム装置１に接続されるモニタ２０（図１参照）には、高輝度の赤外線を発光する２つの発光部（図示せず）が設けられており、画像処理回路３１ｄは、撮像素子３１ｃで生成された画像データから高輝度部分を抽出することにより、前記発光部からの光を検出する。そして、画像処理回路３１ｄは、検出した光に基づいてコントローラ３０の向きを示すデータを算出し、該データを通信部３２へ出力する。
【００４２】
通信部３２は、マイクロコンピュータ（Micro Computer：マイコン）３２ａ、メモリ３２ｂ、無線モジュール３２ｃ、及びアンテナ３２ｄを有している。この通信部３２は、マイコン３２ａが無線モジュール３２ｃの動作を制御することによって、所定のデータをアンテナ３２ｄから外部に対して無線送信するものであり、送信処理の際にメモリ３２ｂはデータの記録領域として使用される。また、アンテナ３２ｄから無線送信されたデータは、ゲーム装置１が備える受信ユニット１５（図１参照）において受信可能になっている。
【００４３】
操作部３３は、十字キー及び各種のボタンスイッチを有しており、これらは、コントローラ３０を把持したプレイヤの手によって操作可能になっている。そして、プレイヤにより操作部３３が操作されると、何れのキー又はスイッチが操作されたかを示す操作信号が、通信部３２によってゲーム装置１へ送信されるようになっている。また、加速度センサ３４は、コントローラ７に対して設定された直交３軸方向（上下方向、左右方向、及び前後方向）についての加速度を検出するものであり、検出された加速度を示す信号は、通信部３２によってゲーム装置１へ送信される。
【００４４】
バイブレータ３５は、例えば偏芯質量を有する振動モータ又はソレノイド等を備えており、その作動によってコントローラ３０自身に振動を発生させることができる。該バイブレータ３５を適宜作動させることにより、コントローラ３０を把持するプレイヤの手に振動を体感させることができ、いわゆる振動対応ゲームが実現できる。
【００４５】
なお、上述したコントローラ３０の向きを示すデータ、操作信号、及び加速度を示す信号等は、通信部３２から無線送信されるに先だって一時的にメモリ３２ｂに格納される。マイコン３２ａは、無線モジュール３２ｃを制御して、このメモリ３２ｂに格納されているデータを所定周波数の搬送波にのせ、所定の短い周期で、アンテナ３２ｄから送信するようになっている。
【００４６】
［ゲーム内容］
上述したような構成を備える本ゲーム装置１は、ゲームプログラム２４を実行することにより、ステージ毎に設定された仮想ゲーム空間をモニタ２０に表示し、また、この仮想ゲーム空間内にプレイヤキャラクタを表示させる。このプレイヤキャラクタはプレイヤの操作に応じて仮想ゲーム空間内を行動し、仮想ゲーム空間内には、プレイヤキャラクタの進行を阻むようにして次々と敵キャラクタが出現する。そして本ゲームでは、プレイヤが、プレイヤキャラクタを操作してこれらの敵キャラクタを次々と倒しながら、仮想ゲーム空間内でプレイヤキャラクタを進めて行く。
【００４７】
図３は、本ゲームの戦闘シーンの動画を構成するフレームの一例を示す模式図である。この図３に示すように、フレーム４０は、プレイヤキャラクタＣ１及び敵キャラクタＣ２などを配置した三次元の仮想ゲーム空間４１を、仮想カメラ（図示せず）からの視点で撮影した奥行き感のある画像となっている。そして、戦闘シーンでは、フレーム４０に表示された仮想ゲーム空間４１内に、一体のプレイヤキャラクタＣ１と複数の敵キャラクタＣ２とが配置されている。プレイヤキャラクタＣ１は、プレイヤがコントローラ３０を操作することによって仮想ゲーム空間４１内で行動させることができる動的オブジェクトであり、例えば、仮想ゲーム空間４１内で所望の方向へ移動したり、敵キャラクタＣ２に対して刀を振り下ろしたり、といった各種の動作を実行させることができる。
【００４８】
また、敵キャラクタＣ２は、後に詳述する制御部８によって動作が制御される動的オブジェクトであり、各自に設定された思考パターンに基づいて仮想ゲーム空間４１内を行動し、プレイヤキャラクタＣ１に対して攻撃を仕掛けてくるようになっている。本ゲームでは、１つのフレーム４０に最大３０体の敵キャラクタＣ２を同時に配置して行動させることができ、換言すれば、モニタ２０に、最大３０体の動作する敵キャラクタＣ２を表示させることができる。そして、プレイヤは、コントローラ３０を介してプレイヤキャラクタＣ１を操作し、これらの敵キャラクタＣ２を次々と倒しながらステージを進行させる。なお、仮想ゲーム空間４１には、プレイヤキャラクタＣ１や敵キャラクタＣ２のような動的オブジェクトの他にも、背景を構成するものとして建築物などの静的オブジェクトＣ３も配置されている。
【００４９】
ところで、プレイヤキャラクタＣ１と敵キャラクタＣ２との戦闘シーンなどの動画をモニタ２０に表示するため、ゲーム装置１は、各キャラクタＣ１，Ｃ２の動作に応じて経時的に内容が刻々と変化するフレーム４０を、所定のフレームレート（以下、「フレームレートの基準値」といい、本実施の形態では６０ｆｐｓ）で生成している。しかしながら、上記のように最大３０体もの敵キャラクタＣ２を同時に動作させるため、ゲーム装置１の処理能力を超える過大な負荷がかかる場合がある。この場合、実際のフレームレート（以下、「フレームレートの実測値」という）が、上記基準値より小さくなったり、一又は複数のフレーム４０がモニタ２０に表示できなかったり、といった処理落ち現象が発生する可能性がある。そこで、本ゲーム装置１は、このような過大な負荷が発生した場合に、プレイヤに違和感を生じさせることを抑制しつつ、負荷を軽減する処理を実行するようになっている。以下、ゲーム装置１での負荷軽減処理について詳述する。
【００５０】
なお、本実施の形態に係るゲーム装置１の説明において用いる幾つかの用語について、ここでまとめて概説しておく。まず、既に先行記載している「フレーム」とは、モニタ２０に表示される動画の１コマを成す画像（静止画像）そのものを意味している。従って、例えば敵キャラクタＣ２が移動する様子は、該敵キャラクタＣ２の移動過程を断続的に示すフレーム（画像）を、所定のフレームレートでモニタ２０に連続して表示することにより、動画として再生される。
【００５１】
また、このフレームを構成するためのデータ（レンダリング後のデータ）を「フレームデータ」と称している。このフレームデータをモニタ２０に出力（描画）することで、フレームがモニタ２０に表示される。更に、フレームデータには、「オブジェクトデータ」及び「環境データ」が含まれている。このうち「オブジェクトデータ」は、プレイヤキャラクタＣ１や敵キャラクタＣ２などの動的オブジェクトの状態（位置、姿勢、色彩など）を示すデータである。なお、プレイヤキャラクタＣ１や敵キャラクタＣ２には、腕や脚などに合計３０箇所程度の関節が設定されており、オブジェクトデータとして、これら全ての関節に対応する角度データや、各キャラクタの仮想ゲーム空間上での位置を示す位置データなど、キャラクタの生成に必要な情報が設定されている。他方、「環境データ」は、これらのキャラクタＣ１，Ｃ２の周辺環境を構成するもの、例えば、建物などの仮想ゲーム空間を構成する静的オブジェクトＣ３、戦闘時の様子を視覚的に表現する爆風や火花などのパーティクル、木の葉のような平面的なオブジェクト、遠近感を演出するための「もや」、プレイヤキャラクタＣ１の体力ゲージ、などを示すデータである。
【００５２】
［制御部の機能的構成］
図４は、ゲーム装置１が備える制御部８の機能的な構成を示すブロック図であり、特に、負荷軽減処理に関連性の高い機能について示している。制御部８は、図１を用いて説明したように、メモリコントローラ２、ＣＰＵ３、ＧＰＵ４、メインメモリ５、ＤＳＰ６、及びＡＲＡＭ７を備えており、光ディスク２３に記録されたゲームプログラム２４及びゲームデータを読み込んで実行することにより、以下に説明するような、フレーム生成手段５１、ＩＤ情報更新手段５２、負荷検出手段５３、負荷軽減手段５４、及びオブジェクト復元手段５５としてゲーム装置１を機能させる。
【００５３】
フレーム生成手段
フレーム生成手段５１は、本ゲームの動画を構成するフレーム４０を所定のフレームレートで生成するものであり、即ち、フレーム４０を示すフレームデータを算出する処理と、このフレームデータをモニタ２０へ出力する処理とを行う。そして、このようにフレーム４０を生成するために、フレーム生成手段５１は、オブジェクトデータ更新手段５１ａ、環境データ更新手段５１ｂ、及びフレームデータ出力手段５１ｃを備え、ゲーム装置１を以下のように機能させる。
【００５４】
まず、オブジェクトデータ更新手段５１ａは、フレーム４０に含まれる動的オブジェクトについて、該動的オブジェクトの状態（位置、姿勢、色彩など）を示すオブジェクトデータの更新処理をゲーム装置１に実行させるものである。より具体的に説明すると、動的オブジェクトである敵キャラクタＣ２には、個体毎に思考パターンが設定されており、各敵キャラクタＣ２はこの思考パターンに基づいて動作（移動、攻撃など）する。
【００５５】
この思考パターンには、攻撃型、防御型、又は、攻撃型及び防御型の夫々の特性を兼ね備えたバランス型などがあり、敵キャラクタＣ２がどのような役割（行動特性）に基づいて仮想ゲーム空間４１内を行動するかを定めるものである。そして、敵キャラクタＣ２は自身の思考パターンに基づいて行動（動作）を決定する。例えば、攻撃型の思考パターンを有する敵キャラクタＣ２の場合、攻撃に関する動作が選択されやすく設定されている。具体的には、プレイヤキャラクタＣ１に対して攻撃をするために移動動作を選択（移動モーション動作を実行）し、プレイヤキャラクタＣ１に所定距離まで接近すると、次に、刀でプレイヤキャラクタＣ１に斬りつけるなどの攻撃動作を選択（攻撃モーション動作を実行）する。そしてこのように選択されたモーション動作を実行するに際し、オブジェクトデータ更新手段５１ａは、選択されたモーション動作に対応して、フレーム単位で予め設定されている敵キャラクタＣ２のモーションデータ（位置（座標）及び姿勢を示すデータ）から、該当するフレームに対応するモーションデータを読み出し、読み出したモーションデータに基づいて敵キャラクタＣ２の位置及び姿勢を示すオブジェクトデータを更新する（アニメーション動作させる）。
【００５６】
なお、上記のような各モーション動作（移動モーション動作や攻撃モーション動作など）には、敵キャラクタＣ２の「位置の更新（変化）」と、腕や脚を曲げたり身体の向きを左右に変更したりするような「姿勢の更新（変化）」とを含んでいる。このモーション動作を示すモーションデータは、光ディスク２３に記憶されたゲームデータに含まれており、ディスクドライブ１６によって読み込まれてメインメモリ５に格納されている。そして、各敵キャラクタＣ２のモーション動作に対応するモーションデータが制御部８で処理されることにより、各敵キャラクタＣ２について該モーションデータに対応するモーション動作（アニメーション）が再生されるようになっている。
【００５７】
上記モーションデータ及びモーション動作について更に詳述する。モーションデータは、再生されるモーション（アニメーション）の１コマ（１フレーム）毎の敵キャラクタＣ２の位置及び姿勢を決定するデータである。このモーションデータには、モーション動作毎に１フレーム毎の敵キャラクタＣ２の位置を示す位置データ（移動量）と、関節（腕や脚などの関節）の角度（各関節に対応付けられた親関節からみたときの各関節の相対的な角度）を示す角度データとが予め記憶されている。そして、位置データに基づいて仮想ゲーム空間４１内での敵キャラクタＣ２の位置が決定され、角度データに基づいて敵キャラクタＣ２の姿勢が決定される。なお、モーションデータには、敵キャラクタＣ２の全ての関節に対応する角度データが設定されている。
【００５８】
このように、モーションデータに基づいて決定される各敵キャラクタＣ２の位置及び姿勢を、連続する各フレーム４０において逐次決定して表示することにより、各敵キャラクタＣ２の連続したモーション動作（即ち、移動や攻撃といった動作を示すアニメーション）が再生されるようになっている。
【００５９】
なお、オブジェクトデータ更新手段５１ａは、上記のように１フレーム毎にモーションデータに設定された位置データや角度データを読み出し、これに基づいて各フレーム４０のオブジェクトデータを更新（算出）する。また、オブジェクトデータ更新手段５１ａによるオブジェクトデータの更新は、原則的にフレームの生成毎に行うため、フレームレート（６０ｆｐｓ）と同じく本実施の形態では６０回／秒である。但し、後述するように更新頻度低減処理（図７参照）を実行した場合には、少なくとも一部のオブジェクトデータ（本実施の形態では、角度データにより更新される姿勢、即ち、モーション動作）について、その更新頻度が低減されることとなる。また、以下の説明では、フレームレートとオブジェクトデータの更新頻度とを区別するために、フレームレートは［ｆｐｓ］の単位で示し、オブジェクトデータの更新頻度は［回／秒］の単位で示している。また、上記の通り本実施の形態では、更新頻度低減処理にてオブジェクトデータの角度データ（姿勢を示すデータ）の更新頻度が低減される。即ち、モーション動作の更新頻度が低減されることとなる。従って以下では、オブジェクトデータのうち角度データの更新と、モーション動作（即ち、姿勢）の更新とを、略同義のものとして用いる。
【００６０】
また、プレイヤキャラクタＣ１についても、プレイヤの操作に対応するモーションデータを読み出し、読み出したモーションデータに基づいてプレイヤキャラクタＣ１の位置や姿勢（オブジェクトデータ）を更新する。
【００６１】
環境データ更新手段５１ｂは、フレーム４０毎（６０回／秒）に、仮想ゲーム空間４１を構成するオブジェクトや文字情報など、上記動的オブジェクトの周辺環境の画像を示す環境データの更新処理をゲーム装置１に実行させるものである。具体的に説明すると、環境データ更新手段５１ｂは、仮想ゲーム空間４１を構成する建築物などのオブジェクトの状態（位置、姿勢、色彩など）を示すデータを算出し、該オブジェクトを示す環境データを、算出したデータに更新する。なお、上述したように各キャラクタＣ１，Ｃ２や建築物など、不透明なオブジェクトを示すデータを算出する処理を、以下では「ソリッド処理」と称する。
【００６２】
また環境データ更新手段５１ｂは、フレーム４０に含まれる木の葉などの平面的なオブジェクトの状態を示すデータを算出し（以下、「ヌキ処理」）、また、仮想ゲーム空間４１を構成する透明なオブジェクトの状態を示すデータを算出する（以下、「トランスペアレンシー処理」）。また、戦闘シーンでの爆風や火花等の粒子状のもの（パーティクル）の状態を示すデータの算出（以下、「エフェクト処理」）や、「もや」を表現する場合のようにフレーム４０の全体を補正する場合の補正値を示すデータの算出（以下、「フィルタ処理」）も実行する。更に、プレイヤキャラクタＣ１の体力値や体力ゲージなど、他のオブジェクトに対して最も仮想カメラに近い位置に表示する二次元画像データの算出（以下、「スクリーン処理」）も実行する。
【００６３】
上述したように、オブジェクトデータ更新手段５１ａ及び環境データ更新手段５１ｂにより算出された各データによって、フレーム４０を示すフレームデータが構成される。そして、算出されたフレームデータは、メインメモリ５内に設定されたフレームバッファ（図示せず）に書き込まれる。
【００６４】
次に、フレームデータ出力手段５１ｃは、フレームバッファに書き込まれたフレームデータに基づいて、フレーム４０をモニタ２０に表示するものである。即ち、フレームデータ出力手段５１ｃは、ＧＰＵ４により、フレームバッファに書き込まれたフレームデータを読み出し、これをビデオＩ／Ｆ１１を介してモニタ２０へ出力する。これにより、可視画像であるフレーム４０がモニタ２０に表示される。
【００６５】
このようにフレーム生成手段５１は、オブジェクトデータの算出・更新、環境データの算出・更新、及び、これにより得られたフレームデータの出力を、ゲーム装置１に実行させる。
【００６６】
ＩＤ情報更新手段
フレーム４０に含まれる敵キャラクタＣ２の夫々には、固有のＩＤ情報が設定されており、このＩＤ情報は、ＩＤ情報更新手段５２によって、フレーム４０毎に更新されるようになっている。ＩＤ情報としては、敵キャラクタＣ２の名称、敵キャラクタＣ２の種類（ボスキャラクタ、雑魚キャラクタなど）に基づいて設定された重要度を示す情報、仮想ゲーム空間４１内での位置情報、身体の向きを示す角度情報、オブジェクトデータの更新頻度（即ち、モーション動作の更新頻度）を示す情報、及びソート優先度（後述）に関する情報などが含まれている。このうち位置情報及び角度情報は、思考に基づき行動する敵キャラクタＣ２について算出したオブジェクトデータから取得し、フレーム４０毎に最新の情報に更新される。また、名称、及び重要度を示す情報については、一の敵キャラクタＣ２に対して固定的に設定され、同一の敵キャラクタＣ２についてフレーム４０毎には更新されないようになっている。更に、オブジェクトデータの更新頻度（モーション動作の更新頻度）を示す情報については、後述する負荷軽減処理及び復元処理の実行により、適宜更新される。なお、ＩＤ情報に含まれる各情報の詳細については、以下で適宜説明する。
【００６７】
負荷検出手段
負荷検出手段５３は、フレーム４０を生成するのに要する制御部８の負荷を検出するものであり、本実施の形態では、フレームレートの測定値が基準値よりも小さい所定の閾値以下であった場合に、過大な負荷が生じていると判定する。より具体的に説明すると、オブジェクトデータの更新処理（モーション動作の更新処理）の開始時点から該更新処理の終了時点までに要した時間を、ＣＰＵ３のクロックを用いて計測し、この時間からフレームレートの測定値を算出する。そして、本実施の形態のようにフレームレートの基準値が６０ｆｐｓであれば、例えば測定値が５８ｆｐｓ以下であった場合に、過大な負荷が生じていると判定するようになっている。
【００６８】
負荷軽減手段
制御部８が備える負荷軽減手段５４は、負荷検出手段５３によって過大な負荷が生じていると判定された場合に実行され、複数の敵キャラクタＣ２のうちの一部を対象に、フレーム４０から削除して非表示にしたり、オブジェクトデータの更新頻度（モーション動作の更新頻度）を低減したりするなどして、制御部８の負荷を軽減するものである。
【００６９】
即ち、ゲーム装置１がその処理能力以下で動作している通常の状態においては、敵キャラクタＣ２等の動的オブジェクトに関するオブジェクトデータの更新頻度（モーション動作の更新頻度）は、フレーム４０が生成されるのと同じ頻度（即ち、本実施の形態ではフレームレートの基準値の周期と等しい６０回／秒）とされる。一方、過大な負荷が生じた場合には負荷軽減手段５４により、一部の敵キャラクタＣ２を非表示として制御部８の負荷を軽減し、それでも過大な負荷が生じた場合には、一部の敵キャラクタＣ２を対象に、そのオブジェクトデータの更新頻度（モーション動作の更新頻度）を小さく設定（例えば、３０回／秒）して、制御部８の負荷を軽減する。更に、これでもまだ過大な負荷が生じた場合には、オブジェクトデータの更新頻度（モーション動作の更新頻度）を更に小さく設定（例えば、１５回／秒）して制御部８の負荷を低減する。
【００７０】
なお、本実施の形態では、上記のように更新頻度を小さく設定するオブジェクトデータとして、既に説明した角度データを対象とし、モーション動作の更新（姿勢の更新）の頻度を小さくすることとしている。一方、更新頻度を小さく設定するオブジェクトデータとして位置データは含まないようにしており、従って位置の更新頻度は変更しないこととしている。そのため、本実施の形態では更新頻度が低減された敵キャラクタＣ２であっても、その仮想ゲーム空間４１内での位置は思考パターンに応じてフレーム４０毎に変化し、例えば手足を振るような移動モーション動作の再生処理を行う頻度だけが低減されるようになっている。但し、位置データも含めたオブジェクトデータを対象に、その更新頻度を小さく設定するようにし、モーション動作（姿勢）に加えて位置も更新頻度を変更できるようにしてもよい。
【００７１】
このような処理を実行するため、図４に示すように負荷軽減手段５４は、オブジェクト選択手段５４ａ、更新頻度低減手段５４ｂ、動的オブジェクト削除手段５４ｃ、及び静的オブジェクト削除手段５４ｄを備えている。
【００７２】
このうちオブジェクト選択手段５４ａは、ＩＤ情報に含まれるソート優先度に基づいて、非表示又はモーション動作の更新頻度低減の対象（以下、「負荷軽減対象」）とする敵キャラクタＣ２を選択するものである。また、更新頻度低減手段５４ｂは、選択された敵キャラクタＣ２について、モーション動作（姿勢）の更新頻度を上述したように二段階に分けて低減するものであり、動的オブジェクト削除手段５４ｃは、選択された敵キャラクタＣ２を非表示にするものである。更に、静的オブジェクト削除手段５４ｄは、仮想カメラの視野に入る静的オブジェクトの一部を非表示にするものである。なお、動的オブジェクト削除手段５４ｃによって非表示状態となっている敵キャラクタＣ２については、非表示のままで移動（位置の更新）は行うものの、モーション動作の再生（姿勢の更新）は行わない。即ち、この非表示状態の敵キャラクタＣ２については、そのオブジェクトデータのうち、位置データの更新（位置の更新）は行うが、角度データの更新（モーション動作の更新）は行われない。
【００７３】
ここで、上記ＩＤ情報に含まれるソート優先度は、各敵キャラクタＣ２が負荷軽減対象として選択される優先順位を示すものである。例えば、下式（１）に示すように、敵キャラクタＣ２の種類（ボスキャラクタ、雑魚キャラクタなど）に基づいて設定された補正値Ａ１、仮想カメラからの距離に基づいて設定された補正値Ａ２、及びその他の様々の要因に基づいて設定された補正値Ａ３をパラメータとして、ソート優先度は決定される。また、このような式（１）に示される方法に従って、ソート優先度はＩＤ情報更新手段５２によりフレーム４０毎に更新される。
【００７４】
【数１】
2011186834.tif 000003
【００７５】
本実施の形態では、敵キャラクタＣ２の種類に応じて重要度が設定されており、重要度が高いキャラクタほど補正値Ａ１として大きな数値が割り当てられている。例えば、ボスキャラクタは雑魚キャラクタよりも重要性が高いため、より大きな補正値Ａ１が割り当てられている（詳細は後述）。また、仮想カメラからの距離（各敵キャラクタＣ２の位置情報から算出する）が小さい敵キャラクタＣ２ほど、補正値Ａ２として大きな数値が設定されるようになっている。また、上記Ａ１，Ａ２の他、様々の要因に基づいてソート優先度を決定する補正値をここでは「補正値Ａ３」で代表させているが、例えば、プレイヤキャラクタＣ２によって掴まれている状態の敵キャラクタＣ２や、空中に位置している状態の敵キャラクタＣ２については、補正値Ａ３として大きな数値が割り当てられるようになっている。そして、このような補正値を使って式（１）によりソート優先度を決定し、このソート優先度の値が大きい敵キャラクタＣ２ほど優先順位が低く、即ち、負荷軽減対象として選択されにくくなっている。換言すれば、ソート優先度が小さいほど、負荷軽減対象として選択される優先順位が高くなっている。
【００７６】
また、既に説明したように、本実施の形態ではフレーム４０に最大３０体の敵キャラクタＣ２を含める（表示する）ことができる。そして、ソート優先度は、フレーム４０に含まれる全ての敵キャラクタＣ２に対して設定される。また、フレーム４０に含まれていなかった（モニタ２０に表示されていなかった）敵キャラクタＣ２が、新たにフレーム４０に含まれることとなった場合には、上式に基づいてこの敵キャラクタＣ２のソート優先度が決定される。そして、制御部８の負荷が過大になったときは、このソート優先度に基づいて敵キャラクタＣ２が選択され、選択された敵キャラクタＣ２は、動的オブジェクト削除手段５３ｄによってフレーム４０から削除され、又は、更新頻度低減手段５３ｃによって該敵キャラクタＣ２のモーション動作の更新頻度が低減される。
【００７７】
図５は、フレーム４０に含め得る最大３０体の敵キャラクタＣ２について設定されたソート優先度を例示する模式図である。なお、この図５では理解の容易のために、仮想カメラからの距離に基づいて設定された補正値Ａ２以外の補正値Ａ１，Ａ３は、全ての敵キャラクタＣ２において同じ値である場合について例示している。即ち、ここに示された敵キャラクタＣ２（図５中では「ＮＰＣ０１」〜「ＮＰＣ３０」と表示）は、実質的に仮想カメラからの距離のみに基づいてソート優先度が決定されている。従って、仮想カメラに近い敵キャラクタＣ２ほど、ソート優先度が高くなっており、図５ではソート優先度が高い順に、ＮＰＣ０１〜ＮＰＣ３０の敵キャラクタＣ２が配置されている。
【００７８】
図５に示すように、本実施の形態では、ソート優先度が高い方から順に所定数（図５では、ＮＰＣ０１〜ＮＰＣ０５の５体）の敵キャラクタＣ２については、非表示又はモーション動作の更新頻度低減の対象に含めない、「負荷軽減非対象」としている。これにより、仮想カメラの近くに位置し、プレイヤが注視する５体の敵キャラクタＣ２（ＮＰＣ０１〜ＮＰＣ０５）は、滑らかな（フレームレートの基準値と同程度の頻度でモーション動作が更新される）動画で常にモニタ２０に表示されることとなる。
【００７９】
また、負荷軽減対象であるＮＰＣ０６〜ＮＰＣ３０の２５体の敵キャラクタＣ２のうち、ソート優先度が低い方から順に所定数（図５では、ＮＰＣ２６〜ＮＰＣ３０の５体）の敵キャラクタＣ２については、負荷が過大になったときに動的オブジェクト削除手段５３ｄによってフレーム４０から削除される「削除対象」とされている。そして、負荷軽減対象のうち削除対象を除いたＮＰＣ０６〜ＮＰＣ２５の２０体の敵キャラクタＣ２が、更新頻度低減手段５３ｃによってモーション動作の更新頻度が低減される「更新頻度低減対象」とされている。
【００８０】
なお、フレーム４０に含まれる敵キャラクタＣ２が３０体に満たない場合もある。例えば、フレーム４０に２８体（ＮＰＣ０１〜ＮＰＣ２８）の敵キャラクタＣ２が含まれる場合は、上記と同様にソート優先度の高い順に５体（ＮＰＣ０１〜ＮＰＣ０５）の敵キャラクタＣ２が「負荷軽減非対象」となり、次にソート優先度の高い順に２０体（ＮＰＣ０６〜ＮＰＣ２５）の敵キャラクタＣ２が「更新頻度低減対象」となる。そして、ソート優先度の低い残りの３体（ＮＰＣ２６〜ＮＰＣ２８）だけが「削除対象」となる。
【００８１】
更に、フレーム４０に含まれる敵キャラクタＣ２が２５体に満たない場合、例えば、２１体（ＮＰＣ０１〜ＮＰＣ２２）であった場合は、上記と同様にソート優先度の高い順に５体（ＮＰＣ０１〜ＮＰＣ０５）の敵キャラクタＣ２が「負荷軽減非対象」となる。そして、次にソート優先度の高い順に１６体（ＮＰＣ０６〜ＮＰＣ２２）の敵キャラクタＣ２が「更新頻度低減対象」となり、「削除対象」とされる敵キャラクタＣ２は存在しない。
【００８２】
ところで、実際にソート優先度を決定する要因は、既に説明したように仮想カメラからの距離だけでなく、敵キャラクタＣ２の種類も一因となる。この点について詳説すると、敵キャラクタＣ２には、仮想ゲーム空間４１内に多数出現する雑魚キャラクタの他、ゲームの進行上、倒さなければ進むことができないといった重要な位置付けにあるボスキャラクタや中ボスキャラクタなどが存在している。このように相対的に重要度の高い敵キャラクタＣ２については、仮想カメラからの距離が等しく相対的に重要度の低い敵キャラクタＣ２に比べて、ソート優先度は高く設定される。
【００８３】
従って、このように重要度の高い敵キャラクタＣ２が存在している場合には、仮想カメラに近い５体の敵キャラクタＣ２のうち遠い方の敵キャラクタＣ２に優先して、重要度の高い敵キャラクタＣ２が負荷軽減非対象とされる場合がある。例えば、重要度の低い雑魚キャラクタが仮想カメラの近くに５体位置し、更に仮想カメラから離れる方向にボスキャラクタが位置している場合について説明する。このとき、距離に関する補正値Ａ２については、５体目の雑魚キャラクタの方がボスキャラクタよりも大きい数値となるが、種類（即ち、重要度）に関する補正値Ａ１については、５体目の雑魚キャラクタよりもボスキャラクタの方が大きい数値となる。従って、上述した式に基づいてソート優先度を算出した結果、５体目の雑魚キャラクタよりもボスキャラクタの方がソート優先度が高くなる場合がある。この場合には、仮想カメラから４体目までの雑魚キャラクタとボスキャラクタとが負荷軽減非対象とされ、仮想カメラから５体目の雑魚キャラクタは負荷軽減対象とされる。
【００８４】
ところで、フレーム４０に含まれていた敵キャラクタＣ２のうちの一部が、プレイヤキャラクタＣ１又は敵キャラクタＣ２の移動や、仮想カメラの視点の移動によって、フレーム４０から外れてしまう場合がある。この敵キャラクタＣ２については、再表示されるまでは関節の角度に関するモーション動作の更新処理は行われない。従って、非表示の状態で位置の更新は行われるが、モーション動作の再生は行われない。また、この敵キャラクタＣ２については、名称及び重要度を示す情報の他、非表示となった後にフレーム４０毎に更新される位置情報、及び非表示となった時点の角度情報がＩＤ情報として管理される。そして、仮想カメラの視点の移動などにより、管理されている位置情報の示す位置が、再びフレーム４０内に含まれることになった場合には、フレーム生成手段５１により、この位置で非表示状態の敵キャラクタＣ２を再び表示させる。そして、再表示された敵キャラクタＣ２は、自己の思考パターンに基づくモーション動作を再開し、その後はソート優先度がフレーム４０毎に更新される。このようにして再表示された敵キャラクタＣ２についても、その後に過大な負荷が検出され、このソート優先度に基づいて負荷軽減対象として選択された場合は、再び非表示とされ、又はモーション動作の更新頻度が低減される。
【００８５】
また、本実施の形態に係る制御部８は、過去に表示した所定数（例えば、１２０体）の敵キャラクタＣ２について、そのＩＤ情報を管理している。即ち、本ゲームでは、プレイヤの操作に応じてプレイヤキャラクタＣ１が仮想ゲーム空間４１内を進み、次々に出現してくる敵キャラクタＣ２を倒しながら更に進んで行く。この際、既に倒された敵キャラクタＣ２であっても、最新に出現した敵キャラクタＣ２から数えて過去１２０体目までの敵キャラクタＣ２については、名称、重要度を示す情報、位置情報、及び角度情報などのＩＤ情報を管理している（但し、更新はされない）。なお、プレイヤキャラクタＣ１によって倒された敵キャラクタＣ２は、所定の時間が経過するか、又は、一旦仮想カメラの視界から外れると非表示とされる。
【００８６】
また、現時点でＩＤ情報を管理している敵キャラクタＣ２が１２０体存在している場合には、次に新たな敵キャラクタＣ２を出現させる際、最も古いＩＤ情報（１２０体目の敵キャラクタＣ２のＩＤ情報）の管理を終了し、新たに出現させる敵キャラクタＣ２のＩＤ情報の管理を開始する。但し、ボスキャラクタなどの重要度の高い敵キャラクタＣ２については、そのＩＤ情報の管理を終了させないこととしている。
【００８７】
オブジェクト復元手段
制御部８はオブジェクト復元手段５５を備えている。このオブジェクト復元手段５５は、負荷軽減手段５４により、一部の敵キャラクタＣ２が非表示とされたり、又はそのモーション動作の更新頻度が低減されたりしている状態（以下、「負荷軽減状態」）で、制御部８によるフレーム４０の生成に要する負荷が過大ではなくなった場合に、敵キャラクタＣ２を負荷軽減状態から復元させるものである。
【００８８】
より具体的に説明すると、オブジェクト復元手段５５は、復元対象選択手段５５ａを備えている。復元対象選択手段５５ａは、負荷軽減状態にある敵キャラクタＣ２のうち、復元対象とする敵キャラクタＣ２を、ソート優先度に基づいて決定する。例えば、負荷軽減状態にある敵キャラクタＣ２が複数存在する場合、ソート優先度の高いものから優先して復元対象として選択する。オブジェクト復元手段５５は、こうして選択された敵キャラクタＣ２について、非表示とされていた場合には再表示し、更新頻度が低減されていた場合にはそれを元に戻す。
【００８９】
［フレーム生成フロー］
図６は、上述した機能を有するゲーム装置１が、１つのフレーム４０を生成する過程を示すフローチャートである。これに示すように、ゲーム装置１は、はじめにＩＤ情報更新手段５２によって、敵キャラクタＣ２のＩＤ情報の更新処理を行う（ステップＳ１）。具体的に説明すると、敵キャラクタＣ２は自己の思考パターンに基づいて行動するため、フレーム４０毎に立ち位置や向きが変更され、これに伴ってソート優先度も変更される。そこで、次回のフレーム４０を生成するにあたって、敵キャラクタＣ２のＩＤ情報を前回のフレーム４０に基づいて更新する。具体的には、前回のフレーム４０における仮想ゲーム空間４１内での位置情報、身体の向きを示す角度情報、式（１）に基づいて算出されるソート優先度、などのＩＤ情報を更新する。一方、同一の敵キャラクタＣ２においてはその名称や重要度は変更されないため、これらのＩＤ情報は更新されずに同一内容が維持される。
【００９０】
ＩＤ情報が更新されると、負荷検出手段５３によって、前回のフレーム４０の生成時におけるフレームレートの測定値を取得し、これを所定の閾値（例えば、５８ｆｐｓ）と比較する（ステップＳ２）。そして、測定値が閾値以下であって負荷が過大であると判定された場合（ステップＳ２：ＹＥＳ）は負荷軽減処理を実行し（ステップＳ３）、閾値より大きくて負荷が過大ではないと判定された場合（ステップＳ２：ＮＯ）は復元処理を実行する（ステップＳ４）。このように、フレームレートの測定値に基づいて負荷軽減処理又は復元処理を行うことで、次のフレーム４０に含まれる敵キャラクタＣ２について、何れを非表示とするか、及び、何れの敵キャラクタＣ２を対象にモーション動作の更新頻度をどう設定するか、が決定される。この負荷軽減処理及び復元処理の具体的な内容については、図７〜図１２を参照して後述する。
【００９１】
次に、フレーム生成手段５１によって、既に説明したように不透明なオブジェクトを示すデータを算出するソリッド処理（ステップＳ５）、平面的なオブジェクトの状態を示すデータを算出するヌキ処理（ステップＳ６）、透明なオブジェクトを示すデータを算出するトランスペアレンシー処理（ステップＳ７）、戦闘シーンを表現するパーティクルを示すデータを算出するエフェクト処理（ステップＳ８）、「もや」等を表現する補正値を示すデータを算出するフィルタ処理（ステップＳ９）、及び体力ゲージ等の二次元画像データを算出するスクリーン処理（ステップＳ１０）が順次実行される。
【００９２】
これらのステップＳ５〜Ｓ１０の処理（これらの処理は、まとめて「レンダリング処理」と称される）を実行することで、次回にモニタ２０に表示するフレーム４０を示すフレームデータを取得する。そして、このフレームデータに基づき、フレームデータ出力手段５１ｃがモニタ２０にフレーム４０を表示する。このようなステップＳ１〜Ｓ１０の処理を、１つのフレーム４０毎に、即ち、本実施の形態では６０ｆｐｓというフレームレートで繰り返し実行する。
【００９３】
なお、図６には示していないが、制御部８は、フレーム４０に含まれる敵キャラクタＣ２及びプレイヤキャラクタＣ１について、「当たり判定処理」をフレーム４０毎に適宜タイミングで実行する。この当たり判定処理では、プレイヤキャラクタＣ１による攻撃が敵キャラクタＣ２にヒットしたか否か、及び、敵キャラクタＣ２による攻撃がプレイヤキャラクタＣ１にヒットしたか否かを判定する。そして、ヒットしたと判定した場合には、ヒットしたことを表現するパーティクル（火花など）などのデータを、エフェクト処理（ステップＳ８）により算出する。
【００９４】
［負荷軽減処理フロー］
次に、ステップＳ３の負荷軽減処理を実行する際のゲーム装置１の動作について説明する。図７は、ゲーム装置１が負荷軽減処理を実行する過程を示すフローチャートである。本実施の形態に係るゲーム装置１では、既に説明したように、過大な負荷が生じた場合、一部の敵キャラクタＣ２（ＮＰＣ２６〜ＮＰＣ３０）をソート優先度に基づき順に非表示とし、それでも過大な負荷が生じた場合には、一部の敵キャラクタＣ２（ＮＰＣ０６〜ＮＰＣ２５）を対象に、そのモーション動作（姿勢）の更新頻度を６０回／秒から３０回／秒に順に設定し直す。更に、これでもまだ過大な負荷が生じた場合には、上記敵キャラクタＣ２（ＮＰＣ０６〜ＮＰＣ２５）のモーション動作の更新頻度を、３０回／秒から１５回／秒に順に設定し直す。以下、このようにして制御部８の負荷を低減する負荷軽減処理の動作フローについて詳説する。
【００９５】
図７に示すように、負荷軽減処理ではステップＳ１（図６参照）で更新されたＩＤ情報を取得し（ステップＳ２０）、その中に含まれる各敵キャラクタＣ２の位置情報に基づき、フレーム４０内に何体の敵キャラクタＣ２が含まれているかを判定する（ステップＳ２１）。その結果、２６体以上であると判定した場合（ステップＳ２１：ＮＯ）は、オブジェクト選択手段５４ａにより、そのうちで最もソート優先度の低い１体の敵キャラクタＣ２を選択し（ステップＳ２２）、動的オブジェクト削除手段５４ｃによってこの敵キャラクタＣ２を「削除対象」として決定する（ステップＳ２３）。
【００９６】
従ってこの場合、前回のフレーム４０に含まれていた敵キャラクタＣ２のうち、最もソート優先度の低い１体の敵キャラクタＣ２は、負荷軽減処理（図６のステップＳ３）後に行うソリッド処理（図６のステップＳ５）の対象とならず、次回のフレーム４０では削除されて非表示状態となる。図８は、負荷軽減処理を説明するための模式図であり、（ａ）は削除処理の例、（ｂ）及び（ｃ）は更新頻度低減処理の例を示している。この図８（ａ）に示すように、前回のフレーム４０に２８体（即ち、２６体以上）の敵キャラクタＣ２（ＮＰＣ０１〜ＮＰＣ２８）が含まれ、過大な負荷が検出された場合には、最もソート優先度の低い敵キャラクタＣ２（ＮＰＣ２８）が次回のフレーム４０では非表示とされる。
【００９７】
これにより、削除された敵キャラクタＣ２については、ソリッド処理（図６のステップＳ５）にて関節の角度に関するモーション動作を算出する必要がなく、当たり判定処理やエフェクト処理（図６のステップＳ８）を行う必要もないため、制御部８の負荷を軽減することができる。また、この敵キャラクタＣ２が表示されない分、フレームデータのデータ量が小さくなるため、レンダリング処理（ステップＳ５〜Ｓ１０の処理）やモニタ２０へのデータの出力に要する制御部８の負荷も軽減することができる。なお、前述したように、敵キャラクタＣ２が非表示状態とされた場合であっても、その位置データは更新され、更新毎の位置情報を含むＩＤ情報は１２０体分まで管理される。
【００９８】
一方、ステップＳ２１にて敵キャラクタＣ２が２５体以下であると判定した場合（ステップＳ２１：ＹＥＳ）は、補正処理を実行する（ステップＳ２４）。この補正処理について、ここでは概要だけ説明し、詳細については便宜上あとで説明する（図１０〜図１１参照）。負荷軽減処理では、この後にステップＳ２５〜Ｓ３１で説明するように、モーション動作の更新頻度を低減する敵キャラクタＣ２を、ソート優先度に基づいて選択する。一方で、各敵キャラクタＣ２は自己の思考パターンに基づいて行動し、相対的な位置関係がフレーム４０毎に変化するため、ステップＳ２０で更新されるソート優先度も、フレーム４０毎に変化する。その結果、前回のフレーム４０にて更新頻度低減対象であった敵キャラクタＣ２と、最新のソート優先度から更新頻度低減対象として選択される敵キャラクタＣ２とが一致しない場合がある。そこで補正処理（ステップＳ２４）では、最新のソート優先度によれば更新頻度がより高く設定されるべき敵キャラクタＣ２について、最新のソート優先度に基づいて更新頻度を更新（再設定）するものである。簡単に言えば、ステップＳ２５〜Ｓ３１での更新頻度低減処理に先だって、最新のソート優先度に照らして更新頻度が低すぎる敵キャラクタＣ２を対象に、その更新頻度を適正値に補正するものである。
【００９９】
続いて、このステップＳ２４の補正処理の後の動作について説明すると、ゲーム装置１は、オブジェクト選択手段５４ａによって、更新頻度が６０回／秒の敵キャラクタＣ２の中からソート優先度が最も低い１体の敵キャラクタＣ２を選択する（ステップＳ２５）。そして、この敵キャラクタＣ２が負荷軽減非対象であるか否か、即ち、ソート優先度に関して上位５体に含まれる敵キャラクタＣ２であるか否かを判定する（ステップＳ２６）。その結果、図８（ｂ）に示す例のようにこの敵キャラクタＣ２（ＮＰＣ０７）が負荷軽減非対象でない場合（ステップＳ２６：ＮＯ）は、この敵キャラクタＣ２のモーション動作の更新頻度を、現状の６０回／秒から低減し、３０回／秒に設定する（ステップＳ２７）。
【０１００】
一方、ステップＳ２５で選択した敵キャラクタＣ２が、負荷軽減非対象であった場合（ステップＳ２６：ＹＥＳ）は、この選択を解除し（ステップＳ２８）、更新頻度が３０回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ２９）。ここで、更新頻度が３０回／秒の敵キャラクタＣ２が存在しない場合（ステップＳ２９：ＮＯ）とは、敵キャラクタＣ２が負荷軽減非対象である５体以下であるか、この５体の他に１５回／秒の敵キャラクタＣ２のみしか存在しない状態を意味する。そして、この場合（ステップＳ２９：ＮＯ）には、何れの敵キャラクタＣ２の更新頻度も低減せずに、負荷軽減処理を終了する。
【０１０１】
これに対し、図８（ｃ）に示す例のように、更新頻度が３０回／秒の敵キャラクタＣ２（ＮＰＣ０６〜ＮＰＣ１５）が存在する場合（ステップＳ２９：ＹＥＳ）には、その中からソート優先度が最も低い１体の敵キャラクタＣ２（ＮＰＣ１５）を選択する（ステップＳ３０）。そして、この敵キャラクタＣ２のモーション動作の更新頻度を、現状の３０回／秒から低減し、１５回／秒に設定する（ステップＳ３１）。
【０１０２】
上記ステップＳ２７，Ｓ３１のように、敵キャラクタＣ２のモーション動作の更新頻度を低く設定することにより、制御部８での負荷を軽減することができる。即ち、これらの敵キャラクタＣ２については、以前の半分の頻度で関節の角度に関するオブジェクトデータの更新（モーション動作の更新）をすればよいため、これらの敵キャラクタＣ２についてのモーション動作の更新に要する負荷が半減する。
【０１０３】
図９は、６０ｆｐｓで生成された連続するフレーム４０（４０１〜４０４）を示す模式図であり、更新頻度が６０回／秒、３０回／秒、及び１５回／秒の敵キャラクタＣ２が表示されている。また、ここでは図示の便宜上、６０回／秒の敵キャラクタＣ２（ＮＰＣ０１）を１体、３０回／秒の敵キャラクタＣ２（ＮＰＣ０５，ＮＰＣ０６）を２体、１５回／秒の敵キャラクタＣ２（ＮＰＣ２１）を１体、の計４体だけを表示している。また、理解の容易のため、各敵キャラクタＣ２（ＮＰＣ０１，ＮＰＣ０５，ＮＰＣ０６，ＮＰＣ２１）が、何れも同一のモーション動作（刀を振り下ろす動作）をしている状態を示し、姿勢が同じ敵キャラクタＣ２には、その胸の部分に同一符号（ａ，ｂ，ｃ，ｄ，ｚ）を付している。
【０１０４】
まず、更新頻度が６０回／秒の敵キャラクタＣ２（ＮＰＣ０１）についてみると、この敵キャラクタＣ２は、フレーム４０毎にモーション動作が更新されるため、図９のフレーム４０１〜４０４の全てにおいて、動作過程の１／６０［秒］ごとの状態が表示されている。
【０１０５】
一方、更新頻度が３０回／秒の敵キャラクタＣ２（ＮＰＣ０５，ＮＰＣ０６）の場合、その動作過程の１／３０［秒］ごとの状態が表示される。具体的には、図９に示すように、一方の敵キャラクタＣ２（ＮＰＣ０５）については、フレーム４０１，４０３においてモーション動作が更新されており、更新されたデータに基づく画像が表示されている。そして、フレーム４０２では、関節の角度に関してフレーム４０１と同じモーション動作（姿勢）を用いて画像が表示され、フレーム４０４では、関節の角度に関してフレーム４０３と同じモーション動作（姿勢）を用いて画像が表示されている。その結果、この敵キャラクタＣ２（ＮＰＣ０５）は、フレーム４０１〜４０４の順に、「姿勢変化後の状態」、「姿勢不変状態」、「姿勢変化後の状態」、「姿勢不変状態」が表示される。なお、本実施の形態では、敵キャラクタＣ２の位置データはフレーム４０毎に更新するため、前のフレーム４０からの姿勢が変わらないフレーム４０２，４０４においても、該敵キャラクタＣ２（ＮＰＣ０５）の仮想ゲーム空間４１内での位置は変化する。
【０１０６】
また、他方の敵キャラクタＣ２（ＮＰＣ０６）については、フレーム４０２，４０４において関節の角度に関するモーション動作が更新されており、更新されたデータに基づく画像が表示されている。そして、フレーム４０１では、その直前のフレーム４０（図示せず）と同じモーション動作（姿勢）を用いて画像が表示され、フレーム４０３では、フレーム４０２と同じモーション動作（姿勢）を用いて画像が表示されている。従って、この敵キャラクタＣ２（ＮＰＣ０６）は、フレーム４０１〜４０４の順に、「姿勢不変状態」、「姿勢変化後の状態」、「姿勢不変状態」、「姿勢変化後の状態」が表示される。なお、上記ＮＰＣ０５の場合と同様に、この敵キャラクタＣ２（ＮＰＣ０６）も、姿勢が変わらないフレーム４０１，４０３においても仮想ゲーム空間４１内での位置は変化する。
【０１０７】
このように、更新頻度が３０回／秒の敵キャラクタＣ２が複数存在する場合には、全てのモーション動作の更新タイミングが一致しないように、適宜異ならせている。即ち、モーション動作が更新される敵キャラクタＣ２の数が、各フレーム４０においてほぼ同数になるようにしている。これにより、多数の敵キャラクタＣ２について、全ての敵キャラクタＣ２が同一タイミングでモーション動作の更新処理が行われることによる負荷の増大を回避することができる。また、上記のように一方の敵キャラクタＣ２（ＮＰＣ０５）と他方の敵キャラクタＣ２（ＮＰＣ０６）とでは、「動作後の状態」が表示されるタイミングと「停止状態」が表示されるタイミングとが異なっている。これにより、更新頻度が３０回／秒である複数の敵キャラクタＣ２の全てが、同時に「動作後の状態」や「停止状態」となることがなく、プレイヤに違和感が生じるのを抑制することができる。
【０１０８】
また、更新頻度が１５回／秒の敵キャラクタＣ２（ＮＰＣ２１）については、その動作過程の１／１５［秒］ごとの状態が表示される。従って、図９に示すように、フレーム４０１〜４０３の生成時にはモーション動作が更新されずに「姿勢不変状態」となっており、前回の更新時から１／１５［秒］経ったフレーム４０４の生成時に関節の角度に関するモーション動作が更新され、更新されたデータに基づく「姿勢変化後の状態」を示す画像がこのフレーム４０４に表示される。なお、更新頻度が１５回／秒の敵キャラクタＣ２が複数存在する場合は、上記と同様に、モーション動作が更新される敵キャラクタＣ２の数が、各フレーム４０においてほぼ同数になるようにしている。また、更新頻度が３０回／秒の敵キャラクタＣ２（ＮＰＣ０５，０６）と同様に、フレーム４０１〜４０３の「姿勢不変状態」であっても、仮想ゲーム空間４１内での位置は変化するようになっている。
【０１０９】
［補正処理］
次に、ステップ２４で実行する補正処理について説明する。前述したように、補正処理は、ステップＳ２５〜Ｓ３１での更新頻度低減処理に先だって、最新のソート優先度に照らして更新頻度が低すぎる敵キャラクタＣ２を対象に、その更新頻度を適正値に補正するものである。また、モーション動作の更新頻度がより低いものから、優先的に補正処理の対象とするようになっている。以下、具体的に説明する。
【０１１０】
図１０は、ゲーム装置１が補正処理を実行する過程を示すフローチャートである。図１０に示すように、はじめにフレーム４０内にモーション動作の更新頻度が１５回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ４０）。その結果、そのような敵キャラクタＣ２が存在すると判定した場合（ステップＳ４０：ＹＥＳ）は、更新頻度が１５回／秒の敵キャラクタＣ２の中からソート優先度が最も高い１体の敵キャラクタＣ２を選択する（ステップＳ４１）。次に、この敵キャラクタＣ２よりもソート優先度が低く、更新頻度が６０回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ４２）。そして、そのような敵キャラクタＣ２が存在すると判定した場合（ステップＳ４２：ＹＥＳ）は、ステップＳ４１にて選択した敵キャラクタＣ２について、更新頻度を１５回／秒から６０回／秒に補正する（ステップＳ４３）。
【０１１１】
図１１は、更新頻度が適正値に補正される敵キャラクタＣ２の具体例を示す模式図である。この図１１に基づいて、上述したステップＳ４０〜Ｓ４３の処理について具体的に例示する。なお、ここでは理解の容易のため、敵キャラクタＣ２のソート優先度は、仮想カメラからの距離のみに基づいて設定されるものとする。
【０１１２】
前提として、図１１に示すように、補正処理を行う時点を基準として前々回に生成したフレーム４０にて、プレイヤキャラクタＣ１に近いものから順に、ＮＰＣ０１〜ＮＰＣ２５の２５体の敵キャラクタＣ２が位置しており、この順に高いソート優先度が設定されていたとする。そして、この中で仮想カメラにより近い５体の敵キャラクタＣ２（ＮＰＣ０１〜ＮＰＣ０５）は、ソート優先度が高くて更新頻度は６０回／秒に設定されている。次に仮想カメラに近い１０体の敵キャラクタＣ２（ＮＰＣ０６〜ＮＰＣ１５）は更新頻度が３０回／秒に設定され、その次に仮想カメラに近い１０体の敵キャラクタＣ２（ＮＰＣ１６〜ＮＰＣ２５）は更新頻度が１５回／秒に設定されている。そして、この状態から敵キャラクタＣ２が移動した結果、前回生成したフレーム４０では、更新頻度が１５回／秒であった敵キャラクタＣ２のうちＮＰＣ２５が、更新頻度が６０回／秒のＮＰＣ０４とＮＰＣ０５との間に割り込んで位置することになったとする。
【０１１３】
このような前提状況で補正処理を実行した場合、まず、更新頻度が１５回／秒の敵キャラクタＣ２（ＮＰＣ１６〜ＮＰＣ２５）が存在すると判定され（ステップＳ４０：ＹＥＳ）、次に、この敵キャラクタＣ２の中から最もソート優先度の高い敵キャラクタＣ２としてＮＰＣ２５が選択される（ステップＳ４１）。即ち、この補正処理を実行する時点では、既に各敵キャラクタＣ２のＩＤ情報は更新されているため（図７のステップＳ２０参照）、最新のソート優先度によると、更新頻度が１５回／秒の敵キャラクタＣ２のうち、この時点で最も仮想カメラに近いＮＰＣ２５が、最も高いソート優先度となっている。
【０１１４】
そして、この敵キャラクタＣ２（ＮＰＣ２５）が移動した結果、更新頻度が６０回／秒の敵キャラクタＣ２（ＮＰＣ０５）よりも仮想カメラの近くに位置することとなったため、敵キャラクタＣ２（ＮＰＣ２５）よりもソート優先度が低く更新頻度が６０回／秒の敵キャラクタＣ２（ＮＰＣ０５）が存在すると判断される（ステップＳ４２：ＹＥＳ）。そこで、この敵キャラクタＣ２（ＮＰＣ２５）について、更新頻度が１５回／秒から６０回／秒に補正される（ステップＳ４３）。
【０１１５】
なお、敵キャラクタＣ２（ＮＰＣ２５）に割り込まれた結果、仮想カメラから６体目に位置することとなった敵キャラクタＣ２（ＮＰＣ０５）は、補正処理が完了した時点では、更新頻度が依然として６０回／秒に維持されている。但し、負荷軽減処理において補正処理に続いて行われるステップＳ２６，Ｓ２７の処理（図７参照）により、３０回／秒の更新頻度に低減されることとなる。
【０１１６】
ここで再び図１０のフローチャートの説明に戻る。ステップＳ４２において、更新頻度が６０回／秒の敵キャラクタＣ２の中に、ステップＳ４１で選択された敵キャラクタＣ２（更新頻度が１５回／秒でソート優先度が最も高い敵キャラクタＣ２）よりもソート優先度が低いものが存在しない場合（ステップＳ４２：ＮＯ）は、更新頻度が３０回／秒の敵キャラクタＣ２の中に、ステップＳ４１で選択された敵キャラクタＣ２よりもソート優先度が低いものが存在するか否かを判定する（ステップＳ４４）。そして、そのような敵キャラクタＣ２が存在する場合（ステップＳ４４：ＹＥＳ）は、ステップＳ４１で選択した敵キャラクタＣ２について、更新頻度を１５回／秒から３０回／秒に補正する（ステップＳ４５）。一方、そのような敵キャラクタＣ２が存在しない場合（ステップＳ４４：ＮＯ）は、何れの敵キャラクタＣ２についても更新頻度を高くする補正は行わず、補正処理を終了する。
【０１１７】
また、ステップＳ４０において、更新頻度が１５回／秒の敵キャラクタＣ２が存在しないと判定した場合（ステップＳ４０：ＮＯ）は、更新頻度が３０回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ４６）。そして、存在すると判定した場合（ステップＳ４６：ＹＥＳ）は、そのうちで最もソート優先度の高い敵キャラクタＣ２を選択（ステップＳ４７）し、更新頻度が６０回／秒の敵キャラクタＣ２の中に、ステップＳ４７で選択された敵キャラクタＣ２よりもソート優先度が低いものが存在するか否かを判定する（ステップＳ４８）。例えば、更新頻度が３０回／秒の敵キャラクタＣ２のうち最もソート優先度の高いものと比べて、仮想カメラから離れて位置しているためソート優先度が低い敵キャラクタＣ２の中に、更新頻度が６０回／秒の敵キャラクタＣ２が存在するか否かを判定する。
【０１１８】
その結果、そのような敵キャラクタＣ２が存在すると判定した場合（ステップＳ４８：ＹＥＳ）は、ステップＳ４７にて選択した敵キャラクタＣ２（更新頻度が３０回／秒でソート優先度が最も高い敵キャラクタＣ２）の更新頻度を、３０回／秒から６０回／秒に補正する（ステップＳ４９）。一方、ステップＳ４６にて更新頻度が３０回／秒の敵キャラクタＣ２が存在しないと判定した場合（ステップＳ４６：ＮＯ）、及びステップＳ４８にて該当する敵キャラクタＣ２が存在しないと判定した場合（ステップＳ４８：ＮＯ）は、何れの敵キャラクタＣ２についても更新頻度を高くする補正は行わず、補正処理を終了する。
【０１１９】
以上に説明したように、本ゲーム装置１に過大な負荷が発生したときに行う負荷軽減処理では、削除対象となり得る敵キャラクタＣ２が存在する場合（図７のステップＳ２１：ＹＥＳ）には、その中の所定の敵キャラクタＣ２を削除することで負荷の軽減を図る（ステップＳ２３）。一方、削除対象が存在しない場合（ステップＳ２１：ＮＯ）は、まず、上述した補正処理を実行する（ステップＳ２４）。これにより、最新のソート優先度に照らして更新頻度が低すぎる敵キャラクタＣ２を対象に、その更新頻度を適正値に補正する。そして、この補正処理を終えてから、図７のステップＳ２５〜Ｓ３１に示した手順で、所定の敵キャラクタＣ２の更新頻度を低減する処理を行い、負荷の軽減を図っている。
【０１２０】
このように、まず一部の敵キャラクタＣ２を削除することで、ゲーム装置１の負荷を大きく軽減することができる。即ち、一般に敵キャラクタＣ２の更新頻度を低減するよりも、敵キャラクタＣ２を削除した方が、負荷の軽減量が大きい。従って、負荷が過大なときには、削除処理を優先して実行することで、処理落ち現象の発生を早期に抑制できる。一方、あまり多くの敵キャラクタＣ２を削除してしまうと、フレーム４０内の敵キャラクタＣ２が少なくなって迫力に欠けるゲームとなるが、本実施の形態では、敵キャラクタＣ２が２５体以下の場合に削除処理を行わないこととしているため、迫力のある戦闘シーンを表現することができる。また、敵キャラクタＣ２が２５体以下の状態で負荷が過大になった場合であっても、所定の敵キャラクタＣ２のモーション動作の更新頻度を低減することで、ゲーム装置１の負荷を軽減することができる。
【０１２１】
また、更新頻度を低減することで、モーション動作の次回更新時までの時間間隔は長くなるが、この間のフレーム４０でも、更新頻度低減対象となった敵キャラクタＣ２は表示されている。例えば、図９に示した例で言えば、敵キャラクタＣ２（ＮＰＣ０１）の更新間隔が１／６０［秒］であるのに対し、更新頻度が低減された敵キャラクタＣ２（ＮＰＣ０５）の更新間隔は１／３０［秒］と大きくなっている。しかしながら、モーション動作が更新されないフレーム４０（図９のＮＰＣ０５について言えば、フレーム４０２，４０４）であっても、この敵キャラクタＣ２（ＮＰＣ０５）は非表示になるのではなく、１つ前のフレーム４０のモーション動作に基づいて表示される。従って、プレイヤからは、負荷軽減処理による影響が判別しにくく、プレイヤに違和感を生じさせるのを抑制することができる。
【０１２２】
しかも、式（１）から分かるように、削除対象や更新頻度低減対象となる敵キャラクタＣ２には、仮想カメラから遠くに位置するもの、即ち、フレーム４０内にてより小さく表示されているものが優先して選択される。従って、このような点からも、プレイヤからは、負荷軽減処理による影響が判別しにくく、プレイヤに違和感を生じさせるのを抑制することができる。
【０１２３】
［復元処理］
次に、図６のステップＳ４に示す復元処理について説明する。復元処理は、負荷検出手段５３により検出した負荷が過大でなかった場合（図６のステップＳ２：ＮＯ）に、非表示又は更新頻度低減の対象となっている敵キャラクタＣ２について、その状態を復元するものである。また、復元対象とする敵キャラクタＣ２としては、負荷軽減処理の対象としての優先順位の低いものを優先し、即ち、復元処理を行う時点で更新頻度がより低くソート優先度のより高い敵キャラクタＣ２を優先的に選択する。以下、この復元処理について詳述する。
【０１２４】
図１２は、ゲーム装置１が復元処理を実行する過程を示すフローチャートである。図１２に示すように、復元処理ではステップＳ１（図６参照）で更新されたＩＤ情報を取得し（ステップＳ６０）、これに基づいてモーション動作の更新頻度が１５回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ６１）。そして、このような敵キャラクタＣ２が存在する場合（ステップＳ６１：ＹＥＳ）は、その中からソート優先度が最も高い敵キャラクタＣ２を選択し（ステップＳ６２）、選択した敵キャラクタＣ２の更新頻度を１５回／秒から３０回／秒に復元する（ステップＳ６３）。
【０１２５】
また、ステップＳ６１にて更新頻度が１５回／秒の敵キャラクタＣ２が存在しないと判定した場合（ステップＳ６１：ＮＯ）は、更新頻度が３０回／秒の敵キャラクタＣ２が存在するか否かを判定する（ステップＳ６４）。そして、このような敵キャラクタＣ２が存在する場合（ステップＳ６４：ＹＥＳ）は、その中からソート優先度が最も高い敵キャラクタＣ２を選択し（ステップＳ６５）、選択した敵キャラクタＣ２の更新頻度を３０回／秒から６０回／秒に復元する（ステップＳ６６）。
【０１２６】
また、ステップＳ６４にて更新頻度が３０回／秒の敵キャラクタＣ２が存在しないと判定した場合（ステップＳ６４：ＮＯ）は、負荷軽減処理により前回生成したフレーム４０にて削除されている敵キャラクタＣ２が存在するか否かを判定する（ステップＳ６７）。そして、このような敵キャラクタＣ２が存在する場合（ステップＳ６７：ＹＥＳ）は、その中からソート優先度が最も高い敵キャラクタＣ２を選択し（ステップＳ６８）、選択した敵キャラクタＣ２の削除状態を解除する（ステップＳ６９）。
【０１２７】
また、ステップＳ６７にて、削除されている敵キャラクタＣ２が存在しないと判定した場合（ステップＳ６７：ＮＯ）は、フレーム４０内の全ての敵キャラクタＣ２の更新頻度が６０回／秒であり、且つ削除されている敵キャラクタＣ２が存在しないこととなる。そのため、何れの敵キャラクタＣ２についても、非表示状態の解除や更新頻度を高める、といったことは行わず、復元処理を終了する。
【０１２８】
このような復元処理を実行することにより、負荷が過大でなくなった場合に、非表示又は更新頻度低減の対象となっている敵キャラクタＣ２について、その状態を復元することができる。また、更新頻度がより低い敵キャラクタＣ２を優先的に選択して復元対象とするため（ステップＳ６１参照）、復元処理後には、更新頻度の高い敵キャラクタＣ２がより多くなり、多くの敵キャラクタＣ２の動作をより滑らかな（フレームレートの基準値と同程度の頻度で更新される）動画として表示することができる。また、ソート優先度のより高い敵キャラクタＣ２を優先的に選択して復元対象とするため（ステップＳ６２，Ｓ６５，Ｓ６８参照）、仮想カメラにより近くてプレイヤに注視されやすい敵キャラクタＣ２を優先して復元することができる。
【０１２９】
更に、更新頻度低減対象であった全ての敵キャラクタＣ２の更新頻度を６０回／秒にまで完全復元した後に、削除対象であった敵キャラクタＣ２を復元（再表示）することとしている（ステップＳ６７参照）。換言すれば、負荷の増加量の小さい更新頻度を復元する処理を、負荷の増加量の大きい削除状態を解除する処理よりも優先して実行することとしている。これにより、復元処理によって制御部８の処理負荷が急激に増加するのを抑制している。即ち、仮に削除状態を解除する処理を優先して実行すると、ゲーム装置１の負荷が急激に増加するため、更新頻度低減対象である敵キャラクタＣ２の状態が復元されないまま、再び負荷が過大になって削除処理が実行され、敵キャラクタＣ２の状態の復元がなかなか進まない可能性がある。これに対し、本実施の形態では更新頻度を復元する処理を優先するため、このような事態を回避でき、より多くの敵キャラクタＣ２の動作を滑らかな（フレームレートの基準値と同程度の頻度で更新される）動画として表示させた後に、削除していた敵キャラクタＣ２を再表示させることができる。
【０１３０】
また、図１２のフローチャートから分かるように、１５回／秒であった更新頻度を一度で６０回／秒にまで復元することはせず、１５回／秒から３０回／秒に復元し（ステップＳ６３）、次回以降のフレーム生成時の復元処理にて３０回／秒から６０回／秒に復元している（ステップＳ６６）。これにより、上記と同様、１度の復元処理による負荷の急激な増大を抑制している。
【０１３１】
以上に説明したように、本実施の形態に係るゲーム装置１は、フレーム４０の生成に要する負荷が過大となった場合に、敵キャラクタＣ２を非表示にし、又は、敵キャラクタＣ２のオブジェクトデータの更新頻度を低減している。特に、モーション動作の更新頻度を低減することにより、プレイヤに違和感を生じさせるのを抑制しつつ、負荷の軽減を図ることができる。
【０１３２】
なお、上述した説明では、負荷軽減処理の対象として敵キャラクタＣ２を採用した場合について言及したが、これに限られない。例えば、仮想ゲーム空間４１を構成する水車や風に揺れる木などの動的オブジェクトであって、オブジェクトデータの更新頻度（モーション動作の更新頻度）を変更できるものであれば、更新頻度低減対象とすることができるし、また、削除処理の対象としてもよい。また、削除処理の対象としては、動的オブジェクトのみに限られず、例えば仮想ゲーム空間４１を構成する建築物などの静的オブジェクトＣ３（図３参照）を対象としてもよい。
【０１３３】
また、負荷が過大であるか否かを判定する際のフレームレートの閾値として、基準値が６０ｆｐｓの場合に５８ｆｐｓという数値を例示したが、これに限られず、例えば５９ｆｐｓ又は５７ｆｐｓ以下の数値でもよい。また、フレームレートの基準値が３０ｆｐｓの場合には、２８ｆｐｓを閾値として設定することができ、又は、適宜これとは異なる数値を設定することができる。
【０１３４】
上記閾値に関しては、複数の値を設定することも可能である。例えば、５８ｆｐｓ，５５ｆｐｓ，５０ｆｐｓという３つの閾値を設定してもよい。この場合の負荷軽減処理の例として、フレームレートの実測値が５８ｆｐｓであった場合は、更新頻度が６０［回／秒］の敵キャラクタＣ２を対象に、その更新頻度を３０［回／秒］に低減する。また、実測値が５５ｆｐｓであった場合は、更新頻度が３０［回／秒］の敵キャラクタＣ２を対象に、それを１５［回／秒］に低減する。また、実測値が５０ｆｐｓであった場合は一部の敵キャラクタＣ２を削除処理する。この例ように、フレームレートの実測値が複数の閾値の何れより小さい値になるかに応じて、段階的に異なる内容の負荷軽減処理を実行するようにしてもよい。
【０１３５】
また、更新頻度の低減の仕方について、本実施の形態では６０［回／秒］から３０［回／秒］、３０［回／秒］から１５［回／秒］というように、半分の値に２段階に分けて低減する態様を示したが、これに限られない。例えば、６０［回／秒］から１０［回／秒］まで、１０［回／秒］単位で５段階に分けて低減するようにしてもよく、１度の低減単位や段階数は適宜設定することができる。
【０１３６】
また、本ゲーム装置１では、フレームレートの測定値を算出するにあたり、オブジェクトデータの更新処理（モーション動作の更新処理）の開始時点から更新処理の終了時点までに要した時間を、ＣＰＵ３のクロックを用いて計測することとしている。しかしながら、この算出方法に限られず、上記と異なる区間の処理に要する時間からフレームレートの測定値を算出してもよい。また、フレーム４０の生成に要する負荷が過大であるか否かを判定することができる限り、フレームレートによらず他の指標を採用してもよい。
【０１３７】
また、フレーム４０内の敵キャラクタＣ２を、複数体ごとにまとめた複数のグループに分類し、負荷軽減処理や復元処理をグループ単位で実行するようにしてもよい。例えば、上述した説明では敵キャラクタＣ２は１体ごとに異なるソート優先度が設定されているが、削除対象である敵キャラクタＣ２（図５で言えばＮＰＣ２６〜ＮＰＣ３０）を１つのグループとし、このグループに所属する敵キャラクタＣ２には互いに同一のソート優先度を設定する。同様に、更新頻度低減対象である敵キャラクタＣ２（図５で言えばＮＰＣ０６〜ＮＰＣ２５）を別の１つのグループとし、このグループに所属する敵キャラクタＣ２にも互いに同一のソート優先度を設定する。これにより、削除対象の全ての敵キャラクタＣ２は、削除処理の実行によって全て同時に削除され、更新頻度低減対象である全ての敵キャラクタＣ２も、更新頻度低減処理の実行によって全て同時に更新頻度が低減される。復元処理においても同様である。なお、この場合において、例えば更新頻度低減対象の敵キャラクタＣ２を更に複数のグループに細分類し、このグループ毎に負荷軽減処理及び復元処理を実行するようにしてもよい。
【０１３８】
また、ソート優先度の最も高いものから順に５体を、負荷軽減非対象の敵キャラクタＣ２とすることとしたが、６体以上に設定してもよいし、４体以下に設定してもよい。また、負荷軽減非対象の敵キャラクタＣ２を設定せず、全ての敵キャラクタＣ２を負荷軽減対象とするようにしてもよい。
【０１３９】
削除対象についても、上述したようにソート優先度の順で２６体目〜３０体目の敵キャラクタＣ２とする態様、即ち、フレーム４０内に含まれる敵キャラクタＣ２が２５体になるまでは削除処理をするという態様に限定されない。例えばソート優先度の順で１５体目〜３０体目の敵キャラクタＣ２を削除対象としてもよいし、任意の数の敵キャラクタＣ２を削除対象として設定することができる。また、このように削除対象とする敵キャラクタＣ２のソート優先度を固定的に設定するのではなく、フレーム４０内に含まれる敵キャラクタＣ２のうち、ソート優先度の低い所定数（例えば、５体）の敵キャラクタＣ２を削除対象とするようにしてもよい。
【０１４０】
また、ソート優先度を決定する式（１）において、補正値Ａ２を、仮想カメラからの距離に基づいて設定することとしているが、これに代えて、プレイヤキャラクタＣ１からの距離に基づいて設定するようにしてもよい。この場合、補正値Ａ２は、プレイヤキャラクタＣ１からの距離が小さい敵キャラクタＣ２ほど大きな数値に設定すればよい。
【０１４１】
また、本実施の形態では削除処理を行った後で更新頻度低減処理を実行することとしているが（図７参照）、更新頻度低減対象の全ての敵キャラクタＣ２について更新頻度低減処理を終えた後で、削除対象の敵キャラクタＣ２について削除処理を実行するようにしてもよい。また、所定数の敵キャラクタＣ２を削除処理した後に、残りの敵キャラクタＣ２について更新頻度低減処理を実行し、更にその後、所定数の敵キャラクタＣ２について削除処理を行うようにしてもよい。また、削除対象と更新頻度低減対象とを別々の敵キャラクタＣ２に設定しなくてもよく、更新頻度低減処理をした後に、更新頻度低減対象であった一部の敵キャラクタＣ２について削除処理を実行するようにしてもよい。更に、削除処理は行わず、更新頻度低減処理のみを行うようにしてもよい。
【産業上の利用可能性】
【０１４２】
本発明は、複数の動的オブジェクトが仮想ゲーム空間内で動作する動画を表示するゲームにおいて、この動画を見た看者に違和感が生じるのを抑制しつつ、コンピュータにかかる負荷を低減することのできるゲームプログラムを提供することができる。また、このようなゲームプログラムを記録した記録媒体、及びコンピュータ装置を提供することができる。
【符号の説明】
【０１４３】
１      ゲーム装置１（コンピュータ装置）
８      制御部
２０    モニタ（ディスプレイ）
２３    光ディスク（記録媒体）
２４    ゲームプログラム
４０    フレーム
４１    仮想ゲーム空間
５１    フレーム生成手段
５１ａ  オブジェクトデータ更新手段
５１ｃ  フレームデータ出力手段
５３    負荷検出手段
５４    負荷軽減手段
５４ａ  オブジェクト選択手段
５４ｂ  更新頻度低減手段
５４ｃ  動的オブジェクト削除手段
５４ｄ  静的オブジェクト削除手段
５５    オブジェクト復元手段
５５ａ  復元対象選択手段
Ｃ１    プレイヤキャラクタ
Ｃ２    敵キャラクタ
Ｃ３    静的オブジェクト
【図１】
2011186834.tif 000004
【図２】
2011186834.tif 000005
【図３】
2011186834.tif 000006
【図４】
2011186834.tif 000007
【図５】
2011186834.tif 000008
【図６】
2011186834.tif 000009
【図７】
2011186834.tif 000010
【図８】
2011186834.tif 000011
【図９】
2011186834.tif 000012
【図１０】
2011186834.tif 000013
【図１１】
2011186834.tif 000014
【図１２】
2011186834.tif 000015