(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-21
(45)【発行日】2023-06-29
(54)【発明の名称】ゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム処理方法
(51)【国際特許分類】
A63F 13/56 20140101AFI20230622BHJP
A63F 13/54 20140101ALI20230622BHJP
A63F 13/79 20140101ALI20230622BHJP
【FI】
A63F13/56
A63F13/54
A63F13/79 510
(21)【出願番号】P 2021154577
(22)【出願日】2021-09-22
【審査請求日】2022-01-27
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】西山 潤弘
(72)【発明者】
【氏名】高橋 幸嗣
【審査官】岸 智史
(56)【参考文献】
【文献】特開2020-182532(JP,A)
【文献】特開2014-054304(JP,A)
【文献】特開2012-061091(JP,A)
【文献】特開2011-120664(JP,A)
【文献】特開2006-268676(JP,A)
【文献】[あつ森]ビバ!カーニバルリアクションの種類と入手方法 [あつまれどうぶつの森],勇者ブログ [online],2021年02月07日,https://yuushablog.info/carnival-reaction/,[2023年1月31日検索]
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタに継続的なアクションを
開始させ、
前記アクション開始から所定時間経過するごとに、前記プレイヤキャラクタの位置を含
む範囲であって、前記アクション開始からの経過時間に応じた広さの所定範囲に含まれる
ノンプレイヤキャラクタを判定させ、
前記所定範囲に含まれると判定された前記ノンプレイヤキャラクタに前記継続的なアク
ションを開始させる、ゲームプログラム。
【請求項2】
前記コンピュータに更に、
前記所定範囲に含まれるノンプレイヤキャラクタに対し、当該ノンプレイヤキャラクタ
の向きを前記プレイヤキャラクタを向くように変更させてから、前記継続的なアクション
を開始させる、請求項1に記載のゲームプログラム。
【請求項3】
前記コンピュータに、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記ア
クション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキ
ャラクタ毎にそれぞれ設定される待機時間が更に経過した後、前記継続的なアクションを
開始させる、請求項1又は請求項2に記載のゲームプログラム。
【請求項4】
前記コンピュータに、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記経
過時間に加えて、当該ノンプレイヤキャラクタ毎にランダムに設定される待機時間が更に
経過した後、前記継続的なアクションを開始させる、請求項3に記載のゲームプログラム
。
【請求項5】
前記コンピュータに、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記ア
クション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキ
ャラクタ毎にそれぞれ設定される待機時間が更に経過したタイミングで、当該ノンプレイ
ヤキャラクタの向きを前記プレイヤキャラクタを向くように変更させる、請求項3または
請求項4に記載のゲームプログラム。
【請求項6】
前記コンピュータに、前記プレイヤキャラクタまたは前記ノンプレイヤキャラクタに、
所定の単位期間で再生されるアニメーションを繰り返し行わせることで前記継続的なアク
ションを行わせる、請求項1から請求項5のいずれかに記載のゲームプログラム。
【請求項7】
前記コンピュータに更に、
再生時間の経過に応じた複数のアクション開始タイミングが設定されたBGMを出力
させ、
前記操作入力に基づいて前記プレイヤキャラクタに継続的なアクションを開始させる
場合、当該操作入力後に前記アクション開始タイミングが到来したときに前記継続的なア
クションを開始させ、
前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記アクション開始からの
経過時間から当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過し
た後、前記アクション開始タイミングが到来したときに、前記継続的なアクションを開始
させる、請求項2から請求項5のいずれかに記載のゲームプログラム。
【請求項8】
前記コンピュータに、
前記プレイヤキャラクタまたは前記ノンプレイヤキャラクタに、所定の単位期間で再生
されるアニメーションを繰り返し行わせることで前記継続的なアクションを行わせ、
前記複数のアクション開始タイミングは、前記単位期間の整数倍となるような間隔で設
定される、請求項7に記載のゲームプログラム。
【請求項9】
前記コンピュータに、前記アクション開始からの経過時間に応じて、前記プレイヤキャ
ラクタの位置を中心として段階的に広がっていくように前記所定範囲を設定させる、請求
項1から請求項8のいずれかに記載のゲームプログラム。
【請求項10】
プロセッサを有するゲーム装置を備えるゲームシステムであって、
前記プロセッサは、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタに継続的なアクションを開始させ、
前記アクション開始から所定時間経過するごとに、前記プレイヤキャラクタの位置を含む範囲であって、前記アクション開始からの経過時間に応じた広さの所定範囲に含まれるノンプレイヤキャラクタを判定し、
前記所定範囲に含まれると判定された前記ノンプレイヤキャラクタに前記継続的なアクションを開始
させる、ゲームシステム。
【請求項11】
前記プロセッサは更に、前記所定範囲に含まれるノンプレイヤキャラクタに対し、当該ノンプレイヤキャラクタの向きを前記プレイヤキャラクタを向くように変更させてから、前記継続的なアクションを開始させる、請求項10に記載のゲームシステム。
【請求項12】
前記プロセッサは、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記アクション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過した後、前記継続的なアクションを開始させる、請求項10又は請求項11に記載のゲームシステム。
【請求項13】
前記プロセッサは、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記経過時間に加えて、当該ノンプレイヤキャラクタ毎にランダムに設定される待機時間が更に経過した後、前記継続的なアクションを開始させる、請求項12に記載のゲームシステム。
【請求項14】
前記プロセッサは、前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記アクション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過したタイミングで、当該ノンプレイヤキャラクタの向きを前記プレイヤキャラクタを向くように変更する、請求項12または13に記載のゲームシステム。
【請求項15】
前記プロセッサは、前記プレイヤキャラクタまたは前記ノンプレイヤキャラクタに、所定の単位期間で再生されるアニメーションを繰り返し行わせることで前記継続的なアクションを行わせる、請求項10から請求項14のいずれかに記載のゲームシステム。
【請求項16】
前記プロセッサは更に、
再生時間の経過に応じた複数のアクション開始タイミングが設定されているBGMを出力し、
前記操作入力に基づいて前記プレイヤキャラクタに継続的なアクションを開始させる場合、当該操作入力後に前記アクション開始タイミングが到来したときに前記継続的なアクションを開始させ、
前記所定範囲に含まれるノンプレイヤキャラクタに対し、前記アクション開始からの経過時間から当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過した後、前記アクション開始タイミングが到来したときに、前記継続的なアクションを開始させる、請求項11から請求項14のいずれかに記載のゲームシステム。
【請求項17】
前記プロセッサは、前記プレイヤキャラクタまたは前記ノンプレイヤキャラクタに、所定の単位期間で再生されるアニメーションを繰り返し行わせることで前記継続的なアクションを行わせ、
前記複数のアクション開始タイミングは、前記単位期間の整数倍となるような間隔で設定される、請求項16に記載のゲームシステム。
【請求項18】
前記プロセッサは、前記アクション開始からの経過時間に応じて、前記プレイヤキャラクタの位置を中心として段階的に広がっていくように前記所定範囲を設定する、請求項10から請求項17のいずれかに記載のゲームシステム。
【請求項19】
プロセッサを備えるゲーム装置であって、
前記プロセッサは、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタに継続的なアクションを開始させ、
前記アクション開始から所定時間経過するごとに、前記プレイヤキャラクタの位置を含む範囲であって、前記アクション開始からの経過時間に応じた広さの所定範囲に含まれるノンプレイヤキャラクタを判定し、
前記所定範囲に含まれると判定された前記ノンプレイヤキャラクタに前記継続的なアクションを開始
させる、ゲーム装置。
【請求項20】
情報処理装置のコンピュータに実行させるゲーム処理方法であって、
前記コンピュータに、
操作入力に基づいて、仮想空間内においてプレイヤキャラクタに継続的なアクションを開始させ、
前記アクション開始から所定時間経過するごとに、前記プレイヤキャラクタの位置を含む範囲であって、前記アクション開始からの経過時間に応じた広さの所定範囲に含まれるノンプレイヤキャラクタを判定させ、
前記所定範囲に含まれると判定された前記ノンプレイヤキャラクタに前記継続的なアクションを開始させる、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ゲーム処理におけるノンプレイヤキャラクタの制御処理に関する。
【背景技術】
【0002】
従来から、様々なノンプレイヤキャラクタ(NPC)が住民として生活している仮想ゲーム世界内で、プレイヤキャラクタとして仮想的に生活するゲームが知られている。このようなゲームでは、様々なNPCとの触れあい等を楽しむことができる(例えば非特許文献1)。
【先行技術文献】
【非特許文献】
【0003】
【文献】任天堂株式会社、”気ままに島DAYS 住民と仲良くなる”、[online]、[令和3年9月7日検索]、インターネット(URL:https://www.nintendo.co.jp/switch/acbaa/guide/index.html)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のゲームでは、プレイヤキャラクタが行ったアクションに対してNPCがリアクションすることもある。例えば、プレイヤキャラクタが「あくび」するアクションをすると、そばにいるNPCも、同じく「あくび」するリアクションを行うことがある。
【0005】
しかし、上記のようなゲームでは、多数のNPCにプレイヤキャラクタと同じアクションを行わせたい場合については、特に考慮されていなかった。例えば、プレイヤキャラクタの周囲にいる複数のNPCに、プレイヤキャラクタの行ったアクションと同じアクションを行わせる場合、複数のNPC全員に一斉に行わせると不自然な動作に見える可能性もある。
【0006】
それ故に、本開示における目的は、複数のNPCにプレイヤキャラクタと同じアクションを行わせる際に、不自然な動作とならないようにNPCを制御することが可能なゲームプログラム、ゲームシステム、ゲーム装置、ゲーム処理方法を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0008】
構成例の一例は、情報処理装置のコンピュータに、以下の処理を実行させるゲームプログラムである。まず、操作入力に基づいて、仮想空間内においてプレイヤキャラクタに継続的なアクションを開始させる。次に、アクション開始から所定時間経過するごとに、プレイヤキャラクタの位置を含む範囲であって、アクション開始からの経過時間に応じた広さの所定範囲に含まれるノンプレイヤキャラクタを判定させる。そして、記所定範囲に含まれると判定されたノンプレイヤキャラクタに継続的なアクションを開始させる。
【0009】
上記構成例によれば、プレイヤキャラクタが継続的アクションを開始してからの時間経過に応じた広さの範囲内にいるノンプレイヤキャラクタに当該継続的アクションを開始させる。これにより、複数のノンプレイヤキャラクタがいる場合に、継続的アクションを開始させるタイミングをそれぞれ異ならせることができ、ノンプレイヤキャラクタの動作について違和感のない動作を行わせることができる。
【0010】
他の構成例として、コンピュータに更に、所定範囲に含まれるノンプレイヤキャラクタに対し、当該ノンプレイヤキャラクタの向きをプレイヤキャラクタを向くように変更させてから、継続的なアクションを開始させてもよい。
【0011】
上記構成例によれば、ノンプレイヤキャラクタは、最初はプレイヤキャラクタの方を向いていなくても、継続的アクションを開始する際には、プレイヤキャラクタの方を向くことになる。これにより、ノンプレイヤキャラクタがプレイヤキャラクタの動きに気付いて、同じアクションを行うという、違和感のない動作を表現することができる。
【0012】
他の構成例として、コンピュータに、所定範囲に含まれるノンプレイヤキャラクタに対し、アクション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過した後、継続的なアクションを開始させてもよい。
【0013】
上記構成例によれば、ノンプレイヤキャラクタが所定範囲に含まれるようになった後、更にノンプレイヤキャラクタ毎に設定される待機時間を経過してから継続的アクションが開始される。これにより、複数のノンプレイヤキャラクタ間で継続的アクションを開始するタイミングをずらすことができ、より違和感の少ない動きを表現できる。
【0014】
他の構成例として、コンピュータに、所定範囲に含まれるノンプレイヤキャラクタに対し、経過時間に加えて、当該ノンプレイヤキャラクタ毎にランダムに設定される待機時間が更に経過した後、継続的なアクションを開始させてもよい
【0015】
他の構成例として、コンピュータに、所定範囲に含まれるノンプレイヤキャラクタに対し、アクション開始から当該所定範囲に含まれるまでの経過時間に加えて、当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過したタイミングで、当該ノンプレイヤキャラクタの向きをプレイヤキャラクタを向くように変更してもよい。
【0016】
上記構成例によれば、ノンプレイヤキャラクタ毎に待機時間を設定し、これが経過してからノンプレイヤキャラクタの向きをプレイヤキャラクタを向くように変更する。これにより、ノンプレイヤキャラクタがプレイヤキャラクタのほうを向くタイミングをノンプレイヤキャラクタ毎に異ならせることができるため、より違和感の少ない動きを表現できる。
【0017】
他の構成例として、コンピュータに、プレイヤキャラクタまたはノンプレイヤキャラクタに、所定の単位期間で再生されるアニメーションを繰り返し行わせることで継続的なアクションを行わせてもよい。
【0018】
上記構成例によれば、継続的アクションに関するデータサイズを節約することができ、記憶容量の削減を図ることができる。
【0019】
他の構成例として、コンピュータにさらに、再生時間の経過に応じた複数のアクション開始タイミングが設定されているBGMを出力させてもよい。そして、操作入力に基づいてプレイヤキャラクタに継続的なアクションを開始させる場合、当該操作入力後にアクション開始タイミングが到来したときに継続的なアクションを開始させ、所定範囲に含まれるノンプレイヤキャラクタに対しては、アクション開始からの経過時間から当該ノンプレイヤキャラクタ毎にそれぞれ設定される待機時間が更に経過した後、アクション開始タイミングが到来したときに、継続的なアクションを開始させてもよい。
【0020】
上記構成例によれば、プレイヤキャラクタもノンプレイヤキャラクタも、アクション開始タイミングに合わせて継続的アクションを開始する。これにより、継続的アクションの出だしの動きを揃えることができ、プレイヤキャラクタとノンプレイヤキャラクタとがそれぞれ行う継続的アクションの動きを同期させることができる。また、全キャラクタがBGMに合わせて継続的アクションを行っている様子を表現できる。これにより、複数のキャラクタを用いた一体感のある動きの表現を提供できる。
【0021】
他の構成例として、コンピュータに、プレイヤキャラクタまたはノンプレイヤキャラクタに、所定の単位期間で再生されるアニメーションを繰り返し行わせることで継続的なアクションを行わせ、複数のアクション開始タイミングは、単位期間の整数倍となるような間隔で設定されてもよい。
【0022】
上記構成例によれば、単位期間の整数倍でアクション開始タイミングを設定する。そのため、アニメーションの出だし部分をそろえることができ、プレイヤキャラクタとノンプレイヤキャラクタとがそれぞれ行う継続的アクションの動きを同期した動きとすることができる。
【0023】
他の構成例として、コンピュータに、アクション開始からの経過時間に応じて、プレイヤキャラクタの位置を中心として段階的に広がるように所定範囲を設定させてもよい。
【0024】
上記構成例によれば、プレイヤキャラクタと同じ継続的アクションを行うノンプレイヤキャラクタの数を、時間経過に応じて段階的に増やしていくことができる。これにより、プレイヤキャラクタが行った継続的アクションが、プレイヤキャラクタの近くにいるノンプレイヤキャラクタから、遠くにいるノンプレイヤキャラクタへと時間経過に応じて徐々に伝搬していくような動きの表現ができる。
【発明の効果】
【0025】
本開示によれば、複数のノンプレイヤキャラクタにプレイヤキャラクタと同じ動きを行わせる際に、違和感のないノンプレイヤキャラクタの動きを表現することができる。
ができる。
【図面の簡単な説明】
【0026】
【
図1】ゲーム装置2の内部構成の一例を示すブロック図
【
図7】PC201、NPC、および真似領域の位置関係を示す模式図
【
図9】PC201、NPC、および真似領域の位置関係を示す模式図
【
図11】PC201、NPC、および真似領域の位置関係を示す模式図
【
図13】記憶部84に記憶される各種データの一例を示すメモリマップ
【
図14】継続的アクションマスタ304のデータ構成の一例
【
図17】真似領域管理データ307のデータ構成の一例
【
図18】本実施形態に係るダンスエリア処理の詳細を示すフローチャート
【
図20】継続的アクション開始設定処理の詳細を示すフローチャート
【
図21】継続的アクション開始処理の詳細を示すフローチャート
【
図22】継続的アクション処理の詳細を示すフローチャート
【
図23】NPC制御処理の詳細を示すフローチャート
【
図24】コピーモード処理の詳細を示すフローチャート
【
図25】コピーモード処理の詳細を示すフローチャート
【
図26】コピーアクション継続処理の詳細を示すフローチャート
【発明を実施するための形態】
【0027】
以下、一実施形態について説明する。
【0028】
[情報処理装置のハードウェア構成]
まず、本実施形態にかかる情報処理を実行するための情報処理装置について説明する。当該情報処理装置は、例えばスマートフォン、据置型または携帯型のゲーム装置、タブレット端末、携帯電話、パーソナルコンピュータ、ウェアラブル端末等である。また、本実施形態にかかる情報処理は、上記のようなゲーム装置等と、所定のサーバとから構成されるゲームシステムにも適用可能である。本実施形態では、据置型ゲーム装置(以下、単にゲーム装置と呼ぶ)を情報処理装置の一例として説明する。
【0029】
図1は、本実施形態に係るゲーム装置2の内部構成の一例を示すブロック図である。ゲーム装置2は、プロセッサ81を備える。プロセッサ81は、ゲーム装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部84に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。なお、記憶部84は、例えば、フラッシュメモリやDRAM(Dynamic Random Access Memory)等の内部記憶媒体であってもよいし、図示しないスロットに装着される外部記憶媒体等を利用する構成でもよい。
【0030】
また、ゲーム装置2は、ゲーム装置2がコントローラ4と有線または無線通信を行うためのコントローラ通信部86を備える。なお、図示は省略するが、コントローラ4には、十字キーやABXYボタン等の各種のボタン、および、アナログスティック等が設けられている。
【0031】
また、ゲーム装置2には、画像音声出力部87を介して表示部5(例えば、テレビ等)が接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像や音声を、画像音声出力部87を介して表示部5に出力する。
【0032】
[本実施形態におけるゲーム処理の概要]
次に、本実施形態にかかるゲーム装置2で実行されるゲーム処理(情報処理の一例)の動作概要を説明する。まず、本実施形態で想定するゲームは、ユーザの操作対象となる仮想オブジェクトであるプレイヤキャラクタ(以下、PCと呼ぶ)に所定のアクションを行わせるゲームである。具体的には、PCにダンスのような動きを行わせるゲームである。
【0033】
本実施形態では、3次元の仮想ゲーム空間内(以下、単に仮想空間と呼ぶ)の少なくとも一部のエリアが「ダンスエリア」として設定されている。ユーザは、PCを操作して、このダンスエリアにPCを移動させることができる。本実施形態に係る処理は、当該ダンスエリア内における処理となる。なお、PCが移動可能な範囲の全域がダンスエリアとして設定されていてもよい。
【0034】
図2は、本実施形態で想定するゲーム画面の一例である。当該画面は、上記ダンスエリアの少なくとも一部を仮想カメラで撮像した3次元のゲーム画像である。また、
図3は、PC201とNPCの位置関係をわかりやすくするため、
図2の状態の当該ダンスエリアの少なくとも一部を俯瞰したものを示す模式図である。
図2では、ゲーム画面の略中央にPC201が存在している。なお、仮想カメラの制御については、仮想カメラの視野の略中央にPC201が写るように、PC201の位置に追従するような制御が行われるものとする。この画面では、PC201は棒立ちの状態である。また、PC201の周囲には、複数体のNPC(ノンプレイヤキャラクタ)が存在している。具体的には、
図2の例では、9体のNPCが存在している。これらNPCはそれぞれ個別に、1ループ数秒程度の所定のアニメーションを繰り返しており、NPCが個別に踊っている様を表現している。また、仮想カメラから見て画面の奥側に、DJブースも存在している。また、当該ダンスエリア内には、当該ダンスエリアに関連付けられた所定のBGMも再生されている(上記DJブース内のDJキャラがBGMを演奏しているという体裁である)。つまり、NPCが銘々に踊っているダンスエリアに、PC201が入場したような状況となっている。
【0035】
<PCの操作について>
次に、当該ダンスエリア内におけるPC201の操作に関して説明する。まず、ユーザは、コントローラ4のアナログスティックを操作することで、PC201をダンスエリア内で移動させることができる。また、ダンスエリア外に移動(退場)することもできる。また、ユーザは、コントローラ4の十字キーを押すことで、所定の「継続的アクション」をPC201に行わせることができる。この継続的アクションとは、再生時間として所定の単位期間が設定された所定のアニメーション(キャラクターモーション)を繰り返し行うアクションである。本実施形態では、当該単位期間は4秒である例で説明する。つまり、上記所定のアニメーションとして、1ループ分の動きが4秒分の動きとなるアニメーションが定義されているとする。更に、本実施形態では、十字キーにおける上下左右の各方向にそれぞれ異なる所定のアニメーションが対応づけられている。つまり、ユーザは、十字キーの各方向を押下することで、4種類のアニメーションをPC201に行わせることができる。
【0036】
図2の状態において、例えば、ユーザが十字キーの上方向を押すと、PC201は、現在いる位置において、上方向に対応づけられた所定のアニメーションを開始する。なお、当該アニメーションをPC201に行わせるためにユーザは十字キーを押し続けている必要はなく、ユーザが上方向を一回押して指を離しても、別途のアクション停止操作が行われるまでは、PC201は、当該アニメーションを繰り返す。同様に、ユーザが他の方向入力を行えば、PC201は各方向に対応づけられているアニメーションを開始し、アクション停止操作が行われるまでは、そのアニメーションを繰り返す。ここで、本実施形態では、十字キー以外の操作入力は、アクション停止操作として扱われる。例えば、PC201が継続的アクション中に、ユーザがアナログスティック入力(移動指示)を行った場合、PC201は継続的アクションを停止する。その後、入力方向に応じてPC201は移動する。
【0037】
<NPCの制御について>
次に、本実施形態における上記NPCの動作制御について説明する。本実施形態では、NPCは、デフォルト状態では、各NPCに設定されているAI制御によって、各NPCに個別に設定されている固有のアニメーションを繰り返している。そして、本実施形態では、PC201が上記のような継続的アクションを開始すると、NPCもPCの行っている継続的アクションを真似する、という制御が行われる。つまり、PC201が継続的アクションを開始すれば、NPCがそれを真似し、結果的に、ダンスエリアの全員が同じアニメーションを同じタイミングで行っている状態となる。これは、ユーザがアクション停止操作を行うまで続けられる。アクション停止操作が行われることで、NPCは、PC201の動きを真似ることを止め、上記AI制御による個別のアニメーションの繰り返し動作に戻る。なお、本実施形態では、各NPCは、ダンスエリア内の各自の配置位置から移動せず、その場で踊り続けるものとする。また、以下の説明では、NPCがPC201の継続的アクションを真似る動作のことを「コピーアクション」と呼ぶ。
【0038】
上記のように、本実施形態では、NPCは、コピーアクションとして、PC201の継続的アクションを真似する、という制御を行う。ここで、上記コピーアクションを開始するタイミングに関して、PC201が継続的アクションを開始するのと同時に複数のNPCの全員が同じアニメーションを開始すると、不自然な見た目となり、ユーザに違和感を与える可能性がある。そこで、本実施形態では、複数のNPCがコピーアクションを開始するタイミングについて、以下のような制御を行っている。
【0039】
本実施形態では、PC201が継続的アクションを開始すると、NPCにコピーアクションを開始させるための当たり判定領域(以下、真似領域と呼ぶ)の範囲を、PC201の位置を中心として、時間の経過に応じて広げていく、というような制御を行っている。
図4に、当該真似領域の概念の一例を示す。本実施形態では、PC201の位置を中心として、同心円状に広がるように真似領域を設定している。まず、PC201が継続的アクションを開始したタイミング(以下、開始タイミングと呼ぶ)では、まだ真似領域は設定されない。開始タイミングから4秒経過後に、仮想空間内におけるPC201の位置から半径2mまでの領域を真似領域として設定する。その後、4秒経過毎に、半径2mずつ真似領域の範囲を拡張していく。つまり、4秒ごとに段階的に真似領域を広げていく。
図4では、3段階まで拡張する場合の例を示している。何段階まで拡張するかは任意であるが、例えば、ダンスエリア全域をカバーできる程度まで、真似領域の範囲を拡張すればよい。また、当該段階数の決定については、例えば、PC201の位置からダンスエリアの最も遠くにある外縁までの直線距離を求め、これを2m毎に区切ることで、範囲を広げる段階数を算出してもよい。
【0040】
なお、本実施形態では4秒毎に真似領域を広げる例で説明するが、当該真似領域を広げる時間間隔は一定間隔でなくともよい。他の実施形態では、例えば4秒後、10秒後、18秒後・・のように、一定ではない時間間隔で、真似領域を広げるタイミングを予め決定しておく構成でもよい。また、上記真似領域の形状(同心円)や拡張単位(2m)は一例であり、他の実施形態では、異なる形状や単位を用いてもよい。例えば、4角形や5角形の形状を用いてもよいし、(仮想空間内における)半径2mではなく1mや3m単位で拡張してもよい。また、例えば最初は半径1mで拡張し、その後、2m、3mと段階的に拡張する単位を大きくする、または逆に小さくする等して、拡張単位を動的に変動させるようにしてもよい。
【0041】
上記のように、PC201の継続的アクションの開始タイミングから真似領域を時間差で拡張していく。そして、NPCがこの領域内に存在する状態となれば、そのNPCについて、PC201が行っている継続的アクションの真似、すなわちコピーアクションを開始させる制御が行われる。
図5~
図12に、3段階まで真似領域を拡張する場合のPC201とNPCの位置関係、およびゲーム画面例を示す。まず、
図5は、PC201が継続的アクションを開始した直後のダンスエリアの俯瞰図を示す。また、
図6は、この場合のゲーム画面例である。
図6では、まだ真似領域は設定されておらず、PC201のみが、継続的アクション(本例では、弓を引くように両腕を動かすアニメーションの繰り返しであるとする)を行っている状態である。
【0042】
図7および
図8は、開始タイミングから4秒後のダンスエリアの俯瞰図およびゲーム画面の一例である。
図7では、第1段階目の真似領域が設定されている状態である。
図8のゲーム画面では、当該第1段階目の真似領域内にいるNPC3体が、新たにコピーアクションを開始した様子を示している。なお、
図8では当該真似領域を点線で示しているが、実際には画面には表示されない(以下も同様である)。
【0043】
ここで、本実施形態では、NPCがコピーアクションを開始する際、PC201のほうを向いていなければ、PC201の方を向いてコピーアクションを開始するという制御も行っている。つまり、NPCがPC201の動きに気づいて、その真似を始める、という動作を表現している。
図8の例では、(仮想カメラから見て)PC201の左側にいる2体のNPCについては、その向きがPC201のほうを向いて、コピーアクションを開始した様子を示している。
【0044】
図9および
図10は、開始タイミングから8秒後のダンスエリアの俯瞰図およびゲーム画面の一例である。
図9は、真似領域が第2段階目まで拡張された状態である。
図10のゲーム画面では、当該第2段階目の真似領域内に属する状態となったNPC4体が、新たにコピーアクションを開始した様子を示している。この際の向きの制御については上記同様である。また、この時点で真似領域の外にいる2体のNPCについては、まだAI制御による動作が行われている状態である。
【0045】
図11および
図12は、開始タイミングから12秒後のダンスエリアの俯瞰図およびゲーム画面の一例である。
図11は、真似領域が第3段階目まで拡張された状態を示す。図
12のゲーム画面では、当該第3段階目の真似領域内に属する状態となったNPC2体が、新たにコピーアクションを開始した様子を示している。この際の向きの制御については上記同様である。その結果、
図12のゲーム画面では、ダンスエリア内の全NPCが全員、PC201の方を向いて継続的アクションを真似している、という状態となる。
【0046】
上記のように、本実施形態では、NPCは、真似領域内に存在していない状態から存在する状態となったとき、コピーアクションを開始するという制御を行う。この際、本実施形態では、NPCが真似領域内に存在する状態となっても、すぐにはコピーアクションを開始させず、更に、NPC毎に0~3秒の間でランダムに決定される待機時間を設けてからコピーアクションを開始させる制御も行っている。例えば、開始アクションから4秒経過時点で、第1段階目の真似領域が設定されるが、この時点で当該領域内に存在している3体のNPC全員が同時にコピーアクションを開始するのではなく、それぞれ、0秒~3秒の幅で、コピーアクションの開始タイミングをずらすような制御としている。つまり、同じ真似領域内のNPCがPC201の動きに気づくのに、多少の時間差を設けるというような制御を行っている。これにより、複数のNPCがPC201の動きに同時に気づいて振り向く、という動きによって不自然な印象をユーザに与えることを防ぐことができる。
【0047】
また、上記とは別に、本実施形態では、継続的アクションの開始タイミングを、BGMの再生タイミングに同期させるような制御も行っている。具体的には、本実施形態では、BGMの再生期間内に、上記単位期間である4秒の整数倍となるような間隔で、「アクション開始タイミング」を設定しておく。本実施形態では、当該「アクション開始タイミング」が4秒間隔(つまり、1倍)で設定されている例で説明する。そして、継続的アクションは、このアクション開始タイミングの到来に合わせて開始するという制御を行う。PC201の制御例としては、例えば、アクション開始タイミングの2秒前の時点でユーザが十字キーの上方向を押したとする。この場合は、PC201は、2秒待機してから、上方向に対応した継続的アクションを開始する、という制御が行われる。また、NPCの制御については、真似範囲内に存在する状態となった後、更に上記0~3秒の待機時間が経過した時点がアクション開始タイミングの2秒前の時点であれば、そこから更に2秒待機してコピーアクションを開始する、という制御が行われる。例えば、上記第1段階目の真似領域内のいる所定のNPCについて、上記待機時間が1秒と設定された場合を想定する。この場合は、当該NPCがコピーアクションを開始するまでには、PC201の継続的アクションの開始タイミングから、4秒+待機時間1秒+BGMのアクション開始タイミングが到来するまでの待ち時間2秒の、計7秒後にコピーアクションを開始することになる。このように、BGMの再生タイミングに合わせて、PC201もNPCも継続的アクション(コピーアクション)を開始させることで、継続的アクションのアニメーションの出だしを揃えることができ、最終的に、PC201とNPCとの動きをシンクロさせることができる。
【0048】
なお、上記アクション開始タイミングを設定する間隔は、上記単位期間の整数倍であればよく、必ずしも等間隔で設定せずともよい。
【0049】
また、本実施形態では、アクション停止操作が行われた場合、そのタイミングで一斉にNPCにコピーアクションを停止させるのではなく、停止するタイミングについても、上記同様に時間経過に応じて広がっていくような制御を行う。具体的には、アクション停止操作が行われた場合、4秒毎に、上記同心円状の真似領域の設定を段階的に解除していく、という制御を行う。例えば、アクション停止操作が行われてから4秒後に、第1段階目の真似領域(半径2mまでの領域)の設定が解除される(その結果、真似領域の形状は、一時的に、真ん中に穴が開いたドーナツ形状になる)。そして、第1段階目の真似領域内にいたNPCは、上記と同様の0~3秒のランダムな待機時間を経てからコピーアクションを停止し、デフォルト状態の制御に戻る。更にアクション停止操作が行われてから8秒後に第2段階目の真似領域までが解除され、12秒後には、第3段階目の真似領域まで解除される。これに伴い、これらの領域内にいたNPCも上記同様にコピーアクションを停止して、デフォルト状態の制御に戻る。このように、本実施形態では、PC201が継続的アクションを止めたとき、NPCにもコピーアクションを止めさせるが、この際、段階的に止めさせるような制御を行っている。
【0050】
[本実施形態のゲーム処理の詳細]
次に、
図13~
図26を参照して、本実施形態におけるゲーム処理についてより詳細に説明する。
【0051】
[使用データについて]
まず、本ゲーム処理で利用される各種データに関して説明する。
図13は、ゲーム装置2の記憶部84に記憶される各種データの一例を示すメモリマップである。記憶部84には、プログラム記憶領域301およびデータ記憶領域303が含まれている。プログラム記憶領域301には、ゲーム処理プログラム302が記憶される。また、データ記憶領域303には、継続的アクションマスタ304、PCデータ305、NPCデータ306、真似領域管理データ307、BGMデータ308、操作データ309等が記憶される。
【0052】
ゲーム処理プログラム302は、本実施形態にかかるゲーム処理を実行するためのプログラムであり、上記のようなダンスエリアにおける各種制御を実行するためのプログラムコードも含まれている。
【0053】
継続的アクションマスタ304は、上記継続的アクションと十字キーの入力方向との対応付けについて定義したデータである。
図14は、継続的アクションマスタ304のデータ構成の一例を示す図である。継続的アクションマスタ304は、アクションID341、アニメーション定義データ342、対応方向343の項目を有するテーブル形式のデータである。アクションID341は、上記の4種類の継続的アクションを一意に識別するためのIDである。アニメーション定義データ342は、継続的アクションのアニメーション内容を定義したデータである。対応方向343は、各継続的アクションに対応づけられた、十字キーの入力方向を定義したものである。
【0054】
図13に戻り、PCデータ305は、上記PC201に関するデータである。
図15は、PCデータ305のデータ構成の一例を示す図である。PCデータ305には、外観データ351、現在位置データ352、PC状態データ353、PC実行アクションID354、とが少なくとも含まれる。外観データ351は、PC201の外観を定義するデータであり、具体的には3Dモデルデータやテクスチャのデータである。現在位置データ352は、PC201の仮想空間内における現在位置を示すデータである。PC状態データ353は、PC201が継続的アクションを実行中の状態であるか否か等を示すためのデータである。本実施形態では、ダンスエリア内におけるPC201の状態として、「非アクション状態」、「開始待ち」、「アクション中」の3種類の間で遷移するものとする。「開始待ち」は、十字キーに対する入力が行われた後、実際にPC201が継続的アクションを開始するまでの間の状態である。つまり、十字キーの入力があった後、上記のようなBGMのアクション開始タイミングが来るまでの間の状態である。「アクション中」は、実際に継続的アクションをPC201が行っているときの状態である。「非アクション状態」は、デフォルトの状態であり、上記2つの状態以外の状態を示す(例えば移動中等)。PC実行アクションID354は、PC201が実行中の継続的アクションを特定するためのデータであり、上記継続的アクションマスタ304のアクションID341のいずれかの値が設定され得る。
【0055】
図13に戻り、次に、NPCデータ306は、NPCを管理するためのデータである。
図16に、NPCデータ306のデータ構成の一例を示す。NPCデータ306は、NPCID361、動作モード362、NPC状態363、デフォルトアニメーションデータ364、NPC実行アクションID365、開始待機時間366、終了待機時間367、NPC外観データ368の項目を少なくとも有するデータベースである。
【0056】
NPCID361は、各NPCを一意に識別するためのIDである。動作モード362は、NPCの動作モードを示すデータである。ここで、本実施形態では、NPCの動作モードとして、「通常モード」と「コピーモード」がある。コピーモードは、NPCが上記コピーアクションを行う場合の動作モードである。通常モードは、コピーモードではない場合の動作モードであり、NPCがAI制御で動作する場合の動作モードである。
【0057】
NPC状態363は、NPCの動作モードがコピーモードであるときの、NPCの状態を示すデータである。本実施形態では、当該NPC状態として、「開始待ち」「コピーアクション中」「解除待ち」の3つの状態があるとする。「開始待ち」は、NPCが真似領域内に位置する状態となってから、実際にコピーアクションを開始するまでの状態である。「真似アクション中」は、NPCが真似領域内に位置しており、コピーアクションを行っているときの状態である。「解除待ち」は、コピーアクション中のNPCが(真似領域の設定解除によって)真似領域内に位置しない状態となってから、コピーアクションを実際に停止するまでの間の状態である。
【0058】
デフォルトアニメーションデータ364は、NPCが通常モードの場合に、NPCが行うアニメーションを定義したデータである。本実施形態では、当該アニメーションは、NPC毎に異なるアニメーションが定義されているものとする。
【0059】
NPC実行アクションID365は、NPCが行うコピーアクション(真似する継続的アクション)を特定するためのデータである。上記継続的アクションマスタ304のアクションID341のいずれかの値が設定され得る。
【0060】
開始待機時間366は、コピーアクションを開始する際の、上述したような0~3秒の間でランダムに決定された待機時間を示すデータである。また、終了待機時間367は、コピーアクションを停止する際に、同様にランダムで決定された待機時間を示すデータである。
【0061】
NPC外観データ368は、NPCの外観を定義するデータである。
【0062】
図13に戻り、真似領域管理データ307は、上記のような真似領域の拡大や解除を管理するために用いるデータである。また、当該真似領域管理データ307は、一時的に生成されるデータであり、継続的アクションの開始に際して生成され、真似領域が全て解除されるのに伴って消去される。
図17は、当該真似領域管理データ307のデータ構成の一例を示す図である。真似領域管理データ307は、段階数371と、範囲定義データ372と、有効無効フラグ373との項目を有するデータベースである。段階数371は、真似領域を拡大する段階(何段階目であるか)を示すデータである。その総数は、継続的アクションの開始指示時のPC201の位置と、ダンスエリアの端までの距離に応じて変化し得る。以下の説明では、3段階まで広げればダンスエリアの全領域がカバーできる場合を例として説明する。範囲定義データ372は、各段階に対応する真似領域の範囲を定義したデータである。本実施形態では、一例として、(PC201の位置を中心とする)半径を指定することで当該範囲を定義する例を示している。また、有効無効フラグ373は、各段階に係る真似領域範囲が有効か無効かを示すフラグである。有効であれば、その真似領域の範囲が設定されている状態であることを示す。また、初期値は「無効」が設定される。本実施形態では、2m単位で真似領域を拡張する場合を想定するため、第1段階が「有効」になると、半径0~2mの領域が真似領域として設定されることになる(上記
図7のような状態)。同様に、第2段階が「有効」にされると、半径2~4mの領域が真似領域として追加設定され(上記
図9参照)、結果的に、半径0~4mの範囲が有効な真似領域となる。また、第3段階が「有効」にされると、半径4~6mの領域が真似領域として更に追加設定される(上記
図11参照)。その結果、半径0~6mの範囲が有効な真似領域となる。このように段階的に各領域を有効化することで、時間経過に応じた真似領域の段階的な拡大制御を行うものである。また、真似領域を段階的に解除する場合は、時間経過に応じて第1段階から順に、有効無効フラグ373に「無効」を設定していくような制御を行うことで、段階的な解除制御を行うものである。
【0063】
図13に戻り、BGMデータ308は、ダンスエリアにて演奏されるBGMのデータである。当該BGMデータ308には、上述したような「アクション開始タイミング」を示すデータも含まれている(本例では、再生期間における4秒毎に設定されている)
【0064】
操作データ309は、コントローラ4に対して行われた操作の内容を示すデータである。本実施形態では、十字キー等のボタンに対する押下状態や、コントローラ4に設けられているアナログスティックに対する入力状態を示すデータが含まれる。当該操作データ309の内容は、コントローラ4からの信号に基づき、所定の周期で更新される。
【0065】
その他、記憶部84には、ゲーム処理で用いられる各種のデータが必要に応じて記憶される。
【0066】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態にかかるゲーム処理、特に、上記ダンスエリア内における処理(以下、ダンスエリア処理)の詳細を説明する。
図18は、ダンスエリア処理の詳細を示すフローチャートである。当該処理は、例えば、仮想空間内において、PC201がダンスエリアに入場したときに実行される。なお、当該処理の実行に先立って、例えばPC201がダンスエリアに所定距離まで近づいたときに、以下のような処理が行われているものとする。すなわち、NPCをダンスエリア内の所定位置に配置し、各NPCの動作モード362を通常モードに設定して、AIによるNPCの動作制御を開始する処理が、PC201がダンスエリアに入場する前に行われているものとする。また、
図18で示すステップS1~S5の処理ループは、1フレーム毎に繰り返し実行されるものとする。
【0067】
なお、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0068】
図18において、まず、ステップS1で、プロセッサ81は、BGM再生制御処理を実行する。具体的には、プロセッサ81は、BGMデータ308に基づいて、BGMの再生箇所を進めるための処理を実行する。
【0069】
[PC201の制御]
次に、ステップS2で、プロセッサ81は、PC制御処理を実行する。
図19は、当該PC制御処理の詳細を示すフローチャートである。まず、ステップS11で、プロセッサ81は、操作データ309を取得する。次に、ステップS12で、プロセッサ81は、PC状態データ353が「アクション中」であるか否かを判定する(なお、PC状態データ353はデフォルトでは「非アクション状態」が設定されている)。当該判定の結果、「アクション中」ではない場合(ステップS12でNO)、ステップS14で、プロセッサ81は、PC状態データ353が「開始待ち」であるか否かを判定する。当該判定の結果、「開始待ち」でもない場合は(ステップS14でNO)、ステップS16で、プロセッサ81は、十字キーへの入力があったか否か、すなわち、継続的アクションの開始操作が行われたか否かを判定する。
【0070】
上記判定の結果、継続的アクションの開始操作が行われた場合は(ステップS16でYES)、ステップS17で、プロセッサ81は、継続的アクション開始設定処理を実行する。
図20は、当該継続的アクション開始設定処理の詳細を示すフローチャートである。
図20において、まず、ステップS21で、プロセッサ81は、継続的アクションマスタ304を参照し、十字キーに対する入力方向に応じて、実行する継続的アクションを決定する。そして、プロセッサ81は、決定した継続的アクションのアクションID341をPC実行アクションID354に設定する。
【0071】
次に、ステップS32で、プロセッサ81は、その時点におけるPC201の現在位置を真似領域の中心位置として設定する。次に、ステップS33で、プロセッサ81は、真似領域管理データ307を生成する。具体的には、プロセッサ81は、上記中心位置とダンスエリアの端までの直線距離に基づいて、真似領域を拡大する段階数を算出する。更に、プロセッサ81は、この段階数に応じて、真似領域管理データ307を生成する。この際、プロセッサ81は、有効無効フラグ373には「無効」を設定する。更に、プロセッサ81は、範囲定義データ372については、段階の小さいものから2m単位で真似領域が拡大するように、その内容を定義する。
【0072】
次に、ステップS34で、プロセッサ81は、PC状態データ353に「開始待ち」を設定する。そして、プロセッサ81は、継続的アクション開始設定処理を終了する。
【0073】
図19に戻り、継続的アクション開始設定処理が終了すれば、PC制御処理は終了する。
【0074】
次に、上記ステップS14の判定の結果、PC状態データ353が「開始待ち」であると判定された場合の処理(ステップS14でYES)について説明する。この場合は、ステップS15で、プロセッサ81は、継続的アクション開始処理を実行する。この処理では、BGMのアクション開始タイミングの到来を待ってから継続的アクションをPC201に開始させる処理を実行する。
図21は、当該継続的アクション開始処理の詳細を示すフローチャートである。
図21において、まず、ステップS41で、プロセッサ81は、アクション開始タイミングが現在到来しているか否かを、BGMデータ308に基づいて判定する。当該判定の結果、到来していない場合は(ステップS41でNO)、プロセッサ81は、継続的アクション開始処理を終了する。一方、到来している場合は(ステップS41でYES)、ステップS42で、プロセッサ81は、継続的アクションに係るアニメーション制御を開始させる。また、プロセッサ81は、これに併せて、継続的アクションの開始時からの経過時間の計時を開始する。続くステップS43で、プロセッサ81は、PC状態データ353に「アクション中」を設定する。その後、プロセッサ81は、継続的アクション開始処理を終了する。
【0075】
図19に戻り、継続的アクション開始処理が終了すれば、PC制御処理は終了する。
【0076】
次に、上記ステップS12の判定の結果、PC状態データ353が「アクション中」である場合の処理(ステップS12でYES)について説明する。この場合は、ステップS13で、プロセッサ81は、継続的アクション処理を実行する。
図22は、当該継続的アクション処理の詳細を示すフローチャートである。
図22において、まず、ステップS51で、プロセッサ81は、上記のようなアクション停止操作が行われたか否かを判定する。当該判定の結果、行われていない場合は(ステップS51でNO)、ステップS52で、プロセッサ81は、十字キーの操作によって、異なる継続的アクションの開始操作が行われたか否かを判定する。例えば、上方向に対応する継続的アクションの実行中に、十字キーの右方向が押されたような場合である。当該判定の結果、異なる継続的アクションの開始操作が行われた場合は(ステップS52でYES)、その入力方向に応じた継続的アクションに係るアクションID341で、PC実行アクションID354の内容を更新する。一方、異なる継続的アクションの開始操作が行われていない場合は(ステップS52でNO)、当該ステップS53の処理はスキップされて、処理が次に進められる。
【0077】
次に、ステップS54で、プロセッサ81は、継続的アクションを開始してからの経過時間に応じて、真似領域を拡大するための処理を実行する。すなわち、プロセッサ81は、継続的アクションを開始してから4秒経過する毎に、真似領域管理データ307の有効無効フラグ373を、段階数の小さいものから順に「有効」に設定していく。上記
図17の例でいうと、継続的アクションを開始してから4秒経過時点で、段階数371が“1”の有効無効フラグ373が「有効」に設定される。更に、継続的アクションを開始してから8秒経過時点で、段階数371が“2”の有効無効フラグ373が「有効」に設定される。更に、継続的アクションを開始してから12秒経過時点で、段階数371が“3”の有効無効フラグ373が「有効」に設定される。
【0078】
次に、ステップS55で、プロセッサ81は、PC実行アクションID354で指定されている継続的アクションに係るアニメーション制御を継続して実行する。その後、プロセッサ81は、継続的アクション処理を終了する。なお、ある継続的アクションの実行中に異なる継続的アクションが指定された場合は、上記のように、アクション開始タイミングが到来したタイミングで、実行する継続的アクションのアニメーションが切り替わるような制御が行われる。
【0079】
次に、上記ステップS51の判定の結果、アクション停止操作が行われた場合の処理(ステップS51でYES)について説明する。この場合は、ステップS56で、プロセッサ81は、その時に実行されているPC201の継続的アクションのアニメーション制御を停止する。また、プロセッサ81は、これに併せて、上記継続的アクションの開始時から行っていた経過時間の計時を停止し、更に、当該アクション停止操作が行われたときからの経過時間の計時を開始する。次に、ステップS57で、プロセッサ81は、PC状態データ353に、「非アクション状態」を設定する。その後、プロセッサ81は、継続的アクション処理を終了する。
【0080】
図19に戻り、継続的アクション処理が終われば、プロセッサ81は、PC制御処理を終了する。
【0081】
次に、上記ステップS16の判定の結果、継続的アクションの開始操作が行われていない場合(ステップS16でNO)の処理について説明する。この場合は、ステップS18で、プロセッサ81は、移動操作が行われたか否かを判定する。当該判定の結果、移動操作が行われている場合は(ステップS18でYES)、ステップS19で、プロセッサ81は、移動操作の内容に基づいて、現在位置データ352の内容を更新する。そして、プロセッサ81は、当該更新後の位置にPC201を移動させる。
【0082】
一方、ステップS18の判定の結果、移動操作が行われていない場合は(ステップS18でNO)、ステップS20で、プロセッサ81は、操作内容に基づいて、上記以外のゲーム処理を適宜実行する(例えば仮想カメラ操作やスクリーンショットを撮る処理等)。
【0083】
次に、ステップS21で、プロセッサ81は、真似領域管理データ307を参照し、真似領域がまだ残っているか否かを判定する。例えば、プロセッサ81は、有効無効フラグ373は「有効」である真似領域があるか否かを判定する。当該判定の結果、真似領域が残っている場合は(ステップS21でYES)、PC201が「非アクション状態」であるときに真似領域が残っているという状況であり、アクション停止操作が行われて間もない状況であると考えられる。この場合は、ステップS22で、プロセッサ81は、上記アクション停止操作が行われたときからの経過時間に応じて、真似領域を段階的に解除する処理を実行する。具体的には、プロセッサ81は、上記アクション停止操作が行われたときから4秒経過する毎に、真似領域の上記中心点に近い段階の領域から順番に、有効無効フラグ373に「無効」を設定していく。更に、真似領域管理データ307内の全ての段階に係る領域が「無効」になれば、プロセッサ81は、真似領域管理データ307を消去する。その後、プロセッサ81は、PC制御処理を終了する。
【0084】
一方、上記ステップS21の判定の結果、真似領域が残っていない場合、例えば真似領域管理データ307が無い場合は(ステップS21でNO)、上記ステップS22の処理はスキップされ、プロセッサ81は、PC制御処理を終了する。
【0085】
[NPCの制御]
図18に戻り、PC制御処理の次に、ステップS3で、プロセッサ81は、NPC制御処理を実行する。この処理では、真似領域との位置関係に基づいてNPCの動作モードを適宜切り替える制御等が行われる。
図23は、当該NPC制御処理の詳細を示すフローチャートである。
図23において、まず、ステップS61で、プロセッサ81は、ダンスエリア内に複数存在するNPCの中から、以下に説明する処理の対象とするNPC(以下、処理対象NPCと呼ぶ)を1体選択する(なお、選択手法はどのような手法でもよい)。
【0086】
次に、ステップS62で、プロセッサ81は、NPCデータ306に基づいて、処理対象NPCの動作モードが通常モードか否かを判定する。当該判定の結果、通常モードの場合は(ステップS62でYES)、ステップS63で、プロセッサ81は、処理対象NPCについて、AI制御を行わせる。当該AI制御では、処理対象NPCが、デフォルトアニメーションデータ364に基づいた動作を行うような制御が行われる。
【0087】
次に、ステップS64で、プロセッサ81は、処理対象NPCが、真似領域内に位置している状態か否かを判定する。換言すれば、処理対象NPCのいる位置が有効化された真似領域に含まれる状態となったか否かを判定する。当該判定の結果、処理対象NPCが真似領域内に位置している状態である場合は(ステップS64でYES)、ステップS65で、プロセッサ81は、処理対象NPCの動作モード362に「コピーモード」を設定する。更に、プロセッサ81は、処理対象NPCのNPC状態363に、「開始待ち」を設定する。
【0088】
次に、ステップS66で、プロセッサ81は、処理対象NPCに係る開始待機時間366を、0秒~3秒の間でランダムで決定する。更に、プロセッサ81は、開始待機時間366に係る経過時間の計時も開始する。その後、後述するステップS68に処理が進められる。
【0089】
一方、上記ステップS64の判定の結果、処理対象NPCが、真似領域内に位置していない状態の場合は(ステップS64でNO)、上記ステップS65およびS66の処置はスキップされる。
【0090】
次に、上記ステップS62の判定の結果、処理対象NPCの動作モード362が通常モードでない場合(ステップS62でNO)の処理について説明する。この場合は、処理対象NPCの動作モードはコピーモードとなるため、ステップS67で、プロセッサ81は、コピーモード処理を実行する。
図24~
図25は、当該コピーモード処理の詳細を示すフローチャートである。
図24において、まず、ステップS71で、プロセッサ81は、処理対象NPCのNPC状態363が「開始待ち」であるか否かを判定する。当該判定の結果、「開始待ち」の場合は(ステップS71でYES)、ステップS72で、プロセッサ81は、処理対象NPCの開始待機時間366を参照し、処理対象NPCが「開始待ち」となってから、当該開始待機時間を経過したか否かを判定する。当該判定の結果、開始待機時間366をまだ経過していない場合は(ステップS72でNO)、ステップS73で、プロセッサ81は、現在実行しているアニメーションの制御を継続する。その後、プロセッサ81は、コピーモード処理を終了する。なお、当該ステップS73の処理において、継続制御されるアニメーションは、デフォルトのアニメーションである場合と、上記継続的アクションのアニメーションの場合の双方があり得る。前者は、NPCの動作モードが通常モードからコピーモードに切り替わった直後の場合であり、開始待機時間366が経過するまではAI制御によるデフォルトのアニメーションが継続されることになる。後者は、PC201の継続的アクションを真似ている状態で、PC201が行う継続的アクションが異なる継続的アクションに変更された場合である。この場合は、開始待機時間366が経過するまでは、変更前の継続的アクションを続け、開始待機時間366が経過すれば変更後の継続的アクションを真似るという動きになる。
【0091】
一方、ステップS72の判定の結果、開始待機時間366が経過した場合は(ステップS72でYES)、NPCをPC201のほうに向かせるための制御が行われる。この場合は、ステップS74で、プロセッサ81は、処理対象NPCが、PC201のいる方向を向いているか否かを判定する。また、これに伴い、開始待機時間366に係る経過時間の計時を停止する。当該判定の結果、向いていない場合は(ステップS74でNO)、ステップS75で、プロセッサ81は、処理対象NPCの姿勢を、PC201のほうを向くように回転させる。その後、ステップS76に処理が進められる。
【0092】
一方、ステップS74の判定の結果、処理対象NPCがPC201のいる方向を向いている場合は(ステップS74でYES)、姿勢を変更する必要は無いため、上記ステップS75の処理はスキップされて、処理が次に進められる。
【0093】
次に、ステップS76で、プロセッサ81は、BGMデータ308を参照して、上記アクション開始タイミングが到来しているか否かを判定する。当該判定の結果、アクション開始タイミングが到来している場合は(ステップS76でYES)、ステップS77で、プロセッサ81は、処理対象NPCのNPC状態363に「コピーアクション中」を設定する。続くステップS78で、プロセッサ81は、処理対象NPCについて、コピーアクションによる動作制御を開始させる。具体的には、まず、プロセッサ81は、この時点におけるPC実行アクションID354の内容をNPC実行アクションID365に設定する。そして、プロセッサ81は、継続的アクションマスタ304を参照し、当該NPC実行アクションID365に対応する継続的アクションのアニメーション定義データ342に基づいたNPCの動作制御を開始する。その後、プロセッサ81は、コピーモード処理を終了する。
【0094】
一方、上記ステップS76の判定の結果、アクション開始タイミングが到来していない場合は(ステップS76でNO)、プロセッサ81は、上記ステップS77およびS78の処理はスキップして、コピーモード処理を終了する。つまり、NPCがPC201のほうを向いた後も、アクション開始タイミングが到来するまでは、コピーアクションは開始せずに待機することになる。そのため、例えば、複数のNPCそれぞれについて、PC201の方向を向くタイミングが異なっても、コピーアクションを実際に開始するタイミングは同じとなる場合もあり得る。
【0095】
次に、上記ステップS71の判定の結果、処理対象NPCのNPC状態363が「開始待ち」ではない場合(ステップS71でNO)の処理について説明する。この場合は、
図25のステップS79で、プロセッサ81は、処理対象NPCのNPC状態363が「解除待ち」か否かを判定する。当該判定の結果、「解除待ち」ではない場合は(ステップS79でNO)、処理対象NPCは「コピーアクション中」の状態と考えられる。この場合は、ステップS80で、プロセッサ81は、処理対象NPCが真似領域内に位置している状態か否かを判定する。当該判定の結果、処理対象NPCが真似領域内に位置している場合は(ステップS80でYES)、真似領域の解除はまだ行われていない状態と考えられる。この場合は、ステップS81で、プロセッサ81は、コピーアクション継続処理を実行する。
【0096】
図26は、当該コピーアクション継続処理の詳細を示すフローチャートである。まず、ステップS91で、プロセッサ81は、処理対象NPCが現在真似ている継続的アクションと、PC201が現在実行している継続的アクションとが一致しているか否かを判定する。これは、上記PC実行アクションID354およびNPC実行アクションID365が一致するか否かで判定される。当該判定の結果、一致している場合は(ステップS91でYES)、ステップS92で、プロセッサ81は、現在のコピーアクションの制御を継続する。そして、プロセッサ81は、コピーアクション処理を終了する。一方、一致していない場合は(ステップS91でNO)、PC201が、実行する継続的アクションを(アクション停止操作を行うことなく)異なる継続的アクションに変更した状況と考えられる。この場合は、処理対象NPCに、0~3秒の間のランダム決定された待機時間の経過後、変更後の継続的アクションを真似させるための処理を行う。すなわち、ステップS93で、プロセッサ81は、処理対象NPCのNPC状態363に「開始待ち」を設定する。続くステップS94で、プロセッサ81は、処理対象NPCに係る開始待機時間366を、0秒~3秒の間でランダムで決定する。更に、プロセッサ81は、開始待機時間366に係る経過時間の計時も開始する。その後、プロセッサ81は、コピーアクション継続処理を終了する。これにより、上述のステップS72~S78の処理によって、ここで設定された開始待機時間366の経過後、変更後の継続的アクションを真似するコピーアクションが開始されることになる。
【0097】
図25に戻り、次に、上記ステップS80の判定の結果、処理対象NPCが真似領域内に位置していない場合の処理(ステップS80でNO)について説明する。これは、処理対象NPCがいた位置の真似領域が解除された状況と考えられる。この場合は、ステップS82で、プロセッサ81は、処理対象NPCに係る終了待機時間367を0秒~3秒の間でランダムで決定する。次に、ステップS83で、プロセッサ81は、処理対象NPCのNPC状態363に「解除待ち」を設定する。また、プロセッサ81は、終了待機時間367の経過時間の計時も開始する。その後、プロセッサ81は、コピーモード処理を終了する。
【0098】
次に、上記ステップS79の判定の結果、処理対象NPCのNPC状態363が「解除待ち」である場合の処理(ステップS79でYES)について説明する。この場合は、ステップS84で、プロセッサ81は、処理対象NPCが「解除待ち」の状態となってから、終了待機時間367が経過したか否かを判定する。当該判定の結果、まだ経過していない場合は(ステップS84でNO)、プロセッサ81は、上述したステップS81の処理を実行する。すなわち、終了待機時間367が経過するまではそのときのコピーアクション制御を継続する処理が行われる。一方、終了待機時間367が経過していれば(ステップS84でYES)、ステップS85で、プロセッサ81は、終了待機時間367の経過時間の計時を停止する。そして、プロセッサ81は、処理対象NPCのコピーアクションに係る制御を停止する。次に、ステップS86で、プロセッサ81は、処理対象NPCの動作モード362に「通常モード」を設定する。その後、プロセッサ81は、コピーモード処理を終了する。
【0099】
図23に戻り、次に、ステップS68で、プロセッサ81は、ダンスエリア内の全てのNPCに対して上記ステップS61~S67の処理を行ったか否かを判定する。当該判定の結果、まだ未処理のNPCが残っている場合は(ステップS68でNO)、上記ステップS61に戻り、次の処理対象NPCを選択して上記の処理を繰り返す。全NPCについて処理済みとなった場合は(ステップS68でYES)、プロセッサ81は、NPC制御処理を終了する。
【0100】
[描画処理]
図18に戻り、NPC制御処理の次に、ステップS4で、プロセッサ81は、描画処理を実行する。すなわち、プロセッサ81は上述したような処理が反映された仮想空間を仮想カメラで撮像してゲーム画像を生成し、表示部5に出力する処理を実行する。
【0101】
次に、ステップS5で、プロセッサ81は、当該ダンスエリア処理の終了条件が満たされたか否かを判定する。例えば、PC201がダンスエリアから退場する等である。終了条件が満たされていない場合は(ステップS5でNO)、プロセッサ81は、上記ステップS1に戻り処理を繰り返す。終了条件が満たされた場合は(ステップS5でYES)、プロセッサ81は、当該ダンスエリア処理を終了する。
【0102】
以上で、本実施形態にかかるダンスエリア処理の詳細説明を終了する。
【0103】
このように、本実施形態では、PC201が行う継続的アクションと同じアクションを複数のNPCに行わせている。この際に、PC201に近い位置のNPCのほうが先に当該アクションを開始し、PCから遠くの位置のNPCは、これよりも遅れて開始するような制御を行っている。すなわち、上記のような真似領域の範囲を時間経過に応じて広げていく制御を行っている。そのため、PC201が行ったアクションが、PC201を中心として、その周囲にいるNPCに徐々に伝搬していくような動作をNPCに行わせることができる。これにより、複数のNPCがPC201のアクションを真似するような動作を行わせる際に、違和感の少ない動作を行わせることが可能となる
【0104】
[変形例]
なお、上記実施形態では、真似領域内にNPCが位置する状態となった後、更にランダムな待機時間を設けてからコピーアクションを開始させる例を挙げた。他の実施形態では、このような待機時間は設けずに、真似領域内にNPCが位置する状態となり次第、コピーアクションを開始させるような制御を行ってもよい。この場合は、それぞれバラバラな動きをしていたNPCが、あるタイミングで同時にコピーアクションを始めるような動きとなるが、例えば複数のキャラクタによるダンスイベントの演出の一つとして、意図的に同時にコピーアクションを開始させたい場合等に、このような制御を用いることも可能である。
【0105】
また、上記実施形態では、PC201が「アクション中」の状態のとき、十字キーを操作することで、アクション停止操作を行うことなく、途中で継続的アクションを変更できる。そして、この際に、NPCについては、0~3秒の間でランダムに決定された待機時間を経てから、変更後の継続的アクションを真似させるような制御を行っていた。すなわち、変更後の継続的アクションに関連して真似領域を徐々に拡大する制御は行わない構成としていた。この点につき、他の実施形態では、アクション停止操作を行うことなく継続的アクションが変更された場合は、当該変更後のアクションに対応づけられた真似領域を徐々に拡大し直すような制御を行うようにしてもよい。例えば上記と同様に、変更後のアクションに対応づけられた真似領域を、4秒毎に2mずつ拡大する制御を行ってもよい。この場合は、例えば、上述した真似領域管理データ307が、開始操作/変更操作された継続的アクション毎に用意されるような構成としてもよい。
【0106】
また、上記実施形態では、ダンスエリア内のNPCは、配置された位置から移動しない場合を想定して説明した。他の実施形態では、例えばPC201がNPCを押すことで、NPCを移動可能な構成としてもよい。この場合、NPCが上記コピーアクションを開始するタイミングに関しては、元の配置位置にNPCを移動させてから、上記コピーアクションを開始する制御を行ってもよい。また、元の配置位置にPC201がいるような場合は、当該元の配置位置に隣接するような位置で上記コピーアクションを開始する制御を行ってもよい。
【0107】
また、上記実施形態においては、ダンスエリア処理にかかる一連の処理を単一のゲーム装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、ゲーム装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声としてゲーム装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0108】
2 ゲーム装置
4 コントローラ
5 表示部
81 プロセッサ
84 記憶部
87 画像音声出力部