JP3934081B2 - ゲーム装置およびゲームプログラム - Google Patents
ゲーム装置およびゲームプログラム Download PDFInfo
- Publication number
- JP3934081B2 JP3934081B2 JP2003133669A JP2003133669A JP3934081B2 JP 3934081 B2 JP3934081 B2 JP 3934081B2 JP 2003133669 A JP2003133669 A JP 2003133669A JP 2003133669 A JP2003133669 A JP 2003133669A JP 3934081 B2 JP3934081 B2 JP 3934081B2
- Authority
- JP
- Japan
- Prior art keywords
- unit
- score
- connection part
- door
- connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- A63F13/10—
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/45—Controlling the progress of the video game
Description
【発明の属する技術分野】
本発明は、ゲーム装置およびゲームプログラムに関し、より特定的には、ゲームマップにアイテムや敵キャラクタ等の付加的に配置されるゲーム要素を自動配置するゲーム装置およびゲームプログラムに関する。
【0002】
【従来の技術】
従来、プレイヤによって操作されるプレイヤオブジェクトがマップ上を移動しながら進行するゲームが各種開発されている。このマップ上には、付加的に配置されるゲーム要素(アイテム、敵キャラクタ、扉、スタートおよびゴール位置等)が配置される。これらのゲーム要素をマップ上に固定的に配置せず、配置位置を変化させるとマップに変化が生まれ、プレイヤを飽きさせずにゲームを進行することができる。従来のゲーム装置では、このようなゲーム要素をマップ上にランダムに配置しているものがある(例えば特許文献1参照)。
【0003】
特許文献1で開示されたゲーム装置では、マップに敵キャラクタやアイテム等のゲーム要素をランダムに配置する。具体的には、当該ゲーム装置のメモリ内には、予め定められた形状およびサイズの固定エリア内に、エリア全体としてそれぞれ異なったパターンを形成するように地形を配置してなる多数のマップが格納されている。そして、当該ゲーム装置のコンピュータは、ゲームの難易度に応じてマップの1つを選択し、当該マップに上記ゲーム要素をランダムに配置している。これによって、上記ゲーム要素が毎回異なった配置となったマップを得ることができる。
【0004】
【特許文献1】
特開2000−107441号公報
【0005】
【発明が解決しようとする課題】
しかしながら、上述した従来のゲーム装置は、敵キャラクタやアイテム等のゲーム要素をランダムに配置するので、ゲーム要素がゲーム進行上適切な位置に配置されるとは限らない。例えば、生成されたマップのスタート位置近くにアイテムが多数配置されたり、重要な敵キャラクタがスタート位置近くに配置されたりすると、そのマップを攻略する楽しみがスタート位置近くのみで満たされてしまうため、そのマップにおけるゲーム性が損なわれることがある。また、マップの目的地点へのルートが複数ある場合、それぞれのルートに対して上記ゲーム要素の配置による難易度が考慮されていないため、プレイヤが選択するルートによって、容易に目的地まで到達してしまうこともある。
【0006】
それ故に、本発明の目的は、マップに付加的に配置されるゲーム要素を、配置位置を固定することなく変化を与えつつ適所に配置することが可能なゲーム装置およびゲームプログラムを提供することである。
【0007】
【課題を解決するための手段および発明の効果】
上記目的を達成するために、本発明は、以下に述べるような特徴を有している。
第1の発明は、ゲームマップ上をプレイヤオブジェクトが移動するゲームにおいて、マップを構成するための複数のユニットを配置することによってゲームマップを自動生成し、さらに、当該ゲームマップ上に付加的なゲーム要素を自動配置するゲーム装置である。ユニットは、他のユニットと接続するための接続部を有し、当該接続部と他のユニットの接続部とが連結されることによってゲームマップを形成している。ゲーム装置は、記憶手段、起点決定手段、スコア算出手段、およびゲーム要素配置手段を備える。記憶手段は、複数のユニットは、複数の種類があり、ユニット内の接続部同士の全ての組合わせごとに、当該接続部同士を結ぶ経路である内部経路に対応させて予め設定された第1パラメータを種類ごとに記憶する。起点決定手段は、配置された複数のユニットのうち、所定のユニットを、ゲームマップ中でプレイヤオブジェクトが移動を開始するスタート地点となる起点ユニットとする。スコア算出手段は、配置された各ユニットに関して、ゲームマップ上において起点ユニットから当該ユニットに至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する内部経路に対応する第1パラメータを記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアをユニットスコアとして算出して設定する。ゲーム要素配置手段は、配置された各ユニットに関してそれぞれ算出されたスコアの値に基づいて、付加的なゲーム要素を配置するユニットを決定して自動配置する。
なお、第1の発明において、ユニットスコアは、そのユニットに到達するまでの内部経路を少なくとも考慮して決定されるが、そのユニット内の情報(そのユニット内に存在する敵キャラクタの数、種類等)を加味してユニットスコアを決定してもよい。
また、起点ユニットのユニットスコアは、必ずしも計算される必要はないが、計算する場合には、例えば、起点ユニット内に存在するゲーム要素に基づいて計算する方法がある。この場合、起点ユニット内に敵キャラクタの数が多いほど高い値に設定してもよい。また、その強さが強いほど高い値に設定してもよい。また、他の計算方法では、起点ユニットのユニットスコアについては、所定の値(例えば0)を設定するようにしてもよい。
【0008】
上記第1の発明によれば、ゲームマップのスタート位置からそれぞれのユニットまでの経路情報に基づいてユニットスコアが算出される。経路情報として経路の距離、経路上に存在する敵キャラクタの数や種類、経路上に存在するゲートの数や種類等を採用すれば、ユニットスコアは、プレイヤキャラクタ等がそのユニットに到達するための難易度を示す値となる。また、経路情報として経路上に存在するアイテムの数や種類等を採用すれば、ユニットスコアは、プレイヤキャラクタ等がそのユニットに到達するまでに得られるメリットを示す値となる。そして、上記ユニットスコアを用いて、ゲームマップに付加的に配置されるゲーム要素が配置されるため、ゲーム要素を上記難易度に応じた適所に配置したり、上記メリットに応じた適所に配置したりすることができる。例えば、ユニットスコアが難易度を示す場合には、以下のような例が考えられる。ある貴重なアイテムをプレイヤが入手することが困難になるように設定したいときに、その貴重なアイテムをユニットスコアが高いユニットに配置するようにするようにしてもよい。また、ユニットスコアが高いユニットにプレイヤを支援するようなアイテムを配置するようにしてもよい。また、ユニットスコアが最高値を示すユニットにゴール地点を設定するようにしてもよい。また、ユニットスコアが低いユニットに弱い敵キャラクタを配置し、ユニットスコアが高いユニットに強い敵キャラクタを配置するようにしてもよい。また、ユニットスコアがメリットを示す場合には、ユニットスコアが高いユニットに強い敵キャラクタを配置する等が考えられる。なお、これらは一例に過ぎず、ゲームの内容やゲームデザイナーの意図によって様々な利用例が考えられる。ゲームの内容によっては、上述の例とは逆に、ユニットスコアの低い場所に貴重なアイテムを配置するようにする場合もあるし、ユニットスコアが中程度のユニットにゲーム要素を配置するようにする場合もある。
ユニットスコアは、難易度を示す場合と、その逆にメリットの度合いを示す場合があるが、以降の説明では、主に難易度を示す場合を中心に説明する。ただし、メリットの度合いを示す場合も同様である。
【0009】
第2の発明は、第1の発明に従属する発明であって、オブジェクト配置手段を、さらに備える。オブジェクト配置手段は、複数のオブジェクトをゲームマップ上に自動配置する。記憶手段は、オブジェクトの種類ごとに、当該種類のオブジェクトの属性値を示す第2パラメータをさらに記憶する。スコア算出手段は、起点ユニットから当該ユニットに至る経路上のユニット群に配置されたオブジェクトに対応する第2パラメータをさらに読み出し、第2パラメータそれぞれの値をさらに総合することによって、ユニットスコアを算出する。
【0010】
上記第2の発明によれば、ゲームマップ上で、スタート位置から各ユニットに到達するまでの間にプレイヤキャラクタ等のオブジェクトが遭遇する敵キャラクタや扉等の障害物がゲーム要素として多く配置されたユニットほど、そのユニットに到達することが困難であると言えるので、それらの障害物を難易度としたユニットスコアが得られる。また、スタート位置から各ユニットに到達するまでの間にオブジェクトが遭遇するアイテムやヒントをくれる町人キャラクタ等がゲーム要素として多く配置されたユニットほど、そのユニットに到達するメリットが大きいと言えるので、メリットを示すユニットスコアが得られる。そして、この難易度やメリットを示すユニットスコアに応じてゲーム要素が配置されるので、ゲーム要素をゲーム性を考慮した適切な位置に配置することができる。例えば、ゲーム上、スタート位置から多数の障害物をクリアしてオブジェクトが到達するユニットに配置するのが好ましいゴール位置や最も重要なアイテム等のゲーム要素を、スタート位置からの経路上の障害物に応じた適所に配置することができる。
【0011】
第3の発明は、第1の発明に従属する発明であって、ゲーム要素配置手段は、ユニットスコアが最も高いユニットにゲーム要素を配置する。
【0012】
上記第3の発明によれば、ゲーム上、オブジェクトがスタート位置を起点に移動して到達することが困難なユニットに配置するのが好ましいゴール位置、最も重要なキャラクタやアイテム等を、適所に配置することができる。
【0013】
第4の発明は、第1の発明に従属する発明であって、ゲーム要素配置手段は、乱数を発生させる乱数発生手段を含む。ゲーム要素配置手段は、ユニットスコアの値に基づいてユニット毎に設定される数値範囲と、乱数とを比較し、当該数値範囲に乱数が含まれるユニットに対してゲーム要素を配置する。
【0015】
第5の発明は、第4の発明に従属する発明であって、ゲーム要素配置手段は、ユニットスコアの値が小さいほど範囲が大きくなるように数値範囲を設定する。
【0017】
第6の発明は、第4の発明に従属する発明であって、ゲーム要素配置手段は、ユニットスコアの値が大きいほど範囲が大きくなるように数値範囲を設定する。
【0019】
第7の発明は、第1の発明に従属する発明であって、接続部スコア算出手段を、さらに備える。接続部スコア算出手段は、配置された各ユニットが有する各接続部に関して、ゲームマップ上において起点ユニットから当該接続部に至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する内部経路に対応する第1パラメータを記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアを、当該接続部の接続部スコアとして算出して設定し、かつ、接続部スコアの設定にあたり、仮スコアを設定した後、所定条件を満たす当該仮スコアを接続部スコアとして確定する。接続部スコア算出手段は、起点ユニット接続部スコア設定手段、連結接続部スコア確定手段、接続部スコア仮設定手段、および最小接続部スコア確定手段を含む。起点ユニット接続部スコア設定手段は、起点ユニットが有する接続部の接続部スコアを確定する。連結接続部スコア確定手段は、接続部スコアが確定された接続部と連結される他のユニット側の接続部の接続部スコアを、当該確定された接続部の接続部スコアと同じ値で確定する。接続部スコア仮設定手段は、接続部スコアが確定された接続部が含まれるユニットに関して、当該ユニットに含まれる接続部スコアが確定されていない接続部のそれぞれについて、当該ユニットの種類に対応し、かつ、当該確定された接続部と当該確定されていない接続部との組み合わせとに対応して設定された第1パラメータを記憶手段から読み出し、当該第1パラメータと当該確定された接続部の接続部スコアとの値を総合して、当該確定されていない接続部の接続部スコアの仮スコアとして設定する。最小接続部スコア確定手段は、既に設定されたすべての仮スコアのうち、最小の値を示す仮スコアを、当該仮スコアが設定された接続部の接続部スコアとして確定する。連結接続部スコア確定手段は、さらに、最小接続部スコア確定設定手段によって接続部の接続部スコアが確定された後、当該接続部と連結される他のユニット側の接続部の接続部スコアを、当該確定された接続部の接続部スコアと同じ値で確定する。そして、連結接続部スコア確定手段、接続部スコア仮設定手段、および最小接続部スコア確定手段による処理を繰り返すことにより、ゲームマップ中の接続部それぞれの接続部スコアを順次確定し、確定された接続部スコアを用いて順次ユニットスコアを算出する。
【0025】
第8の発明は、第1の発明に従属する発明であって、接続部スコア算出手段を、さらに備える。接続部スコア算出手段は、配置された各ユニットが有する各接続部に関して、ゲームマップ上において起点ユニットから当該接続部に至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する内部経路に対応する第1パラメータを記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアを、当該接続部の接続部スコアとして算出して設定し、かつ、接続部スコアの設定にあたり、仮スコアを設定した後、所定条件を満たす当該仮スコアを接続部スコアとして確定する。接続部スコア算出手段は、起点ユニット接続部スコア仮設定手段、最小接続部スコア確定手段、連結接続部スコア確定手段、および接続部スコア仮設定手段を含む。起点ユニット接続部スコア仮設定手段は、起点ユニットが有する接続部に対する接続部スコアをそれぞれ所定の計算方法によって算出して仮スコアとして設定する。最小接続部スコア確定手段は、既に設定されたすべての仮スコアのうち、最小の値を示す仮スコアを、当該仮スコアが設定された接続部の接続部スコアとして確定する。連結接続部スコア確定手段は、最小接続部スコア確定手段で接続部スコアが確定された接続部と連結される他のユニット側の接続部スコアを、当該確定された接続部の接続部スコアと同じ値で確定する。接続部スコア仮設定手段は、接続部スコアが確定された接続部が属するユニットに関して、当該ユニットに接続部スコアが未確定の接続部が含まれるとき、当該未確定の接続部のそれぞれについて、当該確定された接続部から当該未確定の接続部までの当該ユニットの種類における内部経路に対応する第1パラメータを記憶手段から読み出し、当該第1パラメータと当該確定された接続部の接続部スコアとの値を総合して、当該未確定の接続部の仮スコアとして設定する。最小接続部スコア確定手段は、さらに、接続部スコア仮設定手段によって仮スコアが設定された後、当該仮スコアを含めた中から最小の値を示す仮スコアを、当該仮スコアが設定された接続部の接続部スコアとして確定する。スコア算出手段は、最小接続部スコア確定手段、連結接続部スコア確定手段、および接続部スコア仮設定手段による処理を繰り返すことにより、ゲームマップ中の接続部それぞれの接続部スコアを順次確定し、確定された接続部スコアを用いて順次ユニットスコアを算出する。
【0044】
【発明の実施の形態】
図1を参照して、本発明の一実施形態に係るゲームシステム1について説明する。なお、図1は、当該ゲームシステムを説明するための外観図である。以下、据置型ゲーム装置を一例にして、本発明の一実施形態について説明する。
【0045】
図1において、当該ゲームシステム1は、家庭用テレビジョン受像機等のスピーカ2aを備えたCRT(Cathode Ray Tube)ディスプレイ(以下、テレビと記載する)2に、接続コードを介して接続される据置型ゲーム装置(以下、単にゲーム装置と記載する)3によって構成される。ゲーム装置3は、接続コードを介してゲーム装置3と接続されるコントローラ6およびゲーム装置3に対して交換可能に着脱される選択的に用いられる情報記憶媒体の一例の光ディスク4を含む。また、ゲーム装置3には、セーブデータ等を固定的に記憶するバックアップメモリ等を搭載するメモリカード5が必要に応じて着脱自在に装着される。ゲーム装置3は、光ディスク4に記憶されたゲームプログラムを実行することによって、その結果をゲーム画像としてテレビ2に表示する。さらに、ゲーム装置3は、メモリカード5に記憶されたセーブデータを用いて、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ2に表示することもできる。そして、ゲーム装置3のプレイヤは、テレビ2に表示されたゲーム画像を見ながら、コントローラ6を操作することによって、ゲーム進行を楽しむことができる。
【0046】
コントローラ6は、上述したように接続コードを介してゲーム装置3に接続され、その接続コードは、ゲーム装置3に対して着脱自在である。コントローラ6は、主にテレビ2に表示されるゲーム空間に登場するプレイヤオブジェクト(典型的には、プレイヤの操作対象であるゲーム主人公)を操作するための操作手段であり、複数の操作ボタン、キー、およびスティック等の入力部を備えている。具体的には、コントローラ6には、プレイヤによって各々把持されるグリップ部が形成される。そして、コントローラ6は、プレイヤの左手の親指等によって操作可能なメインスティック61および十字キー67と、右手の親指等によって操作可能なCスティック68、Aボタン62、Bボタン63、Xボタン64、Yボタン65、およびスタート−ポーズボタン69を含む。さらに、コントローラ6には、プレイヤの左右の人差し指等によってそれぞれ操作可能なRボタン66aおよびLボタン66bを備える。これらコントローラ6の入力部を用いた操作は、ゲーム進行に応じて行われるが、本発明の説明とは直接関連しないため詳細な説明を省略する。
【0047】
次に、図2を参照して、ゲーム装置3の構成について説明する。なお、図2は、ゲーム装置3の機能ブロック図である。
【0048】
図2において、ゲーム装置3は、各種プログラムを実行する例えば128ビットのCPU(セントラルプロセッシングユニット)31を備える。CPU31は、図示しないブートROMに記憶された起動プログラムを実行し、ワークメモリ32等のメモリの初期化等を行った後、光ディスク4に記憶されているゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理を行うものである。CPU31には、ワークメモリ32、ビデオRAM(VRAM)33、外部メモリインターフェース(I/F)34、コントローラI/F35、GPU(Graphics Processing Unit)36、および光ディスクドライブ37が所定のバスを介して接続される。
【0049】
ワークメモリ32は、CPU31で使用される記憶領域であって、CPU31の処理に必要なゲームプログラム等を適宜記憶する。例えば、ワークメモリ32は、CPU31によって光ディスク4から読み出されたゲームプログラムや各種データ等を記憶する。また、ワークメモリ32には、CPU31がゲームプログラムを実行することによって生成される一時的なデータも記憶される。このワークメモリ32に記憶されたゲームプログラムや各種データ等を用いてCPU31がゲーム進行を行う。VRAM33は、テレビ2に表示するゲーム画像データを格納する。外部メモリI/F34は、図示しないコネクタにメモリカード5を嵌合させることによってゲーム装置3とメモリカード5とを通信可能に接続する。CPU31は、外部メモリI/F34を介してメモリカード5に設けられたバックアップメモリにアクセスする。コントローラI/F35は、図示しない複数のコネクタと嵌合する外部機器とゲーム装置3とを通信可能に接続する。例えば、コントローラ6は、接続コードを介して上記コネクタと嵌合し、コントローラI/F35を介してゲーム装置3と接続される。GPU36は、例えば、3Dグラフィックスの表示に必要な計算処理を行う半導体チップで構成され、CPU31で処理したゲーム画像データやVRAM33に格納されたゲーム画像データを処理し、そのゲーム画像をテレビ2に表示する。光ディスクドライブ37は、所定の読み出し位置に配置された光ディスク4に記憶されたデータを読み出し、ゲーム装置3のバスに出力する。
【0050】
ワークメモリ32には、上述したようにCPU31の処理に必要なゲームプログラム等が適宜記憶され、CPU31によって光ディスク4から読み出されたゲームプログラムや各種データ等が格納される。以下、図3を参照して、本発明のゲームプログラムを実行する場合にワークメモリ32に記憶されるプログラムおよびデータの一例について説明する。なお、図3は、ワークメモリ32に記憶されるプログラムおよびデータの一例について説明するための概略的なメモリマップである。
【0051】
図3において、ワークメモリ32は、プログラム記憶領域321およびユニット記憶領域322を有している。具体的には、プログラム記憶領域321には、CPU31によって実行されるマップ生成プログラムと、そのマップ生成プログラムによって利用される乱数生成プログラムおよびゲーム要素配置プログラム等が記憶されている。また、ユニット記憶領域322には、上記マップ生成プログラムによって利用されるユニットテーブル、ドア間距離テーブル、およびユニット画像データ群等が記憶される。ユニットテーブルは、部屋ユニットテーブル、通路ユニットテーブル、およびキャップユニットテーブルを含んでいる。ユニット画像データ群は、部屋ユニット画像群、通路ユニット画像群、およびキャップユニット画像を含んでいる。
【0052】
マップ生成プログラムは、後述するフローチャートによって生成されるゲームで用いられるマップを生成する処理が定義されている。この処理においては、マップに付加的に配置するゲーム要素を配置する際、ゲーム要素配置プログラムが用いられる。また、後述するユニットやゲーム要素配置場所を選択する際、乱数が用いられ、この乱数が乱数生成プログラムによって生成される。
【0053】
図4〜図6を参照して、部屋ユニット画像群、部屋ユニットテーブル、およびドア間距離テーブルについて説明する。なお、図4はユニット記憶領域322に記憶される部屋ユニット画像群に含まれる部屋ユニットの一例を示す図であり、図5は部屋ユニットテーブルの一例を示す図であり、図6は部屋ユニットに対するドア間距離テーブルの一例を示す図である。
【0054】
図4において、ユニット記憶領域322には、部屋ユニット画像群として複数の部屋ユニットRUが記憶されている。部屋ユニットRUは、後述する通路ユニットPUおよびキャップユニットCUと共に、マップを構成する単位画像である。例えば、部屋ユニットRUは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクト等のオブジェクトやマップに付加的に配置されるゲーム要素が移動あるいは配置可能な部屋領域RZを有している。図4においては、部屋領域RZを斜線領域で示している。部屋領域RZは、少なくとも一部が部屋ユニットRUの上記矩形領域の境界と所定長さの線分として接して形成され、当該境界と接する線分にドアDRが設定される。ドアDRは、接続部の一例であり、他のユニットと接続するための部分である。
【0055】
例えば、図4(a)で示す部屋ユニットRUaは、その部屋領域RZが矩形領域の境界を示す4つの辺にそれぞれ1箇所ずつ合計4箇所接しており、それぞれの接する箇所にドアDR1〜DR4が設定されている。図4(b)で示す部屋ユニットRUbは、その部屋領域RZが上記4つの辺にそれぞれ1箇所以上合計5箇所接しており、それぞれの接する箇所にドアDR1〜DR5が設定されている。なお、部屋ユニットRUbのドアDR3およびDR4が同じ辺に設定されている。図4(c)で示す部屋ユニットRUcは、上記辺のうちの対向する2辺に部屋領域RZがそれぞれ1箇所ずつ合計2箇所接しており、それぞれの接する箇所にドアDR1およびDR2が設定されている。図4(d)で示す部屋ユニットRUdは、上記辺のうちの1辺に部屋領域RZが1箇所接しており、その接する箇所にドアDR1が設定されている。
【0056】
このように部屋ユニットRUには、その種類に応じた任意の形状の部屋領域RZが形成される。そして、部屋ユニットRUに設定されるドアDRは、上記4つの辺の少なくとも1つに所定の長さで設定される。ここで、上記部屋ユニットRUの例で示すように、部屋ユニットRUの4つの辺には、ドアDRが設定されない辺がある場合もあるし、1つの辺に複数のドアDRが設定される場合もある。
【0057】
また、部屋ユニットRUには、その部屋領域RZの内部にマップのスタート位置、ゴール位置、敵キャラクタ、およびアイテム等の付加的に配置されるゲーム要素(以下、単にゲーム要素と記載する)がそれぞれ配置される可能性がある地点が設定されている。以下、これらの地点をスロットと記載し、スタート位置が配置される可能性がある地点をスタートスロットSs、ゴール位置が配置される可能性がある地点をゴールスロットSg、敵キャラクタが配置される可能性がある地点を敵スロットSe、アイテムが配置される可能性がある地点をアイテムスロットSiと記載して説明する。ここで、上記敵キャラクタは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、典型的には、その移動を妨害するキャラクタであり、その敵の強さが属性値として予め設定されている。したがって、上記敵キャラクタがマップ上に配置されることによって、その配置場所付近をプレイヤオブジェクトが通過することが困難になり、その属性値に応じて通過する困難度が高くなる。一方、上記アイテムは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、典型的には、プレイヤオブジェクトの得点や能力が向上し、マップ攻略や収集のための目的物である。したがって、上記アイテムがマップ上に配置された場合、その配置場所がプレイヤオブジェクトの到達目標場所の1つとなる。
【0058】
ここで、部屋ユニットRUに形成される部屋領域RZの内部には、少なくとも1つのゴールスロットSgが必ず設定されている。そして、他のスロットは、1つの部屋ユニットRUに形成される部屋領域RZの内部に、複数設定されている場合もあるし、設定がない場合もある。例えば、図4(a)で示す部屋ユニットRUaに形成される部屋領域RZの内部には、2つのスタートスロットSsと、1つのゴールスロットSg、敵スロットSe、およびアイテムスロットSiとが設定されている。図4(b)で示す部屋ユニットRUbに形成される部屋領域RZの内部には、2つの敵スロットSeと、1つのゴールスロットSgおよびアイテムスロットSiとが設定されている。図4(c)で示す部屋ユニットRUcに形成される部屋領域RZの内部には、1つのゴールスロットSg、敵スロットSe、およびアイテムスロットSiが設定されている。図4(d)で示す部屋ユニットRUdに形成される部屋領域RZの内部には、3つのスタートスロットSsと、1つのゴールスロットSgおよびアイテムスロットSiとが設定されている。
【0059】
図5において、ユニット記憶領域322に記憶される部屋ユニットテーブルには、上述した部屋ユニット画像群として含まれるそれぞれの部屋ユニットRUに対するデータが記憶される。例えば、部屋ユニットテーブルには、それぞれの部屋ユニットRUに対して、そのサイズ、ドアDRの設定位置、およびスロットの数等が記憶されている。部屋ユニットRUのサイズは、単位ユニットの大きさ1×1の倍数で表される上記矩形領域の大きさであり、例えば、上述した部屋ユニットRUa〜RUdは、それぞれサイズ4×4である。なお、後述するサイズは、特に指示のない限り上記単位ユニットの大きさを1×1とした値を基準に表現する。
【0060】
部屋ユニットRUに設定されるドアDRの設定位置は、上述した4つの辺を順にa〜dで示し(例えば、ユニットの上側の辺を辺aとし、右側の辺を辺bとし、下側の辺を辺cとし、左側の辺を辺dとする)、ドアDRが設定される辺a〜d上における位置を示す数値を付与する。上記位置を示す数値は、ドアDRが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図4(a)で示す部屋ユニットRUaの上側の辺を辺aとし、部屋ユニットRUaのドアDR1が辺aの左端から2単位ユニット目に設定されているとすると、ドアDR1の設定位置として「a2」が部屋ユニットテーブルに記憶される。そして、部屋ユニットRUに設定されるスロットの数は、それぞれの部屋領域RZの内部に設定されるスタートスロットSs、ゴールスロットSg、敵スロットSe、およびアイテムスロットSiのそれぞれの数である。CPU31は、この部屋ユニットテーブルを参照することによって、上記部屋ユニット画像群を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれの部屋ユニットRUのデータを取得することができる。
【0061】
図6において、ユニット記憶領域322に記憶される部屋ユニットに対するドア間距離テーブルは、それぞれ部屋ユニットRUに設定されたそれぞれのドアDRにおける相互の距離を示す距離データが記憶される。例えば、図6(a)〜図6(c)は、それぞれ図4(a)〜図4(c)で示した部屋ユニットRUa〜RUcに対するドア間距離テーブルを示している。上記距離データは、図4および図6を対比してわかるように、画像で示されるドアDRの相互の距離が長いものに対して、所定の法則に基づいて相対的に大きな値となる。例えば、部屋ユニットRUaにおいて最も相互の距離が長いドアDR2〜DR3の距離データは、ドア間距離テーブルにおいて距離データ「11」が示され、最も相互の距離が短いドアDR3〜DR4の距離データは、ドア間距離テーブルにおいて距離データ「3」が示される。したがって、部屋ユニットRUに設定された2つのドアDRの間をプレイヤオブジェクトが移動する際、プレイヤは、当該2つのドアDRに設定された距離データが大きいほど、その間を移動する距離を長く感じる。なお、部屋ユニットRUdは、ドアDRが1つのみ設定されているため、ドア間距離テーブルを作成しなくてもかまわない。CPU31は、この部屋ユニットに対するドア間距離テーブルを参照することによって、上記部屋ユニット画像群を処理毎に画像解析しなくても、後述するゲーム要素配置処理に必要なそれぞれの部屋ユニットRUに設けられたドアDRの距離データを取得することができる。
【0062】
図7〜図10を参照して、通路ユニット画像群およびキャップユニット画像と、通路ユニットテーブル、キャップユニットテーブル、およびドア間距離テーブルとについて説明する。なお、図7はユニット記憶領域322に記憶される通路ユニット画像群およびキャップユニット画像に含まれる通路ユニットおよびキャップユニットの一例を示す図であり、図8は通路ユニットテーブルの一例を示す図であり、図9はキャップユニットテーブルの一例を示す図であり、図10は通路ユニットに対するドア間距離テーブルの一例を示す図である。
【0063】
図7(a)〜図7(d)において、ユニット記憶領域322には、通路ユニット画像群として複数の通路ユニットPUが記憶されている。例えば、通路ユニットPUは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクトが移動可能な通路領域PZを有している。また、図7(e)において、ユニット記憶領域322には、キャップユニット画像として少なくとも1つのキャップユニットCUが記憶されている。例えば、キャップユニットCUは、矩形領域で形成され、その内部に任意な形状でプレイヤオブジェクトが移動可能な通路領域PZを有している。図7においては、それぞれの通路領域PZを斜線領域で示している。通路領域PZは、少なくとも一部が通路ユニットPUあるいはキャップユニットCUの上記矩形領域の境界と所定長さの線分として接して形成され、当該境界と接する線分にドアDRが設定される。なお、通路ユニットPUあるいはキャップユニットCUにおける上記線分の長さは、上述した部屋ユニットRUにおける線分の所定の長さと同じである。
【0064】
例えば、図7(a)で示す通路ユニットPUaは、その通路領域PZが矩形領域の境界を示す4つの辺のうち、対向する2辺にそれぞれ1箇所ずつ合計2箇所接しており、それぞれの接する箇所にドアDR1およびDR2が設定されている。図7(b)で示す通路ユニットPUbは、その通路領域PZが上記4つの辺のうち、隣り合う2辺にそれぞれ1箇所ずつ合計2箇所接しており、それぞれの接する箇所にドアDR1およびDR2が設定されている。図7(c)で示す通路ユニットPUcは、上記4つの辺に通路領域PZがそれぞれ1箇所ずつ合計4箇所接しており、それぞれの接する箇所にドアDR1〜DR4が設定されている。図7(d)で示す通路ユニットPUdは、その通路領域PZが上記4つの辺のうち、3辺にそれぞれ1箇所ずつ合計3箇所接しており、それぞれの接する箇所にドアDR1〜DR3が設定されている。図7(e)で示すキャップユニットCUは、その通路領域PZが矩形領域の境界を示す4つの辺のうちの1辺に1箇所接しており、その接する箇所にドアDR1が設定されている。
【0065】
このように通路ユニットPUおよびキャップユニットCUには、その種類に応じた任意の形状の通路領域PZが形成される。そして、通路ユニットPUに設定されるドアDRは、上記4つの辺の少なくとも2つ以上に所定の長さで設定される。また、キャップユニットCUに設定されるドアDRは、上記4つの辺の1つに1箇所だけ所定の長さで設定される。つまり、通路ユニットPUとキャップユニットCUとの違いは、ドアDRが設定される数であり、キャップユニットCUをドアDRが1つ設定される通路ユニットと定義することもできる。しかし、後述する処理の説明でそれらの区別を明確にするために、キャップユニットCUを通路ユニットPUと区別して説明する。また、部屋ユニットRU、通路ユニットPU、およびキャップユニットCUを総称して説明するときは、単にユニットと記載する。
【0066】
図8において、ユニット記憶領域322に記憶される通路ユニットテーブルには、上述した通路ユニット画像群として含まれるそれぞれの通路ユニットPUに対するデータが記憶される。例えば、通路ユニットテーブルには、それぞれの通路ユニットPUに対して、そのサイズおよびドアDRの設定位置等が記憶されている。通路ユニットPUのサイズは、上記矩形領域の大きさであり、例えば、上述した通路ユニットPUa〜PUdは、それぞれサイズ1×1である。通路ユニットPUに設定されるドアDRの設定位置は、上述した4つの辺を順にa〜dで示し、ドアDRが設定される辺a〜d上における位置を示す数値を付与する。上記位置を示す数値は、ドアDRが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図7(a)で示す通路ユニットPUaの上側の辺を辺aとし、通路ユニットPUaのドアDR1が辺aの左端から1単位ユニット目に設定されているとすると、ドアDR1の設定位置として「a1」が通路ユニットテーブルに記憶される。CPU31は、この通路ユニットテーブルを参照することによって、上記通路ユニット画像群を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれの通路ユニットPUのデータを取得することができる。
【0067】
図9において、ユニット記憶領域322に記憶されるキャップユニットテーブルには、上述したキャップユニット画像として含まれるキャップユニットCUに対するデータが記憶される。例えば、キャップユニットテーブルには、キャップユニットCUに対して、そのサイズおよびドアDRの設定位置等が記憶されている。キャップユニットCUのサイズは、上記矩形領域の大きさであり、例えば、上述したキャップユニットCUは、サイズ1×1である。キャップユニットCUに設定されるドアDRの設定位置は、上述した4つの辺を順にa〜dで示し、ドアDRが設定される辺a〜d上における位置を示す数値を付与する。上記位置を示す数値は、ドアDRが設定される辺の一方端からの距離を、上記単位ユニットの長さで示す。例えば、図7(e)で示すキャップユニットCUの下側の辺を辺cとし、キャップユニットCUのドアDR1が辺cの右端から1単位ユニット目に設定されているとすると、ドアDR1の設定位置として「c1」がキャップユニットテーブルに記憶される。CPU31は、このキャップユニットテーブルを参照することによって、上記キャップユニット画像を処理毎に画像解析しなくても、後述するマップ生成に必要なそれぞれのキャップユニットCUのデータを取得することができる。なお、上述したように、キャップユニットCUは、ドアDRが1つ設定される通路ユニットと定義することも可能であり、キャップユニットCUのデータを上記通路ユニットテーブルに含めてもかまわない。
【0068】
図10において、ユニット記憶領域322に記憶される通路ユニットに対するドア間距離テーブルは、それぞれ通路ユニットPUに設定されたそれぞれのドアDRにおける相互の距離を示す距離データが記憶される。例えば、図10(a)〜図10(d)は、それぞれ図7(a)〜図7(d)で示した通路ユニットPUa〜PUdに対するドア間距離テーブルを示している。上記距離データは、図7および図10を対比してわかるように、画像で示されるドアDRの相互の距離が長いものに対して、所定の法則に基づいて相対的に大きな値となる。例えば、部屋ユニットRUにおいて、相対するそれぞれの辺に設けられたドアDRの距離データは、ドア間距離テーブルにおいて距離データ「2」が示され、隣接するそれぞれの辺に設けられたドアDRの距離データは、ドア間距離テーブルにおいて距離データ「1」が示される。なお、キャップユニットCUは、ドアDRが1つのみ設定されているため、ドア間距離テーブルを作成しなくてもかまわない。CPU31は、この通路ユニットに対するドア間距離テーブルを参照することによって、上記通路ユニット画像群を処理毎に画像解析しなくても、後述するゲーム要素配置処理に必要なそれぞれの通路ユニットPUに設けられたドアDRの距離データを取得することができる。
【0069】
次に、図11〜図16を参照して、ゲームシステム1におけるゲーム装置3によって実行されるマップ生成処理について説明する。なお、図11は、ゲーム装置3によって実行されるマップ生成処理の全体処理を示すフローチャートである。そして、図12は図11のユニット配置処理の詳細な動作を示すサブルーチンであり、図13は図11のユニット接続処理の詳細な動作を示すサブルーチンであり、図14および図15は図11のゲーム要素配置処理の詳細な動作を示すサブルーチンである。また、図16は、図14のスコア計算処理の詳細な動作を示すサブルーチンである。
【0070】
ゲーム装置3の電源が投入されると、ゲーム装置3のCPU31は、図示しないブートROMに記憶されている起動プログラムを実行し、ワークメモリ32等の各ユニットが初期化される。そして、光ディスク4に格納されたマップ生成プログラム等のプログラムと各種データが光ディスクドライブ37を介してワークメモリ32に読み込まれ、そのマップ生成プログラムの実行が開始される。
【0071】
図11において、CPU31は、部屋の数RNおよび選択係数SFとを設定し(ステップS1)、処理を次のステップに進める。部屋の数RNは、当該マップ生成プログラムによって生成されるマップ上に配置される部屋ユニットRUの数である。選択係数SFは、ユニット同士を接続する際に、接続されるユニットの種類を制御する係数であり、本実施例においては0〜1の間の数値が設定されるが詳細は後述する。これら部屋の数RNおよび選択係数SFは、プログラムによってCPU31が自動的に設定してもよいし、プレイヤがコントローラ6を操作することによる指示によって、手動で設定されてもかまわない。
【0072】
次に、CPU31は、ユニット記憶領域322に記憶される部屋ユニットテーブルを参照して、スタートスロットSsを含む部屋ユニットRUを選択する(ステップS2)。そして、CPU31は、ユニット記憶領域322に記憶された部屋ユニット画像群から上記ステップS2で選択された部屋ユニットRUに相当する画像をスタートユニットとして抽出して、当該部屋ユニットをゲームマップを生成する仮想的な所定の平面(図2のワークメモリ32上に形成される領域であり、以下、マップ領域と記載する)に配置し(ステップS3)、次のステップに処理を進める。ここで、CPU31は、部屋ユニットRUを90°毎に回転させて上記マップ領域に配置することが可能である。つまり、図4で示した部屋ユニットRUを0°とした場合、CPU31は、時計方向に90°、180°、および270°回転させてそれぞれの部屋ユニットRUを上記マップ領域に配置することができる。このようにすることによって、データ量をおさえつつ部屋ユニットの多様性を増すことができる。なお、CPU31は、上記ステップS3における部屋ユニットRUの回転角度を0°、90°、180°、および270°のうちから、ランダムに選択する。
【0073】
次に、CPU31は、上記マップ領域に既に配置されているユニットに設定されているドアDRに、空きドアがあるか否かを判断する(ステップS4)。ここで、空きドアとは、上述した部屋ユニットRUや通路ユニットPUに設定されているドアDRのうち、他のユニットのドアDRと未接続状態のものを示している。そして、CPU31は、空きドアがある場合、処理を次のステップS5に進め、空きドアがない場合、処理を次のステップS8に進める。
【0074】
ステップS5では、CPU31は、上記マップ領域に新たにユニットを配置する処理を行い、処理を次のステップS6に進める。図12で示すユニット配置処理の詳細な動作を示すサブルーチンを参照して、このステップS5で行う詳細な動作について説明する。
【0075】
図12において、CPU31は、上記マップ領域に既に配置されているユニットの空きドアの1つをランダムで選択し(ステップS51)、次のステップに処理を進める。なお、後述するユニットの配置によって上記マップ領域に通路ユニットPUが配置されている場合があり、ステップS51では、部屋ユニットRUの他に通路ユニットPUのドアDRが空きドアとして選択されることがある。
【0076】
次に、CPU31は、上記乱数生成プログラムを実行して、所定の範囲(例えば、0〜1)の乱数を生成し(ステップS52)、処理を次のステップに進める。
【0077】
次に、CPU31は、上記ステップS52で生成された乱数が、上記ステップS1で設定された選択係数SFより大きいか否かを判断する(ステップS53)。なお、CPU31は、上記ステップS51で選択された空きドアが部屋ユニットRUに設定されたドアDRである場合、上記選択係数SFに1以上の所定の倍数M(例えば、1.5)を乗算して、その乗算結果と上記乱数とを上記ステップS53で比較する。そして、CPU31は、上記乱数が選択係数SFより大きい場合、処理を次のステップS54に進め、上記乱数が選択係数SF以下の場合、処理を次のステップS59に進める。
【0078】
ステップS54では、CPU31は、ステップS51で選択された空きドアに接続するように配置可能な部屋ユニットRUが上記部屋ユニット画像群にあるか否かを判断する。なお、以下の説明において、ステップS51で選択された空きドアを「選択ドア」と省略する。ここで、CPU31がステップS54で行う配置可能の判断について説明する。新たに配置される部屋ユニットRUは、その部屋ユニットRUに設定されているドアDRと選択ドアとが接続するように配置される。図17は、マップ領域に既に配置されている部屋ユニットRUaのドアDR3がステップS51で選択され、新たに部屋ユニットRUcが配置されるときに、部屋ユニットRUaのドアDR3に部屋ユニットRUcのドアDR1が接続されて配置された一例を示している。上記配置可能の判断は、新たに配置される部屋ユニットRUが、自身の何れかのドアDRと選択ドアとが接続されるようにして配置した場合に、(1)マップ領域に既に配置されている他のユニットと自身のユニットが重なる場合、(2)自身の他の空きドアがマップ領域に既に配置されている他のユニットと接するために接続不可能になる場合、(3)自身のユニットを配置することによって、既に配置されたユニットの空きドアを接続不可能にする場合、の(1)〜(3)のいずれかの場合に、当該部屋ユニットRUを配置不可能とする。この判断は、部屋ユニットRUを90°毎に回転させて、回転後のユニットについてそれぞれ判断されるので、部屋ユニットRUに設定されている全てのドアDRについて選択ドアに接続して配置可能か否かが判断される。CPU31は、このような配置可能の判断を、上記部屋ユニットテーブルに記憶されているそれぞれの部屋ユニットRUのサイズおよびドアDRの設定位置のデータを参照して行う。そして、CPU31は、配置可能な部屋ユニットRUが上記部屋ユニット画像群に1つでもある場合、処理を次のステップS55に進め、配置可能な部屋ユニットRUが上記部屋ユニット画像群に1つもない場合、処理を次のステップS56に進める。
【0079】
ステップS55では、CPU31は、上記ステップS54で配置可能と判断した部屋ユニットRUの中から1つの部屋ユニットRUをランダムに選択する。そして、CPU31は、処理を次のステップS62に進める。
【0080】
一方、ステップS56では、CPU31は、選択ドアに接続するように配置可能な通路ユニットPUが上記通路ユニット画像群にあるか否かを判断する。ここで、CPU31がステップS56で行う配置可能の判断について説明する。新たに配置される通路ユニットPUは、その通路ユニットPUに設定されているドアDRと選択ドアとが接続するように配置される。図18は、マップ領域に既に配置されている部屋ユニットRUaのドアDR3がステップS51で選択され、新たに通路ユニットPUbが配置されるときに、部屋ユニットRUaのドアDR3に通路ユニットPUbのドアDR2が接続されて配置された一例を示している。上記配置可能の判断は、上記配置可能の判断は、前述のステップS54の説明における部屋ユニットRUの配置可能の判断と同様である。そして、CPU31は、配置可能な通路ユニットPUが上記通路ユニット画像群に1つでもある場合、処理を次のステップS57に進め、配置可能な通路ユニットPUが上記通路ユニット画像群に1つもない場合、処理を次のステップS58に進める。
【0081】
ステップS57では、CPU31は、上記ステップS56で配置可能と判断した通路ユニットPUの中から1つの通路ユニットPUをランダムに選択する。そして、CPU31は、処理を次のステップS62に進める。一方、ステップS58では、CPU31は、キャップユニットCUを選択して、処理を次のステップS62に進める。
【0082】
CPU31は、上記ステップS53において、上記乱数が選択係数SF以下の場合、処理をステップS59に進めている。ステップS59では、CPU31は、選択ドアに配置可能な通路ユニットPUが上記通路ユニット画像群にあるか否かを判断する。そして、CPU31は、配置可能な通路ユニットPUが上記通路ユニット画像群に1つでもある場合、処理を次のステップS60に進め、配置可能な通路ユニットPUが上記通路ユニット画像群に1つもない場合、処理を次のステップS61に進める。このステップS59における動作は、上記ステップS56と同様であるため、詳細な説明を省略する。
【0083】
ステップS60では、CPU31は、上記ステップS59で配置可能と判断した通路ユニットPUの中から1つの通路ユニットPUをランダムに選択する。そして、CPU31は、処理を次のステップS62に進める。一方、ステップS61では、CPU31は、キャップユニットCUを選択して、処理を次のステップS62に進める。
【0084】
ステップS62では、CPU31は、上記ステップS55、S57、S58、S60、あるいはS61で選択されたユニットを、自身のドアDRと選択ドアとを接続するようにマップ領域に配置する。ここで、選択されたユニットにおいて、複数のドアDRと選択ドアとを接続して配置可能である場合、CPU31は、選択ドアと接続するドアDRをランダムで選択する。そして、CPU31は、当該サブルーチンによるユニット配置処理を終了して、図11のステップS6に処理を進める。
【0085】
例えば、部屋ユニットRUaのドアDR3が選択ドアに設定され、その選択ドアと部屋ユニットRUcのドアDR1とを接続して配置した場合、図17に示すように部屋ユニットRUaおよびRUcの互いに相対する矩形領域の1辺の少なくとも1部が接した状態で配置される。また、部屋ユニットRUaのドアDR3が選択ドアに設定され、その選択ドアと通路ユニットPUbのドアDR1とを接続して配置した場合、図18に示すように部屋ユニットRUaおよび通路ユニットPUbの互いに相対する矩形領域の1辺の少なくとも1部が接した状態で配置される。さらに、図19で示すように、部屋ユニットRUaのドアDR3が選択ドアに設定され、その選択ドアとキャップユニットCUのドアDR1とを接続して配置した場合、部屋ユニットRUaおよびキャップユニットCUの互いに相対する矩形領域の1辺の少なくとも1部が接した状態で配置される。図17〜図19に示すように、ユニット同士がドアDRを介して接続された場合、それぞれのユニットに形成された部屋領域RZあるいは通路領域PZが当該ドアDRを介して接続される。これらのドアDRの長さ(つまり、所定の線分長さ)は、同一であるため、上記領域が寸法差なく連結される。また、図19に示すように、マップ領域に配置されたユニットにキャップユニットCUがドアDRを介して接続された場合、マップ領域に配置されたユニットに形成された部屋領域RZあるいは通路領域PZは、当該ドアDRを介して閉塞領域(行き止まり)を形成する。
【0086】
ここで、図12で示した上記ステップS53〜S61に注目する。CPU31は、上記ステップS53において上記乱数が選択係数SFより大きいか否かを判断している。そして、CPU31は、上記乱数が選択係数SFより大きい場合、上記ステップS54において部屋ユニットRUが配置可能か否かを判断し、上記乱数が選択係数SF以下の場合、上記ステップS59において通路ユニットPUが配置可能か否かを判断している。つまり、CPU31は、上記乱数が選択係数SFより大きい場合、部屋ユニットRUを優先的にマップ領域に配置し、上記乱数が選択係数SF以下の場合、部屋ユニットRUをマップ領域に配置しない。したがって、選択係数SFの値によって、マップ領域に配置される部屋ユニットRUの割合を制御することができる。具体的には、選択係数SFを乱数が生成される範囲の中央値より小さく設定することによって、部屋ユニットRUがマップ領域に配置される割合が大きくなり、選択係数SFを当該範囲の中央値より大きく設定することによって、通路ユニットPUがマップ領域に配置される割合が大きくなる。
【0087】
一方、CPU31は、上記ステップS51で選択された空きドアが部屋ユニットRUに設定されたドアDRである場合、上記選択係数SFに1以上の所定の倍数Mを乗算して、その乗算結果と上記乱数とを上記ステップS53で比較する。したがって、倍数Mが大きいほど上記乱数と比較する選択係数SFが大きくなり、CPU31が上記ステップS59に処理を進める確率が高くなる。つまり、倍率Mが大きいほど、通路ユニットPUが優先的にマップ領域に配置される。したがって、倍率Mの値によって、マップ領域に配置された部屋ユニットRUと接続されるユニットの種類を制御することができる。具体的には、倍率Mを小さく設定することによって、部屋ユニットRU同士がマップ領域で接続される確率が大きくなり、倍率Mを大きく設定することによって、部屋ユニットRUには通路ユニットPUがマップ領域で接続される確率が大きくなる。
【0088】
このように、選択係数SFによって、マップ領域に2種類のユニットがそれぞれ配置される割合を制御することができる。また、倍率Mによって2種類のユニットの一方に他方のユニットが接続されて配置される確率を制御することができる。つまり、選択係数SFおよび倍率Mを調整することによって、マップ領域に配置される2種類のユニットの割合、および2種類のユニットが互いに接続される相性を考慮したマップを生成することができる。
【0089】
なお、上述の説明では、全てのユニットに共通する選択係数SFを設定したが、各ユニットそれぞれについて、あるいは各ユニットに設けられた各ドアDRそれぞれについて、異なる選択係数SFを個別に設定してもかまわない。これによって、さらにユニット間の相性が考慮されたマップを生成することが可能となる。
【0090】
図11に戻り、ステップS6では、CPU31は、マップ領域に配置された部屋ユニットRUの数が、上記ステップS1で設定された部屋の数RNに到達したか否かを判断する。そして、CPU31は、部屋ユニットRUの数が部屋の数RNに未到達の場合、上記ステップS4に戻って処理を継続し、部屋の数RNに到達した場合、次のステップS7に処理を進める。
【0091】
ステップS7では、CPU31は、上記マップ領域に配置されたユニットの空きドア同士を接続する処理を行い、処理を次のステップS8に進める。図13で示すユニット接続処理の詳細な動作を示すサブルーチンを参照して、このステップS7で行う詳細な動作について説明する。
【0092】
図13において、CPU31は、上記マップ領域に配置されているユニットに設定されているドアDRに、空きドアがあるか否かを判断する(ステップS71)。このステップS71の処理は、上記ステップS4と同様であるため、詳細な説明を省略する。そして、CPU31は、空きドアがある場合、処理を次のステップS72に進め、空きドアがない場合、当該サブルーチンによるユニット接続処理を終了する。
【0093】
ステップS72では、CPU31は、空きドアの1つを選択し、その空きドアの開口方向(つまり、空きドアを有するユニットと逆の方向)の所定領域内に、他の空きドアがあるか否かを判断する。そして、CPU31は、所定領域内に他の空きドアがある場合、処理を次のステップS73に進め、他の空きドアがない場合、処理を次のステップS74に進める。
【0094】
ステップS73では、CPU31は、上記ステップS72で選択された空きドアと上記所定領域内に存在する他の空きドアとを通路ユニットPUで接続してマップ領域に配置し、上記ステップS71に戻って処理を継続する。一方、ステップS74では、CPU31は、上記ステップS72で選択された空きドアにキャップユニットCUを接続してマップ領域に配置し、上記ステップS71に戻って処理を継続する。ここで、図20を参照して、CPU31がステップS72〜S74で行う処理について説明する。なお、図20は、CPU31が行うユニット接続処理の一例を説明するための図である。
【0095】
図20において、前述の図11におけるステップS6でYesになった時点で、マップ領域には、2つの部屋ユニットRU1およびRU2が4つの通路ユニットPUを介して接続されて配置されている。そして、一方の部屋ユニットRU1には、3つの空きドアがあり、それぞれの空きドアの位置を基準として開口方向に向かって、例えばサイズ10×10の領域Z1〜Z3が示されている。領域Z1およびZ2は、その領域内に他の空きドアが存在しないため、CPU31は、上記ステップS72において「他の空きドアなし」と判断する。そして、CPU31は、上記ステップS74において領域Z1およびZ2に対応する空きドアに、それぞれキャップユニットCUを接続して配置する(領域Z1およびZ2内に示した一点鎖線の領域)。
【0096】
一方、領域Z3は、その領域内に他方の部屋ユニットRU2の空きドアが存在するため、CPU31は、上記ステップS72において「他の空きドアあり」と判断する。そして、CPU31は、上記ステップS73において領域Z3に対応する部屋ユニットRU1の空きドアと領域Z3内に存在する部屋ユニットRU2の空きドアとを、通路ユニットPUを組み合わせて接続する。例えば、図20においては、3つの通路ユニットPUaおよび1つの通路ユニットPUbを組み合わせて、部屋ユニットRU1およびRU2の空きドアを接続してマップ領域に配置している(領域Z3内に示した一点鎖線の領域)。
【0097】
他方の部屋ユニットRU2には、2つの空きドアがあり、それぞれの空きドアの開口方向に対して、領域Z4およびZ5が示されている。領域Z4は、その領域内に他の空きドアが存在しないため、CPU31は、上記ステップS72で「他の空きドアなし」と判断する。そして、CPU31は、上記ステップS74において領域Z4に対応する空きドアに、キャップユニットCUを接続して配置する(領域Z4内に示した一点鎖線の領域)。
【0098】
一方、領域Z5は、その領域内に一方の部屋ユニットRU1の空きドアが存在するため、CPU31は、上記ステップS72において「他の空きドアあり」と判断する。そして、CPU31は、上記ステップS73において領域Z5に対応する部屋ユニットRU2の空きドアと領域Z5内に存在する部屋ユニットRU1の空きドアとを、通路ユニットPUを組み合わせて接続する。ここで、この領域Z5を用いた判断を経て通路ユニットPUが配置される結果と、上記領域Z3を用いた判断を経て通路ユニットPUが配置される結果とは、同じである。上記ステップS72およびS73によるCPU31の動作では、何れか一方の空きドアが先に処理対象となるため、他方の空きドアは、当該先の処理によって通路ユニットPUが接続されるため処理対象から除外されることになる。
【0099】
図21は、上述したマップ生成処理によって生成されるマップの一例である。図21に示すように、上述したマップ生成処理においてはマップ領域に配置されたユニットと必ず接続して新たなユニットを配置していくため、複数のグループに分割されたマップは生成されない。つまり、プレイヤオブジェクト等のオブジェクトが移動あるいは配置可能な領域が一体で、かつ閉じられて形成される。
【0100】
図11に戻り、ステップS8において、CPU31は、上記ゲーム要素配置プログラムを実行して上記ステップS7までの処理によって生成されたマップに上記ゲーム要素を配置する処理を行い、当該フローチャートによるマップ生成処理を終了する。図14および図15で示すゲーム要素配置処理の詳細な動作を示すサブルーチンを参照して、このステップS8で行う詳細な動作について説明する。
【0101】
図14において、CPU31は、上記ステップS3でスタートユニットとして配置された部屋ユニットRUが有するスタートスロットSsから1つを選択して、生成したマップのスタート位置に設定し(ステップS81)、処理を次のステップに進める。
【0102】
次に、CPU31は、現在生成されているマップを構成するそれぞれのユニットに対して、スコア計算処理を行い(ステップS82)、処理を次のステップに進める。以下、図16で示すスコア計算処理の詳細な動作を示すサブルーチンを参照して、このステップS82で行う詳細な動作について説明する。
【0103】
図16において、CPU31は、上記マップ領域に配置されているそれぞれのユニットに付与されるユニットスコアScを全て「−1」(「−1」はユニットスコアScが未設定であることを示している)に設定し(ステップS821)、次のステップに処理を進める。ここで、ユニットスコアScとは、上記マップ領域に配置されるユニット(部屋ユニットRU、通路ユニットPU、およびキャップユニットCU)のそれぞれに付与される数値である。このユニットスコアScによって、プレイヤオブジェクトがスタートユニットを起点としたそれぞれのユニットに到達するまでの距離や、当該ユニットを通過する難易度が表現される。
【0104】
次に、CPU31は、上記マップ領域に配置されているそれぞれのユニットに設定されたドアDRに付与されるドアスコアScdを全て「−1」(「−1」はドアスコアScdが未設定であることを示している)に設定し(ステップS822)、次のステップに処理を進める。ここで、ドアスコアScdとは、上記マップ領域に配置される部屋ユニットRU、通路ユニットPU、およびキャップユニットCUに設定されているそれぞれのドアDRに付与される数値である。このドアスコアScdによって、プレイヤオブジェクトがスタートユニットを起点としたそれぞれのドアDRに到達するまでの距離や、当該ドアDRを通過する難易度が表現される。なお、上述したように、それぞれのユニットが有するドアDRを接続することによってユニットが配置されており、ユニットの接続部には、2つのユニットにそれぞれ設けられた2つのドアDRが重なっている。ドアスコアScdは、この重なった2つのドアDRに対してそれぞれ別途に付与される(ただし、後述するように、この重なった2つのドアDRのドアスコアScdは、結果的に同じ値となる)。
【0105】
次に、CPU31は、スタートユニットに配置された敵キャラクタの強さ(属性値)の合計値(以下、敵スコアと記載する)を計算し、その敵スコアを当該スタートユニットのユニットスコアScとして確定して(ステップS823)、処理を次のステップに進める。この敵スコアの詳細については後述する。
【0106】
次に、CPU31は、上記ステップS823で確定したユニットスコアScを、スタートユニットに設けられた全てのドアDRに対するそれぞれのドアスコアScdとして仮設定し(ステップS824)、処理を次のステップに進める。ここで、スタートユニットに設けられたドアDRに後述するゲートGが配置されている場合、当該ゲートGのゲートスコアを加算して、当該ドアDRのドアスコアScdを仮設定する。このゲートスコアの詳細については後述する。
【0107】
次に、CPU31は、現在、仮設定されているドアスコアScdから最小値のドアスコアScdを選択し、当該ドアスコアScdを確定する(ステップS825)。ここで、上記ステップS825で最小値のドアスコアScdが複数ある場合、CPU31は、例えば、上記ステップS3〜S7のマップ領域に配置されたユニットの順で、最も先に配置されたユニットに関連するドアスコアScdを優先的に選択し、当該ドアスコアScdを確定する。そして、CPU31は、上記ステップS825でドアスコアScdが確定されたドアDRと接続され重なっている他のドアDRに対して、同じドアスコアScdを付与して確定し(ステップS826)、処理を次のステップに進める。
【0108】
次に、CPU31は、上記ステップS826でドアスコアScdが確定されたドアDRが属しているユニットに設定されているユニットスコアScが既に確定されているか否かを判断する(ステップS827)。そして、CPU31は、ユニットスコアScが未確定の場合、処理を次のステップS828に進め、ユニットスコアScが確定済の場合、処理を次のステップS829に進める。
【0109】
ステップS828では、CPU31は、上記ステップS827で処理対象となったユニットに配置された敵キャラクタの敵スコアを計算し、その敵スコアに上記ステップS826で確定されたドアスコアScdを加算して、その加算結果を当該ユニットのユニットスコアScとして確定し、次のステップS829に処理を進める。ここで、あるユニット内について1つでもドアスコアScdが確定されたときに、そのドアスコアScdに敵スコアを加算してユニットスコアScが設定されるので、ユニットが有するドアのドアスコアScdのうち最小のドアスコアScdに基づいて、ユニットスコアScが設定されることになる。なお、本実施例では、「ユニットスコア=(最小の)ドアスコア+敵スコア」としたが、「ユニットスコア=(最小の)ドアスコア」としてもよい。前者の場合には、ユニットスコアは、そのユニットに到達した後そのユニットを通過する困難度を示す値となる。一方、後者の場合は、ユニットスコアはそのユニット内に存在する敵を考慮しない値となり、そのユニットに到達する困難度を示す値となる。
【0110】
ステップS829では、CPU31は、生成されたマップ上にドアスコアScdが未確定のドアDRがあるか否かを判断する。そして、CPU31は、ドアスコアScdが未確定のドアDRがある場合、処理を次のステップS830に進め、全てのドアDRのドアスコアScdが確定している場合、当該サブルーチンによるスコア計算処理を終了する。
【0111】
ステップS830では、CPU31は、ユニットスコアScが確定されているユニットについて、未確定のドアスコアScdを、同じユニット内で確定済みのドアスコアScdに基づいて計算し、上記ステップS825に戻って処理を継続する。具体的には、ドアスコアScdが未確定のドアDRをドアAとし、ドアスコアScdが確定済みのドアDRをドアBとして、「ドアAのドアスコアScd=ドアBのドアスコアScd+ドアAおよびドアBの間のドア間距離データ+敵スコア+ゲートスコア」で計算される値に設定する。上述したステップS821〜S829の手順で処理すれば、ユニットスコアScが確定されているユニットは、ドアスコアScdが確定されたドアDRを少なくとも1つ含んでいる。上記ステップS830では、CPU31は、このユニットに属するドアスコアScdが未確定のドアDRに対して、同じユニットに属するドアスコアScdが確定されたドアDRからのドア間距離データを、上述したドア間距離テーブルを参照して抽出する。CPU31は、確定済みのドアスコアScdおよび上記ドア間距離データを加算する。そして、そのユニット内に配置された敵キャラクタの強さ(属性値)の合計値(敵スコア)を加算し、さらに、ドアスコアScdが未確定のドアDRにゲートGが設置されている場合、さらに当該ゲートGのゲートスコアを加算して、ドアスコアScdを仮設定する。なお、ステップS82のスコア計算処理においては、敵キャラクタやゲートがまだ配置されていないので、「ドアAのドアスコアScd=ドアBのドアスコアScd+ドアAおよびドアBの間のドア間距離データ」となる。
【0112】
また、スコア計算処理は、後述のステップS86およびS94においても実行されるが、ステップS86のスコア計算処理においては、ゲートがまだ配置されていないので、「ドアAのドアスコアScd=ドアBのドアスコアScd+ドアAおよびドアBの間のドア間距離データ+敵スコア」となる。そして、ステップS94のスコア計算処理においては、「ドアAのドアスコアScd=ドアBのドアスコアScd+ドアAおよびドアBの間のドア間距離データ+敵スコア+ゲートスコア」となる。
【0113】
なお、あるユニット内でドアスコアScdが確定済みのドアDRが複数存在する場合には、その確定済みのドアDRそれぞれについて上記式によって未確定のドアスコアScdを計算する。すなわち、確定済みのドアをドアB1およびドアB2として、「ドアAのドアスコアScd1=ドアB1のドアスコアScd+ドアAおよびドアB1の間のドア間距離データ+敵スコア+ゲートスコア」と、「ドアAのドアスコアScd2=ドアB2のドアスコアScd+ドアAおよびドアB2の間のドア間距離データ+敵スコア+ゲートスコア」の両方を計算し、ドアスコアScd1およびドアスコアScd2のうちの小さい方を選択する。確定済みのドアが3つ以上ある場合も同様である。
【0114】
ここで、図22および図23を参照して、上記ステップS82におけるスコア計算処理の一例を説明する。なお、図22および図23は、ステップS82の状態であるので、敵キャラクタおよびゲートが配置されていない。図22(a)は、上記ステップS821およびS822の処理によって、ユニットスコアScおよびドアスコアScdが設定されたマップの一例である。このマップには、部屋ユニットRU1〜RU3、通路ユニットPU1〜PU6、およびキャップユニットCUが配置されている。部屋ユニットRU1は、スタートユニットであり、キャップユニットCUが接続されている。また、部屋ユニットRU1は、1つの通路ユニットPU1を介して部屋ユニットRU2と相互に接続されている。さらに、別のルートとして、部屋ユニットRU1は、4つの通路ユニットPU2〜PU5を介して部屋ユニットRU2と相互に接続されている。そして、部屋ユニットRU2は、1つの通路ユニットPU6を介して部屋ユニットRU3と相互に接続されている。
【0115】
部屋ユニットRU1〜RU3、通路ユニットPU1〜PU6、およびキャップユニットCUには、それぞれユニットスコアScとして「−1」が設定されている。図22および図23においては、それぞれのユニットに設定されたユニットスコアScの数値をそれぞれユニット内部に示している。そして、上記ユニットに設定されたそれぞれのドアDRには、それぞれドアスコアScdとして「−1」が設定されている。図22および図23においては、ユニット間の接続部からの引き出し線の双方にドアスコアScdとして2つの数値を示している。これらは、その接続部に設けられた2つの重なったドアDRに設定されたそれぞれのドアスコアScdを示している。なお、引き出し線の一方側に示された数値は、当該引き出し線が示す接続部の一方側に配置されたユニットのドアDRに設定されたドアスコアScdであり、引き出し線の他方側に示された数値は、当該引き出し線が示す接続部の他方側に配置されたユニットのドアDRに設定されたドアスコアScdである。
【0116】
上記ステップS823の処理においては、スタートユニット(部屋ユニットRU1)に敵キャラクタが配置されていないため、スタートユニットのユニットスコアScは、「0」に確定される。なお、図22および図23において、確定されたユニットスコアScおよびドアスコアScdは、それぞれの数値に下線を付して示している。そして、上記ステップS824の処理においては、部屋ユニットRU1のドアDRにはゲートGが配置されていないため、部屋ユニットRU1のドアスコアScdは、全て「0」に仮設定される。これらのドアスコアScdは、上記ステップS825〜S830の処理を繰り返すことによって、全て「0」に確定される。これらの確定の際、ステップS826の処理によって、部屋ユニットRU1に接続する他のユニットのドアDRのドアスコアScdも全て「0」に確定され、これらの確定されたドアDRが属する通路ユニットPU1およびPU2と、キャップユニットCUとのユニットスコアScがそれぞれ「0」で確定される。そして、通路ユニットPU1の未確定のドアスコアScd(つまり、部屋ユニットRU2と接続するドアDRのドアスコアScd)は、通路ユニットPU1の確定済みのドアスコアScd=0および双方のドアDRの間に設定されているドア間距離データ「2」を加算して、「2」が仮設定される。一方、通路ユニットPU2の未確定のドアスコアScd(つまり、通路ユニットPU3と接続するドアDRのドアスコアScd)は、通路ユニットPU2の確定済みのドアスコアスコアScd=0および双方のドアDRの間に設定されているドア間距離データ「1」を加算して、「1」が仮設定される(図22(b)の状態)。なお、図22および図23において、仮設定されたドアスコアScdは、その数値を破線枠で囲んで示している。
【0117】
上記ステップS825では、図22(b)に示すマップの場合、通路ユニットPU1のドアDRと通路ユニットPU2のドアDRが仮設定されており、それぞれドアスコアScdが「2」および「1」である。この場合、通路ユニットPU2のドアスコア=1が最小値であるため、通路ユニットPU2のドアスコアScdを確定する。次に、上記ステップS826で、通路ユニットPU2の確定されたドアDRに連結される通路ユニットPU3のドアDRのドアスコアScdを同じ値(「1」)に確定する。そして、上記ステップS828で、通路ユニットPU3のユニットスコアSc=1に確定する。その後、ステップS830で、通路ユニットPU3の未確定のドアスコアScd(つまり、通路ユニットPU4と接続するドアDRのドアスコアScd)は、通路ユニットPU3の確定済みのドアスコアScd=1に、双方のドアDRの間に設定されているドア間距離データ「2」を加算して、「3」が仮設定される(図22(c)の状態)。その後、ステップS825で、仮設定されたドアスコアScd(通路ユニットPU1のドアDRの「2」および通路ユニットPU3のドアDRの「3」)のうち最小のドアスコアScd(通路ユニットPU1のドアDRの「2」)が確定される。以降、このような処理が繰り返されて、ユニットスコアScおよびドアスコアScdの確定が進行する。
【0118】
図23(a)は、部屋ユニットRU2のユニットスコアScが確定され、部屋ユニットRU2に属する2つのドアDRのドアスコアScdが仮設定された処理途中状態を示している。このとき、部屋ユニットRU2のユニットスコアSc=2で確定している。部屋ユニットRU2および通路ユニットPU6の間のドアスコアScdは、「部屋ユニットRU2および通路ユニットPU1の間のドアDR」〜「部屋ユニットRU2および通路ユニットPU6の間のドアDR」までのドア間距離データ「6」が「部屋ユニットRU2および通路ユニットPU1の間のドアDRのドアスコアScd=2」に加算され、「8」が仮設定されている。一方、「部屋ユニットRU2および通路ユニットPU5の間のドアDR」のドアスコアScdは、「部屋ユニットRU2および通路ユニットPU1の間のドアDR」〜「部屋ユニットRU2および通路ユニットPU5の間のドアDR」までのドア間距離データ「7」が「部屋ユニットRU2および通路ユニットPU1の間のドアDRのドアスコアScd=2」に加算され、「9」が仮設定されている。この状態で、上記ステップS825が処理された場合、通路ユニットPU3に仮設定されたドアスコアScd=3が確定される。
【0119】
図23(b)は、このような処理が繰り返されることによって、全てのユニットスコアScおよびドアスコアScdが確定した状態を示している。図23(b)において、スタートユニットである部屋ユニットRU1のユニットスコアSc=0に対して、部屋ユニットRU3のユニットスコアSc=10が最大値で確定している。ここで、部屋ユニットRU3は、部屋ユニットRU1から最も遠い位置に配置されており、このユニットスコアScによってスタートユニットからの距離を示していることがわかる。また、ドアスコアScdは、仮設定された最小値のものを優先的に確定するため、スタートユニットに近いドアDRに付与されるドアスコアScdから確定されることになる。したがって、ドアスコアScdおよび各ユニットのユニットスコアScは、スタートユニットから最短距離を通った距離を示す数値として表される。
【0120】
図14に戻り、上記ステップS82のスコア計算処理の後、CPU31は、マップ上に配置する敵キャラクタの種類およびその数を設定する(ステップS83)。そして、CPU31は、ゲーム進行の上で最も重要な敵キャラクタ(以下、ボス敵キャラクタと記載する)を、ユニットスコアScが最大値に確定された部屋ユニットRUに含まれる敵スロットSeに配置する(ステップS84)。例えば、図23(b)で示したマップの場合、最大値のユニットスコアSc=10に確定された部屋ユニットRU3にボス敵キャラクタが配置される。なお、当該部屋ユニットRUが複数の敵スロットSeを含んでいる場合、CPU31は、その中から任意の敵スロットSeを1つ選択してボス敵キャラクタを配置する。そして、CPU31は、上記ステップS83で設定された他の敵キャラクタを、マップ上の部屋ユニットRUに含まれる任意の敵スロットSeに配置し(ステップS85)、処理を次のステップに進める。
【0121】
次に、CPU31は、上記ステップS84およびS85で敵キャラクタが配置されたマップのそれぞれのユニットに対して、再度スコア計算処理を行い(ステップS86)、処理を次のステップに進める。スコア計算処理を再度実行するのは、敵キャラクタが配置されることによって各ドアスコアScdおよびユニットスコアScが変更されるためである。なお、このステップS86で行うスコア計算処理は、上述した図16で示すスコア計算処理と同様であるため、処理動作の詳細な説明を省略する。ここでは、図24を参照して、上記ステップS86におけるスコア計算処理の一例を説明する。
【0122】
図24に示すマップは、上述した図22および図23のマップと同様のユニット構成になっている。そして、部屋ユニットRU1には敵の強さ「5」および「8」の敵キャラクタが2体配置されており、部屋ユニットRU2には敵の強さ「8」の敵キャラクタが2体配置されており、部屋ユニットRU3には敵の強さ「5」の敵キャラクタが1体と敵の強さ「50」のボス敵キャラクタが1体配置されている。上述したように、これらの敵の強さは、属性値として予め設定されている。
【0123】
図24(a)は、上記ステップS821およびS822の処理によって、ユニットスコアScおよびドアスコアScdが設定されたマップの一例である。上記ステップS86のスコア計算処理においても、同様に全てのユニットスコアScが「−1」に設定され、全てのドアスコアScdが「−1」に設定される。
【0124】
上記ステップS823の処理においては、スタートユニット(部屋ユニットRU1)に2体の敵キャラクタが配置されており、当該スタートユニットの敵スコア=5+8=13である。したがって、スタートユニットのユニットスコアScは、「13」に確定される。そして、上記ステップS824の処理においては、部屋ユニットRU1のドアDRにはゲートGが配置されていないため、部屋ユニットRU1のドアスコアScd=ユニットスコアSc=13となり、全て「13」に仮設定される。そして、ステップS826の処理によって、部屋ユニットRU1に接続する他のユニットのドアDRのドアスコアScdも全て「13」に確定され、これらの確定されたドアDRが属する通路ユニットPU1およびPU2と、キャップユニットCUとのユニットスコアScがそれぞれ「13」で確定される。
【0125】
図24(b)は、部屋ユニットRU2のユニットスコアScが確定され、部屋ユニットRU2に属する2つのドアDRのドアスコアScdが仮設定された処理途中状態を示している。このとき、部屋ユニットRU2および通路ユニットPU1の間のドアスコアScd=15に、部屋ユニットRU2の敵スコア=8+8=16を加算して、部屋ユニットRU2のユニットスコアSc=15+16=31に確定されている。「部屋ユニットRU2および通路ユニットPU6の間のドアDR」のドアスコアScdは、「部屋ユニットRU2および通路ユニットPU1の間のドアDR」〜「部屋ユニットRU2および通路ユニットPU6の間のドアDR」までのドア間距離データ「6」と敵スコア「16」と「部屋ユニットRU2および通路ユニットPU1の間のドアDR」のドアスコアSCd(「15」)が加算され、「37」が仮設定されている。一方、「部屋ユニットRU2および通路ユニットPU5の間のドアDR」のドアスコアScdは、「部屋ユニットRU2および通路ユニットPU1の間のドアDR」〜「部屋ユニットRU2および通路ユニットPU5の間のドアDR」までのドア間距離データ「7」と敵スコア「16」と「部屋ユニットRU2および通路ユニットPU1の間のドアDR」のドアスコアScd(「15」)が加算され、「38」が仮設定されている。この状態で、上記ステップS825が処理された場合、通路ユニットPU3に仮設定されたドアスコアScd=16が確定される。
【0126】
図24(c)は、このような処理が繰り返されることによって、全てのユニットスコアScおよびドアスコアScdが確定した状態を示している。図24(c)において、スタートユニットである部屋ユニットRU1のユニットスコアSc=13に対して、部屋ユニットRU3のユニットスコアSc=94が最大値で確定している。ここで、部屋ユニットRU3は、部屋ユニットRU1から最も遠い位置に配置され、かつマップ上の全ての敵キャラクタと遭遇して到達するユニットである。また、これらの敵キャラクタは、マップ上を移動するプレイヤオブジェクトが遭遇した場合、その移動を妨害するキャラクタであり、その配置場所付近をプレイヤオブジェクトが通過することが困難になる。したがって、このユニットスコアScは、スタートユニットからの距離に、遭遇する敵キャラクタの強さの合計値を加算した値、つまり、プレイヤオブジェクトがスタートユニットを起点に移動する経路に基づいてそのユニットに到達する難易度を示すパラメータとして表される。また、ドアスコアScdは、仮設定された最小値のものを優先的に確定するため、スタートユニットを起点にプレイヤオブジェクトが到達するための難易度が低いドアDRに付与されるドアスコアScdから確定されることになる。したがって、各ユニットのユニットスコアScは、プレイヤオブジェクトがスタートユニットを起点に最も簡単な移動によって到達するその難易度を示すパラメータとして表される。
【0127】
図14に戻り、上記ステップS86のスコア計算処理の後、CPU31は、マップ上に配置するゲートの種類およびその数を設定し(ステップS87)、処理を次のステップに進める。このゲートは、上記ドアDR上に選択的に配置され、マップ上を移動するプレイヤオブジェクトが通過する際、その通過を妨げる障害物であり、そのゲートの強さ(ゲートを開けるために必要なパワー)が属性値として予め設定されている。したがって、ゲートがマップ上に配置されることによって、その配置場所をプレイヤオブジェクトが通過することが困難になり、その属性値に応じて通過する困難度が高くなる。
【0128】
次に、CPU31は、マップに配置されたそれぞれのユニットに対して、変換ユニットスコアTを計算し(ステップS88)、次のステップに処理を進める。変換ユニットスコアTは、ユニットスコアScを所定の変換式で変換した値である。S88において使用される変換式は、具体的には、次の式で計算される。
Tx=Scmax+Scmin−Sc(Ux)
ここで、Scmaxは、全ユニット中でユニットスコアScの最大値であり、Scminは、全ユニット中でユニットスコアScの最小値であり、Sc(Ux)は、ユニットUxに確定されているユニットスコアScである。例えば、図24(c)で示したマップにおいて、部屋ユニットRU2の変換ユニットスコアTを計算する場合、Scmax=94、Scmin=13、Sc(Ux)=31となり、T=76となる。
【0129】
次に、CPU31は、上記ステップS88で計算されたそれぞれの変換ユニットスコアTの合計値Tsumを計算し(ステップS89)、処理を次のステップに進める。例えば、図24(c)で示したマップの場合、合計値Tsum=808となる。
【0130】
次に、CPU31は、乱数生成プログラムを実行して、0〜(合計値Tsum−1)の間で乱数を生成する(ステップS90)。そして、CPU31は、生成された乱数に応じてユニットを選択し、選択されたユニットに設定されているドアDRにゲートGを配置して(ステップS91)、処理を次のステップに進める。図25を参照して、上記ステップS90およびS91の処理の一例を説明する。なお、図25は、図24(c)で示したマップに対して上記ステップS90およびS91における処理の一例を説明するための図である。
【0131】
図25において、CPU31は、上記ステップS90において生成する乱数生成範囲0〜(合計値Tsum−1=807)を、上記ステップS88で計算した変換ユニットスコアTに応じて各ユニットに割り当てる。例えば、部屋ユニットRU1の変換ユニットスコアTは、94+13−13=94である。この部屋ユニットRU1の割り当て範囲を乱数生成範囲0〜に設定する場合、乱数0も部屋ユニットRU1に割り当てられるため、
0≦(部屋ユニットRU1の割り当て範囲)≦93
となる。キャップユニットCUの割り当て範囲を隣接させる場合、キャップユニットCUの変換ユニットスコアTが94+13−13=94であるため、
93<(キャップユニットCUの割り当て範囲)≦187
となる。そして、上記マップ領域に配置されている他のユニットについても全て同様に割り当てていく。その後、上記ステップS90で発生された乱数が0〜93の範囲内であった場合、上記ステップS91では、部屋ユニットRU1が選択され、乱数が94〜187の範囲内であった場合、キャップユニットCUが選択されて、それらのユニットに設定されているドアDRにゲートGが配置される。
【0132】
このように、上記ステップS91で選択されるユニットは、乱数によって選択されるが、その変換ユニットスコアTが大きいほど、そのユニットに割り当てられる数値範囲が広くなるので、そのユニットが選択される確率が高くなる。変換ユニットスコアTが大きいということはユニットスコアが小さいことを意味するので、ゲートGは、ユニットスコアが小さいユニットに配置される確率が高いということになる。つまり、スタートユニットから到達するための上記難易度が低いユニットに設けられたドアDRに対して、高い確率でゲートGを配置することになる。なお、ユニットには、複数のドアDRが設定されている場合があり、このときCPU31は、ランダムでゲートGを配置するドアDRを選択する。また、選択されたユニットの全てのドアDRにおいて、既にゲートGが配置されている場合、CPU31は、上記ステップS91によるゲートGの配置を中止し、次のステップS92に処理を進める。
【0133】
図14に戻り、CPU31は、マップに配置されたゲートGの数が所定数に到達したか否かを判断する(ステップS92)。この所定数は、例えば、上記ステップS87で設定したゲートGの配置数の50%に設定される。この所定数によって、上述した乱数による選択によって配置されるゲートGの数を調整することができる。なお、全てのゲートGを上述した乱数による選択によって配置する場合、上記ステップS87で設定したゲートGの配置数に上記所定数を設定すればよい。そして、CPU31は、ゲートGの数が所定数に未到達の場合、上記ステップS90に戻って処理を繰り返し、所定数に到達した場合、次のステップS93に処理を進める。
【0134】
ステップS93では、CPU31は、上記ステップS87で設定した配置数に到達するまでゲートGをランダムで配置する。すなわち、全ユニットのうちから単純なランダムで1つのユニットを選択し、そのユニットにゲートGを配置する。例えば、ステップS92における「所定数」がステップS87で設定した配置数の70%に設定されていたときには、ステップS91によって配置数の70%が配置され、残りの30%がステップS93によって配置されることになる。そして、処理を次のステップに進める。
【0135】
次に、CPU31は、上記ステップS91およびS93でゲートGが配置されたマップのそれぞれのユニットに対して、再度スコア計算処理を行い(ステップS94)、処理を次のステップに進める。なお、このステップS94で行うスコア計算処理は、上述した図16で示すスコア計算処理と同様であるため、処理動作の詳細な説明を省略する。ここでは、図26を参照して、上記ステップS94におけるスコア計算処理の一例を説明する。
【0136】
図26に示すマップは、上述した図24のマップと同様のユニット構成および敵キャラクタの配置となっている。そして、部屋ユニットRU1および通路ユニットPU1の間のドアDRに、その属性値としてゲートの強さ「20」のゲートGが配置されている。このゲートの強さは、上述したようにマップ上を移動するプレイヤオブジェクトが通過する際、その通過を妨げる度合いを示す予め設定された属性値である。そして、配置されたゲートGのゲートスコアは、その属性値と同じ数値が設定され、この場合、ゲートスコア=20で設定される。
【0137】
図26(a)は、上記ステップS821およびS822の処理によって、ユニットスコアScおよびドアスコアScdが設定されたマップの一例である。上記ステップS94のスコア計算処理においても、同様に全てのユニットスコアScが「−1」に設定され、全てのドアスコアScdが「−1」に設定される。
【0138】
上記ステップS823の処理においては、スタートユニット(部屋ユニットRU1)に2体の敵キャラクタが配置されており、当該スタートユニットの敵スコア=5+8=13である。したがって、スタートユニットのユニットスコアScは、「13」に確定される。そして、上記ステップS824の処理においては、ゲートGが配置されていないドアDRに対してドアスコアScd=ユニットスコアSc=13となる。そして、ゲートGが配置されているドアDRに対してドアスコアScd=ユニットスコアSc+ゲートスコア=13+20=33となり、それぞれのドアスコアScdで仮設定される(図26(b)の状態)。以降、上記ステップS825〜S830の処理が繰り返される。
【0139】
図26(c)は、このような処理が繰り返されることによって、全てのユニットスコアScおよびドアスコアScdが確定した状態を示している。図26(c)において、スタートユニットである部屋ユニットRU1のユニットスコアSc=13に対して、部屋ユニットRU3のユニットスコアSc=99が最大値で確定している。ここで、部屋ユニットRU3は、部屋ユニットRU1から最も遠い位置に配置され、かつマップ上の全ての敵キャラクタと遭遇して到達するユニットである。しかしながら、図24(c)のマップと比較すると、部屋ユニットRU3のユニットスコアScは、「+5」増加しているだけであり、上記ゲートスコア=20の増加が示されていない。これは、ゲートGの配置によって、通路ユニットPU1を経由するより通路ユニットPU2〜PU5のルートを経由した方が、部屋ユニットRU3へ到達する上記難易度が低くなったためである。したがって、ユニットスコアScは、スタートユニットからの距離、遭遇する敵キャラクタの強さ、およびゲート通過の困難度を考慮して、プレイヤオブジェクトがスタートユニットを起点に最も簡単な移動によって到達するその難易度を示すパラメータとして表されることがわかる。
【0140】
図15において、上記ステップS94のスコア計算処理の後、CPU31は、マップ上に配置するアイテムの種類およびその数を設定し(ステップS95)、処理を次のステップに進める。
【0141】
次に、CPU31は、全マップ中に配置されたユニットが有するアイテムスロットSi全てに対してポイントスコアTを設定する。ポイントスコアTは、アイテムスロットSiやゴールスロットSgに対して設定されるポイントであって、ユニットスコアと同様に、スタートユニットを起点に最も簡単な移動によってそのアイテムスロットSiやゴールスロットSgに到達する難易度を示すパラメータである。具体的には、ポイントスコアTは、そのアイテムスロットSiが属するユニットのユニットスコアと同じ値に設定されて(ステップS96)、次のステップに処理を進める。
【0142】
図27を参照して、それぞれのアイテムスロットSiに設定されるポイントスコアTの一例について説明する。なお、図27は、図26(c)で示したマップに配置されたユニットが含んでいるアイテムスロットSi1〜Si5の一例を示す図である。図27では、図面を単純にするために、ドアスコアScdおよび通路ユニットPUのユニットスコアScを削除して示している。
【0143】
図27において、部屋ユニットRU1はアイテムスロットSi1を含み、部屋ユニットRU2はアイテムスロットSi2およびSi3を含み、部屋ユニットRU3はアイテムスロットSi4およびSi5を含んでいる。そして、部屋ユニットRU1〜RU3のユニットスコアScは、それぞれ「13」、「35」、および「99」が確定している。例えば、アイテムスロットSi3およびSi4に設定されるポイントスコアTは、それぞれ部屋ユニットRU2のユニットスコアSc、つまり、それぞれ「35」が設定される。したがって、アイテムスロットSi1〜Si5に設定されるポイントスコアTは、それぞれ「13」、「35」、「35」、「99」、および「99」が設定される。
【0144】
図15に戻り、CPU31は、上記ステップS96で計算されたそれぞれのポイントスコアTの合計値Tsumを計算し(ステップS97)、処理を次のステップに進める。例えば、図27で示したマップの場合、合計値Tsum=281となる。
【0145】
次に、CPU31は、乱数生成プログラムを実行して、0〜(合計値Tsum−1)の間で乱数を生成する(ステップS98)。そして、CPU31は、生成された乱数に応じてアイテムスロットSiを選択し、選択されたアイテムスロットSiにアイテムを配置して(ステップS99)、処理を次のステップに進める。図28を参照して、上記ステップS98およびS99の処理の一例を説明する。なお、図28は、図27で示したマップに対して上記ステップS98およびS99における処理の一例を説明するための図である。
【0146】
図28において、CPU31は、上記ステップS98において生成する乱数生成範囲0〜(合計値Tsum−1=280)を、上記ステップS96で計算したポイントスコアTに応じて各アイテムスロットSiに割り当てる。例えば、アイテムスロットSi1のポイントスコアTは、13である。このアイテムスロットSi1の割り当て範囲を乱数生成範囲0〜に設定する場合、乱数0もアイテムスロットSi1に割り当てられるため、
0≦(アイテムスロットSi1の割り当て範囲)≦12
となる。アイテムスロットSi2の割り当て範囲を隣接させる場合、アイテムスロットSi2のポイントスコアTが35であるため、
12<(アイテムスロットSi2の割り当て範囲)≦47
となる。そして、上記マップ領域に配置されているユニットに含まれる他のアイテムスロットSiについても全て同様に割り当てていく。その後、上記ステップS98で発生された乱数が0〜12の範囲であった場合、上記ステップS99では、アイテムスロットSi1が選択され、乱数が13〜47の範囲であった場合、アイテムスロットSi2が選択されて、それらのアイテムスロットSiにアイテムが配置される。
【0147】
このように、上記ステップS99で選択されるアイテムスロットSiは、乱数によって選択されるが、そのアイテムスロットSiが属するユニットのユニットスコアScが大きいユニット程、選択される確率は高くなる。つまり、スタートユニットから到達するための上記難易度が高いユニットに属するアイテムスロットSiに対して、高い確率でアイテムを配置することになる。つまり、スタート位置付近等にアイテムが配置される確率が低くなる。なお、選択されたアイテムスロットSiにおいて、既にアイテムが配置されている場合、CPU31は、上記ステップS99によるアイテムの配置を中止し、次のステップS100に処理を進める。
【0148】
図15に戻り、CPU31は、マップに配置されたアイテムの数が上記ステップS95で設定した設定数に到達したか否かを判断する(ステップS100)。そして、CPU31は、アイテムの数が設定数に未到達の場合、上記ステップS98に戻って処理を繰り返し、設定数に到達した場合、次のステップS101に処理を進める。
【0149】
ステップS101では、CPU31は、マップに配置されたユニットが有するそれぞれのゴールスロットSgに対して、ポイントスコアを計算し、さらに、そのポイントスコアを変換した変換ポイントスコアTを計算した後、次のステップに処理を進める。このステップS101では、それぞれのゴールスロットSgを含んでいるユニットスコアScをポイントスコアとし、そのポイントスコアの正の平方根を、当該ゴールスロットSgに対する変換ポイントスコアTとする。つまり、ユニットUxに含まれるゴールスロットSgxの変換ポイントスコアTxは、
【数1】
で計算される。ここで、Sc(Ux)は、ユニットUxに確定されているユニットスコアScである。
【0150】
次に、CPU31は、上記ステップS101で計算されたそれぞれの変換ポイントスコアTの合計値Tsumを計算し(ステップS102)、処理を次のステップに進める。
【0151】
次に、CPU31は、乱数生成プログラムを実行して、0〜(合計値Tsum−1)の間で乱数を生成する(ステップS103)。そして、CPU31は、生成された乱数に応じてゴールスロットSgを選択し、選択されたゴールスロットSgをマップのゴール位置に設定して(ステップS104)、当該サブルーチンによるゲーム要素配置処理を終了し、図11に示したマップ生成処理も終了する。なお、上記ステップS103およびS104の処理についても、上記ステップS98およびS99と同様であるため、詳細な説明を省略する。
【0152】
ここで、上記ステップS104では、ゴールスロットSgを乱数によって選択するが、ゴールスロットSgが属するユニットのユニットスコアScが大きいユニット程、選択される確率は高くなる。つまり、スタートユニットから到達するための上記難易度が高いユニットに属するゴールスロットSgに対して、高い確率でゴール位置が設定されることになる。つまり、スタート位置付近等にゴール位置が設定される確率が低くなる。しかしながら、ユニットスコアScの正の平方根を変換ポイントスコアTとし、その変換ポイントスコアTに応じた数値範囲が各ゴールスロットSgに割り当てられているため、上述のアイテムの配置処理(S95〜S100)のようにポイントスコアT(=ユニットスコアSc)に応じて数値範囲が割り当てられる場合と比較すると、ユニットスコアScの影響度が低い。つまり、変換ポイントスコアTの計算の方法によって、乱数によって選択される要素に対してユニットスコアScが与える影響度を調整することができる。例えば、ユニットスコアScの3乗根を変換ポイントスコアTとした場合、さらにユニットスコアScの影響度を下げることが可能であるし、逆に、ユニットスコアScを二乗や三乗して変換ポイントスコアTとした場合、ユニットスコアScの影響度を上げることが可能である。
【0153】
なお、上述した敵キャラクタおよびアイテムをマップに配置する際、上記ステップS83およびS95で設定したそれぞれの配置設定数に対して、マップに含まれる敵スロットSeおよびアイテムスロットSiの数が不足する可能性がある。この場合、本来、敵スロットSeおよびアイテムスロットSiを含んでいない通路ユニットPUあるいはキャップユニットCUをランダムで選択して、それらのユニットが有する通路領域PZに敵キャラクタあるいはアイテムを配置してもかまわない。例えば、敵キャラクタの配置設定数に対して、敵スロットSeの数が不足している場合、CPU31は、通路ユニットPUをランダムで選択して、それらのユニットが有する通路領域PZに敵キャラクタを配置する。また、アイテムの配置設定数に対して、アイテムスロットSiの数が不足している場合、CPU31は、キャップユニットCUを優先的に選択して、その通路領域PZにアイテムを配置する。さらに、キャップユニットCUを合わせてもアイテムの配置設定数に対して不足する場合、CPU31は、通路ユニットPUをランダムで選択して、それらのユニットが有する通路領域PZにアイテムを配置する。
【0154】
このように、本発明の一実施形態に係るゲーム装置では、プレイヤオブジェクトがマップのスタート位置を起点にそれぞれのユニットまで到達する距離、遭遇する敵キャラクタの強さ、およびゲート通過の困難度を評価して、プレイヤオブジェクトが移動するルート毎にユニットスコアが算出される。このユニットスコアは、スタート位置から各ユニットへ到達する難易度の目安にすることができる。また、上記ユニットスコアを用いて、マップに付加的に配置されるゲーム要素が配置されるため、当該ゲーム要素を上記難易度に応じた適所に配置することができる。さらに、上記ゲーム要素がマップ上に配置される場所は、ランダムな要素も含んでいるため、多様性に富んだマップを自動的に生成することが可能である。
【0155】
なお、上述したフローチャートでは、生成されたマップに対して、ゲーム要素を敵キャラクタ、ゲート、アイテム、ゴール位置の順で配置したが、本発明は、この順序によるゲーム要素の配置に限定されない。例えば、スタート位置に対して、距離的に最も遠いユニットにゴール位置を設定したい場合、最初にゴール位置を設定してもかまわない。配置したいゲーム要素の種類およびユニットに応じて、適切な配置順序でゲーム要素配置処理を行うことによって、所望のゲーム要素の配置を実現できる。
【0156】
また、上記スタートユニット以外のユニットに対して計算される上記ユニットスコアは、そのユニットに属するドアに対して確定されたドアスコアにそのユニット内に配置される敵スコアを加算することによって計算される(ステップS828参照)。そして、ユニットスコアは、結果的にそのユニットに属するドアに対して確定されたドアスコアのうちの最小値に敵スコアを加算した値となるが、最小値でなくてもかまわない。例えば、そのユニットに属するドアに対して確定された最大値のドアスコアに、そのユニット内に配置される敵スコアを加算することによってユニットスコアを計算してもいいし、そのユニットに属するドアに対して確定されたドアスコアの平均値に、そのユニット内に配置される敵スコアを加算することによってユニットスコアを計算してもかまわない。
【0157】
また、上述の説明では、スコア計算処理において、スタートユニットのドアスコアを仮設定するようにしたが(図16のステップS824)、スタートユニットのドアスコアは仮設定せずに初めから確定するようにして、スタートユニット以外のユニットに関してのみドアスコアを仮設定して最小値のものを確定するようにしてもよい。
【0158】
また、上述の説明では、マップを構成する単位画像である部屋ユニット、通路ユニット、およびキャップユニットをそれぞれ矩形形状で説明したが、これらのユニットは、矩形形状に限定されない。例えば、上記ユニットは、正六角形等の多角形形状でも同様に本発明を実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るゲームシステム1を説明するための外観図である。
【図2】図1のゲーム装置3の機能ブロック図である。
【図3】図2のワークメモリ32に記憶されるプログラムおよびデータの一例について説明するための概略的なメモリマップである。
【図4】図3のユニット記憶領域322に記憶される部屋ユニット画像群に含まれる部屋ユニットの一例を示す図である。
【図5】図3のユニット記憶領域322に記憶される部屋ユニットテーブルの一例を示す図である。
【図6】図3のユニット記憶領域322に記憶される部屋ユニットに対するドア間距離テーブルの一例を示す図である。
【図7】図3のユニット記憶領域322に記憶される通路ユニット画像群およびキャップユニット画像に含まれる通路ユニットおよびキャップユニットの一例を示す図である。
【図8】図3のユニット記憶領域322に記憶される通路ユニットテーブルの一例を示す図である。
【図9】図3のユニット記憶領域322に記憶されるキャップユニットテーブルの一例を示す図である。
【図10】図3のユニット記憶領域322に記憶される通路ユニットに対するドア間距離テーブルの一例を示す図である。
【図11】図1のゲーム装置3によって実行されるマップ生成処理の全体処理を示すフローチャートである。
【図12】図11のステップS5の詳細な動作を示すサブルーチンである。
【図13】図11のステップS7の詳細な動作を示すサブルーチンである。
【図14】図11のステップS8の詳細な動作を示す前半部のサブルーチンである。
【図15】図11のステップS8の詳細な動作を示す後半部のサブルーチンである。
【図16】図14のステップS82、S86、およびS94の詳細な動作を示すサブルーチンである。
【図17】マップ領域に配置された部屋ユニットRUaのドアDR3が選択ドアに設定され、その選択ドアと部屋ユニットRUcのドアDR1とを接続して配置した一例を示す図である。
【図18】マップ領域に配置された通路ユニットPUaのドアDR3が選択ドアに設定され、その選択ドアと通路ユニットPUbのドアDR2とを接続して配置した一例を示す図である。
【図19】マップ領域に配置された通路ユニットPUaのドアDR3が選択ドアに設定され、その選択ドアとキャップユニットCUのドアDR1とを接続して配置した一例を示す図である。
【図20】図2のCPU31が行うユニット接続処理の一例を説明するための図である。
【図21】図2のCPU31が行うマップ生成処理によって生成されるマップの一例である。
【図22】図14のステップS82におけるスコア計算処理の前半部の一例を説明するための図である。
【図23】図14のステップS82におけるスコア計算処理の後半部の一例を説明するための図である。
【図24】図14のステップS86におけるスコア計算処理の一例を説明するための図である。
【図25】図24(c)で示したマップに対して図14のステップS90およびS91における処理の一例を説明するための図である。
【図26】図14のステップS94におけるスコア計算処理の一例を説明するための図である。
【図27】図26(c)で示したマップに配置されたユニットが含んでいるアイテムスロットSi1〜Si5の一例を示す図である。
【図28】図27で示したマップに対して図15のステップS98およびS99における処理の一例を説明するための図である。
【符号の説明】
1…ゲームシステム
2…テレビ
3…ゲーム装置
4…光ディスク
5…メモリカード
6…コントローラ
61…メインスティック
62…Aボタン
63…Bボタン
64…Xボタン
65…Yボタン
66a…Rボタン
66b…Lボタン
67…十字キー
68…Cスティック
69…スタート−ポーズボタン
31…CPU
32…ワークメモリ
321…プログラム記憶領域
322…ユニット記憶領域
33…VRAM
34…外部メモリI/F
35…コントローラI/F
36…GPU
37…光ディスクドライブ
CU…キャップユニット
DR…ドア
RU…部屋ユニット
RZ…部屋領域
PU…通路ユニット
PZ…通路領域
S…スロット
Z…領域
Claims (8)
- ゲームマップ上をプレイヤオブジェクトが移動するゲームにおいて、マップを構成するための複数のユニットを配置することによってゲームマップを自動生成し、さらに、当該ゲームマップ上に付加的なゲーム要素を自動配置するゲーム装置であって、
前記ユニットは、他の前記ユニットと接続するための接続部を有し、当該接続部と他の前記ユニットの前記接続部とが連結されることによって前記ゲームマップを形成しており、
前記複数のユニットは、複数の種類があり、前記ユニット内の前記接続部同士の全ての組合わせごとに、当該接続部同士を結ぶ経路である内部経路に対応させて予め設定された第1パラメータを前記種類ごとに記憶する記憶手段と、
前記配置された複数のユニットのうち、所定のユニットを、前記ゲームマップ中で前記プレイヤオブジェクトが移動を開始するスタート地点となる起点ユニットとする起点決定手段と、
前記配置された各ユニットに関して、前記ゲームマップ上において前記起点ユニットから当該ユニットに至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する前記内部経路に対応する前記第1パラメータを前記記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアをユニットスコアとして算出して設定するスコア算出手段と、
前記配置された各ユニットに関してそれぞれ算出された前記スコアの値に基づいて、前記付加的なゲーム要素を配置するユニットを決定して自動配置するゲーム要素配置手段とを備える、ゲーム装置。 - 複数のオブジェクトを前記ゲームマップ上に自動配置するオブジェクト配置手段を、さらに備え、
前記記憶手段は、前記オブジェクトの種類ごとに、当該種類のオブジェクトの属性値を示す第2パラメータをさらに記憶し、
前記スコア算出手段は、前記起点ユニットから当該ユニットに至る経路上のユニット群に配置されたオブジェクトに対応する前記第2パラメータをさらに読み出し、前記第2パラメータそれぞれの値をさらに総合することによって、前記ユニットスコアを算出する、請求項1に記載のゲーム装置。 - 前記ゲーム要素配置手段は、前記ユニットスコアが最も高いユニットに前記ゲーム要素を配置する、請求項1に記載のゲーム装置。
- 前記ゲーム要素配置手段は、乱数を発生させる乱数発生手段を含み、
前記ゲーム要素配置手段は、前記ユニットスコアの値に基づいてユニット毎に設定される数値範囲と、前記乱数とを比較し、当該数値範囲に乱数が含まれるユニットに対して前記ゲーム要素を配置する、請求項1に記載のゲーム装置。 - 前記ゲーム要素配置手段は、前記ユニットスコアの値が小さいほど範囲が大きくなるように前記数値範囲を設定する、請求項4に記載のゲーム装置。
- 前記ゲーム要素配置手段は、前記ユニットスコアの値が大きいほど範囲が大きくなるように前記数値範囲を設定する、請求項4に記載のゲーム装置。
- 前記配置された各ユニットが有する各前記接続部に関して、前記ゲームマップ上において前記起点ユニットから当該接続部に至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する前記内部経路に対応する前記第1パラメータを前記記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアを、当該接続部の接続部スコアとして算出して設定し、かつ、前記接続部スコアの設定にあたり、仮スコアを設定した後、所定条件を満たす当該仮スコアを前記接続部スコアとして確定する接続部スコア算出手段を、さらに備え、
前記接続部スコア算出手段は、
前記起点ユニットが有する前記接続部の前記接続部スコアを確定する起点ユニット接続部スコア設定手段と、
前記接続部スコアが確定された前記接続部と連結される他のユニット側の前記接続部の前記接続部スコアを、当該確定された前記接続部の接続部スコアと同じ値で確定する連 結接続部スコア確定手段と、
前記接続部スコアが確定された前記接続部が含まれるユニットに関して、当該ユニットに含まれる前記接続部スコアが確定されていない前記接続部のそれぞれについて、当該ユニットの種類に対応し、かつ、当該確定された接続部と当該確定されていない接続部との組み合わせとに対応して設定された前記第1パラメータを前記記憶手段から読み出し、当該第1パラメータと当該確定された接続部の接続部スコアとの値を総合して、当該確定されていない接続部の接続部スコアの前記仮スコアとして設定する接続部スコア仮設定手段と、
既に設定されたすべての前記仮スコアのうち、最小の値を示す前記仮スコアを、当該仮スコアが設定された前記接続部の前記接続部スコアとして確定する最小接続部スコア確定手段とを含み、
前記連結接続部スコア確定手段は、さらに、前記最小接続部スコア確定設定手段によって前記接続部の前記接続部スコアが確定された後、当該接続部と連結される他のユニット側の前記接続部の前記接続部スコアを、当該確定された前記接続部の接続部スコアと同じ値で確定し、
前記連結接続部スコア確定手段、前記接続部スコア仮設定手段、および前記最小接続部スコア確定手段による処理を繰り返すことにより、前記ゲームマップ中の前記接続部それぞれの接続部スコアを順次確定し、確定された前記接続部スコアを用いて順次前記ユニットスコアを算出する、請求項1に記載のゲーム装置。 - 前記配置された各ユニットが有する各前記接続部に関して、前記ゲームマップ上において前記起点ユニットから当該接続部に至る経路上のユニット群に含まれるそれぞれのユニットについて、当該経路を構成する前記内部経路に対応する前記第1パラメータを前記記憶手段から読み出し、当該第1パラメータそれぞれの値を総合したスコアを、当該接続部の接続部スコアとして算出して設定し、かつ、前記接続部スコアの設定にあたり、仮スコアを設定した後、所定条件を満たす当該仮スコアを前記接続部スコアとして確定する接続部スコア算出手段を、さらに備え、
前記接続部スコア算出手段は、
前記起点ユニットが有する前記接続部に対する接続部スコアをそれぞれ所定の計算方法によって算出して前記仮スコアとして設定する起点ユニット接続部スコア仮設定手段と、
既に設定されたすべての前記仮スコアのうち、最小の値を示す前記仮スコアを、当該仮スコアが設定された前記接続部の前記接続部スコアとして確定する最小接続部スコア確定手段と、
前記最小接続部スコア確定手段で接続部スコアが確定された接続部と連結される他のユニット側の前記接続部スコアを、当該確定された前記接続部の接続部スコアと同じ値で確定する連結接続部スコア確定手段と、
前記接続部スコアが確定された前記接続部が属するユニットに関して、当該ユニットに前記接続部スコアが未確定の接続部が含まれるとき、当該未確定の接続部のそれぞれについて、当該確定された接続部から当該未確定の接続部までの当該ユニットの種類における内部経路に対応する前記第1パラメータを前記記憶手段から読み出し、当該第1パラメータと当該確定された接続部の接続部スコアとの値を総合して、当該未確定の接続部の前記仮スコアとして設定する接続部スコア仮設定手段とを含み、
前記最小接続部スコア確定手段は、さらに、前記接続部スコア仮設定手段によって前記仮スコアが設定された後、当該仮スコアを含めた中から最小の値を示す前記仮スコアを、当該仮スコアが設定された前記接続部の前記接続部スコアとして確定し、
前記スコア算出手段は、前記最小接続部スコア確定手段、前記連結接続部スコア確定手段、および前記接続部スコア仮設定手段による処理を繰り返すことにより、前記ゲームマップ中の前記接続部それぞれの接続部スコアを順次確定し、確定された前記接続部スコアを用いて順次前記ユニットスコアを算出する、請求項1に記載のゲーム装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003133669A JP3934081B2 (ja) | 2003-05-12 | 2003-05-12 | ゲーム装置およびゲームプログラム |
US10/838,315 US7670225B2 (en) | 2003-05-12 | 2004-05-05 | Multi-user method and apparatus for placing game elements on a map based on degree of difficulty |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003133669A JP3934081B2 (ja) | 2003-05-12 | 2003-05-12 | ゲーム装置およびゲームプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004329792A JP2004329792A (ja) | 2004-11-25 |
JP2004329792A5 JP2004329792A5 (ja) | 2006-06-29 |
JP3934081B2 true JP3934081B2 (ja) | 2007-06-20 |
Family
ID=33410653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003133669A Expired - Lifetime JP3934081B2 (ja) | 2003-05-12 | 2003-05-12 | ゲーム装置およびゲームプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7670225B2 (ja) |
JP (1) | JP3934081B2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4125760B2 (ja) * | 2006-03-15 | 2008-07-30 | 株式会社スクウェア・エニックス | ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム |
JP4000335B1 (ja) * | 2006-05-19 | 2007-10-31 | 株式会社コナミデジタルエンタテインメント | 音楽ゲーム用データ演算装置、音楽ゲーム用データ演算プログラム及び音楽ゲーム用データ演算方法 |
US8328610B2 (en) * | 2006-08-16 | 2012-12-11 | Nintendo Co., Ltd. | Intelligent game editing system and method with autocomplete and other functions that facilitate game authoring by non-expert end users |
US8375397B1 (en) | 2007-11-06 | 2013-02-12 | Google Inc. | Snapshot view of multi-dimensional virtual environment |
US8595299B1 (en) * | 2007-11-07 | 2013-11-26 | Google Inc. | Portals between multi-dimensional virtual environments |
US8732591B1 (en) | 2007-11-08 | 2014-05-20 | Google Inc. | Annotations of objects in multi-dimensional virtual environments |
US8616958B2 (en) * | 2007-11-12 | 2013-12-31 | Bally Gaming, Inc. | Discovery method and system for dynamically locating networked gaming components and resources |
JP4666402B2 (ja) * | 2008-06-29 | 2011-04-06 | 株式会社スクウェア・エニックス | ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム |
JP5162638B2 (ja) * | 2010-09-30 | 2013-03-13 | 京楽産業.株式会社 | 遊技機、制御方法および制御プログラム |
JP5307923B1 (ja) * | 2012-08-20 | 2013-10-02 | 株式会社gloops | ゲームサーバ、ゲーム制御方法、プログラム、及びゲームシステム |
US10363486B2 (en) | 2013-06-10 | 2019-07-30 | Pixel Press Technology, LLC | Smart video game board system and methods |
US9370721B2 (en) * | 2013-06-10 | 2016-06-21 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a static model |
US9579573B2 (en) | 2013-06-10 | 2017-02-28 | Pixel Press Technology, LLC | Systems and methods for creating a playable video game from a three-dimensional model |
JP5405689B1 (ja) * | 2013-08-22 | 2014-02-05 | 株式会社 ディー・エヌ・エー | ゲーム提供装置 |
JP5405688B1 (ja) * | 2013-08-22 | 2014-02-05 | 株式会社 ディー・エヌ・エー | ゲーム提供装置 |
JP5519852B2 (ja) * | 2013-10-30 | 2014-06-11 | 株式会社 ディー・エヌ・エー | ゲーム提供装置 |
CN109395385B (zh) * | 2018-09-13 | 2021-05-25 | 深圳市腾讯信息技术有限公司 | 虚拟场景的配置方法和装置、存储介质、电子装置 |
JP6974561B2 (ja) * | 2018-12-25 | 2021-12-01 | グリー株式会社 | プログラム、ゲームの制御方法、及び情報処理装置 |
JP6875366B2 (ja) * | 2018-12-28 | 2021-05-26 | 株式会社スクウェア・エニックス | ゲーム処理プログラム及びゲームシステム |
JP7050110B2 (ja) * | 2020-04-03 | 2022-04-07 | 任天堂株式会社 | 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 |
US20220184499A1 (en) * | 2020-12-15 | 2022-06-16 | Thomas Wilson | Video game with map-based features |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994028989A1 (fr) | 1993-06-16 | 1994-12-22 | Namco Ltd. | Appareil de jeu en trois dimensions |
US5774125A (en) | 1993-11-18 | 1998-06-30 | Sony Corporation | Texture mapping method in which 3-D image data is transformed into 2-D data and mapped onto a surface of an object for display |
DE69730095D1 (de) * | 1996-06-03 | 2004-09-09 | Sega Enterprises Kk | Bildverarbeitungsvorrichtung und -methode, spielvorrichtung und aufnahmemedium |
JP3586991B2 (ja) | 1996-08-30 | 2004-11-10 | ソニー株式会社 | テクスチャ・データ読出装置およびレンダリング装置 |
US6002952A (en) | 1997-04-14 | 1999-12-14 | Masimo Corporation | Signal processing apparatus and method |
JPH11144087A (ja) | 1997-11-11 | 1999-05-28 | Namco Ltd | 画像生成装置及び情報記憶媒体 |
JP2000107441A (ja) | 1998-10-02 | 2000-04-18 | Square Co Ltd | ゲーム装置、地形パターン形成方法および情報記録媒体 |
US6371856B1 (en) | 1999-03-23 | 2002-04-16 | Square Co., Ltd. | Video game apparatus, video game method and storage medium |
US6123619A (en) | 1999-03-23 | 2000-09-26 | Square Co., Ltd. | Method of generating maps with fixed and random portions and use of same in video games |
JP3270929B2 (ja) | 1999-09-30 | 2002-04-02 | コナミ株式会社 | 迷路自動生成方法、記録媒体及びビデオゲーム装置 |
US6961055B2 (en) | 2001-05-09 | 2005-11-01 | Free Radical Design Limited | Methods and apparatus for constructing virtual environments |
-
2003
- 2003-05-12 JP JP2003133669A patent/JP3934081B2/ja not_active Expired - Lifetime
-
2004
- 2004-05-05 US US10/838,315 patent/US7670225B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20040229689A1 (en) | 2004-11-18 |
US7670225B2 (en) | 2010-03-02 |
JP2004329792A (ja) | 2004-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3934081B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5280579B1 (ja) | サーバー装置、及び、プログラム | |
KR102046896B1 (ko) | 정보처리장치, 게임프로그램, 및 정보처리방법 | |
JP4447568B2 (ja) | ゲーム装置、ゲーム装置の制御方法及びプログラム | |
US6923722B2 (en) | Game system and game program for providing multi-player gameplay on individual displays and a common display | |
EP1625880A1 (en) | Gaming system, game server and gaming machine | |
JP4919210B2 (ja) | ビデオゲーム装置、ゲームの進行方法、並びにプログラム及び記録媒体 | |
KR20100075565A (ko) | 게임 장치, 통신 시스템 및 정보 기록 매체 | |
JP2008099774A (ja) | ゲーム装置、メッセージ表示方法、および、プログラム | |
KR20180077355A (ko) | 카드 게임 제공 방법 및 시스템 | |
KR20070012770A (ko) | 게임 소프트웨어 및 게임장치 | |
US8684836B2 (en) | Game server, game controlling method thereof, non-transitory computer-readable medium and game system | |
JP3883522B2 (ja) | ゲーム装置およびゲームプログラム | |
JP5192729B2 (ja) | ゲームプログラムおよびゲーム装置 | |
JP2004321797A (ja) | ビデオゲーム情報を分割線内に埋め込んで表示するシステムおよび方法 | |
US20090036206A1 (en) | Image generation device, automatic arrangement method, recording medium, and program | |
US20040259637A1 (en) | Game machine and storage medium having stored therein a game program | |
JP4017114B2 (ja) | 対局ゲーム装置、及び対局ゲームプログラム | |
JP4220412B2 (ja) | プログラム、情報記憶媒体及びゲーム装置 | |
EP1072298A1 (en) | Display method for a confrontation type video game for displaying different information to players, storage medium and video game system | |
JP2000279643A (ja) | ゲーム装置、ゲーム制御方法、記録媒体、及びコンピュータデータ信号 | |
JP3732484B2 (ja) | ビデオゲーム装置、ビデオゲームの進行度チェック方法、並びにプログラム及び記録媒体 | |
JP4563482B2 (ja) | ゲーム装置およびゲームプログラム | |
JP2007029221A (ja) | プログラム、情報記憶媒体及びゲーム装置 | |
JP4417420B2 (ja) | ゲーム装置、ゲーム制御方法、及び、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060502 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060517 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20060517 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20060606 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060807 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061020 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061219 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070222 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070314 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070314 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3934081 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100330 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100330 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140330 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |