IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

7580436情報処理プログラム、情報処理システム、および情報処理方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-31
(45)【発行日】2024-11-11
(54)【発明の名称】情報処理プログラム、情報処理システム、および情報処理方法
(51)【国際特許分類】
   A63F 13/56 20140101AFI20241101BHJP
   A63F 13/577 20140101ALI20241101BHJP
【FI】
A63F13/56
A63F13/577
【請求項の数】 10
(21)【出願番号】P 2022160681
(22)【出願日】2022-10-05
(65)【公開番号】P2023166051
(43)【公開日】2023-11-20
【審査請求日】2023-11-06
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】神門 有史
【審査官】池田 剛志
(56)【参考文献】
【文献】特開2005-287757(JP,A)
【文献】特開2007-244536(JP,A)
【文献】特開2014-233536(JP,A)
【文献】特開2001-000742(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98,
9/24
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、仮想空間内において第1オブジェクトが移動するとともに、少なくとも1つの第2オブジェクトが前記第1オブジェクトの移動に従って移動する情報処理を実行させる情報処理プログラムであって、
前記コンピュータを、
操作入力に基づき、前記仮想空間内の座標である第1オブジェクト座標に前記第1オブジェクトを移動制御する第1オブジェクト移動制御手段と、
前記第1オブジェクトの移動制御に伴って、前記第1オブジェクト座標に基づく座標である足跡座標を複数回繰り返し取得して、時系列順に沿って記憶する足跡座標記憶手段と、
前記足跡座標記憶手段によって取得された複数の足跡座標のうちの第1足跡座標に対し、当該第1足跡座標と、当該第1足跡座標よりも時系列で後に記憶された第2足跡座標とを結ぶ経路が通行可能か否かを判断し、通行可能と判断された場合に当該経路を特定する情報を当該第1足跡座標と紐づけて記憶するショートカット記憶手段と、
前記足跡座標記憶手段によって取得した足跡座標を時系列に沿って辿るように前記第2オブジェクトを移動制御し、更に、所定の足跡座標について、前記通行可能と判断された経路が存在する場合は、当該経路を通るように前記第2オブジェクトを移動制御する第2オブジェクト移動制御手段として機能させ
前記ショートカット記憶手段は、前記第1足跡座標から通行可能と判断された前記第2足跡座標が複数ある場合、時系列で最新の第2足跡座標への経路を特定する情報を、当該第1足跡座標と紐づけて記憶する、情報処理プログラム。
【請求項2】
前記ショートカット記憶手段は、前記足跡座標同士を結ぶ直線経路が通行可能か否かを判断する、請求項1に記載の情報処理プログラム。
【請求項3】
前記ショートカット記憶手段は、所定フレーム毎に、前記複数の足跡座標のうちの所定数をそれぞれ前記第1足跡座標として、各第1足跡座標と所定数の前記第2足跡座標とを結ぶ経路について通行可能か否かを判断する、請求項に記載の情報処理プログラム。
【請求項4】
前記ショートカット記憶手段は、前記所定数を処理負荷に応じて変化させる、請求項に記載の情報処理プログラム。
【請求項5】
前記情報処理プログラムは、前記コンピュータを更に、
前記第1オブジェクト座標に基づいた移動目標座標に向かうように前記第2オブジェクトを追従移動制御する追従移動制御手段と、
前記追従移動制御中に、前記第2オブジェクトが前記移動目標座標に到達できないことを検知する検知手段と、
前記検知手段によって前記第2オブジェクトが前記移動目標座標に到達できないと検知された場合に、前記第2オブジェクトを、前記足跡座標の1つに向かうように移動制御する足跡追従移動制御手段として機能させ、
第2オブジェクト移動制御手段は、前記足跡追従移動制御手段によって前記第2オブジェクトが移動制御されて足跡座標の1つに到達した後に、当該足跡座標を時系列に沿って辿るように前記第2オブジェクトを移動制御する、請求項1に記載の情報処理プログラム。
【請求項6】
前記検知手段は、前記第2オブジェクトの座標が所定時間以上変化しない場合、または、前記第2オブジェクトが所定時間以上障害物オブジェクトに衝突し続けていることが検知された場合に、前記第2オブジェクトが前記移動目標座標に到達できないと判断する、
請求項に記載の情報処理プログラム。
【請求項7】
前記足跡追従移動制御手段は、前記第2オブジェクトが前記移動目標座標に到達できないと検知された場合に、当該第2オブジェクトの座標から所定範囲内にある、最新の足跡座標に向かうように当該第2オブジェクトを移動制御する、請求項に記載の情報処理プログラム。
【請求項8】
前記ショートカット記憶手段は、前記足跡座標記憶手段によって取得された複数の足跡座標のうち、時系列で最後に記憶された足跡座標およびその1つ前に記憶された足跡座標は前記第1足跡座標として扱わず、前記第2足跡座標への前記経路が通行可能か否かの判断も行わない、請求項1に記載の情報処理プログラム。
【請求項9】
仮想空間内において第1オブジェクトが移動するとともに、少なくとも1つの第2オブジェクトが前記第1オブジェクトの移動に従って移動する情報処理を実行する情報処理システムであって、
操作入力に基づき、前記仮想空間内の座標である第1オブジェクト座標に前記第1オブジェクトを移動制御する第1オブジェクト移動制御手段と、
前記第1オブジェクトの移動制御に伴って、前記第1オブジェクト座標に基づく座標である足跡座標を複数回繰り返し取得して、時系列順に沿って記憶する足跡座標記憶手段と、
前記足跡座標記憶手段によって取得された複数の足跡座標のうちの第1足跡座標に対し、当該第1足跡座標と、当該第1足跡座標よりも時系列で後に記憶された第2足跡座標とを結ぶ経路が通行可能か否かを判断し、通行可能と判断された場合に当該経路を特定する情報を当該第1足跡座標と紐づけて記憶するショートカット記憶手段と、
前記足跡座標記憶手段によって取得した足跡座標を時系列に沿って辿るように前記第2オブジェクトを移動制御し、更に、所定の足跡座標について、前記通行可能と判断された経路が存在する場合は、当該経路を通るように前記第2オブジェクトを移動制御する第2オブジェクト移動制御手段とを備え
前記ショートカット記憶手段は、前記第1足跡座標から通行可能と判断された前記第2足跡座標が複数ある場合、時系列で最新の第2足跡座標への経路を特定する情報を、当該第1足跡座標と紐づけて記憶する、情報処理システム。
【請求項10】
情報処理装置のコンピュータに、仮想空間内において第1オブジェクトが移動するとともに、少なくとも1つの第2オブジェクトが前記第1オブジェクトの移動に従って移動する情報処理を実行させる情報処理方法であって、
前記コンピュータに、
操作入力に基づき、前記仮想空間内の座標である第1オブジェクト座標に前記第1オブジェクトを移動制御させ、
前記第1オブジェクトの移動制御に伴って、前記第1オブジェクト座標に基づく座標である足跡座標を複数回繰り返し取得して、時系列順に沿って記憶させ、
前記取得された複数の足跡座標のうちの第1足跡座標に対し、当該第1足跡座標と、当該第1足跡座標よりも時系列で後に記憶された第2足跡座標とを結ぶ経路が通行可能か否かを判断させ、通行可能と判断された場合に当該経路を特定する情報を当該第1足跡座標と紐づけて記憶させ、
前記取得した足跡座標を時系列に沿って辿るように前記第2オブジェクトを移動制御させ、更に、所定の足跡座標について、前記通行可能と判断された経路が存在する場合は、当該経路を通るように前記第2オブジェクトを移動制御させ
前記第1足跡座標から通行可能と判断された前記第2足跡座標が複数ある場合、時系列で最新の第2足跡座標への経路を特定する情報を、当該第1足跡座標と紐づけて記憶させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想空間内において第1オブジェクトが移動するとともに、少なくとも1つの第2オブジェクトが第1オブジェクトの移動に従って移動する情報処理に関する。
【背景技術】
【0002】
従来から、プレイヤキャラクタを他の追従キャラクタが追従するゲームが知られている。更に、このようなゲームにおいて、上記追従キャラクタが地形等の障害物に引っかかる等して、プレイヤキャラクタから取り残された場合は、プレイヤキャラクタが辿った経路(足跡)を辿るように移動させる方法が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2005-287757号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記技術は、障害物を避けるように移動操作されているであろうプレイヤキャラクタの移動経路を辿らせるものであるため、結果的に、追従キャラクタに障害物を避けて移動させることはできる。しかし、単にプレイヤキャラクタの移動経路を辿るだけであるため、プレイヤキャラクタの行った無駄な動きまで辿ってしまうものとなっていた。そして、このような無駄な動きまで辿ることで、追従キャラクタがプレイヤキャラクタに追いつくのに時間がかかったり、追従キャラクタの動き方の見た目からしても、不自然な動きに見えたりする場合があった。
【0005】
それ故に、本開示における目的は、プレイヤキャラクタを追従するように所定のキャラクタの移動制御を行う情報処理において、見た目にも自然な動きで、より短い時間でプレイヤキャラクタの近くまで移動させることができる情報処理プログラム、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
(構成1)
構成1は、情報処理装置のコンピュータに、仮想空間内において第1オブジェクトが移動するとともに、少なくとも1つの第2オブジェクトが前記第1オブジェクトの移動に従って移動する情報処理を実行させる情報処理プログラムであって、コンピュータを、第1オブジェクト移動制御手段と、足跡座標記憶手段と、ショートカット記憶手段と、第2オブジェクト移動制御手段として機能させる。第1オブジェクト移動制御手段は、操作入力に基づき、仮想空間内の座標である第1オブジェクト座標に第1オブジェクトを移動制御する。足跡座標記憶手段は、第1オブジェクトの移動制御に伴って、第1オブジェクト座標に基づく座標である足跡座標を複数回繰り返し取得して、時系列順に沿って記憶する。ショートカット記憶手段は、足跡座標記憶手段によって取得された複数の足跡座標のうちの第1足跡座標に対し、当該第1足跡座標と、当該第1足跡座標よりも時系列で後に記憶された第2足跡座標とを結ぶ経路が通行可能か否かを判断し、通行可能と判断された場合に当該経路を特定する情報を当該第1足跡座標と紐づけて記憶する。第2オブジェクト移動制御手段は、足跡座標取得手段によって取得した足跡座標を時系列に沿って辿るように第2オブジェクトを移動制御し、更に、所定の足跡座標について、通行可能と判断された経路が存在する場合は、当該経路を通るように第2オブジェクトを移動制御する。
【0008】
上記構成によれば、第1オブジェクトの移動軌跡を足跡として記憶する。また、第2オブジェクトを、第1オブジェクトの移動軌跡を辿るように移動させる。そして、当該移動軌跡を辿っているときに、ある足跡から他の足跡へ通行可能な経路がある場合は、当該経路を利用して移動させることができる。これにより、第2オブジェクトが第1オブジェクトに追従移動する情報処理において、自然な挙動を行わせつつ、第2オブジェクトが第1オブジェクトに追いつく時間を短縮させることができる。
【0009】
(構成2)
構成2は、上記構成1において、ショートカット記憶手段は、足跡座標同士を結ぶ直線経路が通行可能か否かを判断してもよい。
【0010】
上記構成によれば、ショートカットの経路として直線経路が利用可能か否かを判断する。そして、上記経路を利用する際には、直線的な移動が行われることになり、より時間短縮を図ることが可能となる。
【0011】
(構成3)
構成3は、上記構成1または2において、ショートカット記憶手段は、第1足跡座標から通行可能と判断された第2足跡座標が複数ある場合、時系列で最新の第2足跡座標への経路を特定する情報を、当該第1足跡座標と紐づけて記憶してもよい。
【0012】
上記構成によれば、ある足跡について、他の足跡への経路が複数見つかった場合は、第1オブジェクトにより近い足跡への経路を利用させることができる。これにより、第1オブジェクトに追いつく時間をより短縮できる。
【0013】
(構成4)
構成4は、上記構成3において、ショートカット記憶手段は、所定フレーム毎に、複数の第1足跡座標のそれぞれと、所定数の第2足跡座標とを結ぶ経路について、通行可能か否かを判断してもよい。
【0014】
(構成5)
構成5は、上記構成4において、ショートカット記憶手段は、上記所定数を処理負荷に応じて変化させてもよい。
【0015】
上記構成によれば、上記経路の判断に係る処理を、その時々の処理負荷に応じて、より効率的に実行できる。
【0016】
(構成6)
構成6は、上記構成1において、情報処理プログラムは、コンピュータを更に、第1オブジェクト座標に基づいた移動目標座標に向かうように第2オブジェクトを追従移動制御する追従移動制御手段と、追従移動制御中に、第2オブジェクトが移動目標座標に到達できないことを検知する検知手段と、検知手段によって第2オブジェクトが移動目標座標に到達できないと検知された場合に、第2オブジェクトを、足跡座標の1つに向かうように移動制御する足跡追従移動制御手段として機能させてもよい。そして、第2オブジェクト移動制御手段は、足跡追従移動制御手段によって第2オブジェクトが移動制御されて足跡座標の1つに到達した後に、当該足跡座標を時系列に沿って辿るように第2オブジェクトを移動制御してもよい。
【0017】
上記構成によれば、普段は第1オブジェクトに向けて直接的に追従移動するような動きを第2オブジェクトに行わせつつ、追従移動の途中で障害物等によって進行が妨げられた場合は、障害物を回避するようにユーザによって操作された第1オブジェクトの移動経路をトレースするように移動させる。そのため、進行が妨げられても、障害物等を回避するような経路を採って第1オブジェクトの近くに第2オブジェクトを移動させることができる。
【0018】
(構成7)
構成7は、上記構成6において、検知手段は、第2オブジェクトの座標が所定時間以上変化しない場合、または、第2オブジェクトが所定時間以上障害物オブジェクトに衝突し続けていることが検知された場合に、第2オブジェクトが移動目標座標に到達できないと判断してもよい。
【0019】
(構成8)
構成8は、上記構成6において、足跡追従移動制御手段は、第2オブジェクトが移動目標座標に到達できないと検知された場合に、当該第2オブジェクトの座標から所定範囲内にある、最新の足跡座標に向かうように当該第2オブジェクトを移動制御してもよい。
【0020】
上記構成によれば、所定範囲内にある足跡のうち最新の足跡を選ぶため、より第1オブジェクトに近い足跡を起点として、第1オブジェクトの移動経路を辿るような動きを行わせることができる。これにより、第1オブジェクトに追いつく時間をより短縮できる。
【0021】
(構成9)
構成9は、上記構成1において、ショートカット記憶手段は、足跡座標記憶手段によって取得された複数の足跡座標のうち、最後に記憶された足跡座標およびその1つ前に記憶された足跡座標は第1足跡座標として扱わず、第2足跡座標への経路が通行可能か否かの判断も行わないようにしてもよい。
【0022】
上記構成によれば、上記経路を探す必要がない足跡についての処理を省略できる。これにより、処理負荷を軽減できる。
【発明の効果】
【0023】
本実施形態によれば、第1オブジェクトに追従するように第2オブジェクトを移動させる場合に、当該第2オブジェクトに自然な挙動で移動する様子を表現でき、また、第2オブジェクトが第1オブジェクトに追いつく時間を短縮できる。
【図面の簡単な説明】
【0024】
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
図3】本体装置2の一例を示す六面図
図4】左コントローラ3の一例を示す六面図
図5】右コントローラ4の一例を示す六面図
図6】本体装置2の内部構成の一例を示すブロック図
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
図8】本実施形態における隊列の一例を示す模式図
図9】本実施形態における隊列の一例を示す模式図
図10】スロットとサブキャラクタとの関係を説明するための図
図11】足跡による移動制御について説明するための図
図12】足跡による移動制御について説明するための図
図13】足跡による移動制御について説明するための図
図14】ショートカット制御について説明するための図
図15】ショートカット制御について説明するための図
図16】ショートカット制御について説明するための図
図17】ショートカット制御について説明するための図
図18】ショートカット制御について説明するための図
図19】ショートカット制御について説明するための図
図20】DRAM85に記憶される各種データの一例を示すメモリマップ
図21】足跡管理データのデータ構成の一例
図22】本実施形態に係るゲーム処理の詳細を示すフローチャート
図23】リーダー移動制御処理の詳細を示すフローチャート
図24】ショートカット作成処理の詳細を示すフローチャート
図25】ショートカット作成処理の詳細を示すフローチャート
図26】サブキャラクタ移動制御処理の詳細を示すフローチャート
図27】サブキャラクタ移動制御処理の詳細を示すフローチャート
【発明を実施するための形態】
【0025】
以下、一実施形態について説明する。
【0026】
まず、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0027】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0028】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。図1および図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0029】
図3は、本体装置2の一例を示す六面図である。図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0030】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0031】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0032】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0033】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、図6に示すスピーカ88)を備えている。図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0034】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0035】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0036】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0037】
図4は、左コントローラ3の一例を示す六面図である。図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、図4における上下方向(図4に示すz軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0038】
左コントローラ3は、方向入力デバイスの一例である左アナログスティック(以下、左スティックと呼ぶ)32を備える。図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0039】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。更に、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0040】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0041】
図5は、右コントローラ4の一例を示す六面図である。図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、図5における上下方向(図5に示すz軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0042】
右コントローラ4は、左コントローラ3と同様、方向入力部として右アナログスティック(以下、右スティックと呼ぶ)52を備える。本実施形態においては、右スティック52は、左コントローラ3の左スティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。更に、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0043】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0044】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、図3に示す構成の他、図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0045】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0046】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0047】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0048】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0049】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0050】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0051】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0052】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0053】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0054】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0055】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0056】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0057】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0058】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、図6で示しているため図7では省略している。
【0059】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0060】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0061】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0062】
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0063】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0064】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0065】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0066】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0067】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0068】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0069】
[本実施形態におけるゲーム処理の概要]
次に、本実施形態に係るゲームシステム1で実行されるゲーム処理の動作概要を説明する。本実施形態で実行されるゲームは、仮想ゲーム空間中のキャラクタをユーザが上記コントローラを用いて移動させて遊ぶものである。なお、ゲーム空間には、ユーザが操作するキャラクタ(以下、リーダーキャラクタと呼ぶ)以外にも、プロセッサ81によって所定のアルゴリズムに基づいて移動制御される複数のキャラクタ(以下、サブキャラクタと呼ぶ)が存在する。これら複数のサブキャラクタは、所定の隊列を組んでリーダーキャラクタに追従するように移動制御される。
【0070】
図8は、リーダーキャラクタとそれに追従する複数のサブキャラクタとが隊列を組んで移動する様子を示している。ただし実際には図8に示すような整った隊列を組んで移動するわけではなく、各サブキャラクタは個別に移動制御されるため、サブキャラクタ間の移動速度の差や地形の影響などによって、隊列は図9のようになり得る。なお、リーダーキャラクタが移動を停止してから十分な時間が経過すれば、サブキャラクタは基本的には図8のような位置で停止することになる。
【0071】
[サブキャラクタの移動について]
次に、上記のようなサブキャラクタの移動制御に関して説明する。本実施形態では、サブキャラクタは、基本的には、リーダーキャラクタの位置と向きに基づいて決められる「スロット」の位置を目指して移動する。但し、その移動中に、地形にひっかかった場合、リーダーキャラクタの「足跡」を辿るするようにして、リーダーキャラクタの位置に向かうように制御される。以下、「スロット」を用いる移動制御(スロットモード)および「足跡」を用いる移動制御(足跡追従モード)の概要を説明する。
【0072】
[スロットによる移動制御について]
まず、スロットモードにおける移動制御の概要を説明する。本実施形態では、上記スロットとして、ゲーム空間内に複数の移動目標地点を設定する。そして、各サブキャラクタに対して1つのスロットを対応させ、各サブキャラクタを対応するスロットに向かって移動させる。各スロットはリーダーキャラクタの位置および向き基準としてその周辺に設定される。例えば、スロットは、リーダーキャラクタの向き(進行方向)とは逆側に配置される。また、リーダーキャラクタがゲーム空間において移動したり向きを変化したとき(姿勢を変化したとき)には、それに応じて、各スロットの座標も変更される。そのため、リーダーキャラクタが移動すると、それに応じて各スロットも移動する。
【0073】
次に、各スロットと各サブキャラクタとの関係について説明する。各サブキャラクタには、移動目標地点となるスロット番号が個別に対応付けられている。例えばサブキャラクタ番号1にはスロット番号1が対応付けられており、サブキャラクタ番号2にはスロット番号2が対応付けられており、サブキャラクタ番号3にはスロット番号3が対応付けられている。この結果、図10に示すように、サブキャラクタ番号が1であるサブキャラクタ(以下、単にサブキャラクタ1と称す)はスロット1を目指して移動し、サブキャラクタ2はスロット2を目指して移動し、サブキャラクタ3はスロット3を目指して移動する。
なお、図10の例ではキャラクタ番号=スロット番号となっているが、これは単なる一例であって、対応関係は任意に設定してもよい。
【0074】
以上のように、各サブキャラクタは、自身に対応付けられたスロットを目指してそれぞれ移動することにより、リーダーキャラクタに追従して所定の隊列を組んでゲーム空間を移動することになる。
【0075】
[足跡による移動制御について]
次に、足跡追従モードにおける移動制御の概要を説明する。上述のスロットモードにおける移動制御で各サブキャラクタがゲーム空間を移動しているときに、図11に示すように、壁などの障害物によってサブキャラクタの進行が妨げられる場合がある。図11の例では、サブキャラクタ7は、スロット7を目指して移動しようとするが、サブキャラクタ7とスロット7との間に障害物(地形)が存在するため、このままではリーダーキャラクタに追従することはできない。このようにサブキャラクタが障害物に衝突した場合、本実施形態では、サブキャラクタをスロットの方向に移動させることをやめ、リーダーキャラクタが通った軌跡を辿らせるようにその移動を制御する。リーダーキャラクタの軌跡を辿る限り、その進路を障害物に阻まれることはないからである。
【0076】
本実施形態では、上記リーダーキャラクタが通った軌跡を「足跡」として管理している。具体的には、リーダーキャラクタの現在位置(空間座標系における座標)を所定のタイミングで順次、リーダーキャラクタの「足跡」として蓄積していく。より具体的には、例えば所定フレームに1度(例えば、10フレームに1度)のタイミングで足跡を記憶する。このときに記憶するデータ(以下、足跡データと呼ぶ)には、その時点のタイムスタンプとリーダーキャラクタの座標が含まれる。
【0077】
なお、本実施形態では、前回に足跡を記憶してから10フレームが経過した時点でリーダーキャラクタがその足跡から一定距離以上離れていない場合には、新たな足跡を記憶しないようにしている。これにより、あまり意味のない足跡データが蓄積されてしまうことを防止することができ、記憶領域を有効に活用することができる。なお、足跡データを無限に蓄積することは不可能なので、一定以上古い足跡データについては記憶領域から削除する必要がある。例えば、蓄積している足跡データの数が一定数以上になった場合には、新たな足跡データを記憶する際に、蓄積されている足跡データの中から最も古い(すなわちフレーム番号が最も小さい)足跡データを記憶領域から削除するようにすればよい。以下、当該足跡データとして蓄積されている足跡それぞれのことを、「足跡Ni」と呼ぶ。iは正の整数であり、時系列でみて最も古い足跡から順に増えていくものとする。例えば、蓄積されている足跡が5つある場合は、時系列で古い順に、足跡N1、足跡N2・・・足跡N5、と呼ぶ。
【0078】
上記のように、サブキャラクタが障害物にその進路を阻まれた場合、サブキャラクタを中心とする所定範囲内に存在する足跡のうち、最も新しい足跡が、当該進路を阻まれたサブキャラクタの移動目標として設定される。例えば、図12に示すように、サブキャラクタ7は、壁にぶつかると、所定範囲内にある足跡N2、N3、N4のうち、最も新しい足跡である足跡N4に移動目標を変更する。
【0079】
その後、サブキャラクタ7が移動目標の足跡に到達すると、この足跡よりも新しい足跡にその移動目標を変更する。上記図12の例で言うと、サブキャラクタ7が足跡N4に到着すると、図13に示すように、サブキャラクタ7の移動目標が足跡N5に変更される。更に、サブキャラクタ7が足跡N5に到着すると、サブキャラクタ7の移動目標が足跡N6に変更される。これを繰り返すことによって、サブキャラクタ7はリーダーキャラクタの移動軌跡を辿ってリーダーキャラクタに追従することができる。
【0080】
なお、サブキャラクタがリーダーキャラクタの移動軌跡を辿っている間(すなわち、足跡を辿っている間)、サブキャラクタの現在座標とそのサブキャラクタに対応するスロットの座標との距離の判定が行われる。そして、サブキャラクタが、対応するスロットから一定距離以内に近づいた場合には、サブキャラクタの移動目標が足跡からスロットに変更される。すなわち、移動制御が足跡追従モードからスロットモードに切り替わる。その結果、各サブキャラクタは最終的に、自身に対応付けられたスロットを目指して移動し、本来の位置でリーダーキャラクタに追従することができる。
【0081】
[ショートカット移動制御について]
ところで、足跡追従モードにおいて、上述の足跡を辿る移動制御によれば、その進路を障害物に阻まれることはないが、その反面、リーダーキャラクタが無駄な動きを行っていた場合(例えば遠回りとなるような移動軌跡)、この無駄な動きによる足跡もそのまま辿ってしまうことになる。そのため、リーダーキャラクタに追いつくまでに時間がかかってしまうという側面がある。また、サブキャラクタの移動における見た目・見栄えという観点では、リーダーキャラクタの足跡を辿っているサブキャラクタの動きが、状況によっては不自然な動きに見える可能性もある。そこで、本実施形態では、ある足跡に到達した際、その足跡から、リーダーキャラの現在位置により近い他の足跡へのショートカットの有無を判定する。そして、他の足跡へのショートカットが有る場合は、移動目標を当該ショートカット先に変更するという制御も更に行っている。
【0082】
上記のショートカットを用いる制御の概要について説明する。ここでは、蓄積された足跡として、図14に示すような5つの足跡がある場合を例として説明する。図14では時系列で古い順に、足跡N1~足跡N5が示されている。本実施形態では、各足跡につき、その足跡から時系列で後の足跡のうち、直線経路で通行可能であって、かつ、最もリーダーキャラクタに近い足跡までのショートカットが算出され、当該ショートカットの情報が当該足跡に紐付けて記憶される。具体的には、時系列で古い足跡から順に、その足跡から、時系列で自身より新しい他の各足跡に直線(レイ)を飛ばす処理(以下、レイキャスト)が行われる。当該レイが途中で障害物にぶつからず当該他の足跡に到達したら、レイキャストは成功(通行可能)であり、到達しなければレイキャストは失敗(通行不可)として扱う。そして、レイキャストが成功した他の足跡のうち、最新の足跡へのショートカットの情報が記憶される。ここで、本実施形態では、このようなショートカットを算出する際、時系列で隣接する関係の足跡(時系列で次の順番に位置する足跡)に対するレイキャストについては、省略される。このような足跡に対してショートカットを算出する意味がないためである。
【0083】
図15図17に、ショートカット算出の一例を示す。図15は、上記図14の足跡N1を基準とした場合のショートカット算出の例である。この場合は、足跡N1の次の順番である足跡N2についてはレイキャストの実行は省略され、足跡N1から足跡N3、足跡N1から足跡N4、足跡N1から足跡N5に対してそれぞれレイキャストが行われる。その結果、全て成功することになるが、このうち、リーダーキャラクタに最も近い足跡N5へのショートカットを示す情報が、最終的に足跡N1に紐付けて記憶されることになる。
【0084】
図16は、足跡N2を基準とした場合のショートカット算出の例である。この場合は、足跡N2の次の順番である足跡N3についてはレイキャストの実行は省略される。そして、足跡N2から足跡N4、足跡N2から足跡N5に対して、それぞれレイキャストが行われる。その結果、全て成功することになるが、このうち、リーダーキャラクタに最も近い足跡N5へのショートカットを示す情報が、足跡N2に紐付けて記憶されることになる。
【0085】
図17は、足跡N3を基準とした場合のショートカット算出の例である。この場合は、足跡N3の次の順番である足跡N4についてはレイキャストの実行は省略される。その結果、足跡N3から足跡N5に対してのレイキャストのみが行われることになる、その結果、成功すれば、当該足跡N5へのショートカットを示す情報が、足跡N3に紐付けて記憶されることになる。
【0086】
なお、足跡N4からN5については、隣接関係にあるため、ショートカットを算出する意味は無い。したがって、N4を基準とした場合のショートカット算出は不要となる。また、N5はそもそも最新の足跡であるため、ショートカットをする先が存在しない。そのため、上記図14図17の例では、結果的には、足跡N1~N3だけが、ショートカットを算出する処理の対象になる。
【0087】
上記のように、各足跡について、それぞれショートカットの有無を判定し、有る場合はそのショートカット先の足跡の情報を記憶させる。そして、サブキャラクタが足跡を辿って移動しているときに、ショートカットの有る足跡に到達したら、次の移動目標について、ショートカット先の足跡を移動目標とする。つまり、足跡を辿らずに、近道をするような移動が行われることになる。一方、到達した足跡にショートカットが無い場合は、時系列で次に新しい足跡を移動目標とする。つまり、この場合は足跡を辿るような動きを継続することになる。
【0088】
上記図14図17で示したショートカットの算出例を踏まえて、ショートカットを用いたサブキャラクタの移動経路の例を図18および図19に示す。図18は、障害物がない場合の例であり、図19は、障害物がある場合の例である。図18の場合は、足跡N1には、足跡N5へのショートカット情報が記憶されている。そのため、サブキャラクタは、足跡N1に到達したら、次の移動目標を足跡N5とする。その結果、サブキャラクタの移動経路は、足跡N1→足跡N5という移動経路となる。一方、障害物がある図19の場合は、足跡N1およびN2については、障害物の存在によって、それぞれ他の足跡へのレイキャストが失敗に終わったという状況である。すなわち、足跡N1およびN2には、ショートカットの情報が記憶されていない状況である。一方、足跡N3については、足跡N5へのショートカット情報が記憶されている状況である。この場合は、移動経路としては、サブキャラクタが足跡N1に到達した後、足跡N2~N3までは足跡を辿るように移動する。そして、足跡N3に到達すると、当該足跡N3に記憶されているショートカット情報に基づいて、足跡N5に移動することになる。つまり、サブキャラクタの移動経路は、足跡N1→N2→N3→N5、という移動経路となる。
【0089】
このように、本実施形態では、上記スロットおよび足跡を用いてサブキャラクタの移動制御を行いつつ、足跡を用いた移動制御を行う場合は、更に、上記のようなショートカットを用いた移動制御も行っている。これにより、サブキャラクタがリーダーキャラクタにより速やかに追いつくことが可能になる。また、見た目の観点からも、サブキャラクタがより自然な挙動でリーダーキャラクタの位置に移動する(追いつこうとする)様子が表現できる。
【0090】
[本実施形態のゲーム処理の詳細]
次に、図20図27を参照して、本実施形態におけるゲーム処理についてより詳細に説明する。なお、ここでは、主に、上記のようなサブキャラクタの移動制御に関する処理を中心説明し、その他のゲーム処理の詳細説明は割愛する。
【0091】
[使用データについて]
まず、本ゲーム処理にて用いられる各種データに関して説明する。図20は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、リーダーキャラクタデータ302、サブキャラクタデータ305、スロット管理データ311、スロット対応付けデータ314、足跡管理データ315、処理対象足跡情報316、操作データ317が少なくとも記憶されている。
【0092】
ゲームプログラム301は、本実施形態におけるゲーム処理を実行するためのプログラムである。
【0093】
リーダーキャラクタデータ302は、上記リーダーキャラクタに関するデータである。リーダーキャラクタデータ302には、リーダーキャラクタの現在位置の座標を示すリーダ座標と、リーダーキャラクタの姿勢ベクトルが含まれる。
【0094】
サブキャラクタデータ305は、上記サブキャラクタに関するデータである。サブキャラクタデータ305には、サブキャラクタ毎に、サブキャラ座標と、足跡追従フラグと、目標足跡と、最新到達済み足跡とが記憶される。サブキャラ座標は、サブキャラクタの現在位置の座標である。足跡追従フラグは、サブキャラクタの移動制御が、上記スロットを目指して移動させる制御(スロット移動モード)であるか、所定の足跡を目指して移動させる制御(足跡追従モード)であるかを示すためのフラグである。オンの場合は、足跡追従モードであり、オフの場合はスロット移動モードであることを示す。目標足跡は、移動目標とする足跡の情報であり、最新到達済み足跡は、すでに到達した足跡のうちの最新の足跡を特定する情報である。
【0095】
スロット管理データ311は、上述したスロットを管理するためのデータである。スロット管理データ311には、スロット毎に、スロット座標が記憶される。
【0096】
スロット対応付けデータ314は、各スロットと各サブキャラクとの対応関係を定義したデータである。
【0097】
足跡管理データ315は、上記足跡を管理するためのデータである。図21に、足跡管理データ315のデータ構成の一例を示す。足跡管理データ315は、リスト構造のデータであり、複数の足跡データが含まれる。本実施形態では、足跡管理データ315として最大10個までの足跡データ(足跡N1~足跡N10)が記憶される場合を例として説明する。もちろん、記憶する足跡データの数はこれに限るものではなく、より多くの足跡データを記憶するよう構成してもよい。各足跡データには、足跡座標、タイムスタンプ、暫定ショートカット、ショートカット計算情報が少なくとも含まれる。足跡座標は、その足跡の仮想空間内における座標である。タイムスタンプは、その足跡が記録された日時を示す情報である。なお、タイムスタンプの代わりにフレーム番号を用いてもよい。暫定ショートカットおよびショートカット計算情報は、後述するショートカット生成処理において用いられる作業用のデータである。ショートカット計算情報は、ある足跡から見て、最後にレイキャストを実行した足跡を示す情報であり、暫定ショートカットは、レイキャストが成功した足跡のうち、最新の足跡を示す情報である。
【0098】
図20に戻り、次に、処理対象足跡情報316は、後述するショートカット作成処理において、今回のフレームで処理対象とする足跡Niを示す情報である。より具体的には、上記レイキャストを実行する際に、レイを飛ばす元となる足跡を特定するための情報である。なお、初期値として「足跡N1」が設定されるものとする。
【0099】
操作データ317は、ユーザが操作する上記コントローラから得られるデータである。すなわち、ユーザが行った操作内容を示すデータである。
【0100】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態におけるゲーム処理の詳細を説明する。本実施形態では、1以上のプロセッサが1以上のメモリに記憶された上記プログラムを読み込んで実行することにより、以下に示すフローチャートが実現される。なお、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0101】
図22は、本実施形態に係るゲーム処理の詳細を示すフローチャートである。なお、図22のステップS2~S6の処理ループは、1フレーム毎に繰り返し実行される。
【0102】
[準備処理]
まず、ステップS1で、プロセッサ81は、ゲームを開始する準備のためのゲーム準備処理を実行する。この処理では、ゲームフィールドを含む仮想3次元空間を構築し、地形オブジェクト、リーダーキャラクタ、サブキャラクタ等の各種オブジェクトが配置する処理が実行される。そして、各種オブジェクトが配置された仮想空間が仮想カメラで撮像されることでゲーム画像が生成され、当該画像が据置型モニタ等に出力される。また、以下の処理で用いられる各種データの初期化も行われる。具体的には、上記足跡追従フラグにオフが設定される。また、上記処理対象足跡情報316には足跡N1が設定される。また、足跡タイマーのカウントも開始される。足跡タイマーは、足跡データを10フレーム毎に記憶するためのタイマーである。
【0103】
[リーダーキャラクタの移動制御処理]
次に、ステップS2で、プロセッサ81は、操作データ317を取得する。次に、ステップS3で、プロセッサ81は、リーダー移動制御処理を行う。図23は、当該リーダー移動制御処理の詳細を示すフローチャートである。図23において、まず、ステップS11で、プロセッサ81は、操作データ317で示される操作内容に基づき、上記リーダー座標および姿勢ベクトルを更新することで、リーダーキャラクタの移動制御を行う。
【0104】
次に、ステップS12で、プロセッサ81は、上記足跡タイマーのカウント値が所定値を超えたか否かを判定する。本実施形態では、当該所定値は10フレームであるとする。当該判定の結果、10フレームを超えていない場合は(ステップS12でNO)、後述するステップS16に処理が進められる。
【0105】
一方、10フレームを超えた場合は(ステップS12でYES)、ステップS13で、プロセッサ81は、リーダーキャラクタの現在の座標と最新の足跡の座標との距離が所定値以上か否かを判断する。なお、最新の足跡の座標については、上記足跡管理データ315に含まれている複数の足跡データのうち、タイムスタンプが最も新しい足跡から取得すればよい。当該判定の結果、上記距離が所定値以上ではない場合は(ステップS13でNO)、後述するステップS16に処理が進められる。
【0106】
一方、上記ステップS13の判定の結果、上記距離が所定値以上の場合は(ステップS13でYES)、ステップS14で、プロセッサ81は、リーダーキャラクタの現在の座標と現在のタイムスタンプとを新たな足跡データとして足跡管理データ315に記憶する。ここで、足跡管理データ315に既に10個の足跡データが記憶されている場合には、タイムスタンプが最も古い足跡データを記憶している領域に新しい足跡データを上書きする。
【0107】
次に、ステップS15で、プロセッサ81は、足跡タイマーをリセットして、再カウントを開始する。
【0108】
次に、ステップS16で、プロセッサ81は、ショートカット作成処理を行う。この処理では、この時点で記憶されている各足跡から他の足跡に対して上述したレイキャストを行い、ショートカットの有無を判定・記憶するための処理が行われる。
【0109】
[ショートカット作成処理]
図24図25は、当該ショートカット作成処理の詳細を示すフローチャートである。ここで、以下の説明においては、「足跡Ni(または処理対象足跡Ni)」というときは、上記レイキャストにおけるレイを飛ばす元となる足跡を意図する。また、足跡Niからレイを飛ばす先となった足跡のことを「足跡Nj」と呼ぶ(jは正の整数)。また、足跡Njの初期値として、後述の処理対象足跡Niの次の足跡を示す情報が設定されるものとする。
【0110】
図24において、まず、ステップS21で、プロセッサ81は、変数である「レイキャスト実行回数」に0を設定する。当該変数は、1フレームに係る処理において上記のようなレイキャストを実行した回数をカウントするための変数である。ここで、本実施形態では、上記レイキャスト処理は一般に処理負荷が高めの処理であることに鑑みて、1フレームに係る処理においてレイキャストを実行する回数に制限を設けている。本実施形態では、当該回数(以下、上限回数と呼ぶ)が2回までである場合を例として説明する。
【0111】
また、本実施形態では、1フレームに係る処理において足跡Niから他の足跡にレイを飛ばす回数(以下、足跡毎の実行回数)については「1回」である場合を例として説明する。すなわち、足跡Niから他の足跡にレイを1回飛ばしたら、次は足跡Niの次の足跡Ni+1から他の足跡にレイを飛ばす処理に移行する場合を例示する。なお、これはあくまで1回の処理において足跡Niから1回だけレイを飛ばすという意味であり、ショートカット作成処理はフレームをまたいで繰り返し実行されるため、後述するように、最終的には足跡Niから複数の足跡(足跡Niより後に記録されたすべての足跡)に対してレイを飛ばすことになる。他の実施形態では、足跡毎の実行回数については2以上であってもよいことはいうまでもない。例えば、1フレームに係る処理において足跡Niから2以上の他の足跡にレイを飛ばすよう処理してもよい。
【0112】
上記のような1フレームにおけるレイキャスト実行の上限回数の設定(2回)と、足跡毎の実行回数の設定(1回)によって、足跡管理データ315に記憶された足跡の全てについてのショートカットの判定が、複数のフレームに分けて行われることになる。例えば本実施形態の場合は、あるフレームに係る処理では、足跡N1から足跡N3へのレイキャストと、足跡N2から足跡N4へのレイキャストが実行される。そして、その次のフレームに係る処理では、足跡N3から足跡N5へのレイキャストと、足跡N4から足跡N6へのレイキャストが実行されることになる。以降、フレーム毎に、足跡毎に1回ずつ、合計2回までレイキャストが実行されるという流れとなる。また例えば、上限回数6回、足跡毎の実行回数を2回とした場合は、あるフレームでは、足跡N1、N2、N3についてそれぞれ2回ずつ、次のフレームでは、足跡N4、N5、N6についてそれぞれ2回ずつ、レイキャストが行われるという流れとなる。上記のようなショートカットの有無の判定は、そこまでリアルタイム性は求められないものであることから、1フレームの処理で全ての足跡についてショートカットの判定を行わずに、複数フレームの処理にわたって判定していくことで、処理負荷を軽減しながら効率的にショートカットの判定を行うことができる。
【0113】
次に、ステップS22で、プロセッサ81は、処理対象とする足跡Ni(以下、処理対象足跡Ni)を決定する。具体的には、処理対象足跡情報316で示される足跡Niを、処理対象足跡Niとして設定する。
【0114】
次に、ステップS23で、プロセッサ81は、上記処理対象足跡Niが、足跡管理データに記憶されている足跡データの中で最新の足跡、またはその一つ前の足跡に該当するか否かを判定する。当該判定の結果、該当する場合は(ステップS23でYES)、ステップS24で、プロセッサ81は、足跡N1を処理対象足跡Niとして決定する。これは、このような足跡については、ショートカットを算出する意味が無いことから、無駄な処理を省くためである。例えば、ある時点で、時系列順に足跡N1~N10のデータが記憶されている場合、足跡N9およびN10についてはショートカットは存在しないため、その算出の必要性はない。この場合は、例えば、4フレームかけて足跡N1~N8までが処理され、その次のフレームでは、足跡N9、N10は飛ばして、処理対象が足跡N1に戻されることになる。すなわち、5フレーム目では、足跡N1、N2を対象として当該ショートカット作成処理が行われることになる。
【0115】
一方、上記判定の結果、該当しない場合は(ステップS23でNO)、上記ステップS24の処理はスキップされる。
【0116】
処理対象足跡Niが決定すれば、処理対象足跡Niからレイを飛ばす先となる足跡を特定して、レイキャスト処理が行われる。具体的には、まず、ステップS25で、プロセッサ81は、処理対象足跡Niのショートカット計算情報に格納されている足跡Njを取得する。すなわち、前回のフレームに係る処理において最後にレイを飛ばした足跡の情報を取得する。
【0117】
次に、ステップS26で、プロセッサ81は、足跡Njが最新の足跡であるか否かを判定する。足跡Njが最新の足跡であった場合、足跡Niからの他の足跡へのショートカット計算は既に完了していることになる。足跡Njが最新の足跡ではない場合は(ステップS26でNO)、ステップS27で、プロセッサ81は、足跡Njの次の足跡となる足跡Nj+1を特定する。そして、プロセッサ81は、処理対象足跡から当該足跡Nj+1に対してレイキャストを実行する。
【0118】
次に、図25のステップS29で、プロセッサ81は、変数「レイキャスト実行回数」に1を加算する。更に、プロセッサ81は、処理対象足跡Niのショートカット計算情報に足跡Nj+1となる足跡の情報を格納する。
【0119】
次に、ステップS30で、プロセッサ81は、レイキャストが失敗したか否か、すなわち、レイが途中で障害物に衝突したか否かを判定する。当該判定の結果、障害物に衝突しなかった場合(レイキャスト成功の場合)は(ステップS30でNO)、ステップS31で、プロセッサ81は、処理対象足跡の暫定ショートカットに、足跡Nj+1となる足跡の情報を格納する。その後、ステップS32に処理が進められる。一方、障害物に衝突した場合(レイキャスト失敗)は(ステップS30でYES)、上記ステップS31の処理はスキップされ、処理は次に進められる。
【0120】
図24に戻り、一方、上記ステップS26の判定の結果、足跡Njが最新の足跡である場合は(ステップS26でYES)、次に、ステップS28で、プロセッサ81は、足跡管理データ315内の全ての足跡の上記ショートカット計算情報の内容が最新の足跡になっているか否かを判定する。つまり、全ての足跡Niについてショートカット計算が終わったか否かを判定する。当該判定の結果、全て最新の足跡になっていない場合は(ステップS28でNO)、後述のステップS32に処理が進められる。一方、全て最新の足跡である場合は(ステップS28でYES)、プロセッサ81は、当該ショートカット作成処理を終了する。
【0121】
上記のようなレイキャストの処理が終われば、次に、図28のステップS32で、プロセッサ81は、現在の処理対象足跡Niの次の足跡(足跡Ni+1)を、次の処理対象足跡として設定(更新)する。
【0122】
次に、ステップS33で、プロセッサ81は、変数「レイキャスト実行回数」が、予め定義されている上限回数(本例では2回)に達したか否かを判定する。当該判定の結果、まだ上限回数に達していない場合は(ステップS33でNO)、上記ステップS23に戻り、処理が繰り返される。一方、上限回数に達している場合は(ステップS33でYES)、プロセッサ81は、当該ショートカット作成処理を終了する。
【0123】
図23に戻り、ショートカット作成処理が終われば、プロセッサ81は、リーダー移動制御処理を終了する。
【0124】
[サブキャラクタの移動制御処理]
図22に戻り、リーダー移動制御処理が終われば、次に、ステップS4で、プロセッサ81は、サブキャラクタ移動制御処理を実行する。図26図27は、当該サブキャラクタ移動制御処理の詳細を示すフローチャートである。図26において、まず、ステップS51で、プロセッサ81は、上記各スロットの位置を算出する。例えば、プロセッサ81は、予め定義されている各スロットの相対座標と、上記リーダー座標および姿勢ベクトルに基づいて、各スロットの座標を算出する。
【0125】
次に、ステップS52で、プロセッサ81は、以下に説明する処理の対象とするサブキャラクタを1体、決定する。換言すれば、以下に説明するステップS53~S66の処理は、サブキャラクタの数だけ順次繰り返される。
【0126】
次に、ステップS53で、プロセッサ81は、処理対象として決定されたサブキャラクタ(以下、処理対象キャラと呼ぶ)の足跡追従フラグがオンか否かを判定する。当該判定の結果、オフの場合は(ステップS53でNO)、上記スロットを用いる移動制御が行われる(スロットモード)。具体的には、まず、ステップS54で、プロセッサ81は、処理対象キャラに対応付けられたスロットの方向に当該処理対象キャラを所定距離だけ移動させる。
【0127】
次に、ステップS55で、プロセッサ81は、処理対象キャラが「引っかかり状態」か否かを判定する。「引っかかり状態」とは、上記図11で示したような、地形等の障害物によって、スロットに向けての処理対象キャラの進行が妨げられている状態である。本実施形態では、引っかかり状態であるか否かは、例えば以下のようにして判定する。まず、(上記のような移動制御を行ったにもかかわらず)処理対象キャラクタの座標が所定時間以上変わっていない場合、引っかかり状態であると判定される。また、処理対象キャラクタが地形などの障害物に所定時間以上衝突している(ぶつかっている)場合も、引っかかり状態であると判定される。また、当該所定時間の判定については、これらの時間をカウントするためのカウンタをサブキャラクタ毎に用意し、その値を所定の比較値と比較してもよい。当該判定の結果、「引っかかり状態」ではない場合は(ステップS55でNO)、後述のステップS58に処理が進められる。
【0128】
一方、「引っかかり状態」の場合は(ステップS55でYES)、ステップS56で、プロセッサ81は、処理対象キャラの現在位置を中心とした所定範囲内に存在する足跡のうち、最も新しい足跡を目標足跡として設定する。
【0129】
次に、ステップS57で、プロセッサ81は、処理対象キャラの足跡追従フラグにオンを設定する。これにより、処理対象キャラの移動制御は、次のフレームから足跡追従モードとなる。その後、後述のステップS58に処理が進められる。
【0130】
一方、上記ステップS53の判定の結果、処理対象キャラの足跡追従フラグがオンの場合は(ステップS53でYES)、上記足跡を用いる移動制御が行われる(足跡追従モード)。具体的には、図27のステップS59で、プロセッサ81は、処理対象キャラの現在位置から見た目標足跡の方向を算出する、そして、プロセッサ81は、当該算出した方向へ処置対象キャラを所定距離だけ移動させる。
【0131】
次に、ステップS60で、プロセッサ81は、上記ステップS59での処理対象キャラの移動の結果、処理対象キャラが目標足跡に到達したか否かを判定する。当該判定の結果、到達していない場合は(ステップS60でNO)、後述のステップS65に処理が進められる。
【0132】
一方、到達した場合は(ステップS60でYES)、プロセッサ81は、当該目標足跡を示す情報を処理対象キャラの「最新到達済み足跡」として記憶する。具体的には、プロセッサ81は、当該目標足跡に対応する足跡データのタイムスタンプを足跡管理データ315から読み出して、処理対象キャラの「最新到達済み足跡」として記憶する。
【0133】
次に、ステップS62で、プロセッサ81は、当該到達した目標足跡にショートカットがあるか否かを判定する。具体的には、当該目標足跡の上記暫定ショートカットにショートカット先となる足跡の情報が設定されているか否かを判定する。当該判定の結果、ショートカットが有る場合は(ステップS62でYES)、ステップS63で、プロセッサ81は、ショートカット先の足跡を目標足跡に設定する。その後ステップS65に処理が進められる。
【0134】
一方、上記ステップS62の判定の結果、到達した目標足跡にショートカットが設定されていない場合は(ステップS62でNO)、ステップS64で、プロセッサ81は、足跡管理データ315に記憶されている複数の足跡の中から、最新到達済み足跡の次にタイムスタンプが新しい足跡(時系列で次の順番に来る足跡)を抽出する。そして、プロセッサ81は、当該抽出した足跡を、次の目標足跡として設定する。
【0135】
次に、ステップS65で、プロセッサ81は、処理対象キャラの現在位置から目標スロットまでの距離が所定値以下となったか否かを判定する。その結果、所定値以下となった場合は(ステップS65でYES)、ステップS66で、プロセッサ81は、次フレーム以降で処理対象キャラが目標スロットに向かうように、処理対象キャラの足跡追従フラグをオフにする。一方、所定値以下になっていない場合は(ステップS65でNO)、当該ステップS66の処理はスキップされる。その後、ステップS58に処理が進められる
【0136】
図26に戻り、次に、ステップ58で、プロセッサ81は、全てのサブキャラクタについて上記の処理が完了したか否かを判定する。その結果、未処理のサブキャラクタが残っている場合は(ステップS58でNO)、上記ステップS52に戻り、未処理のサブキャラクタの中から次の処理対象キャラを決定して、同様の処理を繰り返す。一方、全てのサブキャラクタについて処理を完了した場合は(ステップS58でYES)、当該サブキャラクタ移動制御処理は終了する。
【0137】
[ゲーム画像出力処理]
図22に戻り、サブキャラクタ移動制御処理が終われば、次に、ステップS5で、プロセッサ81は、上記の処理が反映されたゲーム画像を生成して出力する。
【0138】
次に、ステップS6で、プロセッサ81は、ゲームの終了条件が満たされたか否かを判定し、満たされていない場合は(ステップS6でNO)、上記ステップS2に戻り、処理が繰り返される。満たされた場合は(ステップS6でYES)、当該ゲーム処理は終了する。
【0139】
以上で、本実施形態に係るゲーム処理の詳細説明を終了する。
【0140】
このように、本実施形態では、サブキャラクタの移動について、基本的にはスロット移動モードで制御しつつ、その進行が障害物によって妨げられた場合、上記足跡追従モードに移行して制御を行っている。更に、足跡追従モードで移動しているときは、上記のようなある足跡から他の足跡へのショートカット制御も併用している。これにより、サブキャラクタが足跡追従モードにおいて移動している場合に、リーダーキャラクタに追いつくまでの時間を短縮することができる。また、より自然な挙動でサブキャラクタが移動している様子を表現できる。
【0141】
また、上記実施形態の処理は、サブキャラクタが1体だけの場合でも適用可能であるが、サブキャラクタが多数存在しているようなゲーム処理において、特に有用である。すなわち、リーダーキャラクタを追従するように多数のサブキャラクタを個別に移動制御させるような場合に、上記のような足跡およびショートカットを用いた移動制御を行うことで、より少ない処理負荷で、より効率的にかつ自然な挙動で移動制御させることができる。
【0142】
また、上記のように、本実施形態では、上記ショートカット作成処理において、処理対象とする足跡Niをループさせるようにして処理している(足跡N8まで処理したら次は足跡N1を処理する)。そのため、一旦ショートカット先が決まった足跡でも、その後も繰り返し処理対象となることで、よりリーダーキャラクタの近くにショートカットができないかを判定することになり、最新の足跡状況を踏まえたショートカットの作成が可能となる。
【0143】
[変形例]
なお、上記実施形態では、レイキャストとして、ある足跡から他の足跡へ直線を飛ばす処理(Line Traceと呼ばれる)を例として説明した。他の実施形態では、当該レイキャストの処理として、直線の代わりに球を飛ばす処理を行ってもよい。この場合、当該球の半径は、サブキャラクタの半径と同じ、あるいは、これより少し大きい値とすればよい。これにより、ショートカット可能か否かの判定をより正確に行える。すなわち、直線の場合よりは幅のある判定を行うため、ある足跡から他の足跡にショートカットで移動している途中で、サブキャラクタが障害物に引っかかって進行が妨げられでしまう状態が発生することを防ぐことができる。また、このような球を用いてレイキャストを行う場合は、ショートカットとして用いる経路については、直線の経路に限らず、上記球の直径に基づいて決まる領域内で曲線的な経路を用いてもよい。
【0144】
また、上記実施形態では、足跡追従モードにおいて、単純に足跡データの足跡座標を目標足跡とする例を挙げた。この他、例えば、足跡データの足跡座標を少しオフセットした座標を上記目標座標として設定してもよい。この場合、当該オフセットした座標は、リーダーオブジェクトが実際に通過したという事実に基づき、「引っかかり状態」が発生しないと判断できる範囲の座標であればよい。
【0145】
また、上記ショートカット作成処理に関して、上記の例では、ある足跡から他の足跡にレイキャストする時の順番として、時系列で古い順に処理していく例を挙げた。すなわち、足跡N1からレイを飛ばす場合は、足跡N3、N4、N5・・・という順番でレイキャストを行う例を挙げた。他の実施形態では、より新しい足跡から順にレイキャストを行うようにしてもよい。例えば、足跡N1からレイを飛ばす場合は、足跡N10、足跡N9、足跡N8・・・の順でレイキャストを実行してもよい。ショートカット可能な足跡が見つかった時点で、それ以降の計算処理が不要となるため、例えば最新の足跡の更新頻度が低い状況等では、より効率的となる場合がある。
【0146】
また、上記実施形態では、ショートカット作成処理は1フレーム毎に実行される例を挙げた。ショートカット作成処理の実行間隔はこれに限らず、他の実施形態では、例えば、5フレーム毎や10フレーム毎等、所定フレーム毎にショートカット作成処理が実行されるようにしてもよい。
【0147】
また、上記実施形態では、1フレームに係る処理において、レイキャストの実行回数を上記上限回数までとする例を挙げた。他の実施形態では、当該上限回数を、そのときの処理負荷に応じて変動させるようにしてもよい。例えば、あるフレームでは、上限回数2回としてレイキャストが実行されるが、他のフレームで処理負荷が低く、処理能力に余裕がある場合は、そのときのフレームに係る処理においては、上限回数を4回や5回等に設定して、レイキャスト実行回数を動的に増やしてもよい。また、処理負荷の高低は、例えば、そのフレームで描画すべきオブジェクト(ポリゴン)の数の大小に応じて判断してもよい。また、これと同様に、上記足跡毎の実行回数についても、その時々の処理負荷に応じて変動させてもよい。
【0148】
また、上記実施形態においては、ゲーム処理に係る一連の処理を単一の本体装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0149】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27