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

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

▶ 株式会社コーエーテクモゲームスの特許一覧

特開2022-174622ゲームプログラム、情報処理装置、オブジェクト制御方法
<>
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図1
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図2A
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図2B
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図3
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図4
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図5
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図6
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図7
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図8
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図9
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図10
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図11
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図12
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図13
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図14
  • 特開-ゲームプログラム、情報処理装置、オブジェクト制御方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022174622
(43)【公開日】2022-11-24
(54)【発明の名称】ゲームプログラム、情報処理装置、オブジェクト制御方法
(51)【国際特許分類】
   A63F 13/56 20140101AFI20221116BHJP
   A63F 13/577 20140101ALI20221116BHJP
【FI】
A63F13/56
A63F13/577
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021080542
(22)【出願日】2021-05-11
(71)【出願人】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】篠崎 翔
(57)【要約】
【課題】キャラクターが密集すること又はしないことにより生じる興趣性の低下を抑制すること。
【解決手段】本発明は、情報処理装置を、複数のオブジェクトを仮想空間内で移動させるオブジェクト制御部と、前記複数のオブジェクトの接触を判定する接触判定部と、所定の条件が成立した場合、前記接触判定部が接触を判定した前記複数のオブジェクトの密集度を変更する制御を行う密集制御部、として機能させるゲームプログラムを提供する。
【選択図】図2B
【特許請求の範囲】
【請求項1】
情報処理装置を、
複数のオブジェクトを仮想空間内で移動させるオブジェクト制御部と、
前記複数のオブジェクトの接触を判定する接触判定部と、
所定の条件が成立した場合、前記接触判定部が接触を判定した前記複数のオブジェクトの密集度を変更する制御を行う密集制御部、
として機能させるゲームプログラム。
【請求項2】
前記密集制御部は、前記所定の条件が成立した場合、前記複数のオブジェクトの少なくとも1つに密集抑制制御を行う請求項1に記載のゲームプログラム。
【請求項3】
前記複数のオブジェクトには、他のオブジェクトと接触した場合にどちらのオブジェクトの位置が優先されるかの決定に使用される優先度が設定されており、
前記所定の条件は、接触した第1のオブジェクトと第2のオブジェクトの前記優先度が同じ、かつ、予め定められている基準点と前記第1のオブジェクトの第1の距離と前記基準点と前記第2のオブジェクトとの第2の距離が異なる場合である請求項2に記載のゲームプログラム。
【請求項4】
前記所定の条件が成立する場合、前記密集制御部は、前記密集抑制制御として、前記基準点との距離が近い方のオブジェクトの位置を、前記基準点との距離が遠い方のオブジェクトより優先して決定する請求項3に記載のゲームプログラム。
【請求項5】
前記所定の条件が成立する場合、前記密集制御部は、前記密集抑制制御として、前記基準点との距離が遠い方のオブジェクトを前記基準点に対し更に遠くなるように移動させる請求項3又は4に記載のゲームプログラム。
【請求項6】
前記基準点が2つある場合、前記密集制御部は、前記密集抑制制御として、2つの前記基準点を結ぶ線分との距離が近い方のオブジェクトの位置を、前記線分との距離が遠い方のオブジェクトより優先して決定する請求項3~5のいずれか1項に記載のゲームプログラム。
【請求項7】
前記基準点は、プレイヤーが操作するプレイヤーキャラクターの位置である請求項3~6のいずれか1項に記載のゲームプログラム。
【請求項8】
前記オブジェクト制御部は、オブジェクトの仮の移動先を決定し、
前記密集制御部は、前記オブジェクトが仮の移動先に移動した場合における前記オブジェクトを含む複数のエリアでオブジェクトの密集度を算出し、
前記所定の条件として、前記密集度が閾値以上のエリアがN個以上の場合、
前記密集制御部は、前記密集抑制制御として、前記オブジェクトの仮の移動先への移動を制限する請求項2に記載のゲームプログラム。
【請求項9】
前記オブジェクト制御部は、オブジェクトの仮の移動先を決定し、
前記所定の条件として、前記仮の移動先に別のオブジェクトが存在する場合、
前記密集制御部は、前記密集抑制制御として、前記オブジェクトの仮の移動先への移動を制限する請求項2に記載のゲームプログラム。
【請求項10】
ゲームプログラムを実行する情報処理装置を、
複数のオブジェクトを仮想空間内で移動させるオブジェクト制御部と、
前記複数のオブジェクトの接触を判定する接触判定部と、
所定の条件が成立した場合、前記接触判定部が接触を判定した前記複数のオブジェクトの密集度を変更する制御を行う密集制御部と、
を有する情報処理装置。
【請求項11】
オブジェクト制御部が、複数のオブジェクトを仮想空間内で移動させるステップと、
接触判定部が、前記複数のオブジェクトの接触を判定するステップと、
密集制御部が、所定の条件が成立した場合、前記接触判定部が接触を判定した前記複数のオブジェクトの密集度を変更する制御を行うステップと、
を有するゲームプログラムのオブジェクト制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラム、情報処理装置、及び、オブジェクト制御方法に関する。
【背景技術】
【0002】
アクションゲームやシミュレーションゲームなど、多数のキャラクターが密集するゲームが知られている。例えば、アクションゲームではプレイヤーキャラクターを攻撃しようとする敵キャラクターが、プレイヤーキャラクターの周囲に密集する場合がある。
【0003】
密集した敵キャラクターの動きを制御する技術が考案されている(例えば特許文献1参照。)。特許文献1には、密集した敵キャラクターの動きをより自然な態様で表示する画像処理方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-118687号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の技術では、各キャラクターが密集することにより、キャラクターの挙動に不具合が生じる場合があるという問題があった。例えば、多数の敵キャラクターがプレイヤーキャラクターに接近しようとする場合があるが、敵キャラクターは移動先に別の敵キャラクターがいても進もうとする。このようにしてキャラクターが密集すると、キャラクター同士の押し合いが発生し、意図したようにキャラクターが動けず、不具合が生じるため、ゲームの興趣性が低下する要因となる。
【0006】
本発明は、上記課題に鑑み、キャラクターが密集することにより生じる興趣性の低下を抑制するゲームプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題に鑑み、本発明は、情報処理装置を、複数のオブジェクトを仮想空間内で移動させるオブジェクト制御部と、前記複数のオブジェクトの接触を判定する接触判定部と、所定の条件が成立した場合、前記接触判定部が接触を判定した前記複数のオブジェクトの密集度を変更する制御を行う密集制御部、として機能させるゲームプログラムを提供する。
【発明の効果】
【0008】
キャラクターが密集すること又はしないことにより生じる興趣性の低下を抑制することができる。
【図面の簡単な説明】
【0009】
図1】高速振動が生じる原因の1つを説明する図である。
図2A】敵キャラクターが密集した場合の不具合(高速振動)の抑制方法を説明する図である。
図2B】敵キャラクターが密集した場合の不具合(高速振動)の抑制方法を説明する図である。
図3】ゲームシステムの構成例を示す図である。
図4】情報処理装置のハードウェア構成図の一例である。
図5】情報処理装置の機能をブロック状に分けて説明する機能ブロック図の一例である。
図6】キャラクターデータ記憶部に記憶されたキャラクターデータの一例を示す図である。
図7】敵キャラクターが密集した状態の一例を示す図である。
図8】コリジョン優先度が同じキャラクターが接触した場合において、プレイヤーキャラクターからの距離を使った位置の優先度の決定方法を説明する図である。
図9】マルチプレイの場合の距離に応じた位置の優先度の決定方法を説明する図である。
図10】プレイヤーキャラクターと敵キャラクターの距離の算出方法を説明する図である。
図11】情報処理装置が敵キャラクターの位置を決定する手順を示すフローチャート図の一例である。
図12】敵キャラクターの密集度の計算方法を説明する図である。
図13】敵キャラクターの密集度に基づいて、密集制御部が敵キャラクターの密集を生じさせない手順を示すフローチャート図の一例である。
図14】敵キャラクターの移動先に別の敵キャラクターが存在するかどうかの判定方法を説明する図である。
図15】レイキャストによる敵キャラクターとの衝突判定に基づいて、密集制御部が敵キャラクターの密集を生じさせない手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【0010】
以下、本開示のゲームプログラムを実施するための形態、及び、ゲームプログラムが行うオブジェクト制御方法について図面を参照して説明する。なお、本明細書及び図面において、実質的に同一の構成については、同一の符号を付することにより重複した説明を省く。
【実施例0011】
<意図しない敵キャラクターの動きの一例>
まず、意図しない敵キャラクターの動きの一例を説明する。敵キャラクターが密集することで、敵キャラクターが高速振動する現象が発生する場合があった。高速振動とは、敵キャラクターの全体又は一部が押し合うという同じ動作を繰り返すことで、一個の敵キャラクター(又は敵キャラクターの一部)が複数に見えるような現象である。この現象が発生する原因として以下が考えられる。
1.移動先に別の敵キャラクターがいても進もうとする
2.密集がならされるのに時間がかかる。密集がならされるとは、密集することにより生じている敵キャラクター同士の接触が解消されることをいう。敵キャラクターが密集することにより以下で説明するような現象が発生する。
【0012】
キャラクター同士が接触した(重なった)場合、接触を解消するために敵キャラクター同士の押し出しが起こるが、従来技術では前後両方向からの押し出しが繰り返し起こるため、全ての押し出しが完了して全ての重なりが解消されるまでには時間がかかる。また、前後からの細かい押し出しの繰り返しにより微妙な位置の変更が続くため、振動するように見える。この位置調整はプレイヤーに見せるべきものでないが、密集がならされるのに時間かかると視認されやすくなる。
【0013】
図1を参照して1番目の原因について補足する。図1は、高速振動が生じる原因の1つを説明する図である。図1(a)の敵キャラクターA~Cはコリジョン優先度が同じである。コリジョン優先度は、キャラクター同士の接触が発生した場合に、どちらの位置が優先されるかをゲームシステムが決定するための値である。敵キャラクターAの右側(向かって左)にはプレイヤーキャラクターが存在し、敵キャラクターA~Cはプレイヤーキャラクターを目標に移動してくる。
【0014】
まず、図1(b)に示すように、敵キャラクターBが敵キャラクターAの方へ移動した。このため、敵キャラクターBと敵キャラクターAとの接触が発生する。敵キャラクターAとBはコリジョン優先度が同じなので、敵キャラクターAと敵キャラクターBがそれぞれコリジョンが重なった分の1/2ずつ双方に押し出される。敵キャラクターBが敵キャラクターCの方に押し出され、かつ、敵キャラクターCも敵キャラクターBに迫ってくるため、敵キャラクターBと敵キャラクターCが接触する。敵キャラクターBとCのコリジョンが重なってしまうため、重なり分をお互いに押し出して重なりを解消しようとする。
【0015】
このように敵キャラクターA、Cに挟まれている敵キャラクターBは、密集をならすことができず、敵キャラクターAとCの間を接触の都度、移動することになり、プレイヤーには高速振動しているように見える場合がある(図1(c))。なお、図1の説明は、現象を単純化して説明したものであり、実際にはより多くの敵キャラクターが密集して存在し、互いに干渉するので、任意の敵キャラクターで高速振動するおそれがある。
【0016】
<本実施形態の概略>
そこで、本実施例では、コリジョン優先度が同じ敵キャラクターが接触した場合、プレイヤーキャラクター(以下、PCという)と敵キャラクターとの距離に応じて、接触した敵キャラクターの優劣を決定する。位置の優先度が劣った敵キャラクターはPCから遠ざかるので、敵キャラクターが次々と接触するような密集状態が解消されやすくなり、意図しない敵キャラクターの動きを抑制できる。
【0017】
図2A図2Bは、敵キャラクターが密集した場合の不具合(例えば高速振動)を低減する密集抑制制御を説明する図である。図2A(a)に示すように、PC4の左側(向かって右)に敵キャラクターA~Cが密集している。実際にはPC4の周囲360°に敵キャラクターが存在しうるが、図2A図2Bでは簡略化されている。
【0018】
(i) PC4の近くで敵キャラクターA~CがAI等の指示で移動する。例えば、敵キャラクターBが敵キャラクターAの方向に移動した。
【0019】
(ii) 図2A(b)に示すように、敵キャラクターAとBが接触する。敵キャラクターA~Cのコリジョン優先度は同じなので優劣が付かない。
【0020】
(iii) この場合、本実施形態では、PC4と敵キャラクターとの距離により、敵キャラクターの優劣を判定する。すなわち、距離が小さい方が位置の優先度が優ると判定される。図2A(a)に示すように、「敵キャラクターAとPC4との距離L1(第1の距離の一例) < 敵キャラクターBとPC4との距離L2(第2の距離の一例)」、である。このため、位置の優先度に関して敵キャラクターAが優り、敵キャラクターBはコリジョンが重なった分だけ押し出される。
【0021】
(iv) 次に、敵キャラクターB(第1のオブジェクトの一例)が、上記(iii)で押し出され、敵キャラクターC(第2のオブジェクトの一例)も敵キャラクターBに接近する。
【0022】
(v) 図2B(a)に示すように、敵キャラクターBとCが接触する。敵キャラクターA~Cのコリジョン優先度は同じなので優劣が付かない。
【0023】
(vi) この場合、「敵キャラクターBとPC4との距離L2 < 敵キャラクターCとPC4との距離L3」、である。ゲームシステムは、位置の優先度として敵キャラクターBが優ると判定し、敵キャラクターCが敵キャラクターBとコリジョンが重なった分だけPC4から遠ざかる方向に押し出される(図2B(b))。
【0024】
例えば、敵キャラクターAが敵キャラクターBの方向に移動することで敵キャラクターBと接触した場合も同様で、PC4から遠方の敵キャラクターBがPC4から遠ざかる。この場合、敵キャラクターCもPC4から離れる方向に移動する。
【0025】
このように、PC4からの距離が遠い敵キャラクターは、距離が近い敵キャラクターと接触する方向へは移動できないが、PC4からの距離が近い敵キャラクターは、距離が遠い敵キャラクターと接触する方向へは移動できる。この結果、衝突を繰り返すうちに、敵キャラクターがPC4から遠ざかるように移動するので、密集がならされるようになる。また、コリジョン優先度が同じ敵キャラクターが接触を繰り返すことで生じやすい意図しない動き(例えば高速振動)を抑制できる。高速振動は敵キャラクターが前後両方向に存在するコリジョン優先度が同一の敵キャラクターから繰り返し押し出されることに原因がある。そのため、本技術により位置に応じて優先度に差をつけることで、押し出しを一方向からのみにすることができ、高速振動を抑制できる。また、押し出しの繰り返しを防ぐことにより、短時間(少ないフレーム数)で全ての敵キャラクターを適切な位置に配置することができる。
【0026】
<用語について>
オブジェクトとは対象という意味であるが、本実施形態では主に仮想空間(例えば仮想的な三次元空間)に存在する人や物をまとめてオブジェクトという。例えば、PC、敵キャラクター、岩、建物等、およそ仮想空間に登場するものはオブジェクトである。
【0027】
密集とは、隙間もないほどオブジェクトが集合することをいう。密集抑制制御は密集を抑制することをいうが、密集が生じた後に密集をならすことも、密集が生じないように制御することも含まれる。
【0028】
密集度とは、密集の程度であり、数値化してもよいし、数値化されなくてもよい。例えばPC4の半径x[m]以内に所定以上のキャラクターが存在するなどで数値化される。密集度の制御は、プレイヤーが見た印象で密集の程度が変更される場合を含む。
【0029】
<ゲームシステム>
まず、図3を参照して、ゲームシステムの構成例を説明する。図3は、本実施形態のゲームシステム1の構成を示す図である。ゲームシステム1は、情報処理装置3と、ゲームコントローラ5と、表示装置7とを有する。ゲームコントローラ5及び表示装置7の各々は、情報処理装置3と有線又は無線により通信可能に接続されている。
【0030】
情報処理装置3は、例えば据え置き型のゲーム専用機である。但し、これに限定されるものではなく、情報処理装置3は、例えば入力部や表示部等を一体に備えた携帯型のゲーム機でもよい。
【0031】
また、情報処理装置3はゲーム専用機でなくてよく、例えば、コンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているものや、スマートフォン、携帯電話、ファブレット等のように、電話機として製造、販売等されているものでもよい。これらの装置は、普段は汎用的な情報処理端末として利用されるが、プレイヤーがインストールされたゲームプログラムを実行すると、ゲーム専用機と同様、プレイヤーがゲームを進行できるようになる。
【0032】
情報処理装置3には、本実施形態のゲームプログラムがインストールされる。ゲームプログラムはCD-ROMなどの光記憶媒体やUSBメモリなどの半導体メモリに記憶された状態で配布されたり、サーバーからダウンロードされたりする形態で配布される。
【0033】
プレイヤーは、ゲームコントローラ5を用いて各種の操作入力を行う。図3に示す例では、ゲームコントローラ5は例えば十字キー9、及び複数のボタン8等を有する。なお、ゲームコントローラ5は上記に代えて又は加えて、例えばジョイスティックやタッチパッド等を有してもよい。また、ゲームコントローラ5がマイクを備え、音声操作が可能でもよい。ゲームコントローラ5がジャイロセンサや加速度センサ等を備え、プレイヤーがゲームコントローラ5の姿勢を変えることで操作が可能でもよい。
【0034】
また、情報処理装置3が更にネットワーク上のサーバーと通信してもよい。この場合、同じゲームプログラムを実行する複数の情報処理装置3がサーバーに接続するので、いわゆるオンラインゲームが可能になる。オンラインゲームとは、例えば、多人数で同じゲームプログラムを協調して操作できるゲームをいう。オンラインゲームのサーバーは、他のプレイヤーの位置や操作コマンドを受け付け、他のプレイヤーの情報処理装置3に送信するという最低限の処理を行う。情報処理装置3では各プレイヤーの描画や操作コマンドの反映処理など実際のゲーム処理を行う。
【0035】
また、ゲームシステム1は、情報処理装置3が別の情報処理装置3と通信するいわゆるP2P(Peer To Peer)方式でもよい。
【0036】
また、ゲームシステム1はいわゆるクラウドゲームでもよい。以下では、主に図3の構成を用いて本実施形態のゲームシステム1について説明する。
【0037】
<情報処理装置のハードウェア構成例>
図4は、情報処理装置3のハードウェア構成図の一例である。図4に示すように、情報処理装置3は、例えば、CPU501と、ROM502と、RAM503と、GPU504と、例えばASIC又はFPGA等の特定の用途向けに構築された専用集積回路505と、入力装置506と、出力装置507と、記録装置508と、ドライブ509と、接続ポート510と、通信装置511を有する。これらの構成は、バス513や入出力インターフェース514等を介し相互に信号を伝達可能に接続されている。
【0038】
ゲームプログラムは、例えば、ROM502やRAM503、記録装置508等に記録しておくことができる。
【0039】
また、ゲームプログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD、MOディスク、DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体512に、一時的又は永続的(非一時的)に記録しておくこともできる。このような記録媒体512は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体512に記録されたゲームプログラムは、ドライブ509により読み出されて、入出力インターフェース514やバス513等を介し上記記録装置508に記録されてもよい。
【0040】
CPU501は、例えば、上記記録装置508からゲームプログラムを、直接読み出して実行してもよく、RAM503に一旦ロードした上で実行してもよい。更にCPU501は、例えば、ゲームプログラムを通信装置511やドライブ509、接続ポート510を介し受信する場合、受信したゲームプログラムを記録装置508に記録せずに直接実行してもよい。
【0041】
また、CPU501は、必要に応じて、前述のゲームコントローラ5を含む、例えばマウス、キーボード、マイク等(図示せず)の入力装置506から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0042】
GPU504は、CPU501からの指示に応じて例えばレンダリング処理などの画像表示のための処理を行う。
【0043】
そして、CPU501及びGPU504は、上記の処理を実行した結果を、例えば前述の表示装置7や音声出力部を含む、出力装置507から出力する。CPU501及びGPU504は、必要に応じてこの処理結果を通信装置511や接続ポート510を介し送信してもよく、上記記録装置508や記録媒体512に記録させてもよい。
【0044】
なお、サーバー又は汎用的な情報処理装置のハードウェア構成は、情報処理装置3と同様か、又は、異なっても本実施形態の説明の都合上、支障がないものとする。
【0045】
<機能について>
図5は、情報処理装置3の機能をブロック状に分けて説明する機能ブロック図の一例である。図5に示すように、情報処理装置3は、オブジェクト制御部31、接触判定部32、優先度判定部33、密集制御部34、操作受付部35、画像データ生成部36、及び、表示制御部37、を有している。情報処理装置3が有するこれら各機能部は、図4に示したCPU501が、RAM503に展開されたゲームプログラムを実行することで実現される機能又は手段である。
【0046】
オブジェクト制御部31は、PC4を除くキャラクターの位置や挙動を制御する。例えば、敵キャラクターの位置は、キャラクターに応じて決められた範囲においてキャラクターの性質(適、味方、役割など)に応じた位置がフレームごとに更新される。また、キャラクターの位置は、ナビゲーションメッシュと呼ばれるメッシュ上をキャラクターの性質に応じて移動するように決定される。また、挙動は、例えば、攻撃する、話しかける、又は単に移動するなどであり、これもキャラクターの性質に応じてオブジェクト制御部31が決定する。このようなキャラクターの属性はキャラクターデータ記憶部39に記憶されている。
【0047】
図6は、キャラクターデータ記憶部39に記憶されたキャラクターデータの一例である。キャラクターが有する属性は様々であり、図6にはその一部を示す。キャラクターデータ記憶部39は、キャラクターを識別するためのオブジェクトIDに対応付けて、移動ルール、コリジョン優先度、及び、武器の項目を有している。
【0048】
・オブジェクトIDは、キャラクターの識別情報である。図6のキャラクターは、仮想空間に多く存在する攻撃力や防御力が弱いキャラクターである。ゲームでは雑魚キャラと呼ばれる。
【0049】
・移動ルールは、キャラクターが仮想空間をどのように移動するかを定義する。例えば、移動ルールは、予め定められている範囲をパトロールしながら、PC4が所定の範囲に入るとチェイサー(PC4を追いかける)に変わり、更に一定距離内に近づくと制御された確率等にしたがってPC4をアタック(攻撃)する等である。移動ルールは、キャラクターの種類によって様々である。
【0050】
・コリジョン優先度は、2つのキャラクターが接触した場合に、どちらのキャラクターの位置が優先されるかを値(例えば数値)で示す。数値(1~5)が高いほどコリジョン優先度が高い。また、数値が5段階なのは一例である。キャラクターの種類が異なればコリジョン優先度が異なってもよいし、キャラクターの種類が異なるがコリジョン優先度が同じキャラクターが存在してもよい。コリジョン優先度が異なるキャラクターが接触した場合、コリジョン優先度の高い方の位置が優先的に決定される。コリジョン優先度の高いキャラクターが移動しようとしたのであれば、コリジョン優先度が高いキャラクターが移動できる(コリジョン優先度が低いキャラクターはコリジョンが重なった分だけ押し出される)。コリジョン優先度の低いキャラクターが移動しようとしたのであれば、コリジョン優先度の低いキャラクターはコリジョンが重なった分だけ押し出される。コリジョン優先度が同じキャラクターが移動しようとして接触した場合も、移動しようとしたキャラクターはコリジョンが重なった分だけ押し出される。
【0051】
・武器は、キャラクターが攻撃に使用できる武器である。武器は攻撃力などが決まっている。
【0052】
図5に戻って説明する。接触判定部32は、オブジェクト同士の接触の有無を判定する。接触が判定されるオブジェクト同士には、PC4と他のキャラクター、PC4と地面に固定された地物(壁、岩、建物、植木など)、移動可能な物(家具、家電、ドアなど)、銃弾や魔法力などの飛翔体とPC4(又は敵キャラクター)、仮想カメラと地物又は移動可能な物、など様々である。PC4から所定範囲(PC4に影響しないほど遠いキャラクターはそもそも停止している)にあるオブジェクトは他のオブジェクトとの接触判定が行われる場合がある。本実施形態では、主に、敵キャラクターと敵キャラクターの接触判定が行われる。
【0053】
接触判定部32による接触の判定結果(どのキャラクターとどのキャラクターが接触したか)は優先度判定部33に通知される。優先度判定部33は、キャラクターデータ記憶部のコリジョン優先度の大小を判定する。接触した2つのキャラクターのコリジョン優先度が異なる場合、オブジェクト制御部31が、コリジョン優先度が高い方の位置を優先して決定する。
【0054】
接触した2つのキャラクターのコリジョン優先度が同じ場合、密集制御部34が、密集度に関する制御を行う。密集度に関する制御とは、密集を抑制する密集抑制制御又は密集を促進する密集促進制御をいう。本実施形態では、主に密集抑制制御について説明されるが、密集促進制御は、距離が近いオブジェクトと遠いオブジェクトのどちらを優先するかを切り替えれば実現できる。
【0055】
密集制御部34は、PC4から、接触した2つの敵キャラクターまでの距離をそれぞれ算出し、距離が近いキャラクターの位置の優先度が優ったと判定する。オブジェクト制御部31は、位置の優先度が優ったキャラクターの位置を優先して決定する。
【0056】
操作受付部35は、ゲームコントローラ5に対するプレイヤーからの操作を受け付ける。操作受付部35は、ゲームプログラム内で可能な操作であれば受け付けられるが、本実施形態では、主にPC4の移動や攻撃操作等を受け付ける。
【0057】
画像データ生成部36は、仮想空間に配置された仮想カメラを視点とした仮想空間のオブジェクトを画像データに変換する。仮想空間に配置された仮想カメラにオブジェクトが投影された画像が得られる。オブジェクトは三次元の立体物である。コンピュータグラフィックでは、三次元のオブジェクトはポリゴン(又は三次元点の集まり)で構成される。ポリゴンとは、3点以上の頂点を結んでできた多角形データであり、曲面を構成する最小単位である。
【0058】
表示制御部37は、画像データ生成部36が生成した画像データを表示装置7に表示する。
【0059】
<密集状態の一例>
図7は、敵キャラクターが密集した状態の一例を示す図である。図7では、PC4の周囲に多くの敵キャラクター1001が存在する。各敵キャラクター1001はオブジェクト制御部31が移動させるので、敵キャラクター同士で接触が発生する場合がある。
【0060】
<PCからの距離を使った位置の優先度の決定>
図8は、コリジョン優先度が同じキャラクターが接触した場合において、PC4からの距離を使った位置の優先度の決定方法を説明する図である。図8は、XZ平面(仮想空間の上面図)である。図8では、AがPC4を表し、その他のアルファベットが敵キャラクターを表す。図8の敵キャラクターのコリジョン優先度は同じであり、PC4のコリジョン優先度よりも低い。
【0061】
図8ではPC4からの距離が、等距離を表す円201で示されている。このように、XZ平面において、PC4と敵キャラクターの距離は、方向に関係なく算出される。位置の優先度は図8の距離Lが短い敵キャラクターほど高い。例えば、敵キャラクターCが矢印202の方向に移動しようとしたため、敵キャラクターCが敵キャラクターH,Gと接触する。
【0062】
敵キャラクターCとHでは敵キャラクターHの方が、距離Lが長いので、位置の優先度が低い。同様に、敵キャラクターCとGでは敵キャラクターGの方が、距離Lが長いので、位置の優先度が低い。これらのため、敵キャラクターCは矢印202の方向に移動できる。
【0063】
逆に、敵キャラクターH又はGがPC4に近づこうとして敵キャラクターCと接触した場合、敵キャラクターH又はGは、敵キャラクターCよりも位置の優先度が低いのでPC4に近づけない。したがって、コリジョン優先度が同じ敵キャラクターは、PC4からの距離Lが大きい敵キャラクターほど、PC4から離れる方向に移動する傾向を生じる。この結果、密集がならされやすくなる。
【0064】
次に、図9を参照して、プレイヤーが二人いるマルチプレイの場合を説明する。図9は、マルチプレイの場合の距離に応じた位置の優先度の決定方法を説明する図である。マルチプレイの場合、密集制御部34は各PC4を結ぶ線分203から敵キャラクターまでの距離L4,L5で、敵キャラクター同士が接触した場合の各敵キャラクターの位置の優先度を判定する。
【0065】
例えば、敵キャラクターC、H、Gと線分203との距離は、敵キャラクターC,H、Gから線分203に下ろした垂線204、205、206の長さである。垂線204の長さ<垂線205の長さ、垂線204の長さ<垂線206の長さ、の関係がある。したがって、敵キャラクターCとHが接触した場合、及び、敵キャラクターCとGが接触した場合、密集制御部34は、図8と同様に位置の優先度を判定できる。
【0066】
また、敵キャラクターIのように線分203に垂線を引けない場合は、敵キャラクターIと二人のPC4との距離のうち、短い方が敵キャラクターIと線分203との距離である。線分203に垂線を引けるどうかは、例えば、線分203と、PC4と敵キャラクターIとの結ぶ直線をそれぞれベクトルとみなし、内積が正(垂線を引ける)か負(垂線を引けない)により判定される。
【0067】
以上のように、マルチプレイの場合も、シングルプレイと同様の処理で敵キャラクターの密集をならしやすくなる。
【0068】
<PCと敵キャラクターの距離の算出>
図10は、PC4と敵キャラクターの距離の算出方法を説明する図である。図10(a)は、仮想空間のPC4と敵キャラクターの座標を用いて距離を算出する方法を説明する図である。PC4と敵キャラクターはワールド座標系で位置が管理された仮想空間に配置されている。PC4と敵キャラクターが平面を移動する場合、位置はXZ平面上の一点を示す(x、z)座標で特定できる。したがって、密集制御部34は、PC4と敵キャラクターの距離を2点間の距離として容易に算出できる。
【0069】
図10(b)はナビゲーションメッシュ上のPC4と敵キャラクターの位置を示す。ナビゲーションメッシュは、オブジェクトの位置を特定したり、オブジェクト制御部31が敵キャラクターを移動させる経路を決定したりするためなどに使用される。ナビゲーションメッシュは、PCが移動する仮想空間をデザインや座標範囲で区分けた場合の各区画(エリア)ごとに生成される。エリアは、例えば、草原エリア、建物エリア、町エリア、海エリア、砂漠エリアなど、ゲームによって様々である。ナビゲーションメッシュでは、オブジェクトの位置はメッシュの識別情報(i、j)で特定される。
【0070】
ナビゲーションメッシュの場合も同様に、(i、j)を座標とみなして、密集制御部34が、PC4と敵キャラクターの距離を2点間の距離として容易に算出できる。
【0071】
また、本実施形態では、PC4の位置を基準点として敵キャラクターとの距離を算出し、距離に基づいて位置の優先度に関する優劣を判定している。しかし、密集制御部34は、他の基準点からの敵キャラクターまでの距離に応じて優劣を決定してもよい。他の基準点として、ワールド座標系の原点、又は、ナビゲーションメッシュの原点などがある。
【0072】
しかし、ワールド座標系の原点などを基準点とすると、PC4の位置によっては、追いかけてくる敵キャラクターが別の敵キャラクターに足止めされるおそれがある(例えば、別の敵キャラクターが追いかけてくる敵キャラクターよりも原点に近い場合)。
【0073】
また、PC4の位置を基準点とすることで、以下のような利点がある。
・敵キャラクターが、「位置の優先度が高い別の敵キャラクター」と「ステージ等の地物(移動しない)」とに挟まれたとしても、高速振動する敵キャラクターを当該挟まれた敵キャラクターの1体のみにすることができる
・上記の状況で挟まれた敵キャラクターが高速振動したとしても、PC4から見ると、当該挟まれた敵キャラクターは少なくとも別の敵キャラクター1体以上を挟んだ向こう側に存在する(PC4に直近の敵キャラクターはPC4とコリジョン優先度が異なり、かつ後方の敵キャラクターには位置の優先度で勝るので高速振動しない)ためプレイヤーから視認されにくい
【0074】
更に、本実施形態では、PC4が基準点の場合を説明するが、敵キャラクターが基準点でもよい。例えば、敵キャラクターが密集した場合に、密集制御部34が密集した敵キャラクターの1つを基準点に設定すれば、任意の密集をならすことができる。
【0075】
<動作手順>
図11は、敵キャラクター同士の接触が生じた場合に、情報処理装置3が敵キャラクターの位置を決定する手順を示すフローチャート図の一例である。
【0076】
オブジェクト制御部31はフレームごとに各敵キャラクターの位置を更新する。接触判定部32は、更新後の位置に存在する2つの敵キャラクターのペアを取り出し、接触の有無を判定する(S1)。キャラクター同士の接触の判定方法は種々あるので、一例を説明する。キャラクター同士の接触の判定方法の一例を説明する。接触の判定方法の一例として、敵キャラクターの胴体を円柱、頭部を半球で囲み、この円柱又は半球が他の敵キャラクターの円柱又は半球と接触するかどうかを判定する方法がある。円柱同士が接触しているとは、2つの円柱の基準線(中心軸)の最短距離が円柱の半径の和より短い場合である。この円柱がコリジョンと呼ばれるものであり、円柱はコリジョンの形状の一例である。球同士が接触しているとは、2つの球の中心の距離が2つの球の半径の和より短い場合である。接触していない場合、図11の処理は終了し、別の2つの敵キャラクターのペアについて処理される。
【0077】
接触した場合(S2のYes)、優先度判定部33は2つの敵キャラクターのコリジョン優先度が同じか否かを判定する(S3)。コリジョン優先度が異なる場合、処理はステップS7に進む。
【0078】
コリジョン優先度が同じ場合、密集制御部34はPC4と各敵キャラクターとの距離を算出する(S4)。ステップS3でYes、S5でNoが成立することは所定の条件の一例である。
【0079】
距離が一致することは、非常にまれであると考えられるが、この場合、処理はステップS8に進む。
【0080】
距離が一致しない場合、オブジェクト制御部31は、距離が近い方の敵キャラクターが位置の優先度において優ったと判定し、距離が近い敵キャラクターの位置を優先して決定する(S6)。距離が遠い方の敵キャラクターは、コリジョンが重なった分だけ押し出される。
【0081】
なお、本実施形態では、距離が近い敵キャラクターの位置の優先度が、距離が遠い敵キャラクターの位置の優先度より常に優るが、確率的に、距離が近い敵キャラクターの位置の優先度が、距離が遠い敵キャラクターの位置の優先度より優るように制御してもよい。例えば、密集制御部34は、衝突の回数を数えておき、3回に2回など一定の頻度で、距離が近い敵キャラクターの位置の優先度が、距離が遠い敵キャラクターの位置の優先度より優ると判断する。
【0082】
コリジョン優先度が同じでない場合、オブジェクト制御部31はコリジョン優先度が高い敵キャラクターの位置を優先して決定する(S7)。例えばステージのボスなどはコリジョン優先度が高い。
【0083】
また、ステップS5で距離が一致した場合、コリジョン優先度も位置の優先度も引き分けであり、オブジェクト制御部31は、衝突を回避するため、任意の敵キャラクターの位置を優先して決定する(S8)。任意の敵キャラクターは、無作為に決定してもよいし、移動しようとした敵キャラクターでもよいし、又は、静止している敵キャラクターでもよい。
【0084】
なお、図11のステップS4、S5の処理は、接触した2つの敵キャラクターが密集状態である場合にだけ行われてもよい。密集状態とは、例えば、接触した2つの敵キャラクターを中心とするナビゲーションメッシュの所定範囲に、閾値以上の敵キャラクターが存在することをいう。
【0085】
<主な効果>
以上説明したように、本実施形態の情報処理装置は、PC4からの距離が遠い敵キャラクターは、距離が近い敵キャラクターと接触する方向へは移動できないが、PC4からの距離が近い敵キャラクターは、距離が遠い敵キャラクターと接触する方向へは移動できる。この結果、衝突を繰り返すうちに、敵キャラクターがPC4から遠ざかるように移動するので、密集がならされるようになる。また、コリジョン優先度が同じ敵キャラクターが接触を繰り返すことで生じやすい意図しない動き(例えば高速振動)を抑制できる。
【実施例0086】
本実施例では、密集が生じにくいように密集制御部34が敵キャラクターの移動を制限するゲームプログラムについて説明する。
【0087】
本実施例においては、上記の実施例にて説明した図4のハードウェア構成図、及び、図5に示した機能ブロック図を援用できるものとして説明する。
【0088】
<本実施例の密集抑制制御の一例>
密集を生じさせない方法として、以下の2つの方法を説明する。
1.密集制御部34が、敵キャラクターの密集度を計算し、密集度が閾値以上の場合、オブジェクト制御部31に敵キャラクターの移動を制限させる方法
2.密集制御部34が、オブジェクト制御部31が移動させようとしている敵キャラクターの移動先にレイキャストを照射し、別の敵キャラクターが存在する場合、オブジェクト制御部31に敵キャラクターの移動を制限させる方法
<<敵キャラクターの密集度に基づく敵キャラクターの移動制限>>
図12は、敵キャラクターの密集度の計算方法を説明する図である。図12では説明を簡単にするため、ナビゲーションメッシュの平面上に配置された敵キャラクターを模式的に示す。また、本実施例では、オブジェクト制御部31が実際に敵キャラクターを移動する前の仮の移動先に基づいて、敵キャラクターの密集度が算出され、密集度が閾値以上のエリアが生じにくいように敵キャラクターの位置が最適化されるものとする。
【0089】
オブジェクト制御部31は、敵キャラクターの一人ずつ、移動先の位置を密集制御部34に通知する。図12では、敵キャラクター270がメッシュ210に移動することが通知された。密集制御部34は、所定の大きさのエリア220を1マスずつスライドさせてそれぞれで敵キャラクターの密集度を算出する。エリア220を移動する範囲は、仮の移動先のメッシュ210を含む範囲のみでよい。このうち図12では3つのエリア220だけが示されている。
【0090】
そして、密集制御部34は、密集度が閾値以上のエリア220が存在するかどうかを判定する。密集度が閾値以上のエリアがN個以上の場合、移動の制限をオブジェクト制御部31に通知する。オブジェクト制御部31は敵キャラクターの仮の移動先を別の移動先に調整して、同様の処理を繰り返す。
【0091】
このような処理によれば、密集度が閾値以上のエリア220がN-1個まで許容できるので、例えばプレイヤーが大量の敵キャラクターと戦闘するゲームなど、ある程度は密集を生じさせたいゲームや場面(そのような場合にはNの値を大きく設定することができ)において、ゲームの世界観を損なわずに密集を抑制できる。
【0092】
図13は、敵キャラクターの密集度に基づいて、密集制御部34が敵キャラクターの密集を生じさせない手順を示すフローチャート図の一例である。
【0093】
オブジェクト制御部31は、1つの敵キャラクターを取り出し、実際に移動させる前に仮の移動先を決定する(S11)。敵キャラクターは1つずつに限らず、オブジェクト制御部31は複数の敵キャラクターの仮の移動先をまとめて決定してもよい。
【0094】
密集制御部34は、敵キャラクターが仮の移動先に移動した場合において、ナビゲーションメッシュのエリア220ごとの密集度を算出する(S12)。
【0095】
密集制御部34は、密集度が閾値以上のエリアがN個以上か否かを判定する(S13)。N個はナビゲーションメッシュの広さや求められるゲームの世界観などによって変わりうる。また、一定回数以上、敵キャラクターの移動先が決まらない場合は、密集制御部34が、N個を大きくしてもよい。敵キャラクターの位置が決まらない状態が継続することを抑制できる。ステップS13でYesが成立することは所定の条件の一例である。
【0096】
ステップS13の判定がYesの場合、密集制御部34は移動の制限をオブジェクト制御部31に通知し、違う移動先を要求する(S14)。
【0097】
なお、図13では、敵キャラクターを一人ずつ移動させた場合の密集度を算出しているが、同時に、PC4の近くの全ての敵キャラクターを移動させ、密集度を算出してもよい。敵キャラクターが移動可能な方向を8とすると、8の「敵キャラクターの数乗」の移動パターンがある。密集制御部34は全ての移動パターンで、密集度が閾値以上のエリアの数を数え、この数が最も少ない移動パターンで各敵キャラクターを移動させる。全ての移動パターンの数が多い場合は、移動方向を4つ等に限定してよい。
【0098】
<<レイキャストによる衝突判定に基づく敵キャラクターの移動制限>>
図14は、敵キャラクターの移動先に別の敵キャラクターが存在するかどうかの判定方法を説明する図である。オブジェクト制御部31は、敵キャラクターの一人ずつ、仮の移動先を密集制御部34に通知する。敵キャラクター250がメッシュ240に移動することが通知された場合、密集制御部34は、現在の位置から移動方向(メッシュ240)にレイキャストを照射する。メッシュ240には敵キャラクターが存在しないので、密集制御部34は移動可能をオブジェクト制御部31に通知する。
【0099】
敵キャラクター250がメッシュ230に移動することが通知された場合、密集制御部34は、現在の位置から移動方向(メッシュ230)にレイキャストを照射する。メッシュ230には敵キャラクター260が存在するので、敵キャラクター250と敵キャラクター260の衝突が予測される。密集制御部34は移動の制限をオブジェクト制御部31に通知する。オブジェクト制御部31は別の移動先に調整して、同様の処理を繰り返す。
【0100】
このような処理によれば、敵キャラクター同士の接触が生じないので、敵キャラクター同士の接触による、敵キャラクターの意図しない動きを抑制できる。
【0101】
なお、レイキャストによる別の敵キャラクターとの衝突の予測は、別の敵キャラクターの周囲に配置された円柱の軸とレイキャスト(直線)との最短距離が円柱の半径よりも短い場合であり、かつ、敵キャラクターの円柱の軸から別の敵キャラクターの円柱の軸までの距離が閾値内(例えば、敵キャラクターが移動する1メッシュの大きさ)である場合である。
【0102】
図15は、レイキャストによる敵キャラクターとの衝突判定に基づいて、密集制御部34が敵キャラクターの密集を生じさせない手順を示すフローチャート図の一例である。
【0103】
オブジェクト制御部31は、1つの敵キャラクターを取り出し、実際に移動させる前に仮の移動先を決定する(S21)。1つずつに限らず、オブジェクト制御部31は複数の敵キャラクターの仮の移動先をまとめて決定してもよい。
【0104】
密集制御部34は、敵キャラクターの移動方向にレイキャストを照射する(S22)。
【0105】
密集制御部34は、移動先に別の敵キャラクターがいるか否かを判定する(S23)。ステップS23でYesが成立することは、所定の条件の一例である。
【0106】
ステップS23の判定がYesの場合、密集制御部34は移動の制限をオブジェクト制御部31に通知し、違う移動先を要求する(S24)。一定回数以上、敵キャラクターの移動先が決まらない場合は、密集制御部34が、移動を制限したままにしてもよい。この場合、密集制御部34は、移動を制限した回数を敵キャラクターごとに記録し、この回数が閾値以上の敵キャラクターについては、移動先に別の敵キャラクターがいても移動を許可する。こうすることで、移動先の位置が決まらない状態が継続することを抑制し、更に、移動しない敵キャラクターが生じないようにできる。
【0107】
<主な効果>
以上説明したように、本実施形態の情報処理装置は、密集制御部34が敵キャラクターの移動を制限するので、密集が生じることを抑制できる。また、コリジョン優先度が同じ敵キャラクターが接触を繰り返すことで生じやすい意図しない動き(例えば高速振動)を抑制できる。なお、実施例1と2は適宜、組み合わせて適用できる。
【0108】
<その他の適用例等>
なお、本発明は、上記の実施形態に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。
【0109】
例えば、本実施形態では、主に2次元平面の敵キャラクターの密集を回避する方法を説明したが、三次元空間においても同様である。例えば、空中、水中、又は、地中で、PCが敵キャラクターに囲まれるような場合、PCからの三次元距離に応じて各敵キャラクターの位置の優先度を決定できる。
【0110】
また、本実施形態では、主に敵キャラクターの密集を例に説明したが、味方のキャラクターなどが密集する場合にも適用できる。本実施形態は、移動することで密集しうるオブジェクトに適用可能である。
【0111】
また、本実施形態では、主にアクションゲームを例に説明した。しかし、ゲームの種類には、この他にも、シューティングゲーム、シミュレーションゲーム、レーシングゲーム、アドベンチャーゲーム、ロールプレイングゲーム、及び、スポーツゲーム、並びに、これらの複数の要素を備えたゲームがあり、本実施形態は、ゲームのジャンルに関係なく適用できる。
【0112】
また、図5などの構成例は、情報処理装置3による処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。情報処理装置3の処理は、処理内容に応じて更に多くの処理単位に分割することもできる。また、1つの処理単位が更に多くの処理を含むように分割することもできる。
【0113】
また、本実施形態ではゲームプログラムが行うとした処理の一部又は全体を、ASIC(Application Specific Integrated Circuit)、DSP(digital signal processor)、FPGA(field programmable gate array)等のハード的な処理回路が行ってもよい。
【符号の説明】
【0114】
1 ゲームシステム
3 情報処理装置
5 ゲームコントローラ
7 表示装置
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15