(57)【要約】【課題】開発者の意図を反映させたゲーム空間を自動的に生成する。【解決手段】掘削部１１１が仮想ゲーム空間内の開始地点Ｘから別々の２方向に掘削分布パラメータに基いてダンジョンを拡張し、別々の２方向に拡張した領域からスタートＳとゴールＧをそれぞれ選択する。これにより、開始地点Ｘを必ず通るスタートＳとゴールＧまでの道のりを形成することが可能となる。また、掘削分布パラメータで拡張する方向を指定することで、ダンジョン全体の形状を大まかに指定するもことが可能となる。【選択図】図３
2015083121.tif 000002
【特許請求の範囲】
【請求項１】
仮想のゲーム空間内でゲームキャラクタが活動可能な範囲である活動空間を生成するゲームプログラムであって、
表示部、操作部及び記憶部を備えたコンピュータを、
各方向について前記活動空間を生成する割合を示すパラメータを前記記憶部に格納する蓄積手段、
前記蓄積手段から前記パラメータを読み取り、仮想のゲーム空間内の所定の開始地点から少なくとも異なる２方向に向けて前記パラメータに基いてランダムに前記活動空間を生成する活動空間生成手段、
少なくとも１つのスタートと１つのゴールを異なる方向に向けて生成された前記活動空間それぞれに設定する設定手段、
前記操作部からの入力に従って前記ゲームキャラクタを前記活動空間内で移動させる制御手段、
前記活動空間及び前記ゲームキャラクタを含むゲーム画面を描画して前記表示部に表示させる描画手段、
として機能させることを特徴とするゲームプログラム。
【請求項２】
前記活動空間生成手段は、前記開始地点からの距離が所定の最大長になる地点まで前記活動空間を生成したときは、当該地点から前記開始地点までの間の任意の地点を分岐地点として選択し、当該分岐地点から活動空間を生成することを特徴とする請求項１記載のゲームプログラム。
【請求項３】
前記活動空間生成手段は、所定の大きさのマップユニット単位で前記活動空間を生成するものであって、前記活動空間の中から任意の地点を選択し、当該地点から所定の方向に所定のマップユニットの数だけ前記活動空間を生成したときに前記活動空間の別の地点につながる場合は、前記地点から前記別の地点までの間に前記活動空間を生成することを特徴とする請求項１又は２記載のゲームプログラム。
【請求項４】
前記所定のマップユニットの数は３以上であることを特徴とする請求項３記載のゲームプログラム。
【請求項５】
前記活動空間生成手段は、平面方向に加えて高さ方向にも活動空間を拡張するものであって、
前記コンピュータを、さらに、
前記活動空間において生じた高さ方向の段差について、当該段差の高さが所定の高さ以下のときは当該段差を斜面あるいは階段状に加工し、当該段差の高さが所定の高さより高いときは当該段差に垂直昇降手段を設置する加工手段、
として機能させることを特徴とする請求項１乃至４のいずれかに記載のゲームプログラム。
【請求項６】
請求項１乃至５のいずれかに記載のゲームプログラムを記憶したプログラム記憶部と、
前記プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータと、
を備えたゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プレイヤキャラクタが活動するゲーム空間を自動的に生成する技術に関する。
【背景技術】
【０００２】
プレイヤキャラクタが探検するダンジョンなどのゲーム空間を自動的に生成するゲームが知られている。プレイする度に新たなダンジョンが生成されるので、プレイヤは毎回新鮮な気持ちでダンジョン内を探検することが可能となる。
【０００３】
ダンジョンを自動的に生成する方法としては、複数の部屋をランダムで生成するとともに、その部屋をつなぐ通路をランダムに生成する方法がある。階段がいずれかの部屋に配置されて、プレイヤキャラクタがその階段に到達すると次の階に進むことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３２７０９２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のマップの自動生成方法では、ダンジョンの構造が一本道でない場合は、プレイヤキャラクタが必ず通る地点を特定することは難しいという問題があった。
【０００６】
部屋の大きさ、大まかな配置はある程度制御することはできるが、自動生成されるマップに開発者の意図を反映させることは難しいという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであり、開発者の意図を反映させたゲーム空間を自動的に生成することを目的とする。
【課題を解決するための手段】
【０００８】
第１の本発明に係るゲームプログラムは、仮想のゲーム空間内でゲームキャラクタが活動可能な範囲である活動空間を生成するゲームプログラムであって、表示部、操作部及び記憶部を備えたコンピュータを、各方向について前記活動空間を生成する割合を示すパラメータを前記記憶部に格納する蓄積手段、前記蓄積手段から前記パラメータを読み取り、仮想のゲーム空間内の所定の開始地点から少なくとも異なる２方向に向けて所定のパラメータに基いてランダムに前記活動空間を生成する活動空間生成手段、少なくとも１組のスタートとゴールを異なる方向に向けて生成された前記活動空間それぞれに設定する設定手段、前記操作部からの入力に従って前記ゲームキャラクタを前記活動空間内で移動させる制御手段、前記活動空間及び前記ゲームキャラクタを含むゲーム画面を描画して前記表示部に表示させる描画手段、として機能させることを特徴とする。
【０００９】
上記ゲームプログラムにおいて、前記活動空間生成手段は、前記開始地点からの距離が所定の最大長になる地点まで前記活動空間を生成したときは、当該地点から前記開始地点までの間の任意の地点を分岐地点として選択し、当該分岐地点から活動空間を生成することを特徴とする。
【００１０】
上記ゲームプログラムにおいて、前記活動空間生成手段は、所定の大きさのマップユニット単位で前記活動空間を生成するものであって、前記活動空間の中から任意の地点を選択し、当該地点から所定の方向に所定のマップユニットの数だけ前記活動空間を生成したときに前記活動空間の別の地点につながる場合は、前記地点から前記別の地点までの間に前記活動空間を生成することを特徴とする。
【００１１】
上記ゲームプログラムにおいて、前記所定のマップユニットの数は３以上であることを特徴とする。
【００１２】
上記ゲームプログラムにおいて、前記活動空間生成手段は、平面方向に加えて高さ方向にも活動空間を拡張するものであって、前記コンピュータを、さらに、前記活動空間において生じた高さ方向の段差について、当該段差の高さが所定の高さ以下のときは当該段差を斜面あるいは階段状に加工し、当該段差の高さが所定の高さより高いときは当該段差に垂直昇降手段を設置する加工手段、として機能させることを特徴とする。
【００１３】
第２の本発明に係るゲーム装置は、上記ゲームプログラムを記憶したプログラム記憶部と、前記プログラム記憶部に記憶されたゲームプログラムを実行するコンピュータと、を備えた。
【発明の効果】
【００１４】
本発明によれば、仮想ゲーム空間内の開始地点から少なくとも２方向に向けて所定のパラメータに基いてランダムに活動空間を生成し、異なる方向に生成した活動空間それぞれにスタートとゴールを設定することで、スタートとゴールを結ぶ道のりに必ず開始地点を含む活動空間を生成することが可能で、さらに、パラメータで活動空間を生成する方向が決められるので、開発者の意図を反映させたゲーム空間を自動的に生成することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係るゲーム装置のハードウェア構成を説明する図である。
【図２】プレイヤキャラクタがダンジョンを探索しているゲーム画面の例を示す図である。
【図３】本実施の形態におけるゲームプログラムによって構成されるゲーム装置の構成を示す機能ブロック図である。
【図４】掘削部がダンジョンを生成する処理の流れを示すフローチャートである。
【図５】掘削器の初期配置を示すダンジョンの平面図である。
【図６】活動空間を広げる様子を示すダンジョンの平面図である。
【図７】開始地点から掘削器までの距離を示すダンジョンの平面図である。
【図８】掘削器を分岐場所まで戻したダンジョンの平面図である。
【図９】生成されたダンジョンの平面図である。
【図１０】ダンジョン内に生成した部屋を示すダンジョンの平面図である。
【図１１】環状の通路を形成する様子を示す平面図である。
【図１２】環状の通路を生成する処理の流れを示すフローチャートである。
【図１３】環状の通路ができるか否かを調べる様子を示す平面図である。
【図１４】ダンジョンを拡張する単位の直方体を示した斜視図である。
【図１５】ダンジョンを高さ方向に掘削した様子をＺ軸方向から見た断面図である。
【図１６】段差にハシゴを配置した様子を示す断面図である。
【図１７】段差に坂道を形成した様子を示す断面図である。
【図１８】段差に坂道を形成するときに用いる坂道パーツを示した斜視図である。
【図１９】２段分の段差を削って坂道を形成する様子を示す断面図である。
【図２０】通常の行き止まりと上部に空間を形成した行き止まりのゲーム画面の例を示す図である。
【図２１】上部に空間を形成した行き止まりの平面図と断面図である。
【図２２】崖を形成したＴ字路の平面図と断面図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について図面を用いて説明する。
【００１７】
（ゲームシステム）
図１を参照して、本発明の実施の形態に係るゲームプログラムを実行するゲームシステム１００を説明する。ゲームシステム１００は、ゲーム機（コンピュータ）１と、外部機器であるモニタ１３８、外部メモリ１４５、スピーカ１４４、および記録媒体１４８とを備える。
【００１８】
ゲーム機１は、コントローラ１２０、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３２、バス１３３、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３４、デコーダ１３７、Ｉ／Ｏポート１３９、ＤＲＶ（Ｄｒｉｖｅ）１４０、ＳＰ（Ｓｏｕｎｄ  Ｐｒｏｃｅｓｓｏｒ）１４２、増幅器１４３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１４６および通信制御部１４７を備える一般的なゲーム装置である。ＣＰＵ１３１は、全体の動作を制御する。ＲＡＭ１３２は、ゲームの進行に応じて各種のデータを記憶する。ＲＯＭ１４６は、ゲーム機１を起動するとともに、ゲーム機１の基本的な機能を実現するためのシステムプログラムを記憶する。ＧＰＵ１３４は、ＧＰ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ）１３６とＲＡＭ１３５を備えてゲーム空間及びゲーム空間内のオブジェクトを描画する。
【００１９】
本発明の実施の形態において、ゲームプログラムはゲーム機１で実行される場合について説明するが、これに限られない。ゲームプログラムは、ＣＰＵ、メモリなどを備えるコンピュータであればどのような装置で実行されても良い。
【００２０】
本発明の実施の形態に係るゲームプログラムは、記録媒体（プログラム記憶部）１４８に記録される。ゲーム機１が、ＤＲＶ１４０に挿入された記録媒体１４８からゲームプログラムを読み出して実行することにより、ＧＰＵ１３４が描画したゲーム空間の画像がデコーダ１３７を介してモニタ１３８に出力されるとともに、ＳＰ１４２で処理された効果音や音楽が増幅器１４３を介してスピーカ１４４に出力される。記録媒体１４８は、ＤＶＤ、ＣＤ、ハードディスクなどが考えられる。ゲーム機１が通信ネットワークに接続されている場合、記録媒体１４８は、通信ネットワーク上の記録媒体であっても良い。ゲーム機１が通信ネットワークに接続されている場合、通信制御部１４７が通信ネットワークとの通信を制御する。
【００２１】
コントローラ１２０は無線あるいは有線でゲーム機１に接続される。プレイヤが、コントローラ１２０の操作ボタンやスティックなどの操作子群１２２を操作すると、コントローラ１２０のＩ／Ｏポート１２１によりプレイヤの操作情報がゲーム機１に出力される。ＣＰＵ１３１は、Ｉ／Ｏポート１３９を介してプレイヤの操作情報を取得し、その操作情報に基づいて、プレイヤキャラクタ、ゲーム空間を制御する。プレイヤの操作情報は例えば、歩く、剣を構える、振り向く、アイテムを取得するなどの、プレイヤキャラクタの動作に関する指示や、メニューの操作などの、ゲームの進行に関する指示である。
【００２２】
なお、ゲームは、ゲームプログラムおよびゲーム機１で構成されるゲームシステム１００が、ユーザの操作に応じた処理を実行することで進行する。
【００２３】
（ゲーム内容）
次に、本実施の形態におけるゲームプログラムによって提供されるゲームについて説明する。
【００２４】
本ゲームは、プレイヤがプレイヤキャラクタを操作して３次元の仮想空間であるダンジョンあるいは建物内（以下まとめて「ダンジョン」とする）を探索するゲームである。図２に、プレイヤキャラクタがダンジョンを探索しているゲーム画面の例を示す。同図に示すゲーム画面には、プレイヤキャラクタ５０とダンジョン内に配置されたアイテム５１が示されている。プレイヤキャラクタ５０は、ダンジョン内を探索してアイテム５１などを取得し、ゴールを目指す。図示していないが、ダンジョン内にはプレイヤキャラクタを攻撃してくるモンスターキャラクタが配置される。モンスターキャラクタは、プレイヤキャラクタのダンジョン探索を妨害する。
【００２５】
ダンジョンは、プレイヤキャラクタがダンジョン内に入る度に自動的に生成される。ダンジョンは、平面的な広がりのみでなく、高さ方向にも移動可能な３次元的に広がる空間である。
【００２６】
（ゲーム装置）
次に、本実施の形態におけるゲームプログラムをゲーム機が実行することで構成されるゲーム装置について説明する。
【００２７】
図３は、本実施の形態におけるゲームプログラムによって構成されるゲーム装置の構成を示す機能ブロック図である。図３に示すゲーム装置は、ダンジョン生成部１１、ゲーム進行制御部１２、描画音声処理部１３、およびゲームデータ蓄積部１４を備える。
【００２８】
ダンジョン生成部１１は、掘削部１１１、整地部１１２、テクスチャ部１１３、ライティング部１１４、およびＮＰＣ配置部１１５を備え、プレイヤキャラクタが行動する仮想の３次元ゲーム空間を生成する。
【００２９】
掘削部１１１は、３次元空間内においてプレイヤキャラクタが移動可能な範囲である活動空間を生成する。活動空間は、例えば、地中を掘削して生成された迷路状のダンジョン、廊下や部屋で構成される建物内、建物や塀で囲まれた道路や広場で構成される街などである。
【００３０】
整地部１１２は、活動空間の中のプレイヤキャラクタが移動できない段差に対して、傾斜をつけて坂道にしたり、はしごのオブジェクトを設置して移動可能にする。
【００３１】
テクスチャ部１１３は、活動空間にテクスチャを貼る。
【００３２】
ライティング部１１４は、活動空間に光源を設定する。
【００３３】
ＮＰＣ配置部１１５は、活動空間にノンプレイヤキャラクタ（例えばモンスターキャラクタ）やアイテムなどのオブジェクトを配置する。
【００３４】
ゲーム進行制御部１２は、コントローラ１２０で入力されたプイレヤの操作に応じてプレイヤキャラクタを制御するとともに、予め設定された処理内容でノンプレイヤキャラクタを制御し、ゲームを進行させる。
【００３５】
描画音声処理部１３は、ゲーム空間、プレイヤキャラクタ、ノンプレイヤキャラクタなどをレンダリングして画像を生成し、画像をモニタ１３８に出力するとともに、ゲームの進行に合わせて効果音、ＢＧＭ、音声をスピーカ１４４に出力する。
【００３６】
ゲームデータ蓄積部１４は、ゲーム空間内に配置するオブジェクトのモデリングデータ、テクスチャデータ、効果音データ、ＢＧＭデータなどのゲームの進行に必要なデータを蓄積する。
【００３７】
（ダンジョンの生成）
次に、掘削部１１１が活動空間を生成する処理について説明する。以下では、地中を掘削してダンジョンを生成する例について説明する。
【００３８】
図４は、掘削部１１１が活動空間を生成する処理の流れを示すフローチャートである。図５から図８は、掘削部１１１が活動空間を広げる様子を示す平面図である。実際には、高さ方向（Ｙ軸方向）にも活動空間は掘削（拡張）されるが、ここでは簡単のために、ＸＺ平面のみに掘削する例で説明し、Ｙ軸方向の掘削については後述する。
【００３９】
まず、初期設定として、仮想の掘削器Ａ，Ｂが開始地点Ｘに隣接する２箇所に配置されて、掘削器Ａ，Ｂそれぞれにパラメータが設定される（ステップＳ１１）。図５に示す例では、掘削部１１１は、掘削器Ａを開始地点Ｘの−Ｘ側（左側）に配置し、掘削器Ｂを＋Ｘ側（右側）に配置した。掘削器Ａ，Ｂには表１に示すパラメータが設定された。
【００４０】
【表１】
2015083121.tif 000003
表１は、掘削器Ａ，Ｂのそれぞれが掘削する方向の割合を示す掘削分布パラメータである。掘削分布パラメータの数値が大きい方向は、より大きい割合で掘削器Ａ，Ｂが掘削する方向である。活動空間は、掘削器Ａ，Ｂが進んだ方向に拡張される。表１に示した掘削分布パラメータでは、掘削器Ａについては＋Ｘ方向に０が設定されているので＋Ｘ方向には掘削しない。掘削器Ｂについては−Ｘ方向に０が設定されているので−Ｘ方向には掘削しない。したがって、掘削器Ａは開始地点Ｘから左側に進み、掘削器Ｂは開始地点Ｘから右側に進む。掘削器Ａ，ＢのＺ方向に設定された値はＸ方向に設定された値に比べて小さいので、横長の活動空間が生成される。
【００４１】
掘削器Ａ，Ｂは、設定された掘削分布パラメータに基いてそれぞれ別々の方向にランダムに掘削し、活動空間を拡張する（ステップＳ１２）。図６（ａ）では掘削器Ａは−Ｘ方向に掘削し、掘削器Ｂは＋Ｚ方向に掘削した。続く図６（ｂ）では掘削器Ａは−Ｘ方向に掘削し、掘削器Ｂは＋Ｘ方向に掘削した。掘削器Ａ，Ｂは、ＸＺ方向については予め設定された１マップユニット単位で掘削する。本実施例では、プレイヤキャラクタの高さを１．７５ｍとして、ＸＺ平面の掘削単位である１マップユニットの大きさを５ｍ×５ｍの大きさとした。掘削器Ａ，Ｂそれぞれが掘削したダンジョンは開始地点Ｘ以外では互いに連結しないものとする。ダンジョンの設定によっては、掘削器Ａ，Ｂそれぞれが掘削したダンジョンを開始地点Ｘ以外で連結させてもよい。
【００４２】
掘削器Ａ，Ｂが１マップユニット掘削するごとに、生成されたダンジョンが所望の大きさになったか否かを判定する（ステップＳ１３）。初期設定で生成するダンジョンの大きさを決めておく（例えば３００マップユニット）。掘削器Ａ，Ｂが掘削したマップユニットの数が予め決められた値以上になった場合は、ダンジョンが所望の大きさになったと判定する。ダンジョンが所望の大きさになった場合は（ステップＳ１３のＹＥＳ）、掘削処理を終了する。
【００４３】
掘削器Ａ，Ｂが１マップユニット掘削するごとに、開始地点Ｘから掘削器Ａ，Ｂまでの距離が予め設定した最大値に達したか否かを判定する（ステップＳ１４）。開始地点Ｘから掘削器Ａ，Ｂまでの距離は、開始地点Ｘを０番目として、掘削器Ａ，Ｂまでのマップユニットの数をカウントして求める。図７の例では、掘削器Ａ，Ｂのいずれも１０マップユニット離れている。
【００４４】
開始地点Ｘから掘削器Ａ，Ｂまでの距離が最大値に達していない場合（ステップＳ１４のＮＯ）、ステップＳ１２に戻り、ダンジョンの掘削を続ける。
【００４５】
開始地点Ｘから掘削器Ａ，Ｂまでの距離が最大値に達した場合（ステップＳ１４のＹＥＳ）、掘削器Ａ，Ｂをいままで掘削したマップユニットに沿ってダンジョンの分岐場所まで戻す（ステップＳ１５）。例えば、最大値を１０マップユニットと設定していた場合、図７の例では、いずれの掘削器Ａ，Ｂも開始地点Ｘからの距離が最大値に達している。そこで、掘削器Ａ，Ｂをいままで掘削したマップユニットに沿って分岐場所まで戻す。図８の例では、掘削器Ａは開始地点Ｘから７番目のマップユニットまで戻され、掘削器Ｂは開始地点Ｘから６番目のマップユニットまで戻された。掘削器Ａ，Ｂを戻すマップユニット数を予め決めておいてもよいし、最初の曲がり角まで戻す、あるいは直線が続くところまで戻すなどの条件を決めてもよい。
【００４６】
分岐場所まで戻された掘削器Ａ，Ｂは、ステップＳ１２に戻り、分岐場所から新たに掘削を開始する。図８の矢印で示すように、掘削器Ａ，Ｂは分岐場所から新たに掘削を進める。そして、ステップＳ１２〜Ｓ１４の処理を繰り返し、所望の大きさのダンジョンを生成する。
【００４７】
図９に掘削が終わったダンジョンの平面図を示す。ダンジョンの掘削が終了すると、掘削器Ａ，Ｂが掘削した領域それぞれからスタートとゴールを配置するマップユニットを選択する。掘削器Ａが掘削した領域のマップユニットからスタートＳを選んだ場合は、掘削器Ｂが掘削した領域のマップユニットからゴールＧを選ぶ。掘削器Ｂが掘削した領域のマップユニットからスタートＳ’を選んだ場合は、掘削器Ａが掘削した領域のマップユニットからゴールＧ’を選ぶ。スタートとゴールのマップユニットは、掘削開始地点Ｘからそれぞれ所定の距離（例えば７マップユニット）以上離れたマップユニットから選ぶ。あるいはスタートとゴールを行き止まりのマップユニットの中から選んでもよい。これにより、スタートＳからゴールＧまでの道のりは、必ず開始地点Ｘを通り、所定の距離以上となる。開始地点Ｘに重要なＮＰＣやアイテムなどを配置することで、プレイヤキャラクタは重要なＮＰＣやアイテムに必ず接触することとなる。さらに、複数プレイヤが同一ダンジョンでプレイする場合、一方のプレイヤにスタートＳ、ゴールＧを設定し、他方のプレイヤにスタートＳ’、ゴールＧ’を設定することで、開始地点Ｘでプレイヤが互いにすれ違うことを期待できる。１つのゴールに対して複数のスタートを設定してもよいし、１つのスタートに対して複数のゴールを設定してもよい。
【００４８】
本ダンジョン生成方法では、掘削器Ａ，Ｂの初期配置および掘削分布パラメータを変更することで、ある程度の意図を反映したダンジョンを生成することが可能となる。例えば、上記の掘削分布パラメータの掘削器Ａの−Ｙ方向を０、掘削器Ｂの＋Ｙ方向を０にすることで、掘削器Ａは左上方向に掘削し、掘削器Ｂは右下方向に掘削する。その結果、左から右にかけて下に潜るダンジョンを生成することができる。別の例としては、掘削器Ａ，Ｂを開始地点Ｘの−Ｙ側（下側）と＋Ｙ側（上側）に配置し、掘削分布パラメータの−Ｙ方向、＋Ｙ方向の値を大きくすることで、高さ方向に広がる縦長のダンジョンを生成することができる。また、掘削器Ａ，Ｂそれぞれが掘削するダンジョンの大きさが異なってもよい。例えば、掘削器Ａが掘削するダンジョンの大きさと掘削器Ｂが掘削するダンジョンの大きさを２：１にする。さらに、開始地点Ｘから掘削器Ａ，Ｂまでの距離の最大値が異なってもよい。
【００４９】
上記では、２つの掘削器Ａ，Ｂにより別々の方向に同時に掘削した例を説明したが、２方向同時に掘削しなくても、開始地点Ｘから別々の方向に一方向ずつ順番に掘削してもよい。具体的には、開始地点Ｘの右側方向に所望のダンジョンの大きさの半分を掘削した後、開始地点Ｘの左側方向に残りの大きさを掘削する。また、開始地点Ｘからの掘削方向は２方向に限らず、３方向以上であってもよい。
【００５０】
（ダンジョン内の部屋）
次に、ダンジョン内の部屋の掘削について説明する。
【００５１】
ダンジョン内には通路よりも広い空間の部屋を作成する。図１０に、通路の途中に２×２マップユニットの部屋を掘削した例を示す。本実施例では、部屋を大きい通路として作成する。具体的には、図４のステップＳ１２の掘削する処理において、掘削する部屋の大きさを決め、通路の代わりに部屋を掘削した場合に所定の条件を満たすか否かを判定し、所定の条件を満たす場合は部屋（大きい通路）を掘削する。所定の条件には、ダンジョンの大きさ、ダンジョンの大きさに対する部屋の割合（例えば３０％）がある。掘削する部屋の大きさは、予め設定した部屋の最小サイズ（例えば２×２マップユニット）以上となるように決定する。
【００５２】
ここで、具体的な数値を例に、部屋の掘削について説明する。部屋の割合を３０％、掘削する部屋の大きさを２×２マップユニットとする。これまでに７マップユニット分の通路が掘削されていた場合、次の掘削で２×２マップユニットの部屋を掘削すると、ダンジョンの大きさは７＋２×２＝１１マップユニットとなり、部屋の割合は２×２÷１１＝０．３６となる。その結果、部屋の割合が設定値の３０％を超えるので、部屋を掘削せずに通路を掘削する。８マップユニット分の通路が掘削されていた場合は、ダンジョンの大きさは８＋２×２＝１２マップユニット、部屋の割合は２×２÷１２＝０．３となり、部屋の割合が設定値の３０％を満たすので、２×２マップユニットの部屋を掘削する。
【００５３】
（環状の通路）
次に、環状の通路の生成について説明する。
【００５４】
本実施例では、掘削部１１１が設定に従って意図的にダンジョン内に環状の通路を作成する。掘削部１１１は、所望の大きさのダンジョンを生成後、任意のマップユニットを環状の通路の開始地点とし、その開始地点からいずれかの方向に所定のマップユニット数を掘削したときに別のマップユニットにつながる場合、その箇所に環状の通路を形成する。
【００５５】
図１１に、環状の通路を形成する例を示す。図１１（ａ）は環状の通路の形成前、図１１（ｂ）は環状の通路の形成後を示す。図１１では、マップユニットＣを環状の通路の開始地点とし、マップユニットＣから右側に３マップユニット掘削して環状の通路を形成した。
【００５６】
続いて、環状の通路を生成する処理の流れについて説明する。図１２は、環状の通路を生成する処理の流れを示すフローチャートである。まず、掘削部１１１は、環状の通路の開始地点となるマップユニットを選択する（ステップＳ２１）。本実施例では、行き止まりのマップユニットを開始地点として選択する。曲がり角のマップユニットや直線途中のマップユニットを開始地点として選択してもよい。
【００５７】
掘削部１１１は、開始地点から掘削していない方向を１つ選び、その方向に所定のマップユニットの数だけ掘削した場合に環状の通路ができるか否かを判定する（ステップＳ２２）。所定のマップユニットの数は、初期値として設定される。掘削部１１１は、ステップＳ２２で選んだ方向で環状の通路ができない場合は別の方向を選択し、すべての方向で環状の通路ができない場合はステップＳ２１に戻り、別のマップユニットを環状の通路の開始地点として選択する（ステップＳ２３）。
【００５８】
例えば、図１３の平面図において、マップユニットＣを開始地点として選択したときは、３つの方向６１Ａ，６１Ｂ，６１Ｃについて順番に環状の通路ができるか否かを判定する。図１３の方向６１Ａでは、１マップユニット目で別のマップユニットＤにつながったので、環状の通路ができないと判定する。１マップユニット目で別のマップユニットにつながる場合は、環状の通路ではなくて部屋となる。図１３の方向６１Ｂでは、所定のマップユニットの数（３マップユニット）を掘削しても別のマップユニットにつながらないので、環状の通路ができないと判定する。図１３の方向６１Ｃでは、所定のマップユニットの数を掘削して別のマップユニットＥにつながるので、環状の通路ができると判定する。
【００５９】
選択したマップユニットで環状の通路ができる場合（ステップＳ２２のＹＥＳ）、掘削部１１１は、その方向へ掘削して活動空間を拡張し、環状の通路を生成する（ステップＳ２４）。
【００６０】
以上の処理により環状の通路が生成される。上記の処理を繰り返すことで、複数の地点に環状の通路を形成できる。生成する環状の通路の数は初期値として設定される。
【００６１】
（高さ方向の掘削）
次に、高さ方向（Ｙ軸方向）への掘削について説明する。
【００６２】
上記では、簡単のために、掘削部１１１がＸＺ平面方向に１マップユニット単位で活動空間を拡張して平面的なダンジョンを生成する例で説明した。プレイヤキャラクタが高さを持ち、３次元空間内で活動する場合、掘削部１１１は、図１４に示す直方体（幅（Ｘ方向）×奥行（Ｚ方向）×高さ（Ｙ方向）＝５ｍ×５ｍ×５．２５ｍ）を活動空間の拡張の単位とする。つまり、掘削器Ａ，ＢがＸＺ平面上を１マップユニット移動すると、図１４の直方体の大きさ分ダンジョンが掘削されて、活動空間が拡張される。
【００６３】
高さ方向（Ｙ軸方向）への拡張については、掘削部１１１は、Ｘ方向、Ｚ方向へ１マップユニット分活動空間を拡張する距離（５ｍ）よりも短い距離（１．７５ｍ）で活動空間を拡張する。つまり、掘削器Ａ，ＢがＹ方向へ掘削するときには、活動空間はＹ方向に直方体の３分の１の大きさだけ拡張される。図１５に、下方向に掘削したダンジョンの断面図を示す。同図に示すように、高さ方向については、掘削器Ａ，Ｂは直方体の３分の１の体積分を掘削する。
【００６４】
整地部１１２は、高さ方向に掘削してできた段差に対して、ハシゴをかける処理（図１６）、あるいは坂道にする処理（図１７）を施す。本実施例では、２段分（１．７５ｍ×２）以上の段差にはハシゴをかけ、１段分の段差は坂道とした。坂道の代わりに階段を設置してもよい。２段分以上の段差にはハシゴの代わりにロープやエレベータなどの昇降手段を設置してもよい。
【００６５】
段差を坂道とする場合、整地部１１２は、図１８（ａ），（ｂ）に示す坂道パーツを段差の箇所に設置する。図１８（ａ）の坂道パーツは、１段分の段差を埋める坂道パーツである。図１８（ｂ）の坂道パーツは、図１８（ａ）の両側（三角形の面）に隣接して設置可能な坂道パーツである。
【００６６】
段差が２段分以上であっても、通路が段差から２マップユニット以上真っ直ぐに続く場合、整地部１１２は、通路を削り、坂道を形成する。具体的には、２段分の段差があり、段差の上段に２マップユニットの通路がある場合（図１９（ａ））、整地部１１２は、斜線部の段差を削って１段ずつの段差とし（図１９（ｂ））、各段差に坂道パースを設置する（図１９（ｃ））。２段分以上の段差の下段に２マップユニット以上の通路が続く場合、整地部１１２は、段差を埋めて１段ずつの段差として、坂道パーツを設置してもよい。
【００６７】
段差を坂道に加工することにより、ダンジョン内のハシゴの数を減らすことができ、プレイヤキャラクタがスムースに移動することが可能となる。段差を坂道の代わりに階段に加工しても同様の効果が得られる。
【００６８】
（特徴のある通路）
次に、通路を特徴付ける処理について説明する。
【００６９】
行き止まりやＴ字路にプレイヤキャラクタの行動に影響しない空間を形成することで、ダンジョン内の通路に特徴が与えられて、プレイヤは地形を覚えやすくなる。
【００７０】
図２０（ａ）は、通常の行き止まりにプレイヤキャラクタがいるときのゲーム画面の例を示す。図２０（ｂ）は、上部に空間を形成した行き止まりにプレイヤキャラクタがいるときのゲーム画面の例を示す。掘削部１１１は直方体を単位として活動空間を拡張するので、いずれの行き止まりの形状も図２０（ａ）に示すように同じになる。本実施例では、図２０（ｂ）に示すように、整地部１１２が、行き止まりの上部に空間５２を形成して、行き止まりそれぞれを異なる形状にする。以下では、通路の上部に空間を形成する例と、通路の脇に崖を形成する例について説明する。
【００７１】
まず、通路の上部に空間を形成する例について説明する。
【００７２】
図２１（ａ）は、上部に空間を形成した行き止まりのＸＺ平面図を示す。図２１（ｂ）は、上部に空間を形成した行き止まりのＸＹ断面図を示す。空間の大きさは、３×３マップユニット（直方体を９つ分）の大きさとする。空間の位置は、３×３マップユニットのいずれかのマップユニットがマップユニットＨの上部の３分の１を含む位置とする。空間は、ＸＹ平面に関しては、マップユニットＨの床から直方体の高さの３分の２の位置に存在する。プレイヤキャラクタの高さは直方体の高さの３分の１程度であるので、マップユニットＨの床から３分の２の高さに形成した空間にプレイヤキャラクタは入ることができない。ＸＺ平面の空間の位置に関しては、３×３の空間がマップユニットＨを含むようにランダムに決定する。つまり、空間は、マップユニットＨの床から直方体の高さの３分の２の位置で、ＸＺ平面に関して、マップユニットＨを中心した５×５マップユニット内のランダムな位置に３×３マップユニットの大きさで形成される。行き止まりごとにランダムな位置に空間を形成することで、行き止まりそれぞれが異なる形状となる。空間内にライトなどのオブジェクトを配置して見栄えに変化を付けてもよい。行き止まりだけでなく、Ｔ字路および部屋の隅の上部にも同様に空間を形成してもよい。
【００７３】
続いて、通路の脇に崖を形成する例について説明する。
【００７４】
図２２に示す例では、Ｔ字路の分かれた先のマップユニットＪ，Ｋのうち、一方のマップユニットＫの脇（隣接するマップユニット）に崖を形成した。その崖が目印となり、プレイヤは地形を覚えやすくなる。
【００７５】
図２２（ａ）は、崖を形成したＴ字路のＸＺ平面図を示す。図２２（ｂ）は、崖を形成したＴ字路のＸＹ断面図を示す。崖は１マップユニット分の深さとする。崖のマップユニットは、通常の壁のマップユニットと同様に、プレイヤキャラクタの侵入を不可とするので、プレイヤキャラクタが崖から落ちることはない。
【００７６】
崖を形成する位置の決め方は、まず、Ｔ字路の分かれた先のマップユニットＪ，Ｋのうちのどちらかを基準となるマップユニットとして選択する。続いて、ＸＺ平面に関して、基準となるマップユニットを含む３×３マップユニットをランダムに決定する。３×３マップユニットのうち、通路でも部屋でもないマップユニット（壁のマップユニット）とその下のマップユニットを掘削して崖として形成する。図２２の例では、マップユニットＫを基準とし、マップユニットＫを左上に含む３×３マップユニットがランダムに決定されて、その３×３マップユニットの内の通路でない６マップユニット（マップユニットＫの右側の６マップユニット）に崖を形成した。
【００７７】
なお、空間や崖を形成する数や空間や崖の大きさは初期値としてパラメータにより設定する。
【００７８】
（ダンジョン形成後の処理）
掘削部１１１及び整地部１１２によりダンジョンの形が作られた後、テクスチャ部１１３、ライティング部１１４がダンジョン内の雰囲気を決定し、ＮＰＣ配置部１１５がゲームの進行に必要なＮＰＣ、アイテムなどをダンジョン内に配置する。
【００７９】
テクスチャ部１１３は、必要であれば壁面や天井に起伏のあるモデリングデータを適用したうえで、岩などのテクスチャを貼る。ダンジョンが建物の場合は、壁紙を張ったり、天井をアーチ状などの建物にあった形状に加工したうえで天井のテクスチャを貼る。テクスチャ部１１３は、部屋などの広い空間に、柱、泉などのオブジェクトを配置してもよい。
【００８０】
ライティング部１１４は、光源が配置可能な床、天井、あるいは柱が存在するマップユニットの中からランダムにマップユニットを選択して光源を配置する。
【００８１】
ＮＰＣ配置部１１５は、平らな床のマップユニットで、曲がり角あるいは行き止まりのマップユニットの中からランダムにマップユニットを選択し、選択したマップユニットにモンスターキャラクタを配置する。ＮＰＣ配置部１１５は、開発者の意図を反映してアイテムなどを配置する。具体的には、ＮＰＣ配置部１１５はゲーム進行に必ず必要なものを開始地点Ｘに配置する。あるいは、ＮＰＣ配置部１１５はレアなアイテム、装備をスタートＳ、ゴールＧから離れた位置に配置する。
【００８２】
以上説明したように、本実施の形態によれば、掘削部１１１が仮想ゲーム空間内の開始地点Ｘから別々の２方向に掘削分布パラメータに基いてダンジョンを拡張し、別々の２方向に拡張した領域からスタートＳとゴールＧをそれぞれ選択することで、開始地点Ｘを必ず通るスタートＳとゴールＧまでの道のりを形成することが可能となる。また、掘削分布パラメータで拡張する方向を指定することで、ダンジョン全体の形状を大まかに指定するもことが可能となる。
【００８３】
本実施の形態では、掘削部１１１が、環状の通路の開始地点を選択し、開始地点からいずれかの方向に所定のマップユニットの数だけ掘削した場合に環状の通路ができるときは、その位置に環状の通路を生成することで、意図的に環状の通路を生成することが可能となる。
【００８４】
本実施の形態によれば、プレイヤキャラクタの背丈程度の段差を坂道に加工することにより、ダンジョン内のハシゴの数を減らし、プレイヤキャラクタがダンジョン内をスムースに移動することが可能となる。
【００８５】
本実施の形態によれば、行き止まりやＴ字路の上部に空間を形成したり、崖を形成することで、空間や崖が目印となり、プレイヤは地形を覚えやすくなる。
【符号の説明】
【００８６】
１１…ダンジョン生成部
１１１…掘削部
１１２…整地部
１１３…テクスチャ部
１１４…ライティング部
１１５…ＮＰＣ配置部
１２…ゲーム進行制御部
１３…描画音声処理部
１４…ゲームデータ蓄積部
【図１】
2015083121.tif 000004
【図２】
2015083121.tif 000005
【図３】
2015083121.tif 000006
【図４】
2015083121.tif 000007
【図５】
2015083121.tif 000008
【図６】
2015083121.tif 000009
【図７】
2015083121.tif 000010
【図８】
2015083121.tif 000011
【図９】
2015083121.tif 000012
【図１０】
2015083121.tif 000013
【図１１】
2015083121.tif 000014
【図１２】
2015083121.tif 000015
【図１３】
2015083121.tif 000016
【図１４】
2015083121.tif 000017
【図１５】
2015083121.tif 000018
【図１６】
2015083121.tif 000019
【図１７】
2015083121.tif 000020
【図１８】
2015083121.tif 000021
【図１９】
2015083121.tif 000022
【図２０】
2015083121.tif 000023
【図２１】
2015083121.tif 000024
【図２２】
2015083121.tif 000025