(57)【要約】【課題】マップに付加的に配置されるゲーム要素を、配置位置を固定することなく変化を与えつつ適所に配置することが可能なゲーム装置およびゲームプログラムを提供する。【解決手段】本発明は、オブジェクトがマップのスタート位置を起点にそれぞれのユニットまで到達する距離、遭遇する敵キャラクタの強さ、およびゲート通過の困難度を評価して、ルート毎にユニットスコアを算出する。このユニットスコアは、オブジェクトがスタート位置を起点に各ユニットへ到達する難易度の目安にすることも可能であり、このユニットスコアを用いて、マップにゲーム要素を配置することによって、当該ゲーム要素を上記難易度に応じた適所に配置することができる。【選択図】        図１４
2004329792.tif 000002
【特許請求の範囲】
【請求項１】
複数のユニットによって構成されるゲームマップに対して、付加的なゲーム要素を配置するゲーム装置であって、
前記ゲームマップ中のスタート地点となるスタートユニットを起点として前記各ユニットに到達するまでの経路情報に基づいて決定されるユニットスコアを、前記各ユニットそれぞれに対して計算するユニットスコア計算手段と、
前記ユニットスコア計算手段で計算された前記ユニットスコアに応じて、前記ゲーム要素を配置するユニットを選択する配置ユニット選択手段と、
前記配置ユニット選択手段で選択されたユニットに前記ゲーム要素を配置するゲーム要素配置手段とを備える、ゲーム装置。
【請求項２】
前記ユニットスコア計算手段は、前記スタートユニットを起点として前記各ユニットに到達するまでの経路の距離を示す距離パラメータを前記ユニットスコアとして前記各ユニットそれぞれに対して計算することを特徴とする、請求項１に記載のゲーム装置。
【請求項３】
前記ユニットは、他のユニットと接続するための少なくとも１つの接続部を有し、当該接続部と他のユニットの接続部とが連結されることによって、他のユニットと組み合わされてゲームマップを形成しており、
複数の前記接続部を有する前記ユニットについて、当該ユニット内における前記接続部の相互の距離を示す接続部間距離データを定義する接続部間距離データ定義手段を、さらに備え、
前記ユニットスコア計算手段は、前記スタートユニットを起点として前記各ユニットに到達するまでの経路において通過する前記接続部について、前記接続部間距離データを合計することによって前記距離パラメータを計算することを特徴とする、請求項２に記載のゲーム装置。
【請求項４】
前記ユニットスコア計算手段は、前記スタートユニットを起点として前記各ユニットに到達するまでの経路において通過するユニットに存在する前記ゲーム要素に基づいて前記ユニットスコアをそれぞれ計算することを特徴とする、請求項１に記載のゲーム装置。
【請求項５】
前記ゲーム要素の種類に応じてそれぞれ固有の属性値を設定する属性値設定手段を、さらに備え、
前記ユニットスコア計算手段は、前記通過するユニットに存在するゲーム要素に設定された前記属性値に基づいて前記ユニットスコアをそれぞれ計算することを特徴とする、請求項４に記載のゲーム装置。
【請求項６】
前記ユニットは、他のユニットと接続するための少なくとも１つの接続部を有し、当該接続部と他のユニットの接続部とが連結されることによって他のユニットと組み合わされてゲームマップを形成しており、
前記スタートユニットを起点として前記各接続部に到達するまでの経路情報に基づいて決定される接続部スコアを、当該接続部それぞれに対して計算する接続部スコア計算手段を、さらに備え、
前記ユニットスコア計算手段は、前記各ユニットに対して計算される前記ユニットスコアを、当該ユニットが有する前記接続部に対して計算された前記接続部スコアに基づいて計算することを特徴とする、請求項１に記載のゲーム装置。
【請求項７】
前記ユニットスコア計算手段は、前記ユニットスコアの計算対象のユニットが複数の前記接続部を含んでいるとき、それぞれの接続部に対して計算された前記接続部スコアの最小値に基づいて前記ユニットスコアを計算することを特徴とする、請求項６に記載のゲーム装置。
【請求項８】
前記スタートユニットが有する前記接続部の前記接続部スコアを、当該スタートユニットが有する前記接続部それぞれに対して所定の計算方法によって計算して仮設定するスタートユニット接続部スコア仮設定手段をさらに備え、
前記ユニットスコア計算手段は、
仮設定された前記接続部スコアのうち、最小の前記接続部スコアが仮設定された前記接続部に対して当該接続部スコアを確定する最小接続部スコア確定手段と、
前記最小接続部スコア確定手段で接続部スコアが確定された接続部と連結される他のユニットの接続部に対して、同じ接続部スコアを確定する連結接続部スコア確定手段と、
前記最小接続部スコア確定手段または前記連結接続部スコア確定手段によって接続部スコアが確定された前記接続部が属するユニットに前記接続部スコアが未確定の接続部が含まれるとき、当該確定された接続部から当該未確定の接続部までの当該ユニット内における経路情報に基づいて、当該未確定の接続部に対する接続部スコアを計算し、当該計算した値を仮設定する接続部スコア仮設定手段とを含み、
前記ユニットスコア計算手段は、前記最小スコア確定手段、前記連結接続部スコア確定手段、および前記接続部スコア仮設定手段による処理を繰り返すことにより、前記ゲームマップ中の前記接続部の接続部スコアを順次確定し、確定された前記接続部スコアに基づいて前記ユニットスコアを計算することを特徴とする、請求項７に記載のゲーム装置。
【請求項９】
前記配置ユニット選択手段は、前記ユニットスコアの総計に対する前記各ユニットスコアの比率が当該ユニットを選択する確率となるように前記ゲーム要素を配置するユニットを選択することを特徴とする、請求項１に記載のゲーム装置。
【請求項１０】
前記配置ユニット選択手段は、前記ユニットスコア計算手段によって計算された前記各ユニットスコアを所定の関数によって変換して変換ユニットスコアを計算する変換ユニットスコア計算手段を含み、
前記配置ユニット選択手段は、前記変換ユニットスコアの総計に対する前記各変換ユニットスコアの比率が当該ユニットを選択する確率となるように前記ゲーム要素を配置するユニットを選択することを特徴とする、請求項１に記載のゲーム装置。
【請求項１１】
前記変換ユニットスコア計算手段が用いる前記関数は、前記ゲーム要素配置手段が配置するゲーム要素の種類に応じて異なることを特徴とする、請求項１０に記載のゲーム装置。
【請求項１２】
前記配置ユニット選択手段は、
所定範囲の乱数を発生する乱数発生手段と、
前記ユニットスコアの総計に対する前記各ユニットスコアの比率、または、前記変換ユニットスコアの総計に対する前記各変換ユニットスコアの比率に基づいて、前記所定範囲の一部を当該ユニットにそれぞれ割り当てる範囲割当手段とを含み、
前記配置ユニット選択手段は、前記範囲割当手段による割り当てに基づいて、前記乱数発生手段によって発生した乱数がどの前記ユニットに割り当てられた範囲に属するかによって前記ゲーム要素を配置するユニットを選択することを特徴とする、請求項９または請求項１０に記載のゲーム装置。
【請求項１３】
前記ゲームマップには、その内部に前記ゲーム要素を配置する可能性のあるポイントを含んだ前記ユニットが少なくとも１つ構成されており、
前記配置ユニット選択手段は、
所定範囲の乱数を発生する乱数発生手段と、
前記ポイントそれぞれについて、当該ポイントが属する前記ユニットの前記ユニットスコアを前記ポイントのポイントスコアに設定し、前記ポイントスコアの総計に対する各ポイントスコアの比率、または、前記ポイントスコアを所定の関数で変換した変換ポイントスコアの総計に対する各変換ポイントスコアの比率に基づいて、前記所定範囲の一部を当該ポイントにそれぞれ割り当てる範囲割当手段とを含み、
前記配置ユニット選択手段は、前記範囲割当手段による割り当てに基づいて、前記乱数発生手段によって発生した乱数がどの前記ポイントに割り当てられた範囲に属するかによって前記ゲーム要素を配置するポイントを選択することを特徴とする、請求項９または請求項１０に記載のゲーム装置。
【請求項１４】
複数の前記ユニットを予め記憶するユニット記憶手段と、前記ユニット記憶手段に記憶されたユニットをランダムに組み合わせることによって、ゲームマップを生成するゲームマップ生成手段を、さらに備える、請求項１に記載のゲーム装置。
【請求項１５】
複数のユニットによって構成され、ゲーム中にオブジェクトが移動できる領域を規定するゲームマップに対して、付加的なゲーム要素を配置するゲーム装置であって、
前記ゲームマップ中のスタート地点となるスタートユニットを起点として前記各ユニットにオブジェクトが移動する際の難易度を示すパラメータであるユニットスコアを、前記各ユニットそれぞれに対して計算するユニットスコア計算手段と、
前記ユニットスコア計算手段で計算された前記ユニットスコアに応じて、前記ゲーム要素を配置するユニットを選択する配置ユニット選択手段と、
前記配置ユニット選択手段で選択されたユニットに前記ゲーム要素を配置するゲーム要素配置手段とを備える、ゲーム装置。
【請求項１６】
複数のユニットによって構成されるゲームマップに対して、付加的なゲーム要素を配置する処理を、コンピュータに実行させるゲームプログラムであって、
前記ゲームマップ中のスタート地点となるスタートユニットを起点として前記各ユニットに到達するまでの経路情報に基づいて決定されるユニットスコアを、前記各ユニットそれぞれに対して計算するユニットスコア計算ステップと、
前記ユニットスコア計算ステップで計算された前記ユニットスコアに応じて、前記ゲーム要素を配置するユニットを選択する配置ユニット選択ステップと、
前記配置ユニット選択ステップで選択されたユニットに前記ゲーム要素を配置するゲーム要素配置ステップとを、前記コンピュータに実行させる、ゲームプログラム。
【請求項１７】
前記ユニットスコア計算ステップは、前記スタートユニットを起点として前記各ユニットに到達するまでの経路の距離を示す距離パラメータを前記ユニットスコアとして前記各ユニットそれぞれに対して計算することを特徴とする、請求項１６に記載のゲームプログラム。
【請求項１８】
前記ユニットスコア計算ステップは、前記スタートユニットを起点として前記各ユニットに到達するまでの経路において通過するユニットに存在する前記ゲーム要素に基づいて前記ユニットスコアをそれぞれ計算することを特徴とする、請求項１６に記載のゲームプログラム。
【請求項１９】
前記ユニットは、他のユニットと接続するための少なくとも１つの接続部を有し、当該接続部と他のユニットの接続部とが連結されることによって他のユニットと組み合わされてゲームマップを形成しており、
前記スタートユニットが有する前記接続部の接続部スコアを、当該スタートユニットが有する前記接続部それぞれに対して所定の計算方法によって計算して仮設定するスタートユニット接続部スコア仮設定ステップを、さらに前記コンピュータに実行させ、
前記ユニットスコア計算ステップは、
仮設定された前記接続部スコアのうち、最小の前記接続部スコアが仮設定された前記接続部に対して当該接続部スコアを確定する最小接続部スコア確定ステップと、
前記最小接続部スコア確定ステップで接続部スコアが確定された接続部と連結される他のユニットの接続部に対して、同じ接続部スコアを確定する連結接続部スコア確定ステップと、
前記最小接続部スコア確定ステップまたは前記連結接続部スコア確定ステップによって接続部スコアが確定された前記接続部が属するユニットに前記接続部スコアが未確定の接続部が含まれるとき、当該確定された接続部から当該未確定の接続部までの当該ユニット内における経路情報に基づいて、当該未確定の接続部に対する前記接続部スコアを計算し、当該計算した値を仮設定する接続部スコア仮設定ステップとを含み、
前記ユニットスコア計算ステップは、前記最小スコア確定ステップ、前記連結接続部スコア確定ステップ、および前記接続部スコア仮設定ステップによる処理を繰り返すことにより、前記ゲームマップ中の前記接続部の接続部スコアを順次確定し、確定された前記接続部スコアに基づいて前記ユニットスコアを計算することを特徴とする、請求項１６に記載のゲームプログラム。
【請求項２０】
前記配置ユニット選択ステップは、前記ユニットスコアの総計に対する前記各ユニットスコアの比率が当該ユニットを選択する確率となるように前記ゲーム要素を配置するユニットを選択することを特徴とする、請求項１６に記載のゲームプログラム。
【請求項２１】
前記配置ユニット選択ステップは、
所定範囲の乱数を発生する乱数発生ステップと、
前記ユニットスコアの総計に対する各ユニットスコアの比率、または、前記ユニットスコア計算ステップによって計算された前記各ユニットスコアが所定の関数によって変換された変換ユニットスコアの総計に対する当該各変換ユニットスコアの比率に基づいて、前記所定範囲の一部を当該ユニットにそれぞれ割り当てる範囲割当ステップとを含み、
前記配置ユニット選択ステップは、前記範囲割当ステップによる割り当てに基づいて、前記乱数発生ステップによって発生した乱数がどの前記ユニットに割り当てられた範囲に属するかによって前記ゲーム要素を配置するユニットを選択することを特徴とする、請求項１６に記載のゲームプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、ゲームマップにアイテムや敵キャラクタ等の付加的に配置されるゲーム要素を自動配置するゲーム装置およびゲームプログラムに関する。
【０００２】
【従来の技術】
従来、プレイヤによって操作されるプレイヤオブジェクトがマップ上を移動しながら進行するゲームが各種開発されている。このマップ上には、付加的に配置されるゲーム要素（アイテム、敵キャラクタ、扉、スタートおよびゴール位置等）が配置される。これらのゲーム要素をマップ上に固定的に配置せず、配置位置を変化させるとマップに変化が生まれ、プレイヤを飽きさせずにゲームを進行することができる。従来のゲーム装置では、このようなゲーム要素をマップ上にランダムに配置しているものがある（例えば特許文献１参照）。
【０００３】
特許文献１で開示されたゲーム装置では、マップに敵キャラクタやアイテム等のゲーム要素をランダムに配置する。具体的には、当該ゲーム装置のメモリ内には、予め定められた形状およびサイズの固定エリア内に、エリア全体としてそれぞれ異なったパターンを形成するように地形を配置してなる多数のマップが格納されている。そして、当該ゲーム装置のコンピュータは、ゲームの難易度に応じてマップの１つを選択し、当該マップに上記ゲーム要素をランダムに配置している。これによって、上記ゲーム要素が毎回異なった配置となったマップを得ることができる。
【０００４】
【特許文献１】
特開２０００−１０７４４１号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来のゲーム装置は、敵キャラクタやアイテム等のゲーム要素をランダムに配置するので、ゲーム要素がゲーム進行上適切な位置に配置されるとは限らない。例えば、生成されたマップのスタート位置近くにアイテムが多数配置されたり、重要な敵キャラクタがスタート位置近くに配置されたりすると、そのマップを攻略する楽しみがスタート位置近くのみで満たされてしまうため、そのマップにおけるゲーム性が損なわれることがある。また、マップの目的地点へのルートが複数ある場合、それぞれのルートに対して上記ゲーム要素の配置による難易度が考慮されていないため、プレイヤが選択するルートによって、容易に目的地まで到達してしまうこともある。
【０００６】
それ故に、本発明の目的は、マップに付加的に配置されるゲーム要素を、配置位置を固定することなく変化を与えつつ適所に配置することが可能なゲーム装置およびゲームプログラムを提供することである。
【０００７】
【課題を解決するための手段および発明の効果】
上記目的を達成するために、本発明は、以下に述べるような特徴を有している。
第１の発明は、複数のユニット（実施例との対応関係を示せば、例えば部屋ユニットＲＵ、通路ユニットＰＵ、キャップユニットＣＵ）によって構成されるゲームマップに対して、付加的なゲーム要素（敵キャラクタ、ゲート、アイテム、ゴール位置）を配置するゲーム装置である。ゲーム装置は、ユニットスコア計算手段（実施例との対応関係を示せば、例えばステップＳ８２、Ｓ８６、Ｓ９４を実行するＣＰＵ３１；以下単にステップ番号だけを示す）、配置ユニット選択手段（Ｓ８４、Ｓ９１、Ｓ９９、Ｓ１０４）、およびゲーム要素配置手段（Ｓ８４、Ｓ９１、Ｓ９９、Ｓ１０４）を備えている。ユニットスコア計算手段は、ゲームマップ中のスタート地点となるスタートユニットを起点として各ユニットに到達するまでの経路情報（経路の距離、経路上に存在する敵キャラクタの数や種類、経路上に存在するゲートの数や種類）に基づいて決定されるユニットスコアを、各ユニットそれぞれに対して計算する。配置ユニット選択手段は、ユニットスコア計算手段で計算されたユニットスコアに応じて、ゲームマップを形成する複数のユニットの中からゲーム要素を配置するユニットを選択する。ゲーム要素配置手段は、配置ユニット選択手段で決定されたユニットにゲーム要素を配置する。
なお、第１の発明において、ゲームマップを構成する複数のユニットから、このゲームマップのスタート位置を含むスタートユニットを決定するスタートユニット決定手段をさらに備えるようにしてもよい。
また、第１の発明において、ユニットスコアは、そのユニットに到達するまでの経路情報を少なくとも考慮して決定されるが、そのユニット内の情報（そのユニット内に存在する敵キャラクタの数、種類等）を加味してユニットスコアを決定してもよい。
また、スタートユニットのユニットスコアは、必ずしも計算される必要はないが、計算する場合には、例えば、スタートユニット内に存在するゲーム要素に基づいて計算する方法がある。この場合、スタートユニット内に敵キャラクタの数が多いほど高い値に設定してもよい。また、その強さが強いほど高い値に設定してもよい。また、他の計算方法では、スタートユニットのユニットスコアについては、所定の値（例えば０）を設定するようにしてもよい。
【０００８】
上記第１の発明によれば、ゲームマップのスタート位置からそれぞれのユニットまでの経路情報に基づいてユニットスコアが算出される。経路情報として経路の距離、経路上に存在する敵キャラクタの数や種類、経路上に存在するゲートの数や種類等を採用すれば、ユニットスコアは、プレイヤキャラクタ等がそのユニットに到達するための難易度を示す値となる。また、経路情報として経路上に存在するアイテムの数や種類等を採用すれば、ユニットスコアは、プレイヤキャラクタ等がそのユニットに到達するまでに得られるメリットを示す値となる。そして、上記ユニットスコアを用いて、ゲームマップに付加的に配置されるゲーム要素が配置されるため、ゲーム要素を上記難易度に応じた適所に配置したり、上記メリットに応じた適所に配置したりすることができる。例えば、ユニットスコアが難易度を示す場合には、以下のような例が考えられる。ある貴重なアイテムをプレイヤが入手することが困難になるように設定したいときに、その貴重なアイテムをユニットスコアが高いユニットに配置するようにするようにしてもよい。また、ユニットスコアが高いユニットにプレイヤを支援するようなアイテムを配置するようにしてもよい。また、ユニットスコアが最高値を示すユニットにゴール地点を設定するようにしてもよい。また、ユニットスコアが低いユニットに弱い敵キャラクタを配置し、ユニットスコアが高いユニットに強い敵キャラクタを配置するようにしてもよい。また、ユニットスコアがメリットを示す場合には、ユニットスコアが高いユニットに強い敵キャラクタを配置する等が考えられる。なお、これらは一例に過ぎず、ゲームの内容やゲームデザイナーの意図によって様々な利用例が考えられる。ゲームの内容によっては、上述の例とは逆に、ユニットスコアの低い場所に貴重なアイテムを配置するようにする場合もあるし、ユニットスコアが中程度のユニットにゲーム要素を配置するようにする場合もある。
ユニットスコアは、難易度を示す場合と、その逆にメリットの度合いを示す場合があるが、以降の説明では、主に難易度を示す場合を中心に説明する。ただし、メリットの度合いを示す場合も同様である。
【０００９】
第２の発明は、第１の発明に従属する発明であって、ユニットスコア計算手段は、スタートユニットを起点としてゲームマップ上の各ユニットに到達するまでの経路の距離を示す距離パラメータをユニットスコアとして各ユニットそれぞれに対して計算する。
【００１０】
上記第２の発明によれば、ゲームマップ上で、スタート位置からの距離が長いユニットほど、オブジェクトがそのユニットに到達することが困難であると言えるので、その距離を示す距離パラメータを計算することによって、距離を難易度としたユニットスコアが得られる。そして、上記距離パラメータに応じてゲーム要素が配置されるので、ゲーム要素をゲーム性を考慮した適切な位置に配置することができる。例えば、ゲーム上、スタート位置から遠いユニットに配置するのが好ましいゴール位置、最も重要な敵キャラクタやアイテム等のゲーム要素を、スタート位置からの距離に応じた適所に配置することができる。
【００１１】
第３の発明は、第２の発明に従属する発明であって、ユニットは、他のユニットと接続するための少なくとも１つの接続部（ドアＤＲ）を有し、この接続部と他のユニットの接続部とが連結されることによって他のユニットと組み合わされてゲームマップを形成している。この場合、ゲーム装置は、接続部間距離データ定義手段（ドア間距離テーブルを記憶するユニット記憶領域３２２）をさらに備える。接続部間距離データ定義手段は、複数の接続部を有するユニットについて、これらユニット内における接続部の相互の距離を示す接続部間距離データ（ドア間距離データ）を定義する。そして、ユニットスコア計算手段は、スタートユニットを起点として各ユニットに到達するまでの経路において通過する接続部について、接続部間距離データを合計することによって距離パラメータを計算する。
【００１２】
上記第３の発明によれば、距離パラメータを適切にかつ容易に計算することができる。
【００１３】
第４の発明は、第１の発明に従属する発明であって、ユニットスコア計算手段は、スタートユニットを起点として各ユニットに到達するまでの経路において通過するユニットに存在するゲーム要素に基づいてユニットスコアをそれぞれ計算する。
【００１４】
上記第４の発明によれば、ゲームマップ上で、スタート位置から各ユニットに到達するまでの間にプレイヤキャラクタ等のオブジェクトが遭遇する敵キャラクタや扉等の障害物がゲーム要素として多く配置されたユニットほど、そのユニットに到達することが困難であると言えるので、それらの障害物を難易度としたユニットスコアが得られる。また、スタート位置から各ユニットに到達するまでの間にオブジェクトが遭遇するアイテムやヒントをくれる町人キャラクタ等がゲーム要素として多く配置されたユニットほど、そのユニットに到達するメリットが大きいと言えるので、メリットを示すユニットスコアが得られる。そして、この難易度やメリットを示すユニットスコアに応じてゲーム要素が配置されるので、ゲーム要素をゲーム性を考慮した適切な位置に配置することができる。例えば、ゲーム上、スタート位置から多数の障害物をクリアしてオブジェクトが到達するユニットに配置するのが好ましいゴール位置や最も重要なアイテム等のゲーム要素を、スタート位置からの経路上の障害物に応じた適所に配置することができる。
【００１５】
第５の発明は、第４の発明に従属する発明であって、ゲーム装置は、属性値設定手段をさらに備える。属性値設定手段は、ゲーム要素の種類に応じてそれぞれ固有の属性値（敵の強さ、ゲートの強さ）を設定する。そして、ユニットスコア計算手段は、遭遇するゲーム要素に設定された属性値に基づいてユニットスコアをそれぞれ計算する。
【００１６】
上記第５の発明によれば、ゲームマップ上で、例えば、オブジェクトがスタート位置からの移動でゲーム要素である敵キャラクタに遭遇した場合、その敵キャラクタの強さ等がユニットに到達する困難度に影響すると言える。このような敵キャラクタの強さの属性値を考慮してユニットスコアを設定するため、困難度をより正確に示すユニットスコアを設定することができる。また、例えば、アイテムの有用度を属性値として考慮してユニットスコアを設定すれば、メリットを正確に示すユニットスコアを設定することができる。
【００１７】
第６の発明は、第１の発明に従属する発明であって、ユニットは、他のユニットと接続するための少なくとも１つの接続部を有し、この接続部と他のユニットの接続部とが連結されることによって他のユニットと組み合わされてゲームマップを形成している。この場合、ゲーム装置は、接続部スコア計算手段（Ｓ８２５、Ｓ８２６、Ｓ８３０）をさらに備える。接続部スコア計算手段は、スタートユニットを起点として各接続部に到達するまでの経路情報に基づいて決定される接続部スコア（ドアスコア）を、それら接続部それぞれに対して計算する。そして、ユニットスコア計算手段は、各ユニットに対して計算されるユニットスコアを、このユニットが有する接続部に対して計算された接続部スコアに基づいて計算する（Ｓ８２８）。
【００１８】
上記第６の発明によれば、各ユニットの入口または出口となる接続部に注目して、オブジェクトがスタート位置からその接続部まで移動する際の難易度やメリットを示す接続部スコアが計算される。そして、接続部スコアを介してその接続部が属するユニットのユニットスコアが計算されるため、それぞれのユニットスコアを適切にかつ容易に得ることができる。
【００１９】
第７の発明は、第６の発明に従属する発明であって、ユニットスコア計算手段は、ユニットスコアの計算対象のユニットが複数の接続部を含んでいるとき、それぞれの接続部に対して計算された接続部スコアの最小値に基づいてユニットスコアを計算する（Ｓ８２５〜Ｓ８２８）。
【００２０】
上記第７の発明によれば、最小値の接続スコアを介してその接続部が属するユニットのユニットスコアが計算されるため、オブジェクトがスタート位置からそれぞれのユニットへ最も難易度が低い簡単な移動で到達した場合のそれぞれのユニットスコアを適切にかつ容易に得ることができる。
【００２１】
第８の発明は、第７の発明に従属する発明であって、スタートユニット接続部スコア仮設定手段をさらに備える。スタートユニット接続部スコア仮設定手段は、スタートユニットが有する接続部の接続部スコアを、そのスタートユニットが有する接続部それぞれに対して所定の計算方法によって計算して仮設定する。ここで、所定の計算方法とは、例えば、スタートユニット内に存在するゲーム要素に基づいて計算する方法がある。この場合、スタートユニット内に敵キャラクタの数が多いほど高い値に設定したり（また、その強さが強いほど高い値に設定したり）、スタートユニットが有する接続部にゲートが設定されている場合に高い値に設定したりする。また、他の計算方法では、スタートユニットが有する接続部については、全て所定の値（例えば０）を設定するようにしてもよい。そして、ユニットスコア計算手段は、最小接続部スコア確定手段（Ｓ８２５）、連結接続部スコア確定処理手段（Ｓ８２６）、および接続部スコア仮設定手段（Ｓ８３０）を含んでいる。最小接続部スコア確定手段は、仮設定された接続部スコアのうち、最小の接続部スコアが仮設定された接続部に対してこの接続部スコアを確定する。連結接続部スコア確定処理手段は、最小接続部スコア確定手段で接続部スコアが確定された接続部と連結される他のユニットの接続部に対して、同じ接続部スコアを確定する。接続部スコア仮設定手段は、最小接続スコア確定手段または連結接続部スコア確定手段によって接続部スコアが確定された接続部が属するユニットに接続部スコアが未確定の接続部が含まれるとき、その確定された接続部からその未確定の接続部までのそのユニット内における経路情報に基づいて、その未確定の接続部に対する接続部スコアを計算し、その計算した値を仮設定する（Ｓ８３０）。そして、ユニットスコア計算手段は、最小接続部スコア確定手段、連結接続部スコア確定手段、および接続部スコア仮設定手段による処理を繰り返すことにより（Ｓ８２５〜Ｓ８３０の繰り返し）、ゲームマップ中の接続部の接続部スコアを順次確定し、確定された接続スコアに基づいてユニットスコアを計算する（Ｓ８２８）。
【００２２】
上記第８の発明によれば、スタート位置が設定されているスタートユニットの接続部スコアを出発点として最小の接続部スコアを優先的に確定していき、その接続部スコアに基づいてユニットスコアも確定する。したがって、ゲームマップ上に形成された全てのユニットおよび接続部に対して、オブジェクトがスタートユニットから最も難易度が低い移動によって到達するそれぞれの難易度をユニットスコアおよび接続部スコアとして確実に計算することができる。
【００２３】
第９の発明は、第１の発明に従属する発明であって、配置ユニット選択手段は、ユニットスコアの総計に対する各ユニットスコアの比率がそのユニットを選択する確率となるようにゲーム要素を配置するユニットを選択する（Ｓ９６〜Ｓ９９）。
【００２４】
上記第９の発明によれば、オブジェクトがスタート位置を起点にそれぞれのユニットに到達するための難易度が、全体の傾向に対してどのようなレベルにあるのか評価し、そのレベルに応じてゲーム要素を配置することができる。例えば、上記難易度が比較的高いユニットにゲーム要素を優先的に配置したり、ゲーム要素を最も難易度が高いユニット確実に配置することが可能である。これによって、ゲーム上、オブジェクトがスタート位置を起点に移動して到達することが困難なユニットに配置するのが好ましいゴール位置、最も重要なキャラクタやアイテム等を、適所に配置することができる。また、全体に対してどれくらいのレベルにあるかという比率に応じてそのユニットを選択するようにすれば、難易度が高いユニットほどゲーム要素が配置される確率が高くなるようにできる。
【００２５】
第１０の発明は、第１の発明に従属する発明であって、配置ユニット選択手段は、変換ユニットスコア計算手段（Ｓ８８、Ｓ９６、Ｓ１０１）を含む。変換ユニットスコア計算手段は、ユニットスコア計算手段によって計算されたそれぞれのユニットスコアを所定の関数（Ｓｃｍａｘ＋Ｓｃｍｉｎ−Ｓｃ（Ｕｘ）またはＳｃ（Ｕｘ）の正の平方根）によって変換して変換ユニットスコア（Ｔｘ）を計算する。そして、配置ユニット選択手段は、変換ユニットスコアの総計に対する各変換ユニットスコアの比率がそれらユニットを選択する確率となるようにゲーム要素を配置するユニットを選択する（Ｓ８８〜Ｓ９１、またはＳ１０１〜Ｓ１０４）。
【００２６】
上記第１０の発明によれば、ユニットスコアを所定関数で変換して、変換後のユニットスコアを用いるので、その関数を適切に設定すれば、ゲーム要素の様々な配置が可能になる。例えば、難易度が低いユニット程優先的に配置されるようにしたり、難易度が高いユニット程優先的に配置されるようにするがその優先度の程度を低くしたり、逆にその程度を高くしたりすることが可能になる。
【００２７】
第１１の発明は、第１０の発明に従属する発明であって、変換ユニットスコア計算手段が用いる関数は、ゲーム要素配置手段が配置するゲーム要素の種類に応じて異なる。
【００２８】
上記第１１の発明によれば、ゲーム要素の種類に応じて、その配置位置を関数によって制御することができる。例えば、オブジェクトがスタート位置を起点に移動して到達するための難易度が高いユニットに確実に配置したいアイテムや、必ずしも上記難易度が高いユニットへの配置が要求されないゴール位置、あるいは上記難易度が低いユニットに配置したい障害物等、ゲーム要素の種類によって様々な適所が考えられる。これらのゲーム要素の配置に関して、そのランダム性と配置したいユニットとのバランスを、ゲーム要素の種類に応じた関数を選択することによって調整することができる。
【００２９】
第１２の発明は、第９または第１０の発明に従属する発明であって、配置ユニット選択手段は、乱数発生手段（Ｓ９０、Ｓ９８、Ｓ１０３）および範囲割当手段（図２５）とを含む。乱数発生手段は、所定範囲の乱数を発生する。範囲割当手段は、ユニットスコアの総計に対する各ユニットスコアの比率、または、変換ユニットスコアの総計に対する各変換ユニットスコアの比率に基づいて、乱数発生に係る所定範囲の一部をそれらユニットにそれぞれ割り当てる。そして、配置ユニット選択手段は、範囲割当手段による割り当てに基づいて、乱数発生手段によって発生した乱数がどのユニットに割り当てられた範囲に属するかによってゲーム要素を配置するユニットを選択する。
【００３０】
上記第１２の発明によれば、上記第９または第１０の発明を適切に実現することができる。
【００３１】
第１３の発明は、第９または第１０の発明に従属する発明であって、ゲームマップには、その内部にゲーム要素を配置する可能性のあるポイント（スタートスロットＳｓ、ゴールスロットＳｇ、敵スロットＳｅ、アイテムスロットＳｉ）を含んだユニットが少なくとも１つ構成されている。この場合、配置ユニット選択手段は、乱数発生手段および範囲割当手段（図２８）とを含む。乱数発生手段は、所定範囲の乱数を発生する。範囲割当手段は、ポイントのそれぞれについて、それらポイントが属するユニットのユニットスコアをポイントのポイントスコアに設定し、ポイントスコアの総計に対する各ポイントスコアの比率、または、ポイントスコアを所定の関数で変換した変換ポイントスコアの総計に対する各変換ポイントスコアの比率に基づいて、所定範囲の一部をそれらポイントにそれぞれ割り当てる。そして、配置ユニット選択手段は、範囲割当手段による割り当てに基づいて、乱数発生手段によって発生した乱数がどのポイントに割り当てられた範囲に属するかによってゲーム要素を配置するポイントを選択する。
【００３２】
上記第１３の発明によれば、ユニット内のポイントに対して適切にゲーム要素を配置することができる。
【００３３】
第１４の発明は、第１の発明に従属する発明であって、ゲーム装置は、ユニット記憶手段（ユニット画像データ群を記憶するユニット記憶領域３２２）およびゲームマップ生成手段（Ｓ１〜Ｓ７）をさらに備える。ユニット記憶手段は、複数のユニットを予め記憶する。ゲームマップ生成手段は、ユニット記憶手段に記憶されたユニットをランダムに組み合わせることによって、ゲームマップを生成する。
【００３４】
上記第１４の発明によれば、自動的に生成された多様性に富んだゲームマップに対しても、上記第１の発明と同様の効果を得ることができる。また、ゲームマップ自体の多様性があるのでゲーム要素の配置の多様性と組み合わせることによってより変化に富んだゲームマップを生成することができる。
【００３５】
第１５の発明は、複数のユニットによって構成され、ゲーム中にオブジェクトが移動できる領域を規定するゲームマップに対して、付加的なゲーム要素を配置するゲーム装置である。ゲーム装置は、ユニットスコア計算手段、配置ユニット選択手段、およびゲーム要素配置手段を備えている。ユニットスコア計算手段は、ゲームマップ中のスタート地点となるスタートユニットを起点として各ユニットにオブジェクトが移動する際の難易度を示すパラメータであるユニットスコアを、各ユニットそれぞれに対して計算する。配置ユニット選択手段は、ユニットスコア計算手段で計算されたユニットスコアに応じて、ゲーム要素を配置するユニットを選択する。ゲーム要素配置手段は、配置ユニット選択手段で選択されたユニットにゲーム要素を配置する。
【００３６】
上記第１５の発明によれば、ユニットスコアが各ユニットにオブジェクトが移動する際の難易度に応じて計算される。そして、このユニットスコアを用いて、ゲームマップに付加的に配置されるゲーム要素が配置されるため、ゲーム要素を上記難易度に応じた適所に配置することができる。
【００３７】
第１６の発明は、複数のユニットによって構成されるゲームマップに対して、付加的なゲーム要素を配置する処理を、コンピュータに実行させるゲームプログラムである。ゲームプログラムは、ユニットスコア計算ステップ（Ｓ８２、Ｓ８６、Ｓ９４）、配置ユニット選択ステップ（Ｓ８４、Ｓ９１、Ｓ９９、Ｓ１０４）、およびゲーム要素配置ステップ（Ｓ８４、Ｓ９１、Ｓ９９、Ｓ１０４）をコンピュータに実行させる。ユニットスコア計算ステップは、ゲームマップ中のスタート地点となるスタートユニットを起点として各ユニットに到達するまでの経路情報に基づいて決定されるユニットスコアを、各ユニットそれぞれに対して計算する。配置ユニット選択ステップは、ユニットスコア計算ステップで計算されたユニットスコアに応じて、ゲーム要素を配置するユニットを決定する。ゲーム要素配置ステップは、配置ユニット選択ステップで決定されたユニットにゲーム要素を配置する。
【００３８】
上記第１６の発明によれば、ゲームプログラムを実行するコンピュータであっても、上記第１の発明と同様の効果を得ることができる。
【００３９】
第１７の発明は、第１６の発明に従属する発明であって、ユニットスコア計算ステップは、スタートユニットを起点としてゲームマップ上の各ユニットに到達するまでの経路の距離を示す距離パラメータをユニットスコアとして各ユニットそれぞれに対して計算する。
【００４０】
第１８の発明は、第１６の発明に従属する発明であって、ユニットスコア計算ステップは、スタートユニットを起点として各ユニットに到達するまでの経路において通過するユニットに存在するゲーム要素に基づいてユニットスコアをそれぞれ計算する。
【００４１】
第１９の発明は、第１６の発明に従属する発明であって、ユニットは、他のユニットと接続するための少なくとも１つの接続部を有し、この接続部と他のユニットの接続部とが連結されることによって他のユニットと組み合わされてゲームマップを形成している。この場合、ゲームプログラムは、スタートユニット接続部スコア仮設定ステップ（Ｓ８２４）をさらにコンピュータに実行させる。スタートユニット接続部スコア仮設定ステップは、スタートユニットが有する接続部の接続部スコアを、そのスタートユニットが有する接続部それぞれに対して所定の計算方法によって計算して仮設定する。そして、ユニットスコア計算ステップは、最小接続部スコア確定ステップ（Ｓ８２５）、連結接続部スコア確定ステップ（Ｓ８２６）、および接続部スコア仮設定ステップ（Ｓ８３０）を含んでいる。最小接続部スコア確定ステップは、仮設定された接続部スコアのうち、最小の接続部スコアが仮設定された接続部に対してこの接続部スコアを確定する。連結接続部スコア確定ステップは、最小接続部スコア確定ステップで接続部スコアが確定された接続部と連結される他のユニットの接続部に対して、同じ接続部スコアを確定する。接続部スコア仮設定ステップは、最小接続部スコア確定ステップまたは連結接続部スコア確定ステップによって接続部スコアが確定された接続部が属するユニットに接続部スコアが未確定の接続部が含まれるとき、その確定された接続部からその未確定の接続部までのそのユニット内における経路情報に基づいて、その未確定の接続部に対する接続部スコアを計算し、その計算した値を仮設定する。そして、ユニットスコア計算ステップは、最小スコア確定ステップ、連結接続部スコア確定ステップ、および接続部スコア仮設定ステップによる処理を繰り返すことにより、ゲームマップ中の接続部の接続部スコアを順次確定し、確定された接続部スコアに基づいてユニットスコアを計算する。
【００４２】
第２０の発明は、第１６の発明に従属する発明であって、配置ユニット選択ステップは、ユニットスコアの総計に対する各ユニットスコアの比率がそれらユニットを選択する確率となるようにゲーム要素を配置するユニットを選択する。
【００４３】
第２１の発明は、第１６の発明に従属する発明であって、配置ユニット選択ステップは、乱数生成ステップおよび範囲割当ステップを含んでいる。乱数生成ステップは、所定範囲の乱数を発生する。範囲割当ステップは、ユニットスコアの総計に対する各ユニットスコアの比率、または、ユニットスコア計算ステップによって計算された各ユニットスコアが所定の関数によって変換された変換ユニットスコアの総計に対するそれら各変換ユニットスコアの比率に基づいて、所定範囲の一部それらユニットにそれぞれ割り当てる。そして、配置ユニット選択ステップは、範囲割当ステップによる割り当てに基づいて、乱数発生ステップによって発生した乱数がどのユニットに割り当てられた範囲に属するかによってゲーム要素を配置するユニットを選択する。
【００４４】
【発明の実施の形態】
図１を参照して、本発明の一実施形態に係るゲームシステム１について説明する。なお、図１は、当該ゲームシステムを説明するための外観図である。以下、据置型ゲーム装置を一例にして、本発明の一実施形態について説明する。
【００４５】
図１において、当該ゲームシステム１は、家庭用テレビジョン受像機等のスピーカ２ａを備えたＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ（以下、テレビと記載する）２に、接続コードを介して接続される据置型ゲーム装置（以下、単にゲーム装置と記載する）３によって構成される。ゲーム装置３は、接続コードを介してゲーム装置３と接続されるコントローラ６およびゲーム装置３に対して交換可能に着脱される選択的に用いられる情報記憶媒体の一例の光ディスク４を含む。また、ゲーム装置３には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載するメモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてテレビ２に表示する。さらに、ゲーム装置３は、メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ２に表示することもできる。そして、ゲーム装置３のプレイヤは、テレビ２に表示されたゲーム画像を見ながら、コントローラ６を操作することによって、ゲーム進行を楽しむことができる。
【００４６】
コントローラ６は、上述したように接続コードを介してゲーム装置３に接続され、その接続コードは、ゲーム装置３に対して着脱自在である。コントローラ６は、主にテレビ２に表示されるゲーム空間に登場するプレイヤオブジェクト（典型的には、プレイヤの操作対象であるゲーム主人公）を操作するための操作手段であり、複数の操作ボタン、キー、およびスティック等の入力部を備えている。具体的には、コントローラ６には、プレイヤによって各々把持されるグリップ部が形成される。そして、コントローラ６は、プレイヤの左手の親指等によって操作可能なメインスティック６１および十字キー６７と、右手の親指等によって操作可能なＣスティック６８、Ａボタン６２、Ｂボタン６３、Ｘボタン６４、Ｙボタン６５、およびスタート−ポーズボタン６９を含む。さらに、コントローラ６には、プレイヤの左右の人差し指等によってそれぞれ操作可能なＲボタン６６ａおよびＬボタン６６ｂを備える。これらコントローラ６の入力部を用いた操作は、ゲーム進行に応じて行われるが、本発明の説明とは直接関連しないため詳細な説明を省略する。
【００４７】
次に、図２を参照して、ゲーム装置３の構成について説明する。なお、図２は、ゲーム装置３の機能ブロック図である。
【００４８】
図２において、ゲーム装置３は、各種プログラムを実行する例えば１２８ビットのＣＰＵ（セントラルプロセッシングユニット）３１を備える。ＣＰＵ３１は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、ワークメモリ３２等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理を行うものである。ＣＰＵ３１には、ワークメモリ３２、ビデオＲＡＭ（ＶＲＡＭ）３３、外部メモリインターフェース（Ｉ／Ｆ）３４、コントローラＩ／Ｆ３５、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３６、および光ディスクドライブ３７が所定のバスを介して接続される。
【００４９】
ワークメモリ３２は、ＣＰＵ３１で使用される記憶領域であって、ＣＰＵ３１の処理に必要なゲームプログラム等を適宜記憶する。例えば、ワークメモリ３２は、ＣＰＵ３１によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する。また、ワークメモリ３２には、ＣＰＵ３１がゲームプログラムを実行することによって生成される一時的なデータも記憶される。このワークメモリ３２に記憶されたゲームプログラムや各種データ等を用いてＣＰＵ３１がゲーム進行を行う。ＶＲＡＭ３３は、テレビ２に表示するゲーム画像データを格納する。外部メモリＩ／Ｆ３４は、図示しないコネクタにメモリカード５を嵌合させることによってゲーム装置３とメモリカード５とを通信可能に接続する。ＣＰＵ３１は、外部メモリＩ／Ｆ３４を介してメモリカード５に設けられたバックアップメモリにアクセスする。コントローラＩ／Ｆ３５は、図示しない複数のコネクタと嵌合する外部機器とゲーム装置３とを通信可能に接続する。例えば、コントローラ６は、接続コードを介して上記コネクタと嵌合し、コントローラＩ／Ｆ３５を介してゲーム装置３と接続される。ＧＰＵ３６は、例えば、３Ｄグラフィックスの表示に必要な計算処理を行う半導体チップで構成され、ＣＰＵ３１で処理したゲーム画像データやＶＲＡＭ３３に格納されたゲーム画像データを処理し、そのゲーム画像をテレビ２に表示する。光ディスクドライブ３７は、所定の読み出し位置に配置された光ディスク４に記憶されたデータを読み出し、ゲーム装置３のバスに出力する。
【００５０】
ワークメモリ３２には、上述したようにＣＰＵ３１の処理に必要なゲームプログラム等が適宜記憶され、ＣＰＵ３１によって光ディスク４から読み出されたゲームプログラムや各種データ等が格納される。以下、図３を参照して、本発明のゲームプログラムを実行する場合にワークメモリ３２に記憶されるプログラムおよびデータの一例について説明する。なお、図３は、ワークメモリ３２に記憶されるプログラムおよびデータの一例について説明するための概略的なメモリマップである。
【００５１】
図３において、ワークメモリ３２は、プログラム記憶領域３２１およびユニット記憶領域３２２を有している。具体的には、プログラム記憶領域３２１には、ＣＰＵ３１によって実行されるマップ生成プログラムと、そのマップ生成プログラムによって利用される乱数生成プログラムおよびゲーム要素配置プログラム等が記憶されている。また、ユニット記憶領域３２２には、上記マップ生成プログラムによって利用されるユニットテーブル、ドア間距離テーブル、およびユニット画像データ群等が記憶される。ユニットテーブルは、部屋ユニットテーブル、通路ユニットテーブル、およびキャップユニットテーブルを含んでいる。ユニット画像データ群は、部屋ユニット画像群、通路ユニット画像群、およびキャップユニット画像を含んでいる。
【００５２】
マップ生成プログラムは、後述するフローチャートによって生成されるゲームで用いられるマップを生成する処理が定義されている。この処理においては、マップに付加的に配置するゲーム要素を配置する際、ゲーム要素配置プログラムが用いられる。また、後述するユニットやゲーム要素配置場所を選択する際、乱数が用いられ、この乱数が乱数生成プログラムによって生成される。
【００５３】
図４〜図６を参照して、部屋ユニット画像群、部屋ユニットテーブル、およびドア間距離テーブルについて説明する。なお、図４はユニット記憶領域３２２に記憶される部屋ユニット画像群に含まれる部屋ユニットの一例を示す図であり、図５は部屋ユニットテーブルの一例を示す図であり、図６は部屋ユニットに対するドア間距離テーブルの一例を示す図である。
【００５４】
図４において、ユニット記憶領域３２２には、部屋ユニット画像群として複数の部屋ユニットＲＵが記憶されている。部屋ユニットＲＵは、後述する通路ユニットＰＵおよびキャップユニットＣＵと共に、マップを構成する単位画像である。例えば、部屋ユニットＲＵは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクト等のオブジェクトやマップに付加的に配置されるゲーム要素が移動あるいは配置可能な部屋領域ＲＺを有している。図４においては、部屋領域ＲＺを斜線領域で示している。部屋領域ＲＺは、少なくとも一部が部屋ユニットＲＵの上記矩形領域の境界と所定長さの線分として接して形成され、当該境界と接する線分にドアＤＲが設定される。ドアＤＲは、接続部の一例であり、他のユニットと接続するための部分である。
【００５５】
例えば、図４（ａ）で示す部屋ユニットＲＵａは、その部屋領域ＲＺが矩形領域の境界を示す４つの辺にそれぞれ１箇所ずつ合計４箇所接しており、それぞれの接する箇所にドアＤＲ１〜ＤＲ４が設定されている。図４（ｂ）で示す部屋ユニットＲＵｂは、その部屋領域ＲＺが上記４つの辺にそれぞれ１箇所以上合計５箇所接しており、それぞれの接する箇所にドアＤＲ１〜ＤＲ５が設定されている。なお、部屋ユニットＲＵｂのドアＤＲ３およびＤＲ４が同じ辺に設定されている。図４（ｃ）で示す部屋ユニットＲＵｃは、上記辺のうちの対向する２辺に部屋領域ＲＺがそれぞれ１箇所ずつ合計２箇所接しており、それぞれの接する箇所にドアＤＲ１およびＤＲ２が設定されている。図４（ｄ）で示す部屋ユニットＲＵｄは、上記辺のうちの１辺に部屋領域ＲＺが１箇所接しており、その接する箇所にドアＤＲ１が設定されている。
【００５６】
このように部屋ユニットＲＵには、その種類に応じた任意の形状の部屋領域ＲＺが形成される。そして、部屋ユニットＲＵに設定されるドアＤＲは、上記４つの辺の少なくとも１つに所定の長さで設定される。ここで、上記部屋ユニットＲＵの例で示すように、部屋ユニットＲＵの４つの辺には、ドアＤＲが設定されない辺がある場合もあるし、１つの辺に複数のドアＤＲが設定される場合もある。
【００５７】
また、部屋ユニットＲＵには、その部屋領域ＲＺの内部にマップのスタート位置、ゴール位置、敵キャラクタ、およびアイテム等の付加的に配置されるゲーム要素（以下、単にゲーム要素と記載する）がそれぞれ配置される可能性がある地点が設定されている。以下、これらの地点をスロットと記載し、スタート位置が配置される可能性がある地点をスタートスロットＳｓ、ゴール位置が配置される可能性がある地点をゴールスロットＳｇ、敵キャラクタが配置される可能性がある地点を敵スロットＳｅ、アイテムが配置される可能性がある地点をアイテムスロットＳｉと記載して説明する。ここで、上記敵キャラクタは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、典型的には、その移動を妨害するキャラクタであり、その敵の強さが属性値として予め設定されている。したがって、上記敵キャラクタがマップ上に配置されることによって、その配置場所付近をプレイヤオブジェクトが通過することが困難になり、その属性値に応じて通過する困難度が高くなる。一方、上記アイテムは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、典型的には、プレイヤオブジェクトの得点や能力が向上し、マップ攻略や収集のための目的物である。したがって、上記アイテムがマップ上に配置された場合、その配置場所がプレイヤオブジェクトの到達目標場所の１つとなる。
【００５８】
ここで、部屋ユニットＲＵに形成される部屋領域ＲＺの内部には、少なくとも１つのゴールスロットＳｇが必ず設定されている。そして、他のスロットは、１つの部屋ユニットＲＵに形成される部屋領域ＲＺの内部に、複数設定されている場合もあるし、設定がない場合もある。例えば、図４（ａ）で示す部屋ユニットＲＵａに形成される部屋領域ＲＺの内部には、２つのスタートスロットＳｓと、１つのゴールスロットＳｇ、敵スロットＳｅ、およびアイテムスロットＳｉとが設定されている。図４（ｂ）で示す部屋ユニットＲＵｂに形成される部屋領域ＲＺの内部には、２つの敵スロットＳｅと、１つのゴールスロットＳｇおよびアイテムスロットＳｉとが設定されている。図４（ｃ）で示す部屋ユニットＲＵｃに形成される部屋領域ＲＺの内部には、１つのゴールスロットＳｇ、敵スロットＳｅ、およびアイテムスロットＳｉが設定されている。図４（ｄ）で示す部屋ユニットＲＵｄに形成される部屋領域ＲＺの内部には、３つのスタートスロットＳｓと、１つのゴールスロットＳｇおよびアイテムスロットＳｉとが設定されている。
【００５９】
図５において、ユニット記憶領域３２２に記憶される部屋ユニットテーブルには、上述した部屋ユニット画像群として含まれるそれぞれの部屋ユニットＲＵに対するデータが記憶される。例えば、部屋ユニットテーブルには、それぞれの部屋ユニットＲＵに対して、そのサイズ、ドアＤＲの設定位置、およびスロットの数等が記憶されている。部屋ユニットＲＵのサイズは、単位ユニットの大きさ１×１の倍数で表される上記矩形領域の大きさであり、例えば、上述した部屋ユニットＲＵａ〜ＲＵｄは、それぞれサイズ４×４である。なお、後述するサイズは、特に指示のない限り上記単位ユニットの大きさを１×１とした値を基準に表現する。
【００６０】
部屋ユニットＲＵに設定されるドアＤＲの設定位置は、上述した４つの辺を順にａ〜ｄで示し（例えば、ユニットの上側の辺を辺ａとし、右側の辺を辺ｂとし、下側の辺を辺ｃとし、左側の辺を辺ｄとする）、ドアＤＲが設定される辺ａ〜ｄ上における位置を示す数値を付与する。上記位置を示す数値は、ドアＤＲが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図４（ａ）で示す部屋ユニットＲＵａの上側の辺を辺ａとし、部屋ユニットＲＵａのドアＤＲ１が辺ａの左端から２単位ユニット目に設定されているとすると、ドアＤＲ１の設定位置として「ａ２」が部屋ユニットテーブルに記憶される。そして、部屋ユニットＲＵに設定されるスロットの数は、それぞれの部屋領域ＲＺの内部に設定されるスタートスロットＳｓ、ゴールスロットＳｇ、敵スロットＳｅ、およびアイテムスロットＳｉのそれぞれの数である。ＣＰＵ３１は、この部屋ユニットテーブルを参照することによって、上記部屋ユニット画像群を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれの部屋ユニットＲＵのデータを取得することができる。
【００６１】
図６において、ユニット記憶領域３２２に記憶される部屋ユニットに対するドア間距離テーブルは、それぞれ部屋ユニットＲＵに設定されたそれぞれのドアＤＲにおける相互の距離を示す距離データが記憶される。例えば、図６（ａ）〜図６（ｃ）は、それぞれ図４（ａ）〜図４（ｃ）で示した部屋ユニットＲＵａ〜ＲＵｃに対するドア間距離テーブルを示している。上記距離データは、図４および図６を対比してわかるように、画像で示されるドアＤＲの相互の距離が長いものに対して、所定の法則に基づいて相対的に大きな値となる。例えば、部屋ユニットＲＵａにおいて最も相互の距離が長いドアＤＲ２〜ＤＲ３の距離データは、ドア間距離テーブルにおいて距離データ「１１」が示され、最も相互の距離が短いドアＤＲ３〜ＤＲ４の距離データは、ドア間距離テーブルにおいて距離データ「３」が示される。したがって、部屋ユニットＲＵに設定された２つのドアＤＲの間をプレイヤオブジェクトが移動する際、プレイヤは、当該２つのドアＤＲに設定された距離データが大きいほど、その間を移動する距離を長く感じる。なお、部屋ユニットＲＵｄは、ドアＤＲが１つのみ設定されているため、ドア間距離テーブルを作成しなくてもかまわない。ＣＰＵ３１は、この部屋ユニットに対するドア間距離テーブルを参照することによって、上記部屋ユニット画像群を処理毎に画像解析しなくても、後述するゲーム要素配置処理に必要なそれぞれの部屋ユニットＲＵに設けられたドアＤＲの距離データを取得することができる。
【００６２】
図７〜図１０を参照して、通路ユニット画像群およびキャップユニット画像と、通路ユニットテーブル、キャップユニットテーブル、およびドア間距離テーブルとについて説明する。なお、図７はユニット記憶領域３２２に記憶される通路ユニット画像群およびキャップユニット画像に含まれる通路ユニットおよびキャップユニットの一例を示す図であり、図８は通路ユニットテーブルの一例を示す図であり、図９はキャップユニットテーブルの一例を示す図であり、図１０は通路ユニットに対するドア間距離テーブルの一例を示す図である。
【００６３】
図７（ａ）〜図７（ｄ）において、ユニット記憶領域３２２には、通路ユニット画像群として複数の通路ユニットＰＵが記憶されている。例えば、通路ユニットＰＵは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクトが移動可能な通路領域ＰＺを有している。また、図７（ｅ）において、ユニット記憶領域３２２には、キャップユニット画像として少なくとも１つのキャップユニットＣＵが記憶されている。例えば、キャップユニットＣＵは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクトが移動可能な通路領域ＰＺを有している。図７においては、それぞれの通路領域ＰＺを斜線領域で示している。通路領域ＰＺは、少なくとも一部が通路ユニットＰＵあるいはキャップユニットＣＵの上記矩形領域の境界と所定長さの線分として接して形成され、当該境界と接する線分にドアＤＲが設定される。なお、通路ユニットＰＵあるいはキャップユニットＣＵにおける上記線分の長さは、上述した部屋ユニットＲＵにおける線分の所定の長さと同じである。
【００６４】
例えば、図７（ａ）で示す通路ユニットＰＵａは、その通路領域ＰＺが矩形領域の境界を示す４つの辺のうち、対向する２辺にそれぞれ１箇所ずつ合計２箇所接しており、それぞれの接する箇所にドアＤＲ１およびＤＲ２が設定されている。図７（ｂ）で示す通路ユニットＰＵｂは、その通路領域ＰＺが上記４つの辺のうち、隣り合う２辺にそれぞれ１箇所ずつ合計２箇所接しており、それぞれの接する箇所にドアＤＲ１およびＤＲ２が設定されている。図７（ｃ）で示す通路ユニットＰＵｃは、上記４つの辺に通路領域ＰＺがそれぞれ１箇所ずつ合計４箇所接しており、それぞれの接する箇所にドアＤＲ１〜ＤＲ４が設定されている。図７（ｄ）で示す通路ユニットＰＵｄは、その通路領域ＰＺが上記４つの辺のうち、３辺にそれぞれ１箇所ずつ合計３箇所接しており、それぞれの接する箇所にドアＤＲ１〜ＤＲ３が設定されている。図７（ｅ）で示すキャップユニットＣＵは、その通路領域ＰＺが矩形領域の境界を示す４つの辺のうちの１辺に１箇所接しており、その接する箇所にドアＤＲ１が設定されている。
【００６５】
このように通路ユニットＰＵおよびキャップユニットＣＵには、その種類に応じた任意の形状の通路領域ＰＺが形成される。そして、通路ユニットＰＵに設定されるドアＤＲは、上記４つの辺の少なくとも２つ以上に所定の長さで設定される。また、キャップユニットＣＵに設定されるドアＤＲは、上記４つの辺の１つに１箇所だけ所定の長さで設定される。つまり、通路ユニットＰＵとキャップユニットＣＵとの違いは、ドアＤＲが設定される数であり、キャップユニットＣＵをドアＤＲが１つ設定される通路ユニットと定義することもできる。しかし、後述する処理の説明でそれらの区別を明確にするために、キャップユニットＣＵを通路ユニットＰＵと区別して説明する。また、部屋ユニットＲＵ、通路ユニットＰＵ、およびキャップユニットＣＵを総称して説明するときは、単にユニットと記載する。
【００６６】
図８において、ユニット記憶領域３２２に記憶される通路ユニットテーブルには、上述した通路ユニット画像群として含まれるそれぞれの通路ユニットＰＵに対するデータが記憶される。例えば、通路ユニットテーブルには、それぞれの通路ユニットＰＵに対して、そのサイズおよびドアＤＲの設定位置等が記憶されている。通路ユニットＰＵのサイズは、上記矩形領域の大きさであり、例えば、上述した通路ユニットＰＵａ〜ＰＵｄは、それぞれサイズ１×１である。通路ユニットＰＵに設定されるドアＤＲの設定位置は、上述した４つの辺を順にａ〜ｄで示し、ドアＤＲが設定される辺ａ〜ｄ上における位置を示す数値を付与する。上記位置を示す数値は、ドアＤＲが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図７（ａ）で示す通路ユニットＰＵａの上側の辺を辺ａとし、通路ユニットＰＵａのドアＤＲ１が辺ａの左端から１単位ユニット目に設定されているとすると、ドアＤＲ１の設定位置として「ａ１」が通路ユニットテーブルに記憶される。ＣＰＵ３１は、この通路ユニットテーブルを参照することによって、上記通路ユニット画像群を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれの通路ユニットＰＵのデータを取得することができる。
【００６７】
図９において、ユニット記憶領域３２２に記憶されるキャップユニットテーブルには、上述したキャップユニット画像として含まれるキャップユニットＣＵに対するデータが記憶される。例えば、キャップユニットテーブルには、キャップユニットＣＵに対して、そのサイズおよびドアＤＲの設定位置等が記憶されている。キャップユニットＣＵのサイズは、上記矩形領域の大きさであり、例えば、上述したキャップユニットＣＵは、サイズ１×１である。キャップユニットＣＵに設定されるドアＤＲの設定位置は、上述した４つの辺を順にａ〜ｄで示し、ドアＤＲが設定される辺ａ〜ｄ上における位置を示す数値を付与する。上記位置を示す数値は、ドアＤＲが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図７（ｅ）で示すキャップユニットＣＵの下側の辺を辺ｃとし、キャップユニットＣＵのドアＤＲ１が辺ｃの右端から１単位ユニット目に設定されているとすると、ドアＤＲ１の設定位置として「ｃ１」がキャップユニットテーブルに記憶される。ＣＰＵ３１は、このキャップユニットテーブルを参照することによって、上記キャップユニット画像を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれのキャップユニットＣＵのデータを取得することができる。なお、上述したように、キャップユニットＣＵは、ドアＤＲが１つ設定される通路ユニットと定義することも可能であり、キャップユニットＣＵのデータを上記通路ユニットテーブルに含めてもかまわない。
【００６８】
図１０において、ユニット記憶領域３２２に記憶される通路ユニットに対するドア間距離テーブルは、それぞれ通路ユニットＰＵに設定されたそれぞれのドアＤＲにおける相互の距離を示す距離データが記憶される。例えば、図１０（ａ）〜図１０（ｄ）は、それぞれ図７（ａ）〜図７（ｄ）で示した通路ユニットＰＵａ〜ＰＵｄに対するドア間距離テーブルを示している。上記距離データは、図７および図１０を対比してわかるように、画像で示されるドアＤＲの相互の距離が長いものに対して、所定の法則に基づいて相対的に大きな値となる。例えば、部屋ユニットＲＵにおいて、相対するそれぞれの辺に設けられたドアＤＲの距離データは、ドア間距離テーブルにおいて距離データ「２」が示され、隣接するそれぞれの辺に設けられたドアＤＲの距離データは、ドア間距離テーブルにおいて距離データ「１」が示される。なお、キャップユニットＣＵは、ドアＤＲが１つのみ設定されているため、ドア間距離テーブルを作成しなくてもかまわない。ＣＰＵ３１は、この通路ユニットに対するドア間距離テーブルを参照することによって、上記通路ユニット画像群を処理毎に画像解析しなくても、後述するゲーム要素配置処理に必要なそれぞれの通路ユニットＰＵに設けられたドアＤＲの距離データを取得することができる。
【００６９】
次に、図１１〜図１６を参照して、ゲームシステム１におけるゲーム装置３によって実行されるマップ生成処理について説明する。なお、図１１は、ゲーム装置３によって実行されるマップ生成処理の全体処理を示すフローチャートである。そして、図１２は図１１のユニット配置処理の詳細な動作を示すサブルーチンであり、図１３は図１１のユニット接続処理の詳細な動作を示すサブルーチンであり、図１４および図１５は図１１のゲーム要素配置処理の詳細な動作を示すサブルーチンである。また、図１６は、図１４のスコア計算処理の詳細な動作を示すサブルーチンである。
【００７０】
ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、ワークメモリ３２等の各ユニットが初期化される。そして、光ディスク４に格納されたマップ生成プログラム等のプログラムと各種データが光ディスクドライブ３７を介してワークメモリ３２に読み込まれ、そのマップ生成プログラムの実行が開始される。
【００７１】
図１１において、ＣＰＵ３１は、部屋の数ＲＮおよび選択係数ＳＦとを設定し（ステップＳ１）、処理を次のステップに進める。部屋の数ＲＮは、当該マップ生成プログラムによって生成されるマップ上に配置される部屋ユニットＲＵの数である。選択係数ＳＦは、ユニット同士を接続する際に、接続されるユニットの種類を制御する係数であり、本実施例においては０〜１の間の数値が設定されるが詳細は後述する。これら部屋の数ＲＮおよび選択係数ＳＦは、プログラムによってＣＰＵ３１が自動的に設定してもよいし、プレイヤがコントローラ６を操作することによる指示によって、手動で設定されてもかまわない。
【００７２】
次に、ＣＰＵ３１は、ユニット記憶領域３２２に記憶される部屋ユニットテーブルを参照して、スタートスロットＳｓを含む部屋ユニットＲＵを選択する（ステップＳ２）。そして、ＣＰＵ３１は、ユニット記憶領域３２２に記憶された部屋ユニット画像群から上記ステップＳ２で選択された部屋ユニットＲＵに相当する画像をスタートユニットとして抽出して、当該部屋ユニットをゲームマップを生成する仮想的な所定の平面（図２のワークメモリ３２上に形成される領域であり、以下、マップ領域と記載する）に配置し（ステップＳ３）、次のステップに処理を進める。ここで、ＣＰＵ３１は、部屋ユニットＲＵを９０°毎に回転させて上記マップ領域に配置することが可能である。つまり、図４で示した部屋ユニットＲＵを０°とした場合、ＣＰＵ３１は、時計方向に９０°、１８０°、および２７０°回転させてそれぞれの部屋ユニットＲＵを上記マップ領域に配置することができる。このようにすることによって、データ量をおさえつつ部屋ユニットの多様性を増すことができる。なお、ＣＰＵ３１は、上記ステップＳ３における部屋ユニットＲＵの回転角度を０°、９０°、１８０°、および２７０°のうちから、ランダムに選択する。
【００７３】
次に、ＣＰＵ３１は、上記マップ領域に既に配置されているユニットに設定されているドアＤＲに、空きドアがあるか否かを判断する（ステップＳ４）。ここで、空きドアとは、上述した部屋ユニットＲＵや通路ユニットＰＵに設定されているドアＤＲのうち、他のユニットのドアＤＲと未接続状態のものを示している。そして、ＣＰＵ３１は、空きドアがある場合、処理を次のステップＳ５に進め、空きドアがない場合、処理を次のステップＳ８に進める。
【００７４】
ステップＳ５では、ＣＰＵ３１は、上記マップ領域に新たにユニットを配置する処理を行い、処理を次のステップＳ６に進める。図１２で示すユニット配置処理の詳細な動作を示すサブルーチンを参照して、このステップＳ５で行う詳細な動作について説明する。
【００７５】
図１２において、ＣＰＵ３１は、上記マップ領域に既に配置されているユニットの空きドアの１つをランダムで選択し（ステップＳ５１）、次のステップに処理を進める。なお、後述するユニットの配置によって上記マップ領域に通路ユニットＰＵが配置されている場合があり、ステップＳ５１では、部屋ユニットＲＵの他に通路ユニットＰＵのドアＤＲが空きドアとして選択されることがある。
【００７６】
次に、ＣＰＵ３１は、上記乱数生成プログラムを実行して、所定の範囲（例えば、０〜１）の乱数を生成し（ステップＳ５２）、処理を次のステップに進める。
【００７７】
次に、ＣＰＵ３１は、上記ステップＳ５２で生成された乱数が、上記ステップＳ１で設定された選択係数ＳＦより大きいか否かを判断する（ステップＳ５３）。なお、ＣＰＵ３１は、上記ステップＳ５１で選択された空きドアが部屋ユニットＲＵに設定されたドアＤＲである場合、上記選択係数ＳＦに１以上の所定の倍数Ｍ（例えば、１．５）を乗算して、その乗算結果と上記乱数とを上記ステップＳ５３で比較する。そして、ＣＰＵ３１は、上記乱数が選択係数ＳＦより大きい場合、処理を次のステップＳ５４に進め、上記乱数が選択係数ＳＦ以下の場合、処理を次のステップＳ５９に進める。
【００７８】
ステップＳ５４では、ＣＰＵ３１は、ステップＳ５１で選択された空きドアに接続するように配置可能な部屋ユニットＲＵが上記部屋ユニット画像群にあるか否かを判断する。なお、以下の説明において、ステップＳ５１で選択された空きドアを「選択ドア」と省略する。ここで、ＣＰＵ３１がステップＳ５４で行う配置可能の判断について説明する。新たに配置される部屋ユニットＲＵは、その部屋ユニットＲＵに設定されているドアＤＲと選択ドアとが接続するように配置される。図１７は、マップ領域に既に配置されている部屋ユニットＲＵａのドアＤＲ３がステップＳ５１で選択され、新たに部屋ユニットＲＵｃが配置されるときに、部屋ユニットＲＵａのドアＤＲ３に部屋ユニットＲＵｃのドアＤＲ１が接続されて配置された一例を示している。上記配置可能の判断は、新たに配置される部屋ユニットＲＵが、自身の何れかのドアＤＲと選択ドアとが接続されるようにして配置した場合に、（１）マップ領域に既に配置されている他のユニットと自身のユニットが重なる場合、（２）自身の他の空きドアがマップ領域に既に配置されている他のユニットと接するために接続不可能になる場合、（３）自身のユニットを配置することによって、既に配置されたユニットの空きドアを接続不可能にする場合、の（１）〜（３）のいずれかの場合に、当該部屋ユニットＲＵを配置不可能とする。この判断は、部屋ユニットＲＵを９０°毎に回転させて、回転後のユニットについてそれぞれ判断されるので、部屋ユニットＲＵに設定されている全てのドアＤＲについて選択ドアに接続して配置可能か否かが判断される。ＣＰＵ３１は、このような配置可能の判断を、上記部屋ユニットテーブルに記憶されているそれぞれの部屋ユニットＲＵのサイズおよびドアＤＲの設定位置のデータを参照して行う。そして、ＣＰＵ３１は、配置可能な部屋ユニットＲＵが上記部屋ユニット画像群に１つでもある場合、処理を次のステップＳ５５に進め、配置可能な部屋ユニットＲＵが上記部屋ユニット画像群に１つもない場合、処理を次のステップＳ５６に進める。
【００７９】
ステップＳ５５では、ＣＰＵ３１は、上記ステップＳ５４で配置可能と判断した部屋ユニットＲＵの中から１つの部屋ユニットＲＵをランダムに選択する。そして、ＣＰＵ３１は、処理を次のステップＳ６２に進める。
【００８０】
一方、ステップＳ５６では、ＣＰＵ３１は、選択ドアに接続するように配置可能な通路ユニットＰＵが上記通路ユニット画像群にあるか否かを判断する。ここで、ＣＰＵ３１がステップＳ５６で行う配置可能の判断について説明する。新たに配置される通路ユニットＰＵは、その通路ユニットＰＵに設定されているドアＤＲと選択ドアとが接続するように配置される。図１８は、マップ領域に既に配置されている部屋ユニットＲＵａのドアＤＲ３がステップＳ５１で選択され、新たに通路ユニットＰＵｂが配置されるときに、部屋ユニットＲＵａのドアＤＲ３に通路ユニットＰＵｂのドアＤＲ２が接続されて配置された一例を示している。上記配置可能の判断は、上記配置可能の判断は、前述のステップＳ５４の説明における部屋ユニットＲＵの配置可能の判断と同様である。そして、ＣＰＵ３１は、配置可能な通路ユニットＰＵが上記通路ユニット画像群に１つでもある場合、処理を次のステップＳ５７に進め、配置可能な通路ユニットＰＵが上記通路ユニット画像群に１つもない場合、処理を次のステップＳ５８に進める。
【００８１】
ステップＳ５７では、ＣＰＵ３１は、上記ステップＳ５６で配置可能と判断した通路ユニットＰＵの中から１つの通路ユニットＰＵをランダムに選択する。そして、ＣＰＵ３１は、処理を次のステップＳ６２に進める。一方、ステップＳ５８では、ＣＰＵ３１は、キャップユニットＣＵを選択して、処理を次のステップＳ６２に進める。
【００８２】
ＣＰＵ３１は、上記ステップＳ５３において、上記乱数が選択係数ＳＦ以下の場合、処理をステップＳ５９に進めている。ステップＳ５９では、ＣＰＵ３１は、選択ドアに配置可能な通路ユニットＰＵが上記通路ユニット画像群にあるか否かを判断する。そして、ＣＰＵ３１は、配置可能な通路ユニットＰＵが上記通路ユニット画像群に１つでもある場合、処理を次のステップＳ６０に進め、配置可能な通路ユニットＰＵが上記通路ユニット画像群に１つもない場合、処理を次のステップＳ６１に進める。このステップＳ５９における動作は、上記ステップＳ５６と同様であるため、詳細な説明を省略する。
【００８３】
ステップＳ６０では、ＣＰＵ３１は、上記ステップＳ５９で配置可能と判断した通路ユニットＰＵの中から１つの通路ユニットＰＵをランダムに選択する。そして、ＣＰＵ３１は、処理を次のステップＳ６２に進める。一方、ステップＳ６１では、ＣＰＵ３１は、キャップユニットＣＵを選択して、処理を次のステップＳ６２に進める。
【００８４】
ステップＳ６２では、ＣＰＵ３１は、上記ステップＳ５５、Ｓ５７、Ｓ５８、Ｓ６０、あるいはＳ６１で選択されたユニットを、自身のドアＤＲと選択ドアとを接続するようにマップ領域に配置する。ここで、選択されたユニットにおいて、複数のドアＤＲと選択ドアとを接続して配置可能である場合、ＣＰＵ３１は、選択ドアと接続するドアＤＲをランダムで選択する。そして、ＣＰＵ３１は、当該サブルーチンによるユニット配置処理を終了して、図１１のステップＳ６に処理を進める。
【００８５】
例えば、部屋ユニットＲＵａのドアＤＲ３が選択ドアに設定され、その選択ドアと部屋ユニットＲＵｃのドアＤＲ１とを接続して配置した場合、図１７に示すように部屋ユニットＲＵａおよびＲＵｃの互いに相対する矩形領域の１辺の少なくとも１部が接した状態で配置される。また、部屋ユニットＲＵａのドアＤＲ３が選択ドアに設定され、その選択ドアと通路ユニットＰＵｂのドアＤＲ１とを接続して配置した場合、図１８に示すように部屋ユニットＲＵａおよび通路ユニットＰＵｂの互いに相対する矩形領域の１辺の少なくとも１部が接した状態で配置される。さらに、図１９で示すように、部屋ユニットＲＵａのドアＤＲ３が選択ドアに設定され、その選択ドアとキャップユニットＣＵのドアＤＲ１とを接続して配置した場合、部屋ユニットＲＵａおよびキャップユニットＣＵの互いに相対する矩形領域の１辺の少なくとも１部が接した状態で配置される。図１７〜図１９に示すように、ユニット同士がドアＤＲを介して接続された場合、それぞれのユニットに形成された部屋領域ＲＺあるいは通路領域ＰＺが当該ドアＤＲを介して接続される。これらのドアＤＲの長さ（つまり、所定の線分長さ）は、同一であるため、上記領域が寸法差なく連結される。また、図１９に示すように、マップ領域に配置されたユニットにキャップユニットＣＵがドアＤＲを介して接続された場合、マップ領域に配置されたユニットに形成された部屋領域ＲＺあるいは通路領域ＰＺは、当該ドアＤＲを介して閉塞領域（行き止まり）を形成する。
【００８６】
ここで、図１２で示した上記ステップＳ５３〜Ｓ６１に注目する。ＣＰＵ３１は、上記ステップＳ５３において上記乱数が選択係数ＳＦより大きいか否かを判断している。そして、ＣＰＵ３１は、上記乱数が選択係数ＳＦより大きい場合、上記ステップＳ５４において部屋ユニットＲＵが配置可能か否かを判断し、上記乱数が選択係数ＳＦ以下の場合、上記ステップＳ５９において通路ユニットＰＵが配置可能か否かを判断している。つまり、ＣＰＵ３１は、上記乱数が選択係数ＳＦより大きい場合、部屋ユニットＲＵを優先的にマップ領域に配置し、上記乱数が選択係数ＳＦ以下の場合、部屋ユニットＲＵをマップ領域に配置しない。したがって、選択係数ＳＦの値によって、マップ領域に配置される部屋ユニットＲＵの割合を制御することができる。具体的には、選択係数ＳＦを乱数が生成される範囲の中央値より小さく設定することによって、部屋ユニットＲＵがマップ領域に配置される割合が大きくなり、選択係数ＳＦを当該範囲の中央値より大きく設定することによって、通路ユニットＰＵがマップ領域に配置される割合が大きくなる。
【００８７】
一方、ＣＰＵ３１は、上記ステップＳ５１で選択された空きドアが部屋ユニットＲＵに設定されたドアＤＲである場合、上記選択係数ＳＦに１以上の所定の倍数Ｍを乗算して、その乗算結果と上記乱数とを上記ステップＳ５３で比較する。したがって、倍数Ｍが大きいほど上記乱数と比較する選択係数ＳＦが大きくなり、ＣＰＵ３１が上記ステップＳ５９に処理を進める確率が高くなる。つまり、倍率Ｍが大きいほど、通路ユニットＰＵが優先的にマップ領域に配置される。したがって、倍率Ｍの値によって、マップ領域に配置された部屋ユニットＲＵと接続されるユニットの種類を制御することができる。具体的には、倍率Ｍを小さく設定することによって、部屋ユニットＲＵ同士がマップ領域で接続される確率が大きくなり、倍率Ｍを大きく設定することによって、部屋ユニットＲＵには通路ユニットＰＵがマップ領域で接続される確率が大きくなる。
【００８８】
このように、選択係数ＳＦによって、マップ領域に２種類のユニットがそれぞれ配置される割合を制御することができる。また、倍率Ｍによって２種類のユニットの一方に他方のユニットが接続されて配置される確率を制御することができる。つまり、選択係数ＳＦおよび倍率Ｍを調整することによって、マップ領域に配置される２種類のユニットの割合、および２種類のユニットが互いに接続される相性を考慮したマップを生成することができる。
【００８９】
なお、上述の説明では、全てのユニットに共通する選択係数ＳＦを設定したが、各ユニットそれぞれについて、あるいは各ユニットに設けられた各ドアＤＲそれぞれについて、異なる選択係数ＳＦを個別に設定してもかまわない。これによって、さらにユニット間の相性が考慮されたマップを生成することが可能となる。
【００９０】
図１１に戻り、ステップＳ６では、ＣＰＵ３１は、マップ領域に配置された部屋ユニットＲＵの数が、上記ステップＳ１で設定された部屋の数ＲＮに到達したか否かを判断する。そして、ＣＰＵ３１は、部屋ユニットＲＵの数が部屋の数ＲＮに未到達の場合、上記ステップＳ４に戻って処理を継続し、部屋の数ＲＮに到達した場合、次のステップＳ７に処理を進める。
【００９１】
ステップＳ７では、ＣＰＵ３１は、上記マップ領域に配置されたユニットの空きドア同士を接続する処理を行い、処理を次のステップＳ８に進める。図１３で示すユニット接続処理の詳細な動作を示すサブルーチンを参照して、このステップＳ７で行う詳細な動作について説明する。
【００９２】
図１３において、ＣＰＵ３１は、上記マップ領域に配置されているユニットに設定されているドアＤＲに、空きドアがあるか否かを判断する（ステップＳ７１）。このステップＳ７１の処理は、上記ステップＳ４と同様であるため、詳細な説明を省略する。そして、ＣＰＵ３１は、空きドアがある場合、処理を次のステップＳ７２に進め、空きドアがない場合、当該サブルーチンによるユニット接続処理を終了する。
【００９３】
ステップＳ７２では、ＣＰＵ３１は、空きドアの１つを選択し、その空きドアの開口方向（つまり、空きドアを有するユニットと逆の方向）の所定領域内に、他の空きドアがあるか否かを判断する。そして、ＣＰＵ３１は、所定領域内に他の空きドアがある場合、処理を次のステップＳ７３に進め、他の空きドアがない場合、処理を次のステップＳ７４に進める。
【００９４】
ステップＳ７３では、ＣＰＵ３１は、上記ステップＳ７２で選択された空きドアと上記所定領域内に存在する他の空きドアとを通路ユニットＰＵで接続してマップ領域に配置し、上記ステップＳ７１に戻って処理を継続する。一方、ステップＳ７４では、ＣＰＵ３１は、上記ステップＳ７２で選択された空きドアにキャップユニットＣＵを接続してマップ領域に配置し、上記ステップＳ７１に戻って処理を継続する。ここで、図２０を参照して、ＣＰＵ３１がステップＳ７２〜Ｓ７４で行う処理について説明する。なお、図２０は、ＣＰＵ３１が行うユニット接続処理の一例を説明するための図である。
【００９５】
図２０において、前述の図１１におけるステップＳ６でＹｅｓになった時点で、マップ領域には、２つの部屋ユニットＲＵ１およびＲＵ２が４つの通路ユニットＰＵを介して接続されて配置されている。そして、一方の部屋ユニットＲＵ１には、３つの空きドアがあり、それぞれの空きドアの位置を基準として開口方向に向かって、例えばサイズ１０×１０の領域Ｚ１〜Ｚ３が示されている。領域Ｚ１およびＺ２は、その領域内に他の空きドアが存在しないため、ＣＰＵ３１は、上記ステップＳ７２において「他の空きドアなし」と判断する。そして、ＣＰＵ３１は、上記ステップＳ７４において領域Ｚ１およびＺ２に対応する空きドアに、それぞれキャップユニットＣＵを接続して配置する（領域Ｚ１およびＺ２内に示した一点鎖線の領域）。
【００９６】
一方、領域Ｚ３は、その領域内に他方の部屋ユニットＲＵ２の空きドアが存在するため、ＣＰＵ３１は、上記ステップＳ７２において「他の空きドアあり」と判断する。そして、ＣＰＵ３１は、上記ステップＳ７３において領域Ｚ３に対応する部屋ユニットＲＵ１の空きドアと領域Ｚ３内に存在する部屋ユニットＲＵ２の空きドアとを、通路ユニットＰＵを組み合わせて接続する。例えば、図２０においては、３つの通路ユニットＰＵａおよび１つの通路ユニットＰＵｂを組み合わせて、部屋ユニットＲＵ１およびＲＵ２の空きドアを接続してマップ領域に配置している（領域Ｚ３内に示した一点鎖線の領域）。
【００９７】
他方の部屋ユニットＲＵ２には、２つの空きドアがあり、それぞれの空きドアの開口方向に対して、領域Ｚ４およびＺ５が示されている。領域Ｚ４は、その領域内に他の空きドアが存在しないため、ＣＰＵ３１は、上記ステップＳ７２で「他の空きドアなし」と判断する。そして、ＣＰＵ３１は、上記ステップＳ７４において領域Ｚ４に対応する空きドアに、キャップユニットＣＵを接続して配置する（領域Ｚ４内に示した一点鎖線の領域）。
【００９８】
一方、領域Ｚ５は、その領域内に一方の部屋ユニットＲＵ１の空きドアが存在するため、ＣＰＵ３１は、上記ステップＳ７２において「他の空きドアあり」と判断する。そして、ＣＰＵ３１は、上記ステップＳ７３において領域Ｚ５に対応する部屋ユニットＲＵ２の空きドアと領域Ｚ５内に存在する部屋ユニットＲＵ１の空きドアとを、通路ユニットＰＵを組み合わせて接続する。ここで、この領域Ｚ５を用いた判断を経て通路ユニットＰＵが配置される結果と、上記領域Ｚ３を用いた判断を経て通路ユニットＰＵが配置される結果とは、同じである。上記ステップＳ７２およびＳ７３によるＣＰＵ３１の動作では、何れか一方の空きドアが先に処理対象となるため、他方の空きドアは、当該先の処理によって通路ユニットＰＵが接続されるため処理対象から除外されることになる。
【００９９】
図２１は、上述したマップ生成処理によって生成されるマップの一例である。図２１に示すように、上述したマップ生成処理においてはマップ領域に配置されたユニットと必ず接続して新たなユニットを配置していくため、複数のグループに分割されたマップは生成されない。つまり、プレイヤオブジェクト等のオブジェクトが移動あるいは配置可能な領域が一体で、かつ閉じられて形成される。
【０１００】
図１１に戻り、ステップＳ８において、ＣＰＵ３１は、上記ゲーム要素配置プログラムを実行して上記ステップＳ７までの処理によって生成されたマップに上記ゲーム要素を配置する処理を行い、当該フローチャートによるマップ生成処理を終了する。図１４および図１５で示すゲーム要素配置処理の詳細な動作を示すサブルーチンを参照して、このステップＳ８で行う詳細な動作について説明する。
【０１０１】
図１４において、ＣＰＵ３１は、上記ステップＳ３でスタートユニットとして配置された部屋ユニットＲＵが有するスタートスロットＳｓから１つを選択して、生成したマップのスタート位置に設定し（ステップＳ８１）、処理を次のステップに進める。
【０１０２】
次に、ＣＰＵ３１は、現在生成されているマップを構成するそれぞれのユニットに対して、スコア計算処理を行い（ステップＳ８２）、処理を次のステップに進める。以下、図１６で示すスコア計算処理の詳細な動作を示すサブルーチンを参照して、このステップＳ８２で行う詳細な動作について説明する。
【０１０３】
図１６において、ＣＰＵ３１は、上記マップ領域に配置されているそれぞれのユニットに付与されるユニットスコアＳｃを全て「−１」（「−１」はユニットスコアＳｃが未設定であることを示している）に設定し（ステップＳ８２１）、次のステップに処理を進める。ここで、ユニットスコアＳｃとは、上記マップ領域に配置されるユニット（部屋ユニットＲＵ、通路ユニットＰＵ、およびキャップユニットＣＵ）のそれぞれに付与される数値である。このユニットスコアＳｃによって、プレイヤオブジェクトがスタートユニットを起点としたそれぞれのユニットに到達するまでの距離や、当該ユニットを通過する難易度が表現される。
【０１０４】
次に、ＣＰＵ３１は、上記マップ領域に配置されているそれぞれのユニットに設定されたドアＤＲに付与されるドアスコアＳｃｄを全て「−１」（「−１」はドアスコアＳｃｄが未設定であることを示している）に設定し（ステップＳ８２２）、次のステップに処理を進める。ここで、ドアスコアＳｃｄとは、上記マップ領域に配置される部屋ユニットＲＵ、通路ユニットＰＵ、およびキャップユニットＣＵに設定されているそれぞれのドアＤＲに付与される数値である。このドアスコアＳｃｄによって、プレイヤオブジェクトがスタートユニットを起点としたそれぞれのドアＤＲに到達するまでの距離や、当該ドアＤＲを通過する難易度が表現される。なお、上述したように、それぞれのユニットが有するドアＤＲを接続することによってユニットが配置されており、ユニットの接続部には、２つのユニットにそれぞれ設けられた２つのドアＤＲが重なっている。ドアスコアＳｃｄは、この重なった２つのドアＤＲに対してそれぞれ別途に付与される（ただし、後述するように、この重なった２つのドアＤＲのドアスコアＳｃｄは、結果的に同じ値となる）。
【０１０５】
次に、ＣＰＵ３１は、スタートユニットに配置された敵キャラクタの強さ（属性値）の合計値（以下、敵スコアと記載する）を計算し、その敵スコアを当該スタートユニットのユニットスコアＳｃとして確定して（ステップＳ８２３）、処理を次のステップに進める。この敵スコアの詳細については後述する。
【０１０６】
次に、ＣＰＵ３１は、上記ステップＳ８２３で確定したユニットスコアＳｃを、スタートユニットに設けられた全てのドアＤＲに対するそれぞれのドアスコアＳｃｄとして仮設定し（ステップＳ８２４）、処理を次のステップに進める。ここで、スタートユニットに設けられたドアＤＲに後述するゲートＧが配置されている場合、当該ゲートＧのゲートスコアを加算して、当該ドアＤＲのドアスコアＳｃｄを仮設定する。このゲートスコアの詳細については後述する。
【０１０７】
次に、ＣＰＵ３１は、現在、仮設定されているドアスコアＳｃｄから最小値のドアスコアＳｃｄを選択し、当該ドアスコアＳｃｄを確定する（ステップＳ８２５）。ここで、上記ステップＳ８２５で最小値のドアスコアＳｃｄが複数ある場合、ＣＰＵ３１は、例えば、上記ステップＳ３〜Ｓ７のマップ領域に配置されたユニットの順で、最も先に配置されたユニットに関連するドアスコアＳｃｄを優先的に選択し、当該ドアスコアＳｃｄを確定する。そして、ＣＰＵ３１は、上記ステップＳ８２５でドアスコアＳｃｄが確定されたドアＤＲと接続され重なっている他のドアＤＲに対して、同じドアスコアＳｃｄを付与して確定し（ステップＳ８２６）、処理を次のステップに進める。
【０１０８】
次に、ＣＰＵ３１は、上記ステップＳ８２６でドアスコアＳｃｄが確定されたドアＤＲが属しているユニットに設定されているユニットスコアＳｃが既に確定されているか否かを判断する（ステップＳ８２７）。そして、ＣＰＵ３１は、ユニットスコアＳｃが未確定の場合、処理を次のステップＳ８２８に進め、ユニットスコアＳｃが確定済の場合、処理を次のステップＳ８２９に進める。
【０１０９】
ステップＳ８２８では、ＣＰＵ３１は、上記ステップＳ８２７で処理対象となったユニットに配置された敵キャラクタの敵スコアを計算し、その敵スコアに上記ステップＳ８２６で確定されたドアスコアＳｃｄを加算して、その加算結果を当該ユニットのユニットスコアＳｃとして確定し、次のステップＳ８２９に処理を進める。ここで、あるユニット内について１つでもドアスコアＳｃｄが確定されたときに、そのドアスコアＳｃｄに敵スコアを加算してユニットスコアＳｃが設定されるので、ユニットが有するドアのドアスコアＳｃｄのうち最小のドアスコアＳｃｄに基づいて、ユニットスコアＳｃが設定されることになる。なお、本実施例では、「ユニットスコア＝（最小の）ドアスコア＋敵スコア」としたが、「ユニットスコア＝（最小の）ドアスコア」としてもよい。前者の場合には、ユニットスコアは、そのユニットに到達した後そのユニットを通過する困難度を示す値となる。一方、後者の場合は、ユニットスコアはそのユニット内に存在する敵を考慮しない値となり、そのユニットに到達する困難度を示す値となる。
【０１１０】
ステップＳ８２９では、ＣＰＵ３１は、生成されたマップ上にドアスコアＳｃｄが未確定のドアＤＲがあるか否かを判断する。そして、ＣＰＵ３１は、ドアスコアＳｃｄが未確定のドアＤＲがある場合、処理を次のステップＳ８３０に進め、全てのドアＤＲのドアスコアＳｃｄが確定している場合、当該サブルーチンによるスコア計算処理を終了する。
【０１１１】
ステップＳ８３０では、ＣＰＵ３１は、ユニットスコアＳｃが確定されているユニットについて、未確定のドアスコアＳｃｄを、同じユニット内で確定済みのドアスコアＳｃｄに基づいて計算し、上記ステップＳ８２５に戻って処理を継続する。具体的には、ドアスコアＳｃｄが未確定のドアＤＲをドアＡとし、ドアスコアＳｃｄが確定済みのドアＤＲをドアＢとして、「ドアＡのドアスコアＳｃｄ＝ドアＢのドアスコアＳｃｄ＋ドアＡおよびドアＢの間のドア間距離データ＋敵スコア＋ゲートスコア」で計算される値に設定する。上述したステップＳ８２１〜Ｓ８２９の手順で処理すれば、ユニットスコアＳｃが確定されているユニットは、ドアスコアＳｃｄが確定されたドアＤＲを少なくとも１つ含んでいる。上記ステップＳ８３０では、ＣＰＵ３１は、このユニットに属するドアスコアＳｃｄが未確定のドアＤＲに対して、同じユニットに属するドアスコアＳｃｄが確定されたドアＤＲからのドア間距離データを、上述したドア間距離テーブルを参照して抽出する。ＣＰＵ３１は、確定済みのドアスコアＳｃｄおよび上記ドア間距離データを加算する。そして、そのユニット内に配置された敵キャラクタの強さ（属性値）の合計値（敵スコア）を加算し、さらに、ドアスコアＳｃｄが未確定のドアＤＲにゲートＧが設置されている場合、さらに当該ゲートＧのゲートスコアを加算して、ドアスコアＳｃｄを仮設定する。なお、ステップＳ８２のスコア計算処理においては、敵キャラクタやゲートがまだ配置されていないので、「ドアＡのドアスコアＳｃｄ＝ドアＢのドアスコアＳｃｄ＋ドアＡおよびドアＢの間のドア間距離データ」となる。
【０１１２】
また、スコア計算処理は、後述のステップＳ８６およびＳ９４においても実行されるが、ステップＳ８６のスコア計算処理においては、ゲートがまだ配置されていないので、「ドアＡのドアスコアＳｃｄ＝ドアＢのドアスコアＳｃｄ＋ドアＡおよびドアＢの間のドア間距離データ＋敵スコア」となる。そして、ステップＳ９４のスコア計算処理においては、「ドアＡのドアスコアＳｃｄ＝ドアＢのドアスコアＳｃｄ＋ドアＡおよびドアＢの間のドア間距離データ＋敵スコア＋ゲートスコア」となる。
【０１１３】
なお、あるユニット内でドアスコアＳｃｄが確定済みのドアＤＲが複数存在する場合には、その確定済みのドアＤＲそれぞれについて上記式によって未確定のドアスコアＳｃｄを計算する。すなわち、確定済みのドアをドアＢ１およびドアＢ２として、「ドアＡのドアスコアＳｃｄ１＝ドアＢ１のドアスコアＳｃｄ＋ドアＡおよびドアＢ１の間のドア間距離データ＋敵スコア＋ゲートスコア」と、「ドアＡのドアスコアＳｃｄ２＝ドアＢ２のドアスコアＳｃｄ＋ドアＡおよびドアＢ２の間のドア間距離データ＋敵スコア＋ゲートスコア」の両方を計算し、ドアスコアＳｃｄ１およびドアスコアＳｃｄ２のうちの小さい方を選択する。確定済みのドアが３つ以上ある場合も同様である。
【０１１４】
ここで、図２２および図２３を参照して、上記ステップＳ８２におけるスコア計算処理の一例を説明する。なお、図２２および図２３は、ステップＳ８２の状態であるので、敵キャラクタおよびゲートが配置されていない。図２２（ａ）は、上記ステップＳ８２１およびＳ８２２の処理によって、ユニットスコアＳｃおよびドアスコアＳｃｄが設定されたマップの一例である。このマップには、部屋ユニットＲＵ１〜ＲＵ３、通路ユニットＰＵ１〜ＰＵ６、およびキャップユニットＣＵが配置されている。部屋ユニットＲＵ１は、スタートユニットであり、キャップユニットＣＵが接続されている。また、部屋ユニットＲＵ１は、１つの通路ユニットＰＵ１を介して部屋ユニットＲＵ２と相互に接続されている。さらに、別のルートとして、部屋ユニットＲＵ１は、４つの通路ユニットＰＵ２〜ＰＵ５を介して部屋ユニットＲＵ２と相互に接続されている。そして、部屋ユニットＲＵ２は、１つの通路ユニットＰＵ６を介して部屋ユニットＲＵ３と相互に接続されている。
【０１１５】
部屋ユニットＲＵ１〜ＲＵ３、通路ユニットＰＵ１〜ＰＵ６、およびキャップユニットＣＵには、それぞれユニットスコアＳｃとして「−１」が設定されている。図２２および図２３においては、それぞれのユニットに設定されたユニットスコアＳｃの数値をそれぞれユニット内部に示している。そして、上記ユニットに設定されたそれぞれのドアＤＲには、それぞれドアスコアＳｃｄとして「−１」が設定されている。図２２および図２３においては、ユニット間の接続部からの引き出し線の双方にドアスコアＳｃｄとして２つの数値を示している。これらは、その接続部に設けられた２つの重なったドアＤＲに設定されたそれぞれのドアスコアＳｃｄを示している。なお、引き出し線の一方側に示された数値は、当該引き出し線が示す接続部の一方側に配置されたユニットのドアＤＲに設定されたドアスコアＳｃｄであり、引き出し線の他方側に示された数値は、当該引き出し線が示す接続部の他方側に配置されたユニットのドアＤＲに設定されたドアスコアＳｃｄである。
【０１１６】
上記ステップＳ８２３の処理においては、スタートユニット（部屋ユニットＲＵ１）に敵キャラクタが配置されていないため、スタートユニットのユニットスコアＳｃは、「０」に確定される。なお、図２２および図２３において、確定されたユニットスコアＳｃおよびドアスコアＳｃｄは、それぞれの数値に下線を付して示している。そして、上記ステップＳ８２４の処理においては、部屋ユニットＲＵ１のドアＤＲにはゲートＧが配置されていないため、部屋ユニットＲＵ１のドアスコアＳｃｄは、全て「０」に仮設定される。これらのドアスコアＳｃｄは、上記ステップＳ８２５〜Ｓ８３０の処理を繰り返すことによって、全て「０」に確定される。これらの確定の際、ステップＳ８２６の処理によって、部屋ユニットＲＵ１に接続する他のユニットのドアＤＲのドアスコアＳｃｄも全て「０」に確定され、これらの確定されたドアＤＲが属する通路ユニットＰＵ１およびＰＵ２と、キャップユニットＣＵとのユニットスコアＳｃがそれぞれ「０」で確定される。そして、通路ユニットＰＵ１の未確定のドアスコアＳｃｄ（つまり、部屋ユニットＲＵ２と接続するドアＤＲのドアスコアＳｃｄ）は、通路ユニットＰＵ１の確定済みのドアスコアＳｃｄ＝０および双方のドアＤＲの間に設定されているドア間距離データ「２」を加算して、「２」が仮設定される。一方、通路ユニットＰＵ２の未確定のドアスコアＳｃｄ（つまり、通路ユニットＰＵ３と接続するドアＤＲのドアスコアＳｃｄ）は、通路ユニットＰＵ２の確定済みのドアスコアスコアＳｃｄ＝０および双方のドアＤＲの間に設定されているドア間距離データ「１」を加算して、「１」が仮設定される（図２２（ｂ）の状態）。なお、図２２および図２３において、仮設定されたドアスコアＳｃｄは、その数値を破線枠で囲んで示している。
【０１１７】
上記ステップＳ８２５では、図２２（ｂ）に示すマップの場合、通路ユニットＰＵ１のドアＤＲと通路ユニットＰＵ２のドアＤＲが仮設定されており、それぞれドアスコアＳｃｄが「２」および「１」である。この場合、通路ユニットＰＵ２のドアスコア＝１が最小値であるため、通路ユニットＰＵ２のドアスコアＳｃｄを確定する。次に、上記ステップＳ８２６で、通路ユニットＰＵ２の確定されたドアＤＲに連結される通路ユニットＰＵ３のドアＤＲのドアスコアＳｃｄを同じ値（「１」）に確定する。そして、上記ステップＳ８２８で、通路ユニットＰＵ３のユニットスコアＳｃ＝１に確定する。その後、ステップＳ８３０で、通路ユニットＰＵ３の未確定のドアスコアＳｃｄ（つまり、通路ユニットＰＵ４と接続するドアＤＲのドアスコアＳｃｄ）は、通路ユニットＰＵ３の確定済みのドアスコアＳｃｄ＝１に、双方のドアＤＲの間に設定されているドア間距離データ「２」を加算して、「３」が仮設定される（図２２（ｃ）の状態）。その後、ステップＳ８２５で、仮設定されたドアスコアＳｃｄ（通路ユニットＰＵ１のドアＤＲの「２」および通路ユニットＰＵ３のドアＤＲの「３」）のうち最小のドアスコアＳｃｄ（通路ユニットＰＵ１のドアＤＲの「２」）が確定される。以降、このような処理が繰り返されて、ユニットスコアＳｃおよびドアスコアＳｃｄの確定が進行する。
【０１１８】
図２３（ａ）は、部屋ユニットＲＵ２のユニットスコアＳｃが確定され、部屋ユニットＲＵ２に属する２つのドアＤＲのドアスコアＳｃｄが仮設定された処理途中状態を示している。このとき、部屋ユニットＲＵ２のユニットスコアＳｃ＝２で確定している。部屋ユニットＲＵ２および通路ユニットＰＵ６の間のドアスコアＳｃｄは、「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」〜「部屋ユニットＲＵ２および通路ユニットＰＵ６の間のドアＤＲ」までのドア間距離データ「６」が「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲのドアスコアＳｃｄ＝２」に加算され、「８」が仮設定されている。一方、「部屋ユニットＲＵ２および通路ユニットＰＵ５の間のドアＤＲ」のドアスコアＳｃｄは、「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」〜「部屋ユニットＲＵ２および通路ユニットＰＵ５の間のドアＤＲ」までのドア間距離データ「７」が「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲのドアスコアＳｃｄ＝２」に加算され、「９」が仮設定されている。この状態で、上記ステップＳ８２５が処理された場合、通路ユニットＰＵ３に仮設定されたドアスコアＳｃｄ＝３が確定される。
【０１１９】
図２３（ｂ）は、このような処理が繰り返されることによって、全てのユニットスコアＳｃおよびドアスコアＳｃｄが確定した状態を示している。図２３（ｂ）において、スタートユニットである部屋ユニットＲＵ１のユニットスコアＳｃ＝０に対して、部屋ユニットＲＵ３のユニットスコアＳｃ＝１０が最大値で確定している。ここで、部屋ユニットＲＵ３は、部屋ユニットＲＵ１から最も遠い位置に配置されており、このユニットスコアＳｃによってスタートユニットからの距離を示していることがわかる。また、ドアスコアＳｃｄは、仮設定された最小値のものを優先的に確定するため、スタートユニットに近いドアＤＲに付与されるドアスコアＳｃｄから確定されることになる。したがって、ドアスコアＳｃｄおよび各ユニットのユニットスコアＳｃは、スタートユニットから最短距離を通った距離を示す数値として表される。
【０１２０】
図１４に戻り、上記ステップＳ８２のスコア計算処理の後、ＣＰＵ３１は、マップ上に配置する敵キャラクタの種類およびその数を設定する（ステップＳ８３）。そして、ＣＰＵ３１は、ゲーム進行の上で最も重要な敵キャラクタ（以下、ボス敵キャラクタと記載する）を、ユニットスコアＳｃが最大値に確定された部屋ユニットＲＵに含まれる敵スロットＳｅに配置する（ステップＳ８４）。例えば、図２３（ｂ）で示したマップの場合、最大値のユニットスコアＳｃ＝１０に確定された部屋ユニットＲＵ３にボス敵キャラクタが配置される。なお、当該部屋ユニットＲＵが複数の敵スロットＳｅを含んでいる場合、ＣＰＵ３１は、その中から任意の敵スロットＳｅを１つ選択してボス敵キャラクタを配置する。そして、ＣＰＵ３１は、上記ステップＳ８３で設定された他の敵キャラクタを、マップ上の部屋ユニットＲＵに含まれる任意の敵スロットＳｅに配置し（ステップＳ８５）、処理を次のステップに進める。
【０１２１】
次に、ＣＰＵ３１は、上記ステップＳ８４およびＳ８５で敵キャラクタが配置されたマップのそれぞれのユニットに対して、再度スコア計算処理を行い（ステップＳ８６）、処理を次のステップに進める。スコア計算処理を再度実行するのは、敵キャラクタが配置されることによって各ドアスコアＳｃｄおよびユニットスコアＳｃが変更されるためである。なお、このステップＳ８６で行うスコア計算処理は、上述した図１６で示すスコア計算処理と同様であるため、処理動作の詳細な説明を省略する。ここでは、図２４を参照して、上記ステップＳ８６におけるスコア計算処理の一例を説明する。
【０１２２】
図２４に示すマップは、上述した図２２および図２３のマップと同様のユニット構成になっている。そして、部屋ユニットＲＵ１には敵の強さ「５」および「８」の敵キャラクタが２体配置されており、部屋ユニットＲＵ２には敵の強さ「８」の敵キャラクタが２体配置されており、部屋ユニットＲＵ３には敵の強さ「５」の敵キャラクタが１体と敵の強さ「５０」のボス敵キャラクタが１体配置されている。上述したように、これらの敵の強さは、属性値として予め設定されている。
【０１２３】
図２４（ａ）は、上記ステップＳ８２１およびＳ８２２の処理によって、ユニットスコアＳｃおよびドアスコアＳｃｄが設定されたマップの一例である。上記ステップＳ８６のスコア計算処理においても、同様に全てのユニットスコアＳｃが「−１」に設定され、全てのドアスコアＳｃｄが「−１」に設定される。
【０１２４】
上記ステップＳ８２３の処理においては、スタートユニット（部屋ユニットＲＵ１）に２体の敵キャラクタが配置されており、当該スタートユニットの敵スコア＝５＋８＝１３である。したがって、スタートユニットのユニットスコアＳｃは、「１３」に確定される。そして、上記ステップＳ８２４の処理においては、部屋ユニットＲＵ１のドアＤＲにはゲートＧが配置されていないため、部屋ユニットＲＵ１のドアスコアＳｃｄ＝ユニットスコアＳｃ＝１３となり、全て「１３」に仮設定される。そして、ステップＳ８２６の処理によって、部屋ユニットＲＵ１に接続する他のユニットのドアＤＲのドアスコアＳｃｄも全て「１３」に確定され、これらの確定されたドアＤＲが属する通路ユニットＰＵ１およびＰＵ２と、キャップユニットＣＵとのユニットスコアＳｃがそれぞれ「１３」で確定される。
【０１２５】
図２４（ｂ）は、部屋ユニットＲＵ２のユニットスコアＳｃが確定され、部屋ユニットＲＵ２に属する２つのドアＤＲのドアスコアＳｃｄが仮設定された処理途中状態を示している。このとき、部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアスコアＳｃｄ＝１５に、部屋ユニットＲＵ２の敵スコア＝８＋８＝１６を加算して、部屋ユニットＲＵ２のユニットスコアＳｃ＝１５＋１６＝３１に確定されている。「部屋ユニットＲＵ２および通路ユニットＰＵ６の間のドアＤＲ」のドアスコアＳｃｄは、「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」〜「部屋ユニットＲＵ２および通路ユニットＰＵ６の間のドアＤＲ」までのドア間距離データ「６」と敵スコア「１６」と「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」のドアスコアＳＣｄ（「１５」）が加算され、「３７」が仮設定されている。一方、「部屋ユニットＲＵ２および通路ユニットＰＵ５の間のドアＤＲ」のドアスコアＳｃｄは、「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」〜「部屋ユニットＲＵ２および通路ユニットＰＵ５の間のドアＤＲ」までのドア間距離データ「７」と敵スコア「１６」と「部屋ユニットＲＵ２および通路ユニットＰＵ１の間のドアＤＲ」のドアスコアＳｃｄ（「１５」）が加算され、「３８」が仮設定されている。この状態で、上記ステップＳ８２５が処理された場合、通路ユニットＰＵ３に仮設定されたドアスコアＳｃｄ＝１６が確定される。
【０１２６】
図２４（ｃ）は、このような処理が繰り返されることによって、全てのユニットスコアＳｃおよびドアスコアＳｃｄが確定した状態を示している。図２４（ｃ）において、スタートユニットである部屋ユニットＲＵ１のユニットスコアＳｃ＝１３に対して、部屋ユニットＲＵ３のユニットスコアＳｃ＝９４が最大値で確定している。ここで、部屋ユニットＲＵ３は、部屋ユニットＲＵ１から最も遠い位置に配置され、かつマップ上の全ての敵キャラクタと遭遇して到達するユニットである。また、これらの敵キャラクタは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、その移動を妨害するキャラクタであり、その配置場所付近をプレイヤオブジェクトが通過することが困難になる。したがって、このユニットスコアＳｃは、スタートユニットからの距離に、遭遇する敵キャラクタの強さの合計値を加算した値、つまり、プレイヤオブジェクトがスタートユニットを起点に移動する経路に基づいてそのユニットに到達する難易度を示すパラメータとして表される。また、ドアスコアＳｃｄは、仮設定された最小値のものを優先的に確定するため、スタートユニットを起点にプレイヤオブジェクトが到達するための難易度が低いドアＤＲに付与されるドアスコアＳｃｄから確定されることになる。したがって、各ユニットのユニットスコアＳｃは、プレイヤオブジェクトがスタートユニットを起点に最も簡単な移動によって到達するその難易度を示すパラメータとして表される。
【０１２７】
図１４に戻り、上記ステップＳ８６のスコア計算処理の後、ＣＰＵ３１は、マップ上に配置するゲートの種類およびその数を設定し（ステップＳ８７）、処理を次のステップに進める。このゲートは、上記ドアＤＲ上に選択的に配置され、マップ上を移動するプレイヤオブジェクトが通過する際、その通過を妨げる障害物であり、そのゲートの強さ（ゲートを開けるために必要なパワー）が属性値として予め設定されている。したがって、ゲートがマップ上に配置されることによって、その配置場所をプレイヤオブジェクトが通過することが困難になり、その属性値に応じて通過する困難度が高くなる。
【０１２８】
次に、ＣＰＵ３１は、マップに配置されたそれぞれのユニットに対して、変換ユニットスコアＴを計算し（ステップＳ８８）、次のステップに処理を進める。変換ユニットスコアＴは、ユニットスコアＳｃを所定の変換式で変換した値である。Ｓ８８において使用される変換式は、具体的には、次の式で計算される。
Ｔｘ＝Ｓｃｍａｘ＋Ｓｃｍｉｎ−Ｓｃ（Ｕｘ）
ここで、Ｓｃｍａｘは、全ユニット中でユニットスコアＳｃの最大値であり、Ｓｃｍｉｎは、全ユニット中でユニットスコアＳｃの最小値であり、Ｓｃ（Ｕｘ）は、ユニットＵｘに確定されているユニットスコアＳｃである。例えば、図２４（ｃ）で示したマップにおいて、部屋ユニットＲＵ２の変換ユニットスコアＴを計算する場合、Ｓｃｍａｘ＝９４、Ｓｃｍｉｎ＝１３、Ｓｃ（Ｕｘ）＝３１となり、Ｔ＝７６となる。
【０１２９】
次に、ＣＰＵ３１は、上記ステップＳ８８で計算されたそれぞれの変換ユニットスコアＴの合計値Ｔｓｕｍを計算し（ステップＳ８９）、処理を次のステップに進める。例えば、図２４（ｃ）で示したマップの場合、合計値Ｔｓｕｍ＝８０８となる。
【０１３０】
次に、ＣＰＵ３１は、乱数生成プログラムを実行して、０〜（合計値Ｔｓｕｍ−１）の間で乱数を生成する（ステップＳ９０）。そして、ＣＰＵ３１は、生成された乱数に応じてユニットを選択し、選択されたユニットに設定されているドアＤＲにゲートＧを配置して（ステップＳ９１）、処理を次のステップに進める。図２５を参照して、上記ステップＳ９０およびＳ９１の処理の一例を説明する。なお、図２５は、図２４（ｃ）で示したマップに対して上記ステップＳ９０およびＳ９１における処理の一例を説明するための図である。
【０１３１】
図２５において、ＣＰＵ３１は、上記ステップＳ９０において生成する乱数生成範囲０〜（合計値Ｔｓｕｍ−１＝８０７）を、上記ステップＳ８８で計算した変換ユニットスコアＴに応じて各ユニットに割り当てる。例えば、部屋ユニットＲＵ１の変換ユニットスコアＴは、９４＋１３−１３＝９４である。この部屋ユニットＲＵ１の割り当て範囲を乱数生成範囲０〜に設定する場合、乱数０も部屋ユニットＲＵ１に割り当てられるため、
０≦（部屋ユニットＲＵ１の割り当て範囲）≦９３
となる。キャップユニットＣＵの割り当て範囲を隣接させる場合、キャップユニットＣＵの変換ユニットスコアＴが９４＋１３−１３＝９４であるため、
９３＜（キャップユニットＣＵの割り当て範囲）≦１８７
となる。そして、上記マップ領域に配置されている他のユニットについても全て同様に割り当てていく。その後、上記ステップＳ９０で発生された乱数が０〜９３の範囲内であった場合、上記ステップＳ９１では、部屋ユニットＲＵ１が選択され、乱数が９４〜１８７の範囲内であった場合、キャップユニットＣＵが選択されて、それらのユニットに設定されているドアＤＲにゲートＧが配置される。
【０１３２】
このように、上記ステップＳ９１で選択されるユニットは、乱数によって選択されるが、その変換ユニットスコアＴが大きいほど、そのユニットに割り当てられる数値範囲が広くなるので、そのユニットが選択される確率が高くなる。変換ユニットスコアＴが大きいということはユニットスコアが小さいことを意味するので、ゲートＧは、ユニットスコアが小さいユニットに配置される確率が高いということになる。つまり、スタートユニットから到達するための上記難易度が低いユニットに設けられたドアＤＲに対して、高い確率でゲートＧを配置することになる。なお、ユニットには、複数のドアＤＲが設定されている場合があり、このときＣＰＵ３１は、ランダムでゲートＧを配置するドアＤＲを選択する。また、選択されたユニットの全てのドアＤＲにおいて、既にゲートＧが配置されている場合、ＣＰＵ３１は、上記ステップＳ９１によるゲートＧの配置を中止し、次のステップＳ９２に処理を進める。
【０１３３】
図１４に戻り、ＣＰＵ３１は、マップに配置されたゲートＧの数が所定数に到達したか否かを判断する（ステップＳ９２）。この所定数は、例えば、上記ステップＳ８７で設定したゲートＧの配置数の５０％に設定される。この所定数によって、上述した乱数による選択によって配置されるゲートＧの数を調整することができる。なお、全てのゲートＧを上述した乱数による選択によって配置する場合、上記ステップＳ８７で設定したゲートＧの配置数に上記所定数を設定すればよい。そして、ＣＰＵ３１は、ゲートＧの数が所定数に未到達の場合、上記ステップＳ９０に戻って処理を繰り返し、所定数に到達した場合、次のステップＳ９３に処理を進める。
【０１３４】
ステップＳ９３では、ＣＰＵ３１は、上記ステップＳ８７で設定した配置数に到達するまでゲートＧをランダムで配置する。すなわち、全ユニットのうちから単純なランダムで１つのユニットを選択し、そのユニットにゲートＧを配置する。例えば、ステップＳ９２における「所定数」がステップＳ８７で設定した配置数の７０％に設定されていたときには、ステップＳ９１によって配置数の７０％が配置され、残りの３０％がステップＳ９３によって配置されることになる。そして、処理を次のステップに進める。
【０１３５】
次に、ＣＰＵ３１は、上記ステップＳ９１およびＳ９３でゲートＧが配置されたマップのそれぞれのユニットに対して、再度スコア計算処理を行い（ステップＳ９４）、処理を次のステップに進める。なお、このステップＳ９４で行うスコア計算処理は、上述した図１６で示すスコア計算処理と同様であるため、処理動作の詳細な説明を省略する。ここでは、図２６を参照して、上記ステップＳ９４におけるスコア計算処理の一例を説明する。
【０１３６】
図２６に示すマップは、上述した図２４のマップと同様のユニット構成および敵キャラクタの配置となっている。そして、部屋ユニットＲＵ１および通路ユニットＰＵ１の間のドアＤＲに、その属性値としてゲートの強さ「２０」のゲートＧが配置されている。このゲートの強さは、上述したようにマップ上を移動するプレイヤオブジェクトが通過する際、その通過を妨げる度合いを示す予め設定された属性値である。そして、配置されたゲートＧのゲートスコアは、その属性値と同じ数値が設定され、この場合、ゲートスコア＝２０で設定される。
【０１３７】
図２６（ａ）は、上記ステップＳ８２１およびＳ８２２の処理によって、ユニットスコアＳｃおよびドアスコアＳｃｄが設定されたマップの一例である。上記ステップＳ９４のスコア計算処理においても、同様に全てのユニットスコアＳｃが「−１」に設定され、全てのドアスコアＳｃｄが「−１」に設定される。
【０１３８】
上記ステップＳ８２３の処理においては、スタートユニット（部屋ユニットＲＵ１）に２体の敵キャラクタが配置されており、当該スタートユニットの敵スコア＝５＋８＝１３である。したがって、スタートユニットのユニットスコアＳｃは、「１３」に確定される。そして、上記ステップＳ８２４の処理においては、ゲートＧが配置されていないドアＤＲに対してドアスコアＳｃｄ＝ユニットスコアＳｃ＝１３となる。そして、ゲートＧが配置されているドアＤＲに対してドアスコアＳｃｄ＝ユニットスコアＳｃ＋ゲートスコア＝１３＋２０＝３３となり、それぞれのドアスコアＳｃｄで仮設定される（図２６（ｂ）の状態）。以降、上記ステップＳ８２５〜Ｓ８３０の処理が繰り返される。
【０１３９】
図２６（ｃ）は、このような処理が繰り返されることによって、全てのユニットスコアＳｃおよびドアスコアＳｃｄが確定した状態を示している。図２６（ｃ）において、スタートユニットである部屋ユニットＲＵ１のユニットスコアＳｃ＝１３に対して、部屋ユニットＲＵ３のユニットスコアＳｃ＝９９が最大値で確定している。ここで、部屋ユニットＲＵ３は、部屋ユニットＲＵ１から最も遠い位置に配置され、かつマップ上の全ての敵キャラクタと遭遇して到達するユニットである。しかしながら、図２４（ｃ）のマップと比較すると、部屋ユニットＲＵ３のユニットスコアＳｃは、「＋５」増加しているだけであり、上記ゲートスコア＝２０の増加が示されていない。これは、ゲートＧの配置によって、通路ユニットＰＵ１を経由するより通路ユニットＰＵ２〜ＰＵ５のルートを経由した方が、部屋ユニットＲＵ３へ到達する上記難易度が低くなったためである。したがって、ユニットスコアＳｃは、スタートユニットからの距離、遭遇する敵キャラクタの強さ、およびゲート通過の困難度を考慮して、プレイヤオブジェクトがスタートユニットを起点に最も簡単な移動によって到達するその難易度を示すパラメータとして表されることがわかる。
【０１４０】
図１５において、上記ステップＳ９４のスコア計算処理の後、ＣＰＵ３１は、マップ上に配置するアイテムの種類およびその数を設定し（ステップＳ９５）、処理を次のステップに進める。
【０１４１】
次に、ＣＰＵ３１は、全マップ中に配置されたユニットが有するアイテムスロットＳｉ全てに対してポイントスコアＴを設定する。ポイントスコアＴは、アイテムスロットＳｉやゴールスロットＳｇに対して設定されるポイントであって、ユニットスコアと同様に、スタートユニットを起点に最も簡単な移動によってそのアイテムスロットＳｉやゴールスロットＳｇに到達する難易度を示すパラメータである。具体的には、ポイントスコアＴは、そのアイテムスロットＳｉが属するユニットのユニットスコアと同じ値に設定されて（ステップＳ９６）、次のステップに処理を進める。
【０１４２】
図２７を参照して、それぞれのアイテムスロットＳｉに設定されるポイントスコアＴの一例について説明する。なお、図２７は、図２６（ｃ）で示したマップに配置されたユニットが含んでいるアイテムスロットＳｉ１〜Ｓｉ５の一例を示す図である。図２７では、図面を単純にするために、ドアスコアＳｃｄおよび通路ユニットＰＵのユニットスコアＳｃを削除して示している。
【０１４３】
図２７において、部屋ユニットＲＵ１はアイテムスロットＳｉ１を含み、部屋ユニットＲＵ２はアイテムスロットＳｉ２およびＳｉ３を含み、部屋ユニットＲＵ３はアイテムスロットＳｉ４およびＳｉ５を含んでいる。そして、部屋ユニットＲＵ１〜ＲＵ３のユニットスコアＳｃは、それぞれ「１３」、「３５」、および「９９」が確定している。例えば、アイテムスロットＳｉ３およびＳｉ４に設定されるポイントスコアＴは、それぞれ部屋ユニットＲＵ２のユニットスコアＳｃ、つまり、それぞれ「３５」が設定される。したがって、アイテムスロットＳｉ１〜Ｓｉ５に設定されるポイントスコアＴは、それぞれ「１３」、「３５」、「３５」、「９９」、および「９９」が設定される。
【０１４４】
図１５に戻り、ＣＰＵ３１は、上記ステップＳ９６で計算されたそれぞれのポイントスコアＴの合計値Ｔｓｕｍを計算し（ステップＳ９７）、処理を次のステップに進める。例えば、図２７で示したマップの場合、合計値Ｔｓｕｍ＝２８１となる。
【０１４５】
次に、ＣＰＵ３１は、乱数生成プログラムを実行して、０〜（合計値Ｔｓｕｍ−１）の間で乱数を生成する（ステップＳ９８）。そして、ＣＰＵ３１は、生成された乱数に応じてアイテムスロットＳｉを選択し、選択されたアイテムスロットＳｉにアイテムを配置して（ステップＳ９９）、処理を次のステップに進める。図２８を参照して、上記ステップＳ９８およびＳ９９の処理の一例を説明する。なお、図２８は、図２７で示したマップに対して上記ステップＳ９８およびＳ９９における処理の一例を説明するための図である。
【０１４６】
図２８において、ＣＰＵ３１は、上記ステップＳ９８において生成する乱数生成範囲０〜（合計値Ｔｓｕｍ−１＝２８０）を、上記ステップＳ９６で計算したポイントスコアＴに応じて各アイテムスロットＳｉに割り当てる。例えば、アイテムスロットＳｉ１のポイントスコアＴは、１３である。このアイテムスロットＳｉ１の割り当て範囲を乱数生成範囲０〜に設定する場合、乱数０もアイテムスロットＳｉ１に割り当てられるため、
０≦（アイテムスロットＳｉ１の割り当て範囲）≦１２
となる。アイテムスロットＳｉ２の割り当て範囲を隣接させる場合、アイテムスロットＳｉ２のポイントスコアＴが３５であるため、
１２＜（アイテムスロットＳｉ２の割り当て範囲）≦４７
となる。そして、上記マップ領域に配置されているユニットに含まれる他のアイテムスロットＳｉについても全て同様に割り当てていく。その後、上記ステップＳ９８で発生された乱数が０〜１２の範囲であった場合、上記ステップＳ９９では、アイテムスロットＳｉ１が選択され、乱数が１３〜４７の範囲であった場合、アイテムスロットＳｉ２が選択されて、それらのアイテムスロットＳｉにアイテムが配置される。
【０１４７】
このように、上記ステップＳ９９で選択されるアイテムスロットＳｉは、乱数によって選択されるが、そのアイテムスロットＳｉが属するユニットのユニットスコアＳｃが大きいユニット程、選択される確率は高くなる。つまり、スタートユニットから到達するための上記難易度が高いユニットに属するアイテムスロットＳｉに対して、高い確率でアイテムを配置することになる。つまり、スタート位置付近等にアイテムが配置される確率が低くなる。なお、選択されたアイテムスロットＳｉにおいて、既にアイテムが配置されている場合、ＣＰＵ３１は、上記ステップＳ９９によるアイテムの配置を中止し、次のステップＳ１００に処理を進める。
【０１４８】
図１５に戻り、ＣＰＵ３１は、マップに配置されたアイテムの数が上記ステップＳ９５で設定した設定数に到達したか否かを判断する（ステップＳ１００）。そして、ＣＰＵ３１は、アイテムの数が設定数に未到達の場合、上記ステップＳ９８に戻って処理を繰り返し、設定数に到達した場合、次のステップＳ１０１に処理を進める。
【０１４９】
ステップＳ１０１では、ＣＰＵ３１は、マップに配置されたユニットが有するそれぞれのゴールスロットＳｇに対して、ポイントスコアを計算し、さらに、そのポイントスコアを変換した変換ポイントスコアＴを計算した後、次のステップに処理を進める。このステップＳ１０１では、それぞれのゴールスロットＳｇを含んでいるユニットスコアＳｃをポイントスコアとし、そのポイントスコアの正の平方根を、当該ゴールスロットＳｇに対する変換ポイントスコアＴとする。つまり、ユニットＵｘに含まれるゴールスロットＳｇｘの変換ポイントスコアＴｘは、
【数１】
2004329792.tif 000003
で計算される。ここで、Ｓｃ（Ｕｘ）は、ユニットＵｘに確定されているユニットスコアＳｃである。
【０１５０】
次に、ＣＰＵ３１は、上記ステップＳ１０１で計算されたそれぞれの変換ポイントスコアＴの合計値Ｔｓｕｍを計算し（ステップＳ１０２）、処理を次のステップに進める。
【０１５１】
次に、ＣＰＵ３１は、乱数生成プログラムを実行して、０〜（合計値Ｔｓｕｍ−１）の間で乱数を生成する（ステップＳ１０３）。そして、ＣＰＵ３１は、生成された乱数に応じてゴールスロットＳｇを選択し、選択されたゴールスロットＳｇをマップのゴール位置に設定して（ステップＳ１０４）、当該サブルーチンによるゲーム要素配置処理を終了し、図１１に示したマップ生成処理も終了する。なお、上記ステップＳ１０３およびＳ１０４の処理についても、上記ステップＳ９８およびＳ９９と同様であるため、詳細な説明を省略する。
【０１５２】
ここで、上記ステップＳ１０４では、ゴールスロットＳｇを乱数によって選択するが、ゴールスロットＳｇが属するユニットのユニットスコアＳｃが大きいユニット程、選択される確率は高くなる。つまり、スタートユニットから到達するための上記難易度が高いユニットに属するゴールスロットＳｇに対して、高い確率でゴール位置が設定されることになる。つまり、スタート位置付近等にゴール位置が設定される確率が低くなる。しかしながら、ユニットスコアＳｃの正の平方根を変換ポイントスコアＴとし、その変換ポイントスコアＴに応じた数値範囲が各ゴールスロットＳｇに割り当てられているため、上述のアイテムの配置処理（Ｓ９５〜Ｓ１００）のようにポイントスコアＴ（＝ユニットスコアＳｃ）に応じて数値範囲が割り当てられる場合と比較すると、ユニットスコアＳｃの影響度が低い。つまり、変換ポイントスコアＴの計算の方法によって、乱数によって選択される要素に対してユニットスコアＳｃが与える影響度を調整することができる。例えば、ユニットスコアＳｃの３乗根を変換ポイントスコアＴとした場合、さらにユニットスコアＳｃの影響度を下げることが可能であるし、逆に、ユニットスコアＳｃを二乗や三乗して変換ポイントスコアＴとした場合、ユニットスコアＳｃの影響度を上げることが可能である。
【０１５３】
なお、上述した敵キャラクタおよびアイテムをマップに配置する際、上記ステップＳ８３およびＳ９５で設定したそれぞれの配置設定数に対して、マップに含まれる敵スロットＳｅおよびアイテムスロットＳｉの数が不足する可能性がある。この場合、本来、敵スロットＳｅおよびアイテムスロットＳｉを含んでいない通路ユニットＰＵあるいはキャップユニットＣＵをランダムで選択して、それらのユニットが有する通路領域ＰＺに敵キャラクタあるいはアイテムを配置してもかまわない。例えば、敵キャラクタの配置設定数に対して、敵スロットＳｅの数が不足している場合、ＣＰＵ３１は、通路ユニットＰＵをランダムで選択して、それらのユニットが有する通路領域ＰＺに敵キャラクタを配置する。また、アイテムの配置設定数に対して、アイテムスロットＳｉの数が不足している場合、ＣＰＵ３１は、キャップユニットＣＵを優先的に選択して、その通路領域ＰＺにアイテムを配置する。さらに、キャップユニットＣＵを合わせてもアイテムの配置設定数に対して不足する場合、ＣＰＵ３１は、通路ユニットＰＵをランダムで選択して、それらのユニットが有する通路領域ＰＺにアイテムを配置する。
【０１５４】
このように、本発明の一実施形態に係るゲーム装置では、プレイヤオブジェクトがマップのスタート位置を起点にそれぞれのユニットまで到達する距離、遭遇する敵キャラクタの強さ、およびゲート通過の困難度を評価して、プレイヤオブジェクトが移動するルート毎にユニットスコアが算出される。このユニットスコアは、スタート位置から各ユニットへ到達する難易度の目安にすることができる。また、上記ユニットスコアを用いて、マップに付加的に配置されるゲーム要素が配置されるため、当該ゲーム要素を上記難易度に応じた適所に配置することができる。さらに、上記ゲーム要素がマップ上に配置される場所は、ランダムな要素も含んでいるため、多様性に富んだマップを自動的に生成することが可能である。
【０１５５】
なお、上述したフローチャートでは、生成されたマップに対して、ゲーム要素を敵キャラクタ、ゲート、アイテム、ゴール位置の順で配置したが、本発明は、この順序によるゲーム要素の配置に限定されない。例えば、スタート位置に対して、距離的に最も遠いユニットにゴール位置を設定したい場合、最初にゴール位置を設定してもかまわない。配置したいゲーム要素の種類およびユニットに応じて、適切な配置順序でゲーム要素配置処理を行うことによって、所望のゲーム要素の配置を実現できる。
【０１５６】
また、上記スタートユニット以外のユニットに対して計算される上記ユニットスコアは、そのユニットに属するドアに対して確定されたドアスコアにそのユニット内に配置される敵スコアを加算することによって計算される（ステップＳ８２８参照）。そして、ユニットスコアは、結果的にそのユニットに属するドアに対して確定されたドアスコアのうちの最小値に敵スコアを加算した値となるが、最小値でなくてもかまわない。例えば、そのユニットに属するドアに対して確定された最大値のドアスコアに、そのユニット内に配置される敵スコアを加算することによってユニットスコアを計算してもいいし、そのユニットに属するドアに対して確定されたドアスコアの平均値に、そのユニット内に配置される敵スコアを加算することによってユニットスコアを計算してもかまわない。
【０１５７】
また、上述の説明では、スコア計算処理において、スタートユニットのドアスコアを仮設定するようにしたが（図１６のステップＳ８２４）、スタートユニットのドアスコアは仮設定せずに初めから確定するようにして、スタートユニット以外のユニットに関してのみドアスコアを仮設定して最小値のものを確定するようにしてもよい。
【０１５８】
また、上述の説明では、マップを構成する単位画像である部屋ユニット、通路ユニット、およびキャップユニットをそれぞれ矩形形状で説明したが、これらのユニットは、矩形形状に限定されない。例えば、上記ユニットは、正六角形等の多角形形状でも同様に本発明を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図である。
【図２】図１のゲーム装置３の機能ブロック図である。
【図３】図２のワークメモリ３２に記憶されるプログラムおよびデータの一例について説明するための概略的なメモリマップである。
【図４】図３のユニット記憶領域３２２に記憶される部屋ユニット画像群に含まれる部屋ユニットの一例を示す図である。
【図５】図３のユニット記憶領域３２２に記憶される部屋ユニットテーブルの一例を示す図である。
【図６】図３のユニット記憶領域３２２に記憶される部屋ユニットに対するドア間距離テーブルの一例を示す図である。
【図７】図３のユニット記憶領域３２２に記憶される通路ユニット画像群およびキャップユニット画像に含まれる通路ユニットおよびキャップユニットの一例を示す図である。
【図８】図３のユニット記憶領域３２２に記憶される通路ユニットテーブルの一例を示す図である。
【図９】図３のユニット記憶領域３２２に記憶されるキャップユニットテーブルの一例を示す図である。
【図１０】図３のユニット記憶領域３２２に記憶される通路ユニットに対するドア間距離テーブルの一例を示す図である。
【図１１】図１のゲーム装置３によって実行されるマップ生成処理の全体処理を示すフローチャートである。
【図１２】図１１のステップＳ５の詳細な動作を示すサブルーチンである。
【図１３】図１１のステップＳ７の詳細な動作を示すサブルーチンである。
【図１４】図１１のステップＳ８の詳細な動作を示す前半部のサブルーチンである。
【図１５】図１１のステップＳ８の詳細な動作を示す後半部のサブルーチンである。
【図１６】図１４のステップＳ８２、Ｓ８６、およびＳ９４の詳細な動作を示すサブルーチンである。
【図１７】マップ領域に配置された部屋ユニットＲＵａのドアＤＲ３が選択ドアに設定され、その選択ドアと部屋ユニットＲＵｃのドアＤＲ１とを接続して配置した一例を示す図である。
【図１８】マップ領域に配置された通路ユニットＰＵａのドアＤＲ３が選択ドアに設定され、その選択ドアと通路ユニットＰＵｂのドアＤＲ２とを接続して配置した一例を示す図である。
【図１９】マップ領域に配置された通路ユニットＰＵａのドアＤＲ３が選択ドアに設定され、その選択ドアとキャップユニットＣＵのドアＤＲ１とを接続して配置した一例を示す図である。
【図２０】図２のＣＰＵ３１が行うユニット接続処理の一例を説明するための図である。
【図２１】図２のＣＰＵ３１が行うマップ生成処理によって生成されるマップの一例である。
【図２２】図１４のステップＳ８２におけるスコア計算処理の前半部の一例を説明するための図である。
【図２３】図１４のステップＳ８２におけるスコア計算処理の後半部の一例を説明するための図である。
【図２４】図１４のステップＳ８６におけるスコア計算処理の一例を説明するための図である。
【図２５】図２４（ｃ）で示したマップに対して図１４のステップＳ９０およびＳ９１における処理の一例を説明するための図である。
【図２６】図１４のステップＳ９４におけるスコア計算処理の一例を説明するための図である。
【図２７】図２６（ｃ）で示したマップに配置されたユニットが含んでいるアイテムスロットＳｉ１〜Ｓｉ５の一例を示す図である。
【図２８】図２７で示したマップに対して図１５のステップＳ９８およびＳ９９における処理の一例を説明するための図である。
【符号の説明】
１…ゲームシステム
２…テレビ
３…ゲーム装置
４…光ディスク
５…メモリカード
６…コントローラ
６１…メインスティック
６２…Ａボタン
６３…Ｂボタン
６４…Ｘボタン
６５…Ｙボタン
６６ａ…Ｒボタン
６６ｂ…Ｌボタン
６７…十字キー
６８…Ｃスティック
６９…スタート−ポーズボタン
３１…ＣＰＵ
３２…ワークメモリ
３２１…プログラム記憶領域
３２２…ユニット記憶領域
３３…ＶＲＡＭ
３４…外部メモリＩ／Ｆ
３５…コントローラＩ／Ｆ
３６…ＧＰＵ
３７…光ディスクドライブ
ＣＵ…キャップユニット
ＤＲ…ドア
ＲＵ…部屋ユニット
ＲＺ…部屋領域
ＰＵ…通路ユニット
ＰＺ…通路領域
Ｓ…スロット
Ｚ…領域
【図１】
2004329792.tif 000004
【図２】
2004329792.tif 000005
【図３】
2004329792.tif 000006
【図４】
2004329792.tif 000007
【図５】
2004329792.tif 000008
【図６】
2004329792.tif 000009
【図７】
2004329792.tif 000010
【図８】
2004329792.tif 000011
【図９】
2004329792.tif 000012
【図１０】
2004329792.tif 000013
【図１１】
2004329792.tif 000014
【図１２】
2004329792.tif 000015
【図１３】
2004329792.tif 000016
【図１４】
2004329792.tif 000017
【図１５】
2004329792.tif 000018
【図１６】
2004329792.tif 000019
【図１７】
2004329792.tif 000020
【図１８】
2004329792.tif 000021
【図１９】
2004329792.tif 000022
【図２０】
2004329792.tif 000023
【図２１】
2004329792.tif 000024
【図２２】
2004329792.tif 000025
【図２３】
2004329792.tif 000026
【図２４】
2004329792.tif 000027
【図２５】
2004329792.tif 000028
【図２６】
2004329792.tif 000029
【図２７】
2004329792.tif 000030
【図２８】
2004329792.tif 000031