(57)【要約】    【課題】  プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。    【構成】  ゲームシステム１は、本体装置２に内蔵されるプロセッサ（８１）を含み、プロセッサ（８１）は、プレイヤの操作入力に基づいてプレイヤキャラクタ（２０２）に地面を掘らせて、穴を形成する。穴には水が配置され、水場が形成される。穴を広げることにより、水場の形状が変化され、水場が長い形状である場合には、水が流れるように制御される。水場が長い形状でない場合には、水は流れない。つまり、プレイヤの操作入力に基づいてゲームフィールドに川または池が生成される。プレイヤの操作入力に基づいてプレイヤキャラクタに釣りをさせる場合には、川と池で異なる処理が実行される。【選択図】  図１
2020192168.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のコンピュータに、
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を実行させる、ゲームプログラム。
【請求項２】
前記形状判定処理は、
前記領域に含まれる区画のうち、２つの区画を結ぶ最短区画数が最大となる２つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、請求項１記載のゲームプログラム。
【請求項３】
前記形状判定処理は、
前記長さパラメータの２乗が、前記面積パラメータに基づいて定められる基準値より大きい場合、前記長い形状であると判定する、請求項２記載のゲームプログラム。
【請求項４】
前記形状判定処理は、
前記長さパラメータの２乗が、前記面積パラメータを４倍した値以上または当該値よりも大きい場合、前記長い形状であると判定する、請求項２記載のゲームプログラム。
【請求項５】
前記流体オブジェクトは水オブジェクトであって、
前記領域内に流れがある場合、前記領域は川領域となり、
前記領域内に流れが無い場合、前記領域は池領域となり、
前記ゲーム処理は、前記川領域と前記池領域に対して異なる処理を行う、
請求項１から４までのいずれかに記載のゲームプログラム。
【請求項６】
前記ゲーム処理は、前記プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、前記川領域における前記釣りと前記池領域における前記釣りとで異なる処理を行う、請求項５記載のゲームプログラム。
【請求項７】
前記流れ制御処理は、
前記領域内の区画に始点となる区画と終点となる区画を少なくとも１つずつ設定し、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項１から６までのいずれかに記載のゲームプログラム。
【請求項８】
前記流れ制御処理は、
前記２つの区画を結ぶ最短区画数が最大となる２つの区画のうち、一方を始点とし、他方を終点とし、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項２から６までのいずれかに記載のゲームプログラム。
【請求項９】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、
前記領域が前記水源オブジェクトに繋がった場合、前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成する、請求項１から８までのいずれかに記載のゲームプログラム。
【請求項１０】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、前記領域が前記水源オブジェクトに繋がった場合には、
前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成し、
前記水源オブジェクトを前記始点とする、請求項７または８記載のゲームプログラム。
【請求項１１】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行う、ゲームシステム。
【請求項１２】
前記形状判定処理は、
前記領域に含まれる区画のうち、２つの区画を結ぶ最短区画数が最大となる２つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、請求項１１記載のゲームシステム。
【請求項１３】
前記形状判定処理は、
前記長さパラメータの２乗が、前記面積パラメータに基づいて定められる基準値より大きい場合、前記長い形状であると判定する、請求項１２記載のゲームシステム。
【請求項１４】
前記形状判定処理は、
前記長さパラメータの２乗が、前記面積パラメータを４倍した値以上または当該値よりも大きい場合、前記長い形状であると判定する、請求項１２記載のゲームシステム。
【請求項１５】
前記流体オブジェクトは水オブジェクトであって、
前記領域内に流れがある場合、前記領域は川領域となり、
前記領域内に流れが無い場合、前記領域は池領域となり、
前記ゲーム処理は、前記川領域と前記池領域に対して異なる処理を行う、
請求項１１から１４までのいずれかに記載のゲームシステム。
【請求項１６】
前記ゲーム処理は、前記プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、前記川領域における前記釣りと前記池領域における前記釣りとで異なる処理を行う、請求項１５記載のゲームシステム。
【請求項１７】
前記流れ制御処理は、
前記領域内の区画に始点となる区画と終点となる区画を少なくとも１つずつ設定し、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項１１から１６までのいずれかに記載のゲームシステム。
【請求項１８】
前記流れ制御処理は、
前記２つの区画を結ぶ最短区画数が最大となる２つの区画のうち、一方を始点、他方を終点とし、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項１２から１６までのいずれかに記載のゲームシステム。
【請求項１９】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、
前記領域が前記水源オブジェクトに繋がった場合、前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成する、請求項１１から１８までのいずれかに記載のゲームシステム。
【請求項２０】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、前記領域が前記水源オブジェクトに繋がった場合には、
前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成し、
前記水源オブジェクトを前記始点とする、請求項１７または１８記載のゲームシステム。
【請求項２１】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行う、ゲーム装置。
【請求項２２】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行う、ゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関し、特にたとえば、流体オブジェクトの流れの有無に応じたゲーム処理を実行する、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示される。この特許文献１のゲーム装置では、仮想３次元ゲーム空間内においては、タッチ操作された対象とプレイヤキャラクタの装備の組み合わせで、プレイヤキャラクタの動作が決定される。たとえば、プレイヤキャラクタがスコップを装備しており、地面がタッチされた場合には、プレイヤキャラクタは、スコップを用いて地面を掘る動作を行う。また、プレイヤキャラクタが斧を装備しており、木がタッチされた場合には、プレイヤキャラクタは、斧を用いて木を切る動作を行う。さらに、プレイヤキャラクタが釣竿を装備しており、川がタッチされた場合には、プレイヤキャラクタは、釣竿を用いて川で釣りする動作を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３１４６３３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この特許文献１には、プレイヤの操作入力に基づいて仮想空間内に仮想の池または川を作ること、プレイヤの操作入力に基づいて仮想空間内の仮想の池または川の全部または一部を仮想の土で埋めることについては何ら記載されていない。
【０００５】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【０００６】
また、この発明の他の目的は、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明は、情報処理装置のコンピュータに、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを実行させる、ゲームプログラムである。
【０００８】
第１の発明によれば、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
【０００９】
第２の発明は、第１の発明に従属し、形状判定処理は、領域に含まれる区画のうち、２つの区画を結ぶ最短区画数が最大となる２つの区画に関する当該最短区画数を示す長さパラメータと、領域に含まれる区画の数を示す面積パラメータとを比較して長い形状か否かを判定する。
【００１０】
第２の発明によれば、長さパラメータと面積パラメータを比較することにより、領域が長い形状であるかどうかを簡単に判定することができる。
【００１１】
第３の発明は、第２の発明に従属し、形状判定処理は、長さパラメータの２乗が、面積パラメータに基づいて定められる基準値より大きい場合、長い形状であると判定する。
【００１２】
第４の発明は、第２の発明に従属し、形状判定処理は、長さパラメータの２乗が、面積パラメータを４倍した値以上または当該値よりも大きい場合、長い形状であると判定する。
【００１３】
第５の発明は、第１から第４の発明までのいずれかに従属し、流体オブジェクトは水オブジェクトであって、領域内に流れがある場合、領域は川領域となり、領域内に流れが無い場合、領域は池領域となり、ゲーム処理は、川領域と池領域に対して異なる処理を行う。
【００１４】
第５の発明によれば、プレイヤの操作入力に基づいて仮想空間内に川領域または池領域を生成することができる。
【００１５】
第６の発明は、第５の発明に従属し、ゲーム処理は、プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、川領域における釣りと池領域における釣りとで異なる処理を行う。
【００１６】
第６の発明によれば、仮想空間に生成した川領域と池領域とで異なる釣りを楽しむことができる。
【００１７】
第７の発明は、第１から第６の発明までのいずれかに従属し、流れ制御処理は、領域内の区画に始点となる区画と終点となる区画を少なくとも１つずつ設定し、始点となる区画から流出する流れと、終点となる区画に流入する流れを算出し、合成することで領域内のそれぞれの区画内の流れの方向を算出する。
【００１８】
第７の発明によれば、所定のルールに従って流体オブジェクトの流れを生成することができる。
【００１９】
第８の発明は、第２から第６の発明までのいずれかに従属し、流れ制御処理は、２つの区画を結ぶ最短区画数が最大となる２つの区画のうち、一方を始点とし、他方を終点とし、始点となる区画から流出する流れと、終点となる区画に流入する流れを算出し、合成することで領域内のそれぞれの区画内の流れの方向を算出する。
【００２０】
第９の発明は、第１から第８の発明までのいずれかに従属し、地形上には水源オブジェクトが配置され、流れ制御処理は、領域が水源オブジェクトに繋がった場合、形状判定処理の結果に関わらず水源オブジェクトを水源とする流れを生成する。
【００２１】
第９の発明によれば、堀下げられた区画同士が繋がっている領域が水源オブジェクトに繋がった場合には、他の所定のルールに従って流体オブジェクトの流れを生成することができる。
【００２２】
第１０の発明は、第７または第８の発明に従属し、地形上には水源オブジェクトが配置され、流れ制御処理は、領域が水源オブジェクトに繋がった場合には、形状判定処理の結果に関わらず水源オブジェクトを水源とする流れを生成し、水源オブジェクトを始点とする。
【００２３】
第１１の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行う、ゲームシステムである。
【００２４】
第１２の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行う、ゲーム装置である。
【００２５】
第１３の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行う、ゲーム制御方法である。
【００２６】
第１１−第１３の発明においても、第１の発明と同様に、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
【発明の効果】
【００２７】
この発明によれば、新規なゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することができる。また、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
【００２８】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２９】
【図１】図１はこの実施例の本体装置に左コントローラおよび右コントローラを装着した状態の限定しない一例を示す図である。
【図２】図２は本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の限定しない一例を示す図である。
【図３】図３は図１および図２に示した本体装置の限定しない一例を示す六面図である。
【図４】図４は図１および図２に示した左コントローラの限定しない一例を示す六面図である。
【図５】図５は図１および図２に示した右コントローラの限定しない一例を示す六面図である。
【図６】図６は図１および図２に示した本体装置の内部構成の限定しない一例を示すブロック図である。
【図７】図７は図１および図２に示した本体装置と左コントローラおよび右コントローラとの内部構成の限定しない一例を示すブロック図である。
【図８】図８はゲーム画像の限定しない第１の例を示す図である。
【図９】図９はゲーム画像の限定しない第２の例を示す図である。
【図１０】図１０はゲーム画像の限定しない第３の例を示す図である。
【図１１】図１１はゲーム画像の限定しない第４の例を示す図である。
【図１２】図１２はゲーム画像の限定しない第５の例を示す図である。
【図１３】図１３はゲーム画像の限定しない第６の例を示す図である。
【図１４】図１４はゲーム画像の限定しない第７の例を示す図である。
【図１５】図１５はゲーム画像の限定しない第８の例を示す図である。
【図１６】図１６（Ａ）は水場を含む地形の限定しない一例を模式的に示した図であり、図１６（Ｂ）は水場を含む地形の限定しない他の例を模式的に示した図である。
【図１７】図１７は水場を含む地形の限定しないその他の例を模式的に示した図である。
【図１８】図１８（Ａ）は流出エネルギの伝搬を説明するための図であり、図１８（Ｂ）は流入エネルギの伝搬を説明するための図であり、図１８（Ｃ）は流出エネルギの分配を説明するための図であり、図１８（Ｄ）は流出エネルギの反射の限定しない一例を説明するための図であり、図１８（Ｅ）は流出エネルギの反射の限定しない他の例を説明するための図である。
【図１９】図１９（Ａ）は水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための図であり、図１９（Ｂ）は水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための他の図であり、図１９（Ｃ）は一部のユニットに地面が設定されている場合において水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための図である。
【図２０】図２０（Ａ）は始点に対する距離マップの限定しない一例を示す図であり、図２０（Ｂ）は図２０（Ａ）に示す場合の始点に対する水の流れの初期値を示す図である。
【図２１】図２１（Ａ）は終点に対する距離マップの限定しない一例を示す図であり、図２１（Ｂ）は図２１（Ａ）に示す場合の終点に対する水の流れの初期値を示す図である。
【図２２】図２２は図６に示す本体装置のＤＲＡＭのメモリマップの限定しない一例を示す図である。
【図２３】図２３は図６に示す本体装置のプロセッサのゲーム全体処理の限定しない一例を示すフロー図である。
【図２４】図２５は図６に示す本体装置のプロセッサのゲーム画像の生成処理の限定しない一例の一部を示すフロー図である。
【図２５】図２５は図６に示す本体装置のプロセッサのゲーム画像の生成処理の他の一部であって、図２４に後続するフロー図である。
【図２６】図２６は図６に示す本体装置のプロセッサのゲーム画像の生成処理のその他の一部であって、図２５に後続するフロー図である。
【発明を実施するための形態】
【００３０】
以下、この実施例の限定しない一例に係るゲームシステムについて説明する。この実施例におけるゲームシステム１の一例は、本体装置（情報処理装置；この実施例ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、この実施例のゲームシステム１のハードウェア構成について説明し、その後に、この実施例のゲームシステム１の制御について説明する。
【００３１】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００３２】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００３３】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。この実施例において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００３４】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００３５】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。この実施例においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００３６】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。この実施例においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００３７】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００３８】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００３９】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００４０】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。この実施例において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、この実施例においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００４１】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。この実施例においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４２】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この実施例においては、アナログスティック３２を押下する入力が可能である。
【００４３】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上にＬボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面のうち、本体装置２に装着される際に装着される側の面に、ＳＬボタン４３およびＳＲボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００４４】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００４５】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。この実施例においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４６】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。この実施例においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上にＲボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、ＳＬボタン６５およびＳＲボタン６６を備える。
【００４７】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００４８】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００４９】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００５０】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００５１】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００５２】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００５３】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。この実施例においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００５４】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、この実施例においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００５５】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信（または、取得）する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信（または、取得）する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、この実施例においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、表示画像データや音声データ）を据置型モニタ等に出力することができる。
【００５６】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００５７】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００５８】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００５９】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００６０】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００６１】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００６２】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００６３】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。この実施例においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００６４】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００６５】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００６６】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００６７】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判断することができる。
【００６８】
左コントローラ３は、電力供給部１０８を備える。この実施例において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００６９】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００７０】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００７１】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００７２】
次に、図８−図２１を参照して、この実施例のゲームシステム１において実行される仮想のゲームのゲーム処理についての概要を説明する。図８は、この実施例の仮想のゲームのアプリケーションを実行した場合に、表示装置（たとえば、ディスプレイ１２）に表示されるゲーム画像の限定しない第１の例を示す図である。
【００７３】
本体装置２は、画像処理装置としても機能し、ゲーム画像などの各種画面に対応する表示画像データを生成および出力（表示）する。プロセッサ８１は、３次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面（シーン）が生成される。このシーンを仮想のカメラで撮影した（視点から見た）画像がゲーム画像としてディスプレイ１２に表示される。
【００７４】
図８に示すゲーム画像はゲーム画面２００の一例であり、プレイヤキャラクタ２０２および複数の背景オブジェクト２０４を含む。また、ノンプレイヤキャラクタ（後述する、魚オブジェクト２０６）が表示される場合もある。
【００７５】
プレイヤキャラクタ２０２は、プレイヤによって動作を制御されるオブジェクトまたはキャラクタである。この実施例では、プレイヤキャラクタ２０２は、人間を模したキャラクタである。プレイヤキャラクタ２０２の動作としては、仮想の或る場所すなわち仮想空間内において、移動したり、地形を変形させたり、アイテムを取得したり、ノンプレイヤキャラクタにアイテムを渡したり、ノンプレイヤキャラクタからアイテムを取得したり、ノンプレイヤキャラクタと会話したり、ノンプレイヤキャラクタを取得したり、ノンプレイヤキャラクタを捕まえたりすることなどが該当する。また、この実施例において、アイテムは、プレイヤキャラクタ２０２またはノンプレイヤキャラクタが使用する道具（この実施例では、スコップおよび釣竿）のみならず、野菜、花、木の実（または果実）、花や野菜の種、昆虫、魚、貝殻、お宝およびお金など、プレイヤキャラクタ２０２またはノンプレイヤキャラクタが使用または所持する様々なオブジェクトを意味する。
【００７６】
また、ノンプレイヤキャラクタは、プレイヤでは無くコンピュータ（図６のプロセッサ８１）によって動作を制御されるオブジェクトまたはキャラクタである。一例として、ノンプレイヤキャラクタは、プレイヤキャラクタ２０２以外の人間または動物を模したキャラクタと、魚、鳥および昆虫を模したオブジェクトである。ノンプレイヤキャラクタの動作としては、移動したり、プレイヤキャラクタ２０２からアイテムを取得したり、プレイヤキャラクタ２０２にアイテムを渡したり、プレイヤキャラクタ２０２に渡されたり、プレイヤキャラクタ２０２に捕まえられたりすることが該当する。
【００７７】
ただし、魚、鳥および昆虫を模したオブジェクトであるノンプレイヤキャラクタは、プレイヤキャラクタ２０２またはプレイヤキャラクタ２０２以外の人間または動物を模したキャラクタであるノンプレイヤキャラクタによって、アイテムとして使用または所持される場合もある。
【００７８】
背景オブジェクト２０４は、仮想空間に配置される地形のオブジェクトである。地形とは、一般的には、地面（道路、陸地、花畑、農地などを含む）、坂、床、木、草、花、建物、階段、川、池、穴、洞窟、崖、壁、塀などを意味する。
【００７９】
図８に示す例では、背景オブジェクト２０４として、地面オブジェクト、複数の木オブジェクトおよび建物オブジェクトが設けられる。以下、この明細書においては、背景オブジェクト２０４、すなわち地形のオブジェクトを説明する場合には、地形の名称のみを記載し、「オブジェクト」の語を省略することにする。同様に、この明細書においては、アイテムを説明する場合には、アイテムの名称のみを記載し、「オブジェクト」の語を省略することにする。
【００８０】
この実施例の仮想のゲームでは、プレイヤキャラクタ２０２がアイテムとしてスコップ２１０を装備すると、このスコップ２１０を用いて、地面を掘ることができる。また、プレイヤキャラクタ２０２は、スコップ２１０を用いて、地面に形成された穴の一部または全部を埋めたり、仮想空間内のゲームフィールドに設けられる川または池の一部または全部を埋めたりすることができる。
【００８１】
図９は地面を掘る前のゲーム画面２００の限定しない一例を示す図であり、図１０は地面を掘って穴を形成した後のゲーム画面２００の限定しない一例を示す図である。図９および図１０は、ゲームフィールドの一部を仮想空間の上方から俯瞰的に見た図である。
【００８２】
図９および図１０では、ゲーム画面２００の上部において、川が横向きに流れており、その下方に地面が広がっている。図９に示すゲーム画面２００がディスプレイ１２に表示されている場合に、プレイヤキャラクタ２０２にスコップ２１０を持たせた状態で、Ａボタン５３が押下（または、操作）されると、図１０に示すように、プレイヤキャラクタ２０２が向いている方向における地面の一部が掘られて、穴が形成される。また、図１０に示すように、形成された穴には、水が配置される。以下、この明細書において、水が配置された領域を水場と呼ぶことにする。
【００８３】
また、図１０に示すゲーム画面２００において、穴が形成された方向をプレイヤキャラクタ２０２が向いている場合に、Ａボタン５３が押下されると、穴が埋められ、図９に示したように、地面に変わる（または、戻される）。
【００８４】
つまり、プレイヤは、プレイヤキャラクタ２０２を動作させて、仮想空間内の地形を変更または変形させることができる。この実施例では、プレイヤは、仮想空間内において、プレイヤキャラクタ２０２を動作させ、地面に穴を掘り、穴を広げることにより、水の流れの無い領域または水の流れの有る領域を作る。この実施例では、水の流れの無い領域は池領域（または、池）であり、水の流れの有る領域は川領域（または、川）である。
【００８５】
図１１および図１２に示すように、この実施例では、仮想空間内のゲームフィールドは碁盤目状に分割されており、碁盤目の升目単位または区画単位（以下、「ユニット」という）で地形を変形させることができる。つまり、この実施例では、１ユニットが１画素に相当する。図１１は、図１０に示したゲーム画面２００に、ゲームフィールドが碁盤目状に区切られていることを示すための点線を付加した図である。図１１に示すように、ユニット毎に、地面が掘り下げられて、穴が形成される。また、図１２に示すように、図１１において穴が形成されたユニットの右隣りのユニットに穴が形成されると、ユニット同士が連結され、つまり、２つの穴が連結（または、接合）され、２ユニット分の水場が形成される。図１２も図１１と同様に、碁盤目状に区切られた状態を示すための点線が付加されている。
【００８６】
このように、隣接する複数のユニットに穴が形成されることにより、各ユニットに形成された穴が連結され、連結された穴に水が配置され、水場が形成される。つまり、池または川が形成される。この実施例では、隣接する複数のユニットに穴が形成されることによって形成された水場の形状が長い形状である場合に、その水場が川であると判定される。また、隣接する複数のユニットに穴が形成されることによって形成された水場の形状が長い形状でない場合に、その穴によって形成された水場が池であると判定される。ただし、水場は隣接する複数のユニットに穴が形成されることによって形成されるため、その複数の穴が連結して形成された穴の形状またはその複数のユニット同士を繋いだ形状が長い形状であるかどうかで、水場が川であるか池であるかを判定しているとも言える。
【００８７】
図１３は水場が川であると判定された場合のゲーム画面２００の限定しない一例を示す図であり、図１４は水場が池であると判定された場合のゲーム画面２００の限定しない一例を示す図である。ただし、図１３および図１４では、水場の一部を示してある。
【００８８】
水場が川であると判定された場合には、図１３に示すように、水が流れる様子のアニメーションが再生される。図１３に示すゲーム画面２００では、川の流れを矢印で示してあるが、実際には、矢印は表示されない。また、川の流れに逆らうように魚オブジェクト２０６が泳ぐ。図１３（図１４も同じ）では、魚オブジェクト２０６の影が示される。プレイヤの操作入力に基づいてプレイヤキャラクタ２０２が釣竿２１２を用いて釣りをする場合、プレイヤキャラクタ２０２が糸２１４を川に垂らすと、糸２１４に付けられた浮き２１６が川の流れに従って流れるように移動される。ただし、浮き２１６は、糸２１４の長さに応じた位置で止まる。また、川で釣れる魚の種類は、池で釣れる魚の種類とは異なる。この実施例では、川で釣れる魚は、鮎、岩魚、山女魚などである。
【００８９】
水場が池であると判定された場合には、図１４に示すように、水は流れない。また、魚オブジェクト２０６は池の中でランダムに泳ぐ。プレイヤの操作入力に基づいてプレイヤキャラクタ２０２が釣竿２１２を用いて釣りをする場合、プレイヤキャラクタ２０２が糸２１４を池に垂らすと、垂らした位置に浮き２１６が浮かぶ。また、この実施例では、池で釣れる魚の種類は、金魚、鮒、鯉、鯰などである。
【００９０】
ただし、川および池は、仮想空間内のゲームフィールドに予め形成されている場合もある。つまり、水は予め地面が掘られた領域（ユニット）にも配置される。プレイヤキャラクタ２０２に予め地面が掘られた領域の全部または一部を埋めさせることにより、予め形成された川または／および池の全部または一部を地面にすることもできる。この場合にも、地形を変形することができる。
【００９１】
このように、プレイヤの操作入力に基づいてプレイヤキャラクタ２０２に釣りを行わせる場合、川と池とで異なる処理が実行される。したがって、プレイヤは、プレイヤキャラクタ２０２に川または池を生成させて、所望の魚オブジェクト２０６を釣ることができる。つまり、川と池とで異なる釣りを楽しむことができる。
【００９２】
また、図１２に示したゲーム画面２００において、地面を掘って形成した穴と川の間の地面を掘ると、図１５に示すように、地面を掘って形成した穴を川と連結することができる。この場合、プレイヤの操作入力に基づいてプレイヤキャラクタ２０２が掘った穴は、川の一部に含まれる。
【００９３】
次に、水場が川であるか池であるかを判定する方法を説明し、さらに、川と判定された水場における、水の流れを算出する方法を説明する。
【００９４】
上述したように、水場の形状が長い形状であると判定された場合に、この水場が川であると判定される。この実施例では、水場の面積と、水場に設定された始点と終点の距離に基づいて、水場が川であるか池であるかが判定される。
【００９５】
具体的には、水場の面積Ｓと、水場に設定された始点となる水場ユニットから終点となる水場ユニットまでの距離ｄ（長さ）が数１を満たすかどうかで、水場が川であるか池であるかが判定される。この実施例では、１ユニットの縦横の長さを１とし、１ユニットの面積を１として判定が行われる。したがって、縦または横に隣接する２つのユニット間の距離は、両ユニットの中心間の距離であって、すなわち１である。そして、同じ水場における２ユニット間の距離とは、片方のユニットの中心からもう片方のユニットの中心まで、地面を通らずに上下左右いずれかの隣接ユニットに移動（つまり、距離１ずつ移動）することを繰り返して到達するときの移動距離のうち、最小となる値または最短距離となるユニットの数を意味するものとする。
【００９６】
［数１］
ｄ２＞４Ｓ
このように、水場において設定された始点と終点との距離ｄのパラメータと、水場の面積Ｓのパラメータを比較することにより、水場が川である（つまり、水の流れを有する）かどうかを判定する。この実施例では、距離ｄのパラメータを２乗した値の方が面積Ｓのパラメータに基づいて設定される基準値（この実施例では、面積Ｓのパラメータを４倍にした値）よりも大きいかどうかが判断される。これは、正方形の水場において、左上の水場ユニットに始点を設定し、右下の水場ユニットに終点を設定し、始点から終点までの距離（長さ）をｄとすると、水場の面積Ｓはｄ２／４である。つまり、正方形に近い形状である場合には、ｄ２＝４Ｓとなる。したがって、水場の形状が長い形状であるためには、始点から終点までの距離ｄが、水場の形状が正方形の場合よりも長くなると考えて、数１が導出された。ただし、距離ｄのパラメータを２乗した値と面積Ｓのパラメータを４倍にした値が等しい場合にも、水場の形状が長い形状であると判定し、水場が川であると判定してもよい。
【００９７】
また、上記の始点となる水場ユニットおよび終点となる水場ユニットは、第１のルールに従って設定される。以下、この明細書においては、始点となる水場ユニットを単に「始点」と呼び、終点となる水場ユニットを「終点」と呼ぶことにする。第１のルールは、次の４つの項目（１）−（４）を含む。（１）２点を結ぶ距離（すなわち、２ユニット間の距離）が最大であること。（２）始点は水場において最も北側に位置すること。（３）終点は水場において最も南側に位置すること。（４）２点を結ぶ距離（すなわち、２ユニット間の距離）が最大となる始点および終点の組が複数存在する場合には、最も西側に始点が存在する組が選択され、さらに、最も西側に始点が存在する組が複数存在する場合には、最も東側に終点が存在する組が選択される。
【００９８】
ただし、この実施例では、ゲームフィールドを仮想空間の上方から俯瞰的に見た場合において、ゲームフィールドの上方向が北に設定され、下方向が南に設定され、左方向が西に設定され、右方向が東に設定される。
【００９９】
図１６（Ａ）は水場が川であるか池であるかを判定する方法を説明するための地形の限定しない一例を複数のユニットに分割して模式的に示した図である。図１６（Ｂ）水場が川であるか池であるかを判定する方法を説明するための地形の限定しない他の例を複数のユニットに分割して模式的に示した図である。図１６（Ａ）および図１６（Ｂ）では、灰色に塗り潰されたユニットが地面（または、陸地）のユニットであり、白色に塗り潰されたユニットが水場のユニット（以下、「水場ユニット」という）である。このことは、図１７−図２１についても同様である。
【０１００】
図１６（Ａ）に示す例では、水場の面積Ｓ（すなわち、水場ユニットの数）は２１であり、上記の第１のルールに従って設定された始点と終点を結ぶ距離ｄは９である。この場合、数１を満たさないため、水場は池であると判定される。
【０１０１】
図１６（Ｂ）に示す例では、水場の面積Ｓは２２であり、上記の第１のルールに従って設定された始点と終点を結ぶ距離ｄは１０である。この場合、数１を満たすため、水場は川であると判定される。
【０１０２】
ただし、水場が滝または汽水域につながっている場合には、上記の第１のルールとは異なる第２のルールで、始点および終点が設定される。第２のルールは、次の３つの項目（ア）−（ウ）を含む。（ア）滝壺に繋がっている水場ユニットはすべて始点とする。（イ）滝上に繋がっている水場ユニットはすべて終点とする。（ウ）汽水域に繋がっている川ユニットはすべて終点とする。
【０１０３】
したがって、図１５に示したように、プレイヤの操作入力に基づいてプレイヤキャラクタ２０２が地面を掘ることにより、地面を掘って形成された水場が川に連結された場合に、第２のルールに従って始点および終点が設定される。つまり、プレイヤキャラクタ２０２が地面を掘って形成された水場が、滝上、滝壺および汽水域のような水源に繋がった場合には、その形成された水場の形状が長い形状であるかどうかに拘らず、第２のルールに従って始点および終点が設定される。
【０１０４】
図１７は滝（滝上および滝壺）および汽水域を含む地形の限定しない一例を複数のユニットに分割して模式的に示した図である。滝上、滝壺および汽水域を構成する複数のユニットは、仮想空間内のゲームフィールドにおいて、予め設定された位置にそれぞれ配置されるが、プレイヤによって配置または変更されてもよい。
【０１０５】
図１７に示すような地形においては、第２のルールに従って、始点および終点が設定される。つまり、図１７に示すように、滝壺のユニットの下側に隣接する複数の水場ユニットは、上記の（ア）の項目に従ってすべて始点に設定される。また、滝上のユニットの上側に隣接する複数の水場ユニットは、上記の（イ）の項目に従ってすべて終点に設定される。さらに、汽水域のユニットの上側に隣接する複数の水場ユニットは、上記の（ウ）の項目に従ってすべて終点に設定される。
【０１０６】
以上のようにして設定された始点および終点を基準として水の流れが生成される。水の流れは、伝搬するエネルギに基づいて動的に生成される。エネルギには、始点から出るエネルギ（以下、「流出エネルギ」という）と、終点に入り込むエネルギ（以下、「流入エネルギ」という）の２種類があり、流出エネルギの伝搬と流入エネルギの伝搬は別々に算出される。
【０１０７】
図１８（Ａ）は流出エネルギの伝搬を説明するための図であり、図１８（Ｂ）は流入エネルギの伝搬を説明するための図であり、図１８（Ｃ）は流出エネルギの分配を説明するための図であり、図１８（Ｄ）は流出エネルギの伝搬の他の例であって陸地で反射される場合について説明するための図であり、図１８（Ｅ）は流出エネルギの伝搬のその他の例であってＬ字状の壁（または、陸地）で反射される場合について説明するための図である。
【０１０８】
図１８（Ａ）−図１８（Ｅ）に示す例では、縦３ユニット×横３ユニットの９つのユニットの地形が用いられる。図１８（Ａ）の左側の図に示すように、図１８（Ａ）−図１８（Ｅ）においては、左上のユニットを「第１ユニット」と呼び、第１ユニットに隣接する右側のユニットを「第２ユニット」と呼び、第２ユニットに隣接する右側のユニットを「第３ユニット」と呼ぶ。また、第１ユニットに隣接する下側のユニットを「第４ユニット」と呼び、第４ユニットに隣接する右側のユニットを「第５ユニット」と呼び、第５ユニットに隣接する右側のユニットを「第６ユニット」と呼ぶ。さらに、第４ユニットに隣接する下側のユニットを「第７ユニット」と呼び、第７ユニットに隣接する右側のユニットを「第８ユニット」と呼び、第８ユニットに隣接する右側のユニットを「第９ユニット」と呼ぶ。
【０１０９】
流出エネルギは、エネルギの向きに伝搬する。つまり、流出エネルギは、所定時間（この実施例では、１秒）経過する毎に、エネルギの向きと同じ側に隣接するユニットに伝搬する。図１８（Ａ）に示す例では、第４ユニットの時刻ｔにおける流出エネルギが、時刻ｔ+１に、第５ユニットに伝搬される。さらに、第５ユニットの時刻ｔ＋１における流出エネルギは、時刻ｔ＋２に、第６ユニットに伝搬される。
【０１１０】
図１８（Ａ）（図１８（Ｂ）−図１８（Ｅ）も同様）では、エネルギの伝搬を説明するために、伝搬されるエネルギのみを矢印を用いて示してあるが、実際には、エネルギ源（流出源および流入源の両方）からのエネルギが途絶えることが無く、地形が変形されない限り、連続的にエネルギは伝搬される。
【０１１１】
この実施例では、エネルギは、エネルギ源（流出源および流入源の両方）からの距離に応じて減衰しないように制御される。たとえば、エネルギ源が１つであり、比較的長い水場が形成された場合に、逆の止まりにエネルギが到達する前に消えてしまい、途中で水流が無くなることを回避するためである。
【０１１２】
また、流入エネルギは、エネルギの向きと逆向きに伝搬する。つまり、流入エネルギは、１秒経過する毎に、エネルギの向きと逆側に隣接するユニットに伝搬する。図１８（Ｂ）に示す例では、第６ユニットの時刻ｔにおける流入エネルギが、時刻ｔ＋１に、第５ユニットに伝搬される。さらに、第５ユニットの時刻ｔ＋１における流入エネルギは、時刻ｔ＋２に、第４ユニットに伝搬される。
【０１１３】
図１８（Ａ）および図１８（Ｂ）に示したように、エネルギの向きまたはその逆向きにエネルギが伝搬されるが、それらの方向にのみ伝搬される場合には、途中で幅が大きくなっている領域では、幅が大きくなっている部分のユニットにエネルギが伝搬されなくなる。このため、この実施例では、図１８（Ｃ）に示すように、エネルギの伝搬方向の左右に隣接するユニットに、エネルギの一部を分配している。図１８（Ｃ）に示す例では、時刻ｔ＋１において、第４ユニットの時刻ｔにおける流出エネルギが、第５ユニットに伝達される。このとき、流出エネルギの一部が、第１ユニットおよび第７ユニットに分け与えられる。
【０１１４】
ただし、エネルギを分配した場合であっても、隣接するユニットからエネルギが分配されるため、基本的には、伝搬されるエネルギは減衰しないように制御される。
【０１１５】
図１８（Ｄ）および図１８（Ｅ）はエネルギの伝搬先が陸地（または、地面）の場合のエネルギの反射を説明するための図である。図１８（Ｄ）の例では、第７ユニット、第８ユニットおよび第９ユニットにおいて、陸地が左右に直線状に延びて形成されており、その陸地に対して垂直方向から流出エネルギが伝搬される場合について示される。また、図１８（Ｅ）の例では、第１ユニット、第４ユニット、第７ユニット、第８ユニットおよび第９ユニットにおいて、陸地がＬ字状に形成されており、そのＬ字の横棒に対応する陸地に対して垂直方向から流出エネルギが伝搬される場合について示される。
【０１１６】
図１８（Ｄ）に示すように、第５ユニットから流出エネルギが伝搬される第８ユニットには、陸地（または、地面）が配置される。このため、流出エネルギは陸地によって反射される。この実施例では、陸地に沿う方向に流出エネルギは反射（または、伝搬）される。したがって、図１８（Ｄ）に示すように、ｔ＋１秒後に、第４ユニットには左向きに流出エネルギが伝搬され、第６ユニットには右向きに流出エネルギが伝搬される。
【０１１７】
また、図１８（Ｅ）に示すように、第５ユニットから流出エネルギが伝搬される第８ユニットには、陸地（または、地面）が配置される。このため、図１８（Ｄ）に示した場合と同様に、流出エネルギは陸地によって反射される。ただし、第４ユニットには陸地（または、地面）が配置される。このため、図１８（Ｅ）に示すように、ｔ＋１秒後に、第６ユニットには、右向きに流出エネルギが伝搬される。
【０１１８】
ただし、Ｕ字状に形成された陸地（または、地面）において、Ｕ字の上方から下方に向けて流出エネルギが伝搬される場合には、陸地に伝搬される流出エネルギはいずれの方向へも反射（または、伝搬）されないようにしてある。伝搬元のユニットの流出エネルギを打ち消してしまい、逆流のような表現になってしまうのを回避するためである。
【０１１９】
以上のようにして、水場を構成する各水場ユニットにおける流出エネルギの伝搬および流入エネルギの伝搬がそれぞれ算出される。エネルギの伝搬が算出されると、流出エネルグの伝搬および流入エネルギの伝搬が合成され、合成されたエネルギの伝搬に基づいて水の流れが算出される。ただし、水の流れは、水場毎に算出される。穴が繋がっていない場合には、異なる水場と判断される。
【０１２０】
上述したように、水の流れは伝搬されるエネルギに基づいて動的に生成される。ここで、伝搬されるエネルギに基づいて水の流れが生成される方法について説明する。図１９（Ａ）は４つの水場ユニットＵ１−Ｕ４を示し、水場ユニットＵ１−Ｕ４における水の流れのエネルギの向きが白抜きの矢印で示される。点線で囲む範囲Ｒにおける各点における水の流れは、４つの水場ユニットＵ１−Ｕ４の中心点に設定されたベクトルを合成することにより算出（または、補間）される。
【０１２１】
水場ユニットＵ１−Ｕ４の中心点に設定されたベクトルは、各水場ユニットＵ１−Ｕ４におけるエネルギの伝搬する方向および所定の大きさ（たとえば、１）を有するベクトルである。図１９（Ａ）では、ベクトルＭが水場ユニットＵ１の中心点に設定され、ベクトルＮが水場ユニットＵ２の中心点に設定され、ベクトルＰが水場ユニットＵ３の中心点に設定され、そして、ベクトルＱが水場ユニットＵ４の中心点に設定される。
【０１２２】
図１９（Ｂ）に示すように、点線で囲む範囲Ｒにおける任意の点Ｘのベクトルすなわち水の流れは、４つのベクトルＭ、Ｎ、Ｐ、Ｑを合成することにより算出される。ただし、ベクトルＭ、Ｎ、Ｐ、Ｑは、点Ｘとの距離Ｌ１、Ｌ２、Ｌ３、Ｌ４が大きくなるに連れてその大きさが小さくされる。ベクトルＭ、Ｎ、Ｐ、Ｑを合成したベクトル（つまり、合成ベクトル）の向きおよび大きさで、水の流れる方向および速さが決定される。ベクトルの大きさが１である場合に、基準の速度が設定され、ベクトルの大きさが小さくなるに連れて速度が低減される。ただし、ベクトルの大きさが１を超える場合であっても、基準の速度よりも大きくされない。
【０１２３】
このようにして、隣接する水場ユニットの中心点に設定されるベクトルを用いて、水場を構成する各水場ユニット内における水の流れすなわち水の流れる方向および速度が算出される。
【０１２４】
ただし、図１９（Ｃ）に示すように、４つのユニットのうち、１つのユニットに地面が設定されている場合には、３つの水場ユニットの中心点に設定されるベクトルを用いて、範囲Ｒから地面が設定されたユニットの部分を除いた範囲Ｋ（Ｌ字状の領域）内の任意の点における合成ベクトルが算出される。合成ベクトルの算出方法は、範囲Ｒ内の任意の点Ｘにおける合成ベクトルを算出する場合と同様であり、地面が設定されたユニットの中心点に設定されるベクトルの成分を除いて算出される。
【０１２５】
図示は省略するが、４つのユニットのうち、２つのユニットに地面が設定される場合には、２つの水場ユニットの中心点に設定されるベクトルを用いて、範囲Ｒから地面が設定されたユニットの部分を除いた領域内の任意の点における合成ベクトルが算出される。
【０１２６】
また、伝搬されたエネルギが平衡状態に達すると、それ以降の水の流れは変化しない。つまり、水の流れが定常状態になる。ただし、伝搬したエネルギが平衡状態に達するまでに或る程度の時間を要するため、この実施例では、プレイヤキャラクタ２０２が水場のシーンに入場した時には、エネルギが平衡状態に達した場合に近い状態の水の流れの初期値が与えられる。これは、比較的大きな（長い）水場では、エネルギが伝搬されるまでに長時間を要し、場合によっては、水が流れ始めるまでに時間がかかってしまうからである。
【０１２７】
ここで、水の流れの初期値を与える方法を説明する。図２０（Ａ）は、水場を構成する複数の水場ユニットにおける始点に対する距離マップの限定しない一例を示す図である。距離マップとは、着目する水場ユニットについて、基準の水場ユニットから距離を数字で示したマップを意味する。
【０１２８】
図２０（Ａ）の距離マップでは、始点の水場ユニットが基準の水場ユニットに設定され、この始点の水場ユニット自身の距離が０に設定される。上述したように、隣接する２つのユニット間の距離は１であるため、始点の水場ユニットに隣接する水場ユニットの距離は１に設定される。距離が１に設定された水場ユニットに隣接する水場ユニットの距離は２に設定される。さらに、距離が２に設定された水場ユニットに隣接する水場ユニットの距離は３に設定される。これを繰り返すことにより、すべての水場ユニットに始点の水場ユニットからの距離が設定される。
【０１２９】
すべての水場ユニットに始点の水場ユニットからの距離が設定され、距離マップが生成されると、始点による水の流れの初期値が設定される。始点に対する距離マップにおいて、隣接する水場ユニットに同じ距離の数値が入っていれば、水の流れを作らない。また、距離マップにおいて、隣接する水場ユニットに異なる距離の数値が設定されていれば、数値の小さい水場ユニットから数値の大きい水場ユニットの方に水の流れが作られる。このような処理をすべての水場ユニットに対して実行する。図２０（Ａ）に示した距離マップについては、図２０（Ｂ）に示すように、水の流れが作られる。図２０（Ｂ）では、隣接する２つの水場ユニット間における水の流れを矢印で示してある。図２１（Ｂ）についても同様である。
【０１３０】
図２１（Ａ）は、水場を構成する複数の水場ユニットにおける終点に対する距離マップの限定しない一例を示す図である。図２１（Ａ）の距離マップでは、終点の水場ユニットが基準の水場ユニットに設定され、この終点の水場ユニット自身の距離が０に設定される。図２１（Ａ）からも分かるように、終点の水場ユニットに隣接する水場ユニットの距離は１に設定され、図２０（Ａ）に示した始点に対する距離マップと同様に、各水場ユニットの距離が設定される。
【０１３１】
すべての水場ユニットに終点の水場ユニットからの距離が設定され、距離マップが生成されると、終点による水の流れの初期値が設定される。終点に対する距離マップにおいても、隣接する水場ユニットに同じ距離の数値が入っていれば、水の流れを作らない。ただし、終点に対する距離マップにおいては、距離の数値の大きい水場ユニットから数値の小さい水場ユニットの方に水の流れが作られる。図２１（Ａ）に示した距離マップについては、図２１（Ｂ）に示すように、水の流れが作られる。
【０１３２】
始点による水の流れの初期値と、終点による水の流れの初期値が作られると、これらの初期値が合成され、水場における各水場ユニットの水の流れの初期値が決定される。また、水場を構成する各水場ユニット内における各点の水の流れは、図１９（Ａ）および図１９（Ｂ）を示した場合と同様にして、算出（または、補間）される。
【０１３３】
上述したように、プレイヤキャラクタ２０２が水場のシーンに入場すると、水場における水の流れの初期値が決定され、決定された水の流れの初期値に基づいて所定期間（たとえば、３０フレーム）水が流れるアニメーションが再生される。
【０１３４】
ただし、フレームは、画面を更新する単位時間であり、この実施例では、１フレームは１／３０秒である。これは一例であり、１フレームは１／６０秒または１／１２０秒であってもよい。
【０１３５】
この所定期間において、流出エネルギの伝搬および流入エネルギの伝搬に基づく水の流れが毎フレーム算出され、距離マップに基づく水の流れからエネルギの伝搬に基づく水の流れに次第に変化される。
【０１３６】
また、プレイヤの操作入力に基づいて水場の形状が変化されると、始点および終点が新たに設定されるとともに、水場の形状の変化によって変形または新たに形成された水場の形状が長い形状であるかどうかが新たに判定される。
【０１３７】
変形または新たに形成された水場の形状が長い形状である場合には、新たに設定された始点からの流出エネルギの伝搬が算出されるとともに、新たに設定された終点からの流出エネルギの伝搬が算出される。流出エネルギの伝搬と流入エネルギの伝搬とが合成されたエネルギの伝搬に従って水の流れが算出される。ただし、地形が変化する前の水の流れから、地形が変化した後の水の流れに急に変化すると違和感があるため、次第に水の流れが変化するように、各地点の水の流れが制御される。このように、地形が変化されることにより、水の流れが変化する場合には、エネルギが平衡状態となり、水の流れが定常状態になるまでに時間がかかるため、地形が変化したときに限り、所定期間（この実施例では、１秒）において、エネルギの伝搬を毎フレーム算出し、エネルギが平衡状態となり、水の流れが定常状態になるまでの時間を短縮するようにしてある。
【０１３８】
また、変形または新たに形成された水場の形状が長い形状でない場合には、この水場には水の流れは無い。ただし、地形が変化する前に水の流れがあった場合に、地形が変化した後に水の流れを急に無くすと違和感があるため、次第に水の流れが無くなるように、各地点の水の流れが制御される。
【０１３９】
図２２は図６に示したＤＲＡＭ８５のメモリマップ８５０の限定しない一例を示す図である。図２２に示すように、ＤＲＡＭ８５は、プログラム記憶領域８５２およびデータ記憶領域８５４を含む。プログラム記憶領域８５２には、ゲームアプリケーションのプログラム（つまり、ゲームプログラム）が記憶される。図２２に示すように、ゲームプログラムは、メイン処理プログラム８５２ａ、画像生成プログラム８５２ｂ、操作検出プログラム８５２ｃ、キャラクタ制御プログラム８５２ｄ、背景オブジェクト変更プログラム８５２ｅ、形状判定プログラム８５２ｆ、端点設定プログラム８５２ｇ、流れ算出プログラム８５２ｈおよび画像表示プログラム８５２ｉなどを含む。
【０１４０】
ただし、生成されたゲーム画像などの画像を表示する機能は本体装置２が備える機能である。したがって、画像表示プログラム８５２ｉは、ゲームプログラムに含まれない。
【０１４１】
詳細な説明は省略するが、各プログラム８５２ａ−８５２ｈは、本体装置２に電源が投入された後の適宜のタイミングで、フラッシュメモリ８４および／またはスロット２３に装着された記憶媒体からその一部または全部が読み込まれてＤＲＡＭ８５に記憶される。ただし、各プログラム８５２ａ−８５２ｈの一部または全部は、本体装置２と通信可能な他のコンピュータから取得するようにしてもよい。また、画像表示プログラム８５２ｉは、本体装置２に電源が投入された後の適宜のタイミングで、フラッシュメモリ８４から読み込まれてＤＲＡＭ８５に記憶される。
【０１４２】
メイン処理プログラム８５２ａは、この実施例の仮想のゲームの全体的なゲーム処理を実行するためのプログラムである。画像生成プログラム８５２ｂは、画像生成データ８５４ｂを用いて、ゲーム画像などの各種の画像に対応する表示画像データを生成するためのプログラムである。
【０１４３】
操作検出プログラム８５２ｃは、左コントローラ３または／および右コントローラ４からの操作データ８５４ａを取得するためのプログラムである。つまり、プレイヤの操作入力に応じた操作データ８５４ａが取得される。キャラクタ制御プログラム８５２ｄは、プレイヤの操作入力に基づいて、プレイヤキャラクタ２０２の動作を制御したり、プレイヤの操作入力に関わらず、ノンプレイヤキャラクタの動作を制御したりするためのプログラムである。
【０１４４】
背景オブジェクト変更プログラム８５２ｅは、この実施例では、主として、プレイヤキャラクタ２０２の掘る動作に応じて地面を掘り、プレイヤキャラクタ２０２の埋める動作に応じて穴または水場を埋めるためのプログラムである。つまり、背景オブジェクト変更プログラム８５２ｅは、主として、プレイヤキャラクタ２０２の動作に応じて、地形を変形するためのプログラムである。このため、背景オブジェクト変更プログラム８５２ｅに従って、家、壁または橋が建築されたり、家、壁または橋が撤去されたりすることもある。
【０１４５】
形状判定プログラム８５２ｆは、地形が変形された場合に、水場の形状が長い形状であるかどうかを判定するためのプログラムである。端点設定プログラム８５２ｇは、水場を構成する複数の水場ユニットにおいて、所定のルール（すなわち、第１のルールまたは第２のルール）に従って、始点または／および終点を設定するためのプログラムである。
【０１４６】
流れ算出プログラム８５２ｈは、水場において、流出エネルギおよび流入エネルギに基づいて、各水場ユニット内の水の流れ（各点における水の流れる方向および速さ）を算出するためのプログラムである。また、流れ算出プログラム８５２ｈは、プレイヤキャラクタ２０２が水場のシーンに入場したときには、始点に対する距離マップおよび終点に対する距離マップを生成し、これらの距離マップを合成することにより、水の流れの初期値を算出するためのプログラムでもある。
【０１４７】
画像表示プログラム８５２ｉは、画像生成プログラム８５２ｂに従って生成した表示画像データを表示装置に出力するためのプログラムである。したがって、表示画像データに対応する画像（つまり、ゲーム画面２００など）がディスプレイ１２などの表示装置に表示される。
【０１４８】
なお、プログラム記憶領域８５２には、ＢＧＭ等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ８４などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
【０１４９】
また、データ記憶領域８５４には、操作データ８５４ａ、画像生成データ８５４ｂ、現在位置データ８５４ｃ、背景オブジェクトデータ８５４ｄ、形状判定データ８５４ｅ、端点データ８５４ｆ、流れデータ８５４ｇおよび短縮フラグ８５４ｈなどが記憶される。
【０１５０】
操作データ８５４ａは、左コントローラ３または／および右コントローラ４から受信される操作データである。この実施例においては、本体装置２が左コントローラ３および右コントローラ４の両方から操作データを受信する場合には、本体装置２は、左コントローラ３および右コントローラ４のそれぞれに分類して操作データ８５４ａを記憶する。
【０１５１】
画像生成データ８５４ｂは、ポリゴンデータおよびテクスチャデータなど、表示画像データを生成するために必要なデータである。また、テクスチャデータは、水の流れをアニメーションで表示するためのデータを含む。
【０１５２】
現在位置データ８５４ｃは、プレイヤキャラクタ２０２および魚オブジェクト２０６などのノンプレイヤキャラクタのような仮想空間内において移動可能なキャラクタまたはオブジェクトについての現在フレームの位置に対応する位置座標のデータである。
【０１５３】
背景オブジェクトデータ８５４ｄは、仮想空間内に配置される背景オブジェクト２０４についてのデータであり、具体的には、背景オブジェクト２０４を構成するポリゴンおよびテクスチャのデータと、仮想空間における背景オブジェクト２０４の配置位置の位置座標のデータを含む。
【０１５４】
形状判定データ８５４ｅは、プレイヤキャラクタ２０２によって生成または変形された水場の形状が長い形状であるかどうかを判定した結果についてのデータである。プレイヤキャラクタ２０２によって生成または変形された水場が複数存在する場合には、水場毎に判定した結果が記憶される。
【０１５５】
端点データ８５４ｆは、端点設定プログラム８５２ｇに従って設定された、始点および終点についての識別情報と、始点および終点の位置座標を示すデータである。ただし、水場が複数存在する場合には、水場毎に、始点および終点についての識別情報と、始点および終点の位置座標を示すデータが端点データ８５４ｆとして記憶される。
【０１５６】
流れデータ８５４ｇは、流れ算出プログラム８５２ｈに従って算出された水場ユニット毎の水の流れ（各点における水の流れる方向および速さ）についてのデータである。
【０１５７】
短縮フラグ８５４ｈは、水の流れが時間の変化に従って変化しない状態すなわち定常状態に達するまでの時間を短縮するかどうかを判断するためのフラグである。水の流れが定常状態に達するまでの時間を短縮する場合には、短縮フラグ８５４ｈはオンされ、水の流れが定常状態に達するまでの時間を短縮しない場合には、短縮フラグ８５４ｈはオフされる。
【０１５８】
図示は省略するが、データ記憶領域８５４には、ゲームプログラムの実行に必要な、他のデータが記憶されたり、他のフラグおよびタイマ（またはカウンタ）が設けられたりする。
【０１５９】
図２３は、本体装置２のプロセッサ８１（またはコンピュータ）のゲームプログラム７処理（ゲーム全体処理）の限定しない一例を示すフロー図である。以下、図２３を用いて、ゲーム全体処理について説明するが、同じ処理を実行するステップについては重複する説明は省略することにする。
【０１６０】
ただし、図２３に示すフロー図（図２４−図２６も同じ）の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図２３−図２６に示すフロー図の各ステップの処理をプロセッサ８１が実行するものとして説明するが、プロセッサ８１以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
【０１６１】
本体装置２の電源が投入されると、ゲーム全体処理の実行に先だって、プロセッサ８１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってＤＲＡＭ８５等の各ユニットが初期化される。本体装置２は、ユーザによって、この実施例のゲームプログラムの実行が指示されると、ゲーム全体処理を開始する。
【０１６２】
図２３に示すように、プロセッサ８１は、ゲーム全体処理を開始すると、ステップＳ１で、初期処理を実行する。初期処理では、たとえば、プロセッサ８１は、ゲーム画面２００を生成および表示するための仮想空間を構築し、この仮想空間に登場するプレイヤキャラクタ２０２、ノンプレイヤキャラクタおよび背景オブジェクト２０４等の各キャラクタないし各オブジェクトを初期位置に配置する。また、プロセッサ８１は、ゲーム制御処理（Ｓ５）で用いる各種パラメータの初期値を設定する。
【０１６３】
なお、詳細な説明は省略するが、ゲーム全体処理の開始に先立って、左コントローラ３および右コントローラ４が本体装置２に装着されているかどうかが判断され、左コントローラ３および右コントローラ４が本体装置２から分離されている場合には、本体装置２と、左コントローラ３および右コントローラ４との間でペアリング処理が実行される。
【０１６４】
続いて、プロセッサ８１は、ステップＳ３で、コントローラ（３，４）から送信されてくる操作データを取得し、ステップＳ５で、ゲーム制御処理を実行する。たとえば、ゲーム制御処理では、操作データに従ってプレイヤキャラクタ２０２を移動させるなどの任意のアクションを実行する。また、ゲームプログラムに従ってノンプレイヤキャラクタを移動させるなどの任意のアクションを実行する。水場のシーンでは、魚オブジェクト２０６が移動する（つまり、泳ぐ）動作が実行される。この場合、水場が川であれば、魚オブジェクト２０６は川の流れに逆らうように移動され、水場が池であれば、魚オブジェクト２６はランダムに移動される。さらに、必要に応じて、アイテムを仮想空間に出現させる（配置する）、または、消滅させる（除去する）。水場のシーンにおいて、プレイヤキャラクタ２０２に釣りをさせる場合には、水場が川であれば、川の流れに従って浮き２１６が流れるように移動される。
【０１６５】
次のステップＳ７では、プロセッサ８１は、ディスプレイ１２に表示するためのゲーム画像を生成する。簡単に説明すると、プロセッサ８１は、ステップＳ５のゲーム制御処理の結果を表すデータおよび画像生成データ８５４ｂをＤＲＡＭ８５から読み出し、ゲーム画像データを生成する。
【０１６６】
さらに、ステップＳ９では、プロセッサ８１は、スピーカ８８に出力するためのゲーム音声を生成する。簡単に説明すると、プロセッサ８１は、ステップＳ５のゲーム制御処理の結果を表すデータおよび音データをＤＲＡＭ８５から読出し、ゲーム音声データを生成する。
【０１６７】
ステップＳ１１では、ステップＳ７で生成したゲーム画像データをディスプレイ１２に出力し、ステップＳ１３では、ステップＳ９で生成したゲーム音声データを、コーデック回路８７を介してスピーカ８８に出力する。ただし、ゲーム音声データは、音声入出力端子２５に出力される場合もある。
【０１６８】
そして、ステップＳ１５では、ゲームを終了するかどうかを判断する。ステップＳ１５の判断は、たとえば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップＳ１５で“ＮＯ”であれば、つまりゲームを終了しない場合には、ステップＳ３に戻る。一方、ステップＳ１５で“ＹＥＳ”であれば、つまりゲームを終了する場合には、ゲーム全体処理を終了する。
【０１６９】
図２４−図２６は、図２３に示した本体装置２のプロセッサ８１（またはコンピュータ）のゲーム画像の生成処理の限定しない一例を示すフロー図である。
【０１７０】
図２４に示すように、プロセッサ８１は、ゲーム画像の生成処理を開始すると、ステップＳ２１で、プレイヤキャラクタ２０２の水場のシーンへの入場かどうかを判断する。ステップＳ２１で“ＮＯ”であれば、つまり、水場のシーンへの入場でなければ、後述するステップＳ３１に進む。一方、ステップＳ２１で“ＹＥＳ”であれば、つまり、水場のシーンへの入場であれば、ステップＳ２３で、入場した水場のシーンにおける水場（以下、「当該水場」と呼ぶことにする）は水の流れが有ることが判断されているかどうかを判断する。ここでは、プロセッサ８１は、形状判定データ８５４ｅを参照して、当該水場の形状が長い形状であることが判定されているかどうかを判断する。
【０１７１】
ステップＳ２３で“ＹＥＳ”であれば、つまり、当該水場は水の流れが有ることが判断されていれば、ステップＳ２７に進む。一方、ステップＳ２３で“ＮＯ”であれば、つまり、当該水場は水の流れが有ることが判断されていなければ、ステップＳ２５で、当該水場において、始点および終点が与えられているかどうかを判断する。つまり、当該水場がゲームフィールドに予め配置された水源を含んでいるかどうかが判断される。
【０１７２】
ステップＳ２５で“ＮＯ”であれば、つまり、当該水場において、始点および終点が与えられていない場合には、図２５に示すステップＳ５３に進む。一方ステップＳ２５で“ＹＥＳ”であれば、つまり、当該水場において、始点および終点が与えられている場合には、ステップＳ２７で、始点に対する距離マップおよび終点に対する距離マップを算出して、水の流れの初期値を算出する。続くステップＳ２９では、水の流れの初期値を各水場ユニットに設定して、ステップＳ５１に進む。
【０１７３】
また、ステップＳ３１では、プレイヤキャラクタ２０２が水場のシーンに存在しているかどうかを判断する。ステップＳ３１で“ＮＯ”であれば、つまり、プレイヤキャラクタ２０２が水場のシーンに存在していない場合には、図２５に示すステップＳ５３に進む。一方、ステップＳ３１で“ＹＥＳ”であれば、つまり、プレイヤキャラクタ２０２が水場のシーンに存在していれば、図２５に示すステップＳ３３で、地面を掘ったり埋めたりしたかどうかを判断する。つまり、プロセッサ８１は、プレイヤキャラクタ２０２によって背景オブジェクト２０４が変更（つまり、地形が変形）されたかどうかを判断する。
【０１７４】
ステップＳ３３で“ＮＯ”であれば、つまり、地面を掘ったり埋めたりしていなければ、図２６に示すステップＳ５５に進む。一方、ステップＳ３３で“ＹＥＳ”であれば、つまり、地面を掘ったり埋めたりしていれば、当該水場が始点および終点が与えられている領域（すなわち、水源が配置された川）に繋がったかどうかを判断する。
【０１７５】
ステップＳ３５で“ＹＥＳ”であれば、つまり、当該水場が始点および終点が与えられている領域に繋がっていれば、ステップＳ３７で、第２のルールに従って始点および終点を設定し、ステップＳ５１に進む。一方、ステップＳ３５で“ＮＯ”であれば、つまり、当該水場が始点および終点が与えられている領域に繋がっていなければ、ステップＳ３９で、短縮フラグ８５４ｈをオンし、ステップＳ４１で、第１カウント値を１に設定する。ただし、第１カウント値は、定常状態に達するまでの時間を短縮するために、ユニット毎の水の流れを毎フレーム算出する所定期間（この実施例では、１秒（３０フレーム））をカウントするための変数である。
【０１７６】
次のステップＳ４３では、第１のルールに従って始点および終点を設定する。次のステップＳ４５では、形状判定処理を実行する。ここでは、プロセッサ８１は、上述したように、水場の面積Ｓと始点から終点までの距離ｄを算出し、数１を満たすかどうかを判断する。続くステップＳ４７では、ステップＳ４５における判断結果を記憶する。つまり、プロセッサ８１は、この水場についての形状判定データ８５４ｅを記憶する。
【０１７７】
続いて、ステップＳ４９では、水場の形状が長い形状であるかどうかを判断する。ステップＳ４９で“ＮＯ”であれば、つまり、水場の形状が長い形状でなければ、ステップＳ５３に進む。一方、ステップＳ４９で“ＹＥＳ”であれば、つまり、水場の形状が長い形状であれば、水の流れが有ると判断し、ステップＳ５１で、水場における水の流れをユニット毎に算出して、ステップＳ５３に進む。
【０１７８】
そして、ステップＳ５３では、描画処理を実行して、ゲーム画像の生成処理を終了し、ゲーム全体処理にリターンする。ステップＳ５３の描画処理においては、プロセッサ８１は、水場のみならず、プレイヤキャラクタ２０２、水場以外の他の背景オブジェクト２０４および魚オブジェクト２０６などのノンプレイヤキャラクタを描画する。また、水場のシーンにおいて、プレイヤの操作入力に基づいてプレイヤキャラクタ２０２に釣りをさせる場合には、釣竿２１２、糸２１４および浮２１６も描画される。さらに、水場のシーンにおいて水の流れが有る場合には、水のテクスチャのアニメーションを再生する再生処理が実行される。また、水場のシーンにおいては、魚オブジェクト２０６が泳ぐアニメーションを再生する再生処理も実行される。ただし、水場のシーンでない場合には、水場は描画されず、アニメーションも再生されない。また、水場のシーンかどうかに関係無く、プレイヤの操作入力に基づいてプレイヤキャラクタ２０２に地面を掘らせる場合には、スコップ２１０も描画される。
【０１７９】
図２６に示すように、ステップＳ５５では、短縮フラグ８５４ｈがオンかどうかを判断する。ステップＳ５５で“ＹＥＳ”であれば、つまり、短縮フラグ８５４ｈがオンであれば、ステップＳ５７で、第１カウント値を１加算して、ステップＳ５９で、第１カウント値が３０以上であるかどうかを判断する。つまり、水の流れが定常状態に達するまでの時間を短縮する所定期間が経過したかどうかを判断する。
【０１８０】
ステップＳ５９で“ＮＯ”であれば、つまり、第１カウント値が３０に達していなければ、図２５に示したステップＳ５１に進む。一方、ステップＳ５９で“ＹＥＳ”であれば、つまり、第１カウント値が３０以上であれば、ステップＳ６１で、短縮フラグ８５４ｈをオフして、ステップＳ５３に進む。
【０１８１】
また、ステップＳ５５で“ＮＯ”であれば、つまり、短縮フラグ８５４ｈがオフであれば、ステップＳ６３で、第２カウント値を１加算し、ステップＳ６５で、第２カウント値が３０以上であるかどうかを判断する。第２カウント値は、１秒毎に隣接するユニットに流出エネルギおよび流入エネルギを伝搬するために、１秒に相当するフレーム数をカウントするための変数である。ステップＳ６５で“ＮＯ”であれば、つまり、第２カウント値が３０未満であれば、ステップＳ５３に進む。一方、ステップＳ６５で“ＹＥＳ”であれば、つまり、第２カウント値が３０以上であれば、ステップＳ６７で、第２カウント値を０に設定し、ステップＳ５１に進む。
【０１８２】
この実施例によれば、プレイヤの操作入力に基づいてプレイヤキャラクタに地面を掘ったり埋めたりさせることにより、地形を変形することができ、地面が掘られて形成された穴に水を配置し、水場の形状が長い形状であるかどうかに応じて水の流れを生成するので、地形を変形するとともに、変形した地形に水の流れを生成することができる。
【０１８３】
また、この実施例によれば、地形に応じて水の流れの有無を判定し、水の流れの有無に応じた処理が実行されるため、地形を変形させる楽しみをプレイヤに提供することができる。
【０１８４】
なお、この実施例では、流体オブジェクトとして水（オブジェクト）を穴に配置し、水場（穴）の形状が長い形状であると判定した場合に、水が流れるようにしたが、流体オブジェクトは水オブジェクトに限定される必要はない。溶岩流（または、マグマ）、砂（流）および雲などの他の流体オブジェクトが配置される場合についても同様である。なお、砂は流体では無いが、ゲームにおいては、砂を流体のように扱う場合があり、そのような場合に適用することができる。また、雲を配置する場合には、穴を形成する必要は無く、仮想空間内の空中において、ユニットに相当する大きさの雲を複数結合して、長い形状の雲を作るようにすれば良い。
【０１８５】
また、この実施例では、スコップを用いて地面を掘ったり埋めたりしたが、これに限定される必要はない。プレイヤの操作入力またはゲームイベントによって、地面が変形したり、単に地面が消滅したりしてもよい。また、スコップ以外の道具を用いて地面を掘り下げることもできる。たとえば、爆破により、地面を掘り下げることができる。ただし、地面に埋もれた岩を爆破することにより、岩を消滅させて穴が現れるようにしてもよい。
【０１８６】
さらに、この実施例では、情報処理システムの一例としてゲームシステム１を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の実施例においては、１つのコンピュータ（具体的には、プロセッサ８１）であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる（複数の）コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置２のプロセッサ８１と、コントローラが備える通信制御部（マイクロプロセッサ）１０１、１１１とによって構成されてもよい。
【０１８７】
さらにまた、他の実施例では、インターネットのようなネットワーク上のサーバで、図２３−図２６に示したゲーム制御処理、ゲーム画像の生成処理およびゲーム音声の生成処理を実行するようにしてもよい。かかる場合には、本体装置２のプロセッサ８１は、左コントローラ３および右コントローラ４から受信した操作データを、ネットワーク通信部８２およびネットワークを介して上記のサーバに送信し、サーバでゲーム制御処理、ゲーム画像の生成処理およびゲーム音声の生成処理を実行された結果（つまり、ゲーム画像のデータおよびゲーム音声のデータ）を受信して、ゲーム画像をディスプレイ１２に表示するとともに、ゲーム音声をスピーカ８８から出力する。つまり、上記の実施例で示したゲームシステム１とネットワーク上のサーバを含む情報処理システムを構成することもできる。
【０１８８】
また、上述の実施例では、ディスプレイ１２にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置２を、クレードルを介して据置型モニタ（たとえば、テレビモニタ）に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム１と据置型モニタを含む情報処理システムを構成することもできる。
【０１８９】
さらに、上述の実施例では、本体装置２に左コントローラ３および右コントローラ４を着脱可能な構成のゲームシステム１を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ３および右コントローラ４と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置２に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のような情報処理装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットＰＣなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
【０１９０】
また、その他の実施例では、連結部材を用いて、左コントローラ３および右コントローラ４を一体的に構成して１つのコントローラとして使用するようにしてもよい。
【０１９１】
さらに、上述の実施例で示した具体的な数値および画像は一例であり、実際の製品に応じて適宜変更可能である。
【符号の説明】
【０１９２】
１  …ゲームシステム
２  …本体装置
３  …左コントローラ
４  …右コントローラ
３２、５２  …アナログスティック
３９  …ＺＬボタン
６０  …Ｒボタン
６１  …ＺＲボタン
８１  …プロセッサ
【図１】
2020192168.tif 000003
【図２】
2020192168.tif 000004
【図３】
2020192168.tif 000005
【図４】
2020192168.tif 000006
【図５】
2020192168.tif 000007
【図６】
2020192168.tif 000008
【図７】
2020192168.tif 000009
【図８】
2020192168.tif 000010
【図９】
2020192168.tif 000011
【図１０】
2020192168.tif 000012
【図１１】
2020192168.tif 000013
【図１２】
2020192168.tif 000014
【図１３】
2020192168.tif 000015
【図１４】
2020192168.tif 000016
【図１５】
2020192168.tif 000017
【図１６】
2020192168.tif 000018
【図１７】
2020192168.tif 000019
【図１８】
2020192168.tif 000020
【図１９】
2020192168.tif 000021
【図２０】
2020192168.tif 000022
【図２１】
2020192168.tif 000023
【図２２】
2020192168.tif 000024
【図２３】
2020192168.tif 000025
【図２４】
2020192168.tif 000026
【図２５】
2020192168.tif 000027
【図２６】
2020192168.tif 000028