(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-25
(45)【発行日】2022-09-02
(54)【発明の名称】ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法
(51)【国際特許分類】
A63F 13/63 20140101AFI20220826BHJP
A63F 13/818 20140101ALI20220826BHJP
A63F 13/55 20140101ALI20220826BHJP
A63F 13/57 20140101ALI20220826BHJP
【FI】
A63F13/63
A63F13/818
A63F13/55
A63F13/57
(21)【出願番号】P 2019100479
(22)【出願日】2019-05-29
【審査請求日】2021-03-09
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100090181
【氏名又は名称】山田 義人
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】廣松 幸太郎
(72)【発明者】
【氏名】伊藤 慈彦
(72)【発明者】
【氏名】高橋 幸嗣
【審査官】安田 明央
(56)【参考文献】
【文献】特開2001-079269(JP,A)
【文献】特開2011-130779(JP,A)
【文献】特開2002-306840(JP,A)
【文献】gamefighter,[マイクラPE戦略] 畑を作って麦を育て、ハート回復アイテムを作ろう!,[online],APPBANK,2015年01月21日,https://appbank.net/2014/03/17/iphone-application/772124.php,検索日:2022年3月15日
【文献】大自然ものがたり,[online],iPhone AC,2015年07月16日,http://iphoneac-blog.com/archives/8896706.html,検索日:2022年3月4日
【文献】りゅう猫さん,[ドラクエビルダーズ2]地形作りが苦手な方向けの簡単に出来る自然な感じの池の作り方をご紹介!,[online],YouTube,2019年02月26日,https://www.youtube.com/watch?v=_gkJB1kijsE,検索日:2022年3月7日
【文献】ゆゆ,[あつ森] 川判定!池との違いがついに判明?![最新情報],[online],2020年11月15日,https://annamy.com/pond-or-river/,検索日:2022年3月8日
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24
A63F 13/00-13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を実行さ
せ、
前記形状判定処理は、
前記領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、ゲームプログラム。
【請求項2】
前記形状判定処理は、
前記長さパラメータの2乗が、前記面積パラメータに基づいて定められる基準値より大きい場合、前記長い形状であると判定する、請求項
1記載のゲームプログラム。
【請求項3】
前記形状判定処理は、
前記長さパラメータの2乗が、前記面積パラメータを4倍した値以上または当該値よりも大きい場合、前記長い形状であると判定する、請求項
1記載のゲームプログラム。
【請求項4】
前記流体オブジェクトは水オブジェクトであって、
前記領域内に流れがある場合、前記領域は川領域となり、
前記領域内に流れが無い場合、前記領域は池領域となり、
前記ゲーム処理は、前記川領域と前記池領域に対して異なる処理を行う、
請求項1から
3までのいずれかに記載のゲームプログラム。
【請求項5】
前記ゲーム処理は、前記プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、前記川領域における前記釣りと前記池領域における前記釣りとで異なる処理を行う、請求項5記載のゲームプログラム。
【請求項6】
前記流れ制御処理は、
前記領域内の区画に始点となる区画と終点となる区画を少なくとも1つずつ設定し、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項1から
5までのいずれかに記載のゲームプログラム。
【請求項7】
前記流れ制御処理は、
前記2つの区画を結ぶ最短区画数が最大となる2つの区画のうち、一方を始点とし、他方を終点とし、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項
1から
5までのいずれかに記載のゲームプログラム。
【請求項8】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、
前記領域が前記水源オブジェクトに繋がった場合、前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成する、請求項1から
7までのいずれかに記載のゲームプログラム。
【請求項9】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、前記領域が前記水源オブジェクトに繋がった場合には、
前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成し、
前記水源オブジェクトを前記始点とする、請求項
6または
7記載のゲームプログラム。
【請求項10】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行
い、
前記形状判定処理は、
前記領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、ゲームシステム。
【請求項11】
前記形状判定処理は、
前記長さパラメータの2乗が、前記面積パラメータに基づいて定められる基準値より大きい場合、前記長い形状であると判定する、請求項
10記載のゲームシステム。
【請求項12】
前記形状判定処理は、
前記長さパラメータの2乗が、前記面積パラメータを4倍した値以上または当該値よりも大きい場合、前記長い形状であると判定する、請求項
10記載のゲームシステム。
【請求項13】
前記流体オブジェクトは水オブジェクトであって、
前記領域内に流れがある場合、前記領域は川領域となり、
前記領域内に流れが無い場合、前記領域は池領域となり、
前記ゲーム処理は、前記川領域と前記池領域に対して異なる処理を行う、
請求項
10から
12までのいずれかに記載のゲームシステム。
【請求項14】
前記ゲーム処理は、前記プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、前記川領域における前記釣りと前記池領域における前記釣りとで異なる処理を行う、請求項
13記載のゲームシステム。
【請求項15】
前記流れ制御処理は、
前記領域内の区画に始点となる区画と終点となる区画を少なくとも1つずつ設定し、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項
10から
14までのいずれかに記載のゲームシステム。
【請求項16】
前記流れ制御処理は、
前記2つの区画を結ぶ最短区画数が最大となる2つの区画のうち、一方を始点、他方を終点とし、
前記始点となる区画から流出する流れと、前記終点となる区画に流入する流れを算出し、合成することで前記領域内のそれぞれの区画内の流れの方向を算出する、請求項
10から
14までのいずれかに記載のゲームシステム。
【請求項17】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、
前記領域が前記水源オブジェクトに繋がった場合、前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成する、請求項
10から
16までのいずれかに記載のゲームシステム。
【請求項18】
前記地形上には水源オブジェクトが配置され、
前記流れ制御処理は、前記領域が前記水源オブジェクトに繋がった場合には、
前記形状判定処理の結果に関わらず前記水源オブジェクトを水源とする流れを生成し、
前記水源オブジェクトを前記始点とする、請求項
15または
16記載のゲームシステム。
【請求項19】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行
い、
前記形状判定処理は、
前記領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、ゲーム装置。
【請求項20】
仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、
前記地形オブジェクトの掘り下げられた前記区画に流体オブジェクトを配置する流体配置処理と、
掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、
前記領域が長い形状と判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせ、前記領域が長い形状でないと判定された場合に、当該領域内に配置された前記流体オブジェクトに流れを生じさせない流れ制御処理と、
前記領域内の前記流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理を行
い、
前記形状判定処理は、
前記領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、
前記領域に含まれる区画の数を示す面積パラメータとを比較して前記長い形状か否かを判定する、ゲーム制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関し、特にたとえば、流体オブジェクトの流れの有無に応じたゲーム処理を実行する、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法に関する。
【背景技術】
【0002】
背景技術の一例が特許文献1に開示される。この特許文献1のゲーム装置では、仮想3次元ゲーム空間内においては、タッチ操作された対象とプレイヤキャラクタの装備の組み合わせで、プレイヤキャラクタの動作が決定される。たとえば、プレイヤキャラクタがスコップを装備しており、地面がタッチされた場合には、プレイヤキャラクタは、スコップを用いて地面を掘る動作を行う。また、プレイヤキャラクタが斧を装備しており、木がタッチされた場合には、プレイヤキャラクタは、斧を用いて木を切る動作を行う。さらに、プレイヤキャラクタが釣竿を装備しており、川がタッチされた場合には、プレイヤキャラクタは、釣竿を用いて川で釣りする動作を行う。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
この特許文献1には、プレイヤの操作入力に基づいて仮想空間内に仮想の池または川を作ること、プレイヤの操作入力に基づいて仮想空間内の仮想の池または川の全部または一部を仮想の土で埋めることについては何ら記載されていない。
【0005】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【0006】
また、この発明の他の目的は、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる、ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することである。
【課題を解決するための手段】
【0007】
第1の発明は、情報処理装置のコンピュータに、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを実行させ、形状判定処理は、領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、領域に含まれる区画の数を示す面積パラメータとを比較して長い形状か否かを判定する、ゲームプログラムである。
【0008】
第1の発明によれば、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
また、第1の発明によれば、長さパラメータと面積パラメータを比較することにより、領域が長い形状であるかどうかを簡単に判定することができる。
【0011】
第2の発明は、第1の発明に従属し、形状判定処理は、長さパラメータの2乗が、面積パラメータに基づいて定められる基準値より大きい場合、長い形状であると判定する。
【0012】
第3の発明は、第1の発明に従属し、形状判定処理は、長さパラメータの2乗が、面積パラメータを4倍した値以上または当該値よりも大きい場合、長い形状であると判定する。
【0013】
第4の発明は、第1から第3の発明までのいずれかに従属し、流体オブジェクトは水オブジェクトであって、領域内に流れがある場合、領域は川領域となり、領域内に流れが無い場合、領域は池領域となり、ゲーム処理は、川領域と池領域に対して異なる処理を行う。
【0014】
第4の発明によれば、プレイヤの操作入力に基づいて仮想空間内に川領域または池領域を生成することができる。
【0015】
第5の発明は、第4の発明に従属し、ゲーム処理は、プレイヤの操作入力に基づいてプレイヤキャラクタに釣りを行わせる処理を含み、川領域における釣りと池領域における釣りとで異なる処理を行う。
【0016】
第5の発明によれば、仮想空間に生成した川領域と池領域とで異なる釣りを楽しむことができる。
【0017】
第6の発明は、第1から第5の発明までのいずれかに従属し、流れ制御処理は、領域内の区画に始点となる区画と終点となる区画を少なくとも1つずつ設定し、始点となる区画から流出する流れと、終点となる区画に流入する流れを算出し、合成することで領域内のそれぞれの区画内の流れの方向を算出する。
【0018】
第6の発明によれば、所定のルールに従って流体オブジェクトの流れを生成することができる。
【0019】
第7の発明は、第1から第5の発明までのいずれかに従属し、流れ制御処理は、2つの区画を結ぶ最短区画数が最大となる2つの区画のうち、一方を始点とし、他方を終点とし、始点となる区画から流出する流れと、終点となる区画に流入する流れを算出し、合成することで領域内のそれぞれの区画内の流れの方向を算出する。
【0020】
第8の発明は、第1から第7の発明までのいずれかに従属し、地形上には水源オブジェクトが配置され、流れ制御処理は、領域が水源オブジェクトに繋がった場合、形状判定処理の結果に関わらず水源オブジェクトを水源とする流れを生成する。
【0021】
第8の発明によれば、堀下げられた区画同士が繋がっている領域が水源オブジェクトに繋がった場合には、他の所定のルールに従って流体オブジェクトの流れを生成することができる。
【0022】
第9の発明は、第6または第7の発明に従属し、地形上には水源オブジェクトが配置され、流れ制御処理は、領域が水源オブジェクトに繋がった場合には、形状判定処理の結果に関わらず水源オブジェクトを水源とする流れを生成し、水源オブジェクトを始点とする。
【0023】
第10の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行い、形状判定処理は、領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、領域に含まれる区画の数を示す面積パラメータとを比較して長い形状か否かを判定する、ゲームシステムである。
【0024】
第11の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行い、形状判定処理は、領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、領域に含まれる区画の数を示す面積パラメータとを比較して長い形状か否かを判定する、ゲーム装置である。
【0025】
第12の発明は、仮想空間内における区画単位で区切られた地形に対して、プレイヤの操作入力に基づいて指定された区画を掘り下げる地形変形処理と、地形オブジェクトの掘り下げられた区画に流体オブジェクトを配置する流体配置処理と、掘り下げられた区画同士が繋がっている領域の形状が、長い形状か否かを判定する形状判定処理と、領域が長い形状と判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせ、領域が長い形状でないと判定された場合に、当該領域内に配置された流体オブジェクトに流れを生じさせない流れ制御処理と、領域内の流体オブジェクトにおける流れの有無に応じた処理を少なくとも含むゲーム処理とを行い、形状判定処理は、領域に含まれる区画のうち、2つの区画を結ぶ最短区画数が最大となる2つの区画に関する当該最短区画数を示す長さパラメータと、領域に含まれる区画の数を示す面積パラメータとを比較して長い形状か否かを判定する、ゲーム制御方法である。
【0026】
第10-第12の発明においても、第1の発明と同様に、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
また、第10-第12の発明においても、第1の発明と同様に、長さパラメータと面積パラメータを比較することにより、領域が長い形状であるかどうかを簡単に判定することができる。
【発明の効果】
【0027】
この発明によれば、新規なゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法を提供することができる。また、プレイヤの操作入力に基づいて仮想空間内の地形を変形することができ、かつ、変形された地形に応じて流体オブジェクトの流れを発生させることができる。
【0028】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0029】
【
図1】
図1はこの実施例の本体装置に左コントローラおよび右コントローラを装着した状態の限定しない一例を示す図である。
【
図2】
図2は本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の限定しない一例を示す図である。
【
図3】
図3は
図1および
図2に示した本体装置の限定しない一例を示す六面図である。
【
図4】
図4は
図1および
図2に示した左コントローラの限定しない一例を示す六面図である。
【
図5】
図5は
図1および
図2に示した右コントローラの限定しない一例を示す六面図である。
【
図6】
図6は
図1および
図2に示した本体装置の内部構成の限定しない一例を示すブロック図である。
【
図7】
図7は
図1および
図2に示した本体装置と左コントローラおよび右コントローラとの内部構成の限定しない一例を示すブロック図である。
【
図8】
図8はゲーム画像の限定しない第1の例を示す図である。
【
図9】
図9はゲーム画像の限定しない第2の例を示す図である。
【
図10】
図10はゲーム画像の限定しない第3の例を示す図である。
【
図11】
図11はゲーム画像の限定しない第4の例を示す図である。
【
図12】
図12はゲーム画像の限定しない第5の例を示す図である。
【
図13】
図13はゲーム画像の限定しない第6の例を示す図である。
【
図14】
図14はゲーム画像の限定しない第7の例を示す図である。
【
図15】
図15はゲーム画像の限定しない第8の例を示す図である。
【
図16】
図16(A)は水場を含む地形の限定しない一例を模式的に示した図であり、
図16(B)は水場を含む地形の限定しない他の例を模式的に示した図である。
【
図17】
図17は水場を含む地形の限定しないその他の例を模式的に示した図である。
【
図18】
図18(A)は流出エネルギの伝搬を説明するための図であり、
図18(B)は流入エネルギの伝搬を説明するための図であり、
図18(C)は流出エネルギの分配を説明するための図であり、
図18(D)は流出エネルギの反射の限定しない一例を説明するための図であり、
図18(E)は流出エネルギの反射の限定しない他の例を説明するための図である。
【
図19】
図19(A)は水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための図であり、
図19(B)は水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための他の図であり、
図19(C)は一部のユニットに地面が設定されている場合において水場ユニット内の水の流れを算出する方法の限定しない一例を説明するための図である。
【
図20】
図20(A)は始点に対する距離マップの限定しない一例を示す図であり、
図20(B)は
図20(A)に示す場合の始点に対する水の流れの初期値を示す図である。
【
図21】
図21(A)は終点に対する距離マップの限定しない一例を示す図であり、
図21(B)は
図21(A)に示す場合の終点に対する水の流れの初期値を示す図である。
【
図22】
図22は
図6に示す本体装置のDRAMのメモリマップの限定しない一例を示す図である。
【
図23】
図23は
図6に示す本体装置のプロセッサのゲーム全体処理の限定しない一例を示すフロー図である。
【
図24】
図25は
図6に示す本体装置のプロセッサのゲーム画像の生成処理の限定しない一例の一部を示すフロー図である。
【
図25】
図25は
図6に示す本体装置のプロセッサのゲーム画像の生成処理の他の一部であって、
図24に後続するフロー図である。
【
図26】
図26は
図6に示す本体装置のプロセッサのゲーム画像の生成処理のその他の一部であって、
図25に後続するフロー図である。
【発明を実施するための形態】
【0030】
以下、この実施例の限定しない一例に係るゲームシステムについて説明する。この実施例におけるゲームシステム1の一例は、本体装置(情報処理装置;この実施例ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、この実施例のゲームシステム1のハードウェア構成について説明し、その後に、この実施例のゲームシステム1の制御について説明する。
【0031】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0032】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0033】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。この実施例において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0034】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0035】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。この実施例においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0036】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。この実施例においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0037】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0038】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0039】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0040】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。この実施例において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、この実施例においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0041】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。この実施例においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0042】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、この実施例においては、アナログスティック32を押下する入力が可能である。
【0043】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上にLボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面のうち、本体装置2に装着される際に装着される側の面に、SLボタン43およびSRボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0044】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0045】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。この実施例においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0046】
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。この実施例においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上にRボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、SLボタン65およびSRボタン66を備える。
【0047】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0048】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0049】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0050】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0051】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0052】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0053】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。この実施例においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0054】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、この実施例においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0055】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信(または、取得)する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信(または、取得)する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、この実施例においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、表示画像データや音声データ)を据置型モニタ等に出力することができる。
【0056】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0057】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0058】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0059】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0060】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0061】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0062】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0063】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。この実施例においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0064】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0065】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0066】
通信制御部101は、各入力部(具体的には、各ボタン103、アナログスティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0067】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判断することができる。
【0068】
左コントローラ3は、電力供給部108を備える。この実施例において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0069】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0070】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0071】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0072】
次に、
図8-
図21を参照して、この実施例のゲームシステム1において実行される仮想のゲームのゲーム処理についての概要を説明する。
図8は、この実施例の仮想のゲームのアプリケーションを実行した場合に、表示装置(たとえば、ディスプレイ12)に表示されるゲーム画像の限定しない第1の例を示す図である。
【0073】
本体装置2は、画像処理装置としても機能し、ゲーム画像などの各種画面に対応する表示画像データを生成および出力(表示)する。プロセッサ81は、3次元の仮想空間に各種のオブジェクトおよびキャラクタを配置し、或る情景または場面(シーン)が生成される。このシーンを仮想のカメラで撮影した(視点から見た)画像がゲーム画像としてディスプレイ12に表示される。
【0074】
図8に示すゲーム画像はゲーム画面200の一例であり、プレイヤキャラクタ202および複数の背景オブジェクト204を含む。また、ノンプレイヤキャラクタ(後述する、魚オブジェクト206)が表示される場合もある。
【0075】
プレイヤキャラクタ202は、プレイヤによって動作を制御されるオブジェクトまたはキャラクタである。この実施例では、プレイヤキャラクタ202は、人間を模したキャラクタである。プレイヤキャラクタ202の動作としては、仮想の或る場所すなわち仮想空間内において、移動したり、地形を変形させたり、アイテムを取得したり、ノンプレイヤキャラクタにアイテムを渡したり、ノンプレイヤキャラクタからアイテムを取得したり、ノンプレイヤキャラクタと会話したり、ノンプレイヤキャラクタを取得したり、ノンプレイヤキャラクタを捕まえたりすることなどが該当する。また、この実施例において、アイテムは、プレイヤキャラクタ202またはノンプレイヤキャラクタが使用する道具(この実施例では、スコップおよび釣竿)のみならず、野菜、花、木の実(または果実)、花や野菜の種、昆虫、魚、貝殻、お宝およびお金など、プレイヤキャラクタ202またはノンプレイヤキャラクタが使用または所持する様々なオブジェクトを意味する。
【0076】
また、ノンプレイヤキャラクタは、プレイヤでは無くコンピュータ(
図6のプロセッサ81)によって動作を制御されるオブジェクトまたはキャラクタである。一例として、ノンプレイヤキャラクタは、プレイヤキャラクタ202以外の人間または動物を模したキャラクタと、魚、鳥および昆虫を模したオブジェクトである。ノンプレイヤキャラクタの動作としては、移動したり、プレイヤキャラクタ202からアイテムを取得したり、プレイヤキャラクタ202にアイテムを渡したり、プレイヤキャラクタ202に渡されたり、プレイヤキャラクタ202に捕まえられたりすることが該当する。
【0077】
ただし、魚、鳥および昆虫を模したオブジェクトであるノンプレイヤキャラクタは、プレイヤキャラクタ202またはプレイヤキャラクタ202以外の人間または動物を模したキャラクタであるノンプレイヤキャラクタによって、アイテムとして使用または所持される場合もある。
【0078】
背景オブジェクト204は、仮想空間に配置される地形のオブジェクトである。地形とは、一般的には、地面(道路、陸地、花畑、農地などを含む)、坂、床、木、草、花、建物、階段、川、池、穴、洞窟、崖、壁、塀などを意味する。
【0079】
図8に示す例では、背景オブジェクト204として、地面オブジェクト、複数の木オブジェクトおよび建物オブジェクトが設けられる。以下、この明細書においては、背景オブジェクト204、すなわち地形のオブジェクトを説明する場合には、地形の名称のみを記載し、「オブジェクト」の語を省略することにする。同様に、この明細書においては、アイテムを説明する場合には、アイテムの名称のみを記載し、「オブジェクト」の語を省略することにする。
【0080】
この実施例の仮想のゲームでは、プレイヤキャラクタ202がアイテムとしてスコップ210を装備すると、このスコップ210を用いて、地面を掘ることができる。また、プレイヤキャラクタ202は、スコップ210を用いて、地面に形成された穴の一部または全部を埋めたり、仮想空間内のゲームフィールドに設けられる川または池の一部または全部を埋めたりすることができる。
【0081】
図9は地面を掘る前のゲーム画面200の限定しない一例を示す図であり、
図10は地面を掘って穴を形成した後のゲーム画面200の限定しない一例を示す図である。
図9および
図10は、ゲームフィールドの一部を仮想空間の上方から俯瞰的に見た図である。
【0082】
図9および
図10では、ゲーム画面200の上部において、川が横向きに流れており、その下方に地面が広がっている。
図9に示すゲーム画面200がディスプレイ12に表示されている場合に、プレイヤキャラクタ202にスコップ210を持たせた状態で、Aボタン53が押下(または、操作)されると、
図10に示すように、プレイヤキャラクタ202が向いている方向における地面の一部が掘られて、穴が形成される。また、
図10に示すように、形成された穴には、水が配置される。以下、この明細書において、水が配置された領域を水場と呼ぶことにする。
【0083】
また、
図10に示すゲーム画面200において、穴が形成された方向をプレイヤキャラクタ202が向いている場合に、Aボタン53が押下されると、穴が埋められ、
図9に示したように、地面に変わる(または、戻される)。
【0084】
つまり、プレイヤは、プレイヤキャラクタ202を動作させて、仮想空間内の地形を変更または変形させることができる。この実施例では、プレイヤは、仮想空間内において、プレイヤキャラクタ202を動作させ、地面に穴を掘り、穴を広げることにより、水の流れの無い領域または水の流れの有る領域を作る。この実施例では、水の流れの無い領域は池領域(または、池)であり、水の流れの有る領域は川領域(または、川)である。
【0085】
図11および
図12に示すように、この実施例では、仮想空間内のゲームフィールドは碁盤目状に分割されており、碁盤目の升目単位または区画単位(以下、「ユニット」という)で地形を変形させることができる。つまり、この実施例では、1ユニットが1画素に相当する。
図11は、
図10に示したゲーム画面200に、ゲームフィールドが碁盤目状に区切られていることを示すための点線を付加した図である。
図11に示すように、ユニット毎に、地面が掘り下げられて、穴が形成される。また、
図12に示すように、
図11において穴が形成されたユニットの右隣りのユニットに穴が形成されると、ユニット同士が連結され、つまり、2つの穴が連結(または、接合)され、2ユニット分の水場が形成される。
図12も
図11と同様に、碁盤目状に区切られた状態を示すための点線が付加されている。
【0086】
このように、隣接する複数のユニットに穴が形成されることにより、各ユニットに形成された穴が連結され、連結された穴に水が配置され、水場が形成される。つまり、池または川が形成される。この実施例では、隣接する複数のユニットに穴が形成されることによって形成された水場の形状が長い形状である場合に、その水場が川であると判定される。また、隣接する複数のユニットに穴が形成されることによって形成された水場の形状が長い形状でない場合に、その穴によって形成された水場が池であると判定される。ただし、水場は隣接する複数のユニットに穴が形成されることによって形成されるため、その複数の穴が連結して形成された穴の形状またはその複数のユニット同士を繋いだ形状が長い形状であるかどうかで、水場が川であるか池であるかを判定しているとも言える。
【0087】
図13は水場が川であると判定された場合のゲーム画面200の限定しない一例を示す図であり、
図14は水場が池であると判定された場合のゲーム画面200の限定しない一例を示す図である。ただし、
図13および
図14では、水場の一部を示してある。
【0088】
水場が川であると判定された場合には、
図13に示すように、水が流れる様子のアニメーションが再生される。
図13に示すゲーム画面200では、川の流れを矢印で示してあるが、実際には、矢印は表示されない。また、川の流れに逆らうように魚オブジェクト206が泳ぐ。
図13(
図14も同じ)では、魚オブジェクト206の影が示される。プレイヤの操作入力に基づいてプレイヤキャラクタ202が釣竿212を用いて釣りをする場合、プレイヤキャラクタ202が糸214を川に垂らすと、糸214に付けられた浮き216が川の流れに従って流れるように移動される。ただし、浮き216は、糸214の長さに応じた位置で止まる。また、川で釣れる魚の種類は、池で釣れる魚の種類とは異なる。この実施例では、川で釣れる魚は、鮎、岩魚、山女魚などである。
【0089】
水場が池であると判定された場合には、
図14に示すように、水は流れない。また、魚オブジェクト206は池の中でランダムに泳ぐ。プレイヤの操作入力に基づいてプレイヤキャラクタ202が釣竿212を用いて釣りをする場合、プレイヤキャラクタ202が糸214を池に垂らすと、垂らした位置に浮き216が浮かぶ。また、この実施例では、池で釣れる魚の種類は、金魚、鮒、鯉、鯰などである。
【0090】
ただし、川および池は、仮想空間内のゲームフィールドに予め形成されている場合もある。つまり、水は予め地面が掘られた領域(ユニット)にも配置される。プレイヤキャラクタ202に予め地面が掘られた領域の全部または一部を埋めさせることにより、予め形成された川または/および池の全部または一部を地面にすることもできる。この場合にも、地形を変形することができる。
【0091】
このように、プレイヤの操作入力に基づいてプレイヤキャラクタ202に釣りを行わせる場合、川と池とで異なる処理が実行される。したがって、プレイヤは、プレイヤキャラクタ202に川または池を生成させて、所望の魚オブジェクト206を釣ることができる。つまり、川と池とで異なる釣りを楽しむことができる。
【0092】
また、
図12に示したゲーム画面200において、地面を掘って形成した穴と川の間の地面を掘ると、
図15に示すように、地面を掘って形成した穴を川と連結することができる。この場合、プレイヤの操作入力に基づいてプレイヤキャラクタ202が掘った穴は、川の一部に含まれる。
【0093】
次に、水場が川であるか池であるかを判定する方法を説明し、さらに、川と判定された水場における、水の流れを算出する方法を説明する。
【0094】
上述したように、水場の形状が長い形状であると判定された場合に、この水場が川であると判定される。この実施例では、水場の面積と、水場に設定された始点と終点の距離に基づいて、水場が川であるか池であるかが判定される。
【0095】
具体的には、水場の面積Sと、水場に設定された始点となる水場ユニットから終点となる水場ユニットまでの距離d(長さ)が数1を満たすかどうかで、水場が川であるか池であるかが判定される。この実施例では、1ユニットの縦横の長さを1とし、1ユニットの面積を1として判定が行われる。したがって、縦または横に隣接する2つのユニット間の距離は、両ユニットの中心間の距離であって、すなわち1である。そして、同じ水場における2ユニット間の距離とは、片方のユニットの中心からもう片方のユニットの中心まで、地面を通らずに上下左右いずれかの隣接ユニットに移動(つまり、距離1ずつ移動)することを繰り返して到達するときの移動距離のうち、最小となる値または最短距離となるユニットの数を意味するものとする。
【0096】
[数1]
d2>4S
このように、水場において設定された始点と終点との距離dのパラメータと、水場の面積Sのパラメータを比較することにより、水場が川である(つまり、水の流れを有する)かどうかを判定する。この実施例では、距離dのパラメータを2乗した値の方が面積Sのパラメータに基づいて設定される基準値(この実施例では、面積Sのパラメータを4倍にした値)よりも大きいかどうかが判断される。これは、正方形の水場において、左上の水場ユニットに始点を設定し、右下の水場ユニットに終点を設定し、始点から終点までの距離(長さ)をdとすると、水場の面積Sはd2/4である。つまり、正方形に近い形状である場合には、d2=4Sとなる。したがって、水場の形状が長い形状であるためには、始点から終点までの距離dが、水場の形状が正方形の場合よりも長くなると考えて、数1が導出された。ただし、距離dのパラメータを2乗した値と面積Sのパラメータを4倍にした値が等しい場合にも、水場の形状が長い形状であると判定し、水場が川であると判定してもよい。
【0097】
また、上記の始点となる水場ユニットおよび終点となる水場ユニットは、第1のルールに従って設定される。以下、この明細書においては、始点となる水場ユニットを単に「始点」と呼び、終点となる水場ユニットを「終点」と呼ぶことにする。第1のルールは、次の4つの項目(1)-(4)を含む。(1)2点を結ぶ距離(すなわち、2ユニット間の距離)が最大であること。(2)始点は水場において最も北側に位置すること。(3)終点は水場において最も南側に位置すること。(4)2点を結ぶ距離(すなわち、2ユニット間の距離)が最大となる始点および終点の組が複数存在する場合には、最も西側に始点が存在する組が選択され、さらに、最も西側に始点が存在する組が複数存在する場合には、最も東側に終点が存在する組が選択される。
【0098】
ただし、この実施例では、ゲームフィールドを仮想空間の上方から俯瞰的に見た場合において、ゲームフィールドの上方向が北に設定され、下方向が南に設定され、左方向が西に設定され、右方向が東に設定される。
【0099】
図16(A)は水場が川であるか池であるかを判定する方法を説明するための地形の限定しない一例を複数のユニットに分割して模式的に示した図である。
図16(B)水場が川であるか池であるかを判定する方法を説明するための地形の限定しない他の例を複数のユニットに分割して模式的に示した図である。
図16(A)および
図16(B)では、灰色に塗り潰されたユニットが地面(または、陸地)のユニットであり、白色に塗り潰されたユニットが水場のユニット(以下、「水場ユニット」という)である。このことは、
図17-
図21についても同様である。
【0100】
図16(A)に示す例では、水場の面積S(すなわち、水場ユニットの数)は21であり、上記の第1のルールに従って設定された始点と終点を結ぶ距離dは9である。この場合、数1を満たさないため、水場は池であると判定される。
【0101】
図16(B)に示す例では、水場の面積Sは22であり、上記の第1のルールに従って設定された始点と終点を結ぶ距離dは10である。この場合、数1を満たすため、水場は川であると判定される。
【0102】
ただし、水場が滝または汽水域につながっている場合には、上記の第1のルールとは異なる第2のルールで、始点および終点が設定される。第2のルールは、次の3つの項目(ア)-(ウ)を含む。(ア)滝壺に繋がっている水場ユニットはすべて始点とする。(イ)滝上に繋がっている水場ユニットはすべて終点とする。(ウ)汽水域に繋がっている川ユニットはすべて終点とする。
【0103】
したがって、
図15に示したように、プレイヤの操作入力に基づいてプレイヤキャラクタ202が地面を掘ることにより、地面を掘って形成された水場が川に連結された場合に、第2のルールに従って始点および終点が設定される。つまり、プレイヤキャラクタ202が地面を掘って形成された水場が、滝上、滝壺および汽水域のような水源に繋がった場合には、その形成された水場の形状が長い形状であるかどうかに拘らず、第2のルールに従って始点および終点が設定される。
【0104】
図17は滝(滝上および滝壺)および汽水域を含む地形の限定しない一例を複数のユニットに分割して模式的に示した図である。滝上、滝壺および汽水域を構成する複数のユニットは、仮想空間内のゲームフィールドにおいて、予め設定された位置にそれぞれ配置されるが、プレイヤによって配置または変更されてもよい。
【0105】
図17に示すような地形においては、第2のルールに従って、始点および終点が設定される。つまり、
図17に示すように、滝壺のユニットの下側に隣接する複数の水場ユニットは、上記の(ア)の項目に従ってすべて始点に設定される。また、滝上のユニットの上側に隣接する複数の水場ユニットは、上記の(イ)の項目に従ってすべて終点に設定される。さらに、汽水域のユニットの上側に隣接する複数の水場ユニットは、上記の(ウ)の項目に従ってすべて終点に設定される。
【0106】
以上のようにして設定された始点および終点を基準として水の流れが生成される。水の流れは、伝搬するエネルギに基づいて動的に生成される。エネルギには、始点から出るエネルギ(以下、「流出エネルギ」という)と、終点に入り込むエネルギ(以下、「流入エネルギ」という)の2種類があり、流出エネルギの伝搬と流入エネルギの伝搬は別々に算出される。
【0107】
図18(A)は流出エネルギの伝搬を説明するための図であり、
図18(B)は流入エネルギの伝搬を説明するための図であり、
図18(C)は流出エネルギの分配を説明するための図であり、
図18(D)は流出エネルギの伝搬の他の例であって陸地で反射される場合について説明するための図であり、
図18(E)は流出エネルギの伝搬のその他の例であってL字状の壁(または、陸地)で反射される場合について説明するための図である。
【0108】
図18(A)-
図18(E)に示す例では、縦3ユニット×横3ユニットの9つのユニットの地形が用いられる。
図18(A)の左側の図に示すように、
図18(A)-
図18(E)においては、左上のユニットを「第1ユニット」と呼び、第1ユニットに隣接する右側のユニットを「第2ユニット」と呼び、第2ユニットに隣接する右側のユニットを「第3ユニット」と呼ぶ。また、第1ユニットに隣接する下側のユニットを「第4ユニット」と呼び、第4ユニットに隣接する右側のユニットを「第5ユニット」と呼び、第5ユニットに隣接する右側のユニットを「第6ユニット」と呼ぶ。さらに、第4ユニットに隣接する下側のユニットを「第7ユニット」と呼び、第7ユニットに隣接する右側のユニットを「第8ユニット」と呼び、第8ユニットに隣接する右側のユニットを「第9ユニット」と呼ぶ。
【0109】
流出エネルギは、エネルギの向きに伝搬する。つまり、流出エネルギは、所定時間(この実施例では、1秒)経過する毎に、エネルギの向きと同じ側に隣接するユニットに伝搬する。
図18(A)に示す例では、第4ユニットの時刻tにおける流出エネルギが、時刻t+1に、第5ユニットに伝搬される。さらに、第5ユニットの時刻t+1における流出エネルギは、時刻t+2に、第6ユニットに伝搬される。
【0110】
図18(A)(
図18(B)-
図18(E)も同様)では、エネルギの伝搬を説明するために、伝搬されるエネルギのみを矢印を用いて示してあるが、実際には、エネルギ源(流出源および流入源の両方)からのエネルギが途絶えることが無く、地形が変形されない限り、連続的にエネルギは伝搬される。
【0111】
この実施例では、エネルギは、エネルギ源(流出源および流入源の両方)からの距離に応じて減衰しないように制御される。たとえば、エネルギ源が1つであり、比較的長い水場が形成された場合に、逆の止まりにエネルギが到達する前に消えてしまい、途中で水流が無くなることを回避するためである。
【0112】
また、流入エネルギは、エネルギの向きと逆向きに伝搬する。つまり、流入エネルギは、1秒経過する毎に、エネルギの向きと逆側に隣接するユニットに伝搬する。
図18(B)に示す例では、第6ユニットの時刻tにおける流入エネルギが、時刻t+1に、第5ユニットに伝搬される。さらに、第5ユニットの時刻t+1における流入エネルギは、時刻t+2に、第4ユニットに伝搬される。
【0113】
図18(A)および
図18(B)に示したように、エネルギの向きまたはその逆向きにエネルギが伝搬されるが、それらの方向にのみ伝搬される場合には、途中で幅が大きくなっている領域では、幅が大きくなっている部分のユニットにエネルギが伝搬されなくなる。このため、この実施例では、
図18(C)に示すように、エネルギの伝搬方向の左右に隣接するユニットに、エネルギの一部を分配している。
図18(C)に示す例では、時刻t+1において、第4ユニットの時刻tにおける流出エネルギが、第5ユニットに伝達される。このとき、流出エネルギの一部が、第1ユニットおよび第7ユニットに分け与えられる。
【0114】
ただし、エネルギを分配した場合であっても、隣接するユニットからエネルギが分配されるため、基本的には、伝搬されるエネルギは減衰しないように制御される。
【0115】
図18(D)および
図18(E)はエネルギの伝搬先が陸地(または、地面)の場合のエネルギの反射を説明するための図である。
図18(D)の例では、第7ユニット、第8ユニットおよび第9ユニットにおいて、陸地が左右に直線状に延びて形成されており、その陸地に対して垂直方向から流出エネルギが伝搬される場合について示される。また、
図18(E)の例では、第1ユニット、第4ユニット、第7ユニット、第8ユニットおよび第9ユニットにおいて、陸地がL字状に形成されており、そのL字の横棒に対応する陸地に対して垂直方向から流出エネルギが伝搬される場合について示される。
【0116】
図18(D)に示すように、第5ユニットから流出エネルギが伝搬される第8ユニットには、陸地(または、地面)が配置される。このため、流出エネルギは陸地によって反射される。この実施例では、陸地に沿う方向に流出エネルギは反射(または、伝搬)される。したがって、
図18(D)に示すように、t+1秒後に、第4ユニットには左向きに流出エネルギが伝搬され、第6ユニットには右向きに流出エネルギが伝搬される。
【0117】
また、
図18(E)に示すように、第5ユニットから流出エネルギが伝搬される第8ユニットには、陸地(または、地面)が配置される。このため、
図18(D)に示した場合と同様に、流出エネルギは陸地によって反射される。ただし、第4ユニットには陸地(または、地面)が配置される。このため、
図18(E)に示すように、t+1秒後に、第6ユニットには、右向きに流出エネルギが伝搬される。
【0118】
ただし、U字状に形成された陸地(または、地面)において、U字の上方から下方に向けて流出エネルギが伝搬される場合には、陸地に伝搬される流出エネルギはいずれの方向へも反射(または、伝搬)されないようにしてある。伝搬元のユニットの流出エネルギを打ち消してしまい、逆流のような表現になってしまうのを回避するためである。
【0119】
以上のようにして、水場を構成する各水場ユニットにおける流出エネルギの伝搬および流入エネルギの伝搬がそれぞれ算出される。エネルギの伝搬が算出されると、流出エネルグの伝搬および流入エネルギの伝搬が合成され、合成されたエネルギの伝搬に基づいて水の流れが算出される。ただし、水の流れは、水場毎に算出される。穴が繋がっていない場合には、異なる水場と判断される。
【0120】
上述したように、水の流れは伝搬されるエネルギに基づいて動的に生成される。ここで、伝搬されるエネルギに基づいて水の流れが生成される方法について説明する。
図19(A)は4つの水場ユニットU1-U4を示し、水場ユニットU1-U4における水の流れのエネルギの向きが白抜きの矢印で示される。点線で囲む範囲Rにおける各点における水の流れは、4つの水場ユニットU1-U4の中心点に設定されたベクトルを合成することにより算出(または、補間)される。
【0121】
水場ユニットU1-U4の中心点に設定されたベクトルは、各水場ユニットU1-U4におけるエネルギの伝搬する方向および所定の大きさ(たとえば、1)を有するベクトルである。
図19(A)では、ベクトルMが水場ユニットU1の中心点に設定され、ベクトルNが水場ユニットU2の中心点に設定され、ベクトルPが水場ユニットU3の中心点に設定され、そして、ベクトルQが水場ユニットU4の中心点に設定される。
【0122】
図19(B)に示すように、点線で囲む範囲Rにおける任意の点Xのベクトルすなわち水の流れは、4つのベクトルM、N、P、Qを合成することにより算出される。ただし、ベクトルM、N、P、Qは、点Xとの距離L1、L2、L3、L4が大きくなるに連れてその大きさが小さくされる。ベクトルM、N、P、Qを合成したベクトル(つまり、合成ベクトル)の向きおよび大きさで、水の流れる方向および速さが決定される。ベクトルの大きさが1である場合に、基準の速度が設定され、ベクトルの大きさが小さくなるに連れて速度が低減される。ただし、ベクトルの大きさが1を超える場合であっても、基準の速度よりも大きくされない。
【0123】
このようにして、隣接する水場ユニットの中心点に設定されるベクトルを用いて、水場を構成する各水場ユニット内における水の流れすなわち水の流れる方向および速度が算出される。
【0124】
ただし、
図19(C)に示すように、4つのユニットのうち、1つのユニットに地面が設定されている場合には、3つの水場ユニットの中心点に設定されるベクトルを用いて、範囲Rから地面が設定されたユニットの部分を除いた範囲K(L字状の領域)内の任意の点における合成ベクトルが算出される。合成ベクトルの算出方法は、範囲R内の任意の点Xにおける合成ベクトルを算出する場合と同様であり、地面が設定されたユニットの中心点に設定されるベクトルの成分を除いて算出される。
【0125】
図示は省略するが、4つのユニットのうち、2つのユニットに地面が設定される場合には、2つの水場ユニットの中心点に設定されるベクトルを用いて、範囲Rから地面が設定されたユニットの部分を除いた領域内の任意の点における合成ベクトルが算出される。
【0126】
また、伝搬されたエネルギが平衡状態に達すると、それ以降の水の流れは変化しない。つまり、水の流れが定常状態になる。ただし、伝搬したエネルギが平衡状態に達するまでに或る程度の時間を要するため、この実施例では、プレイヤキャラクタ202が水場のシーンに入場した時には、エネルギが平衡状態に達した場合に近い状態の水の流れの初期値が与えられる。これは、比較的大きな(長い)水場では、エネルギが伝搬されるまでに長時間を要し、場合によっては、水が流れ始めるまでに時間がかかってしまうからである。
【0127】
ここで、水の流れの初期値を与える方法を説明する。
図20(A)は、水場を構成する複数の水場ユニットにおける始点に対する距離マップの限定しない一例を示す図である。距離マップとは、着目する水場ユニットについて、基準の水場ユニットから距離を数字で示したマップを意味する。
【0128】
図20(A)の距離マップでは、始点の水場ユニットが基準の水場ユニットに設定され、この始点の水場ユニット自身の距離が0に設定される。上述したように、隣接する2つのユニット間の距離は1であるため、始点の水場ユニットに隣接する水場ユニットの距離は1に設定される。距離が1に設定された水場ユニットに隣接する水場ユニットの距離は2に設定される。さらに、距離が2に設定された水場ユニットに隣接する水場ユニットの距離は3に設定される。これを繰り返すことにより、すべての水場ユニットに始点の水場ユニットからの距離が設定される。
【0129】
すべての水場ユニットに始点の水場ユニットからの距離が設定され、距離マップが生成されると、始点による水の流れの初期値が設定される。始点に対する距離マップにおいて、隣接する水場ユニットに同じ距離の数値が入っていれば、水の流れを作らない。また、距離マップにおいて、隣接する水場ユニットに異なる距離の数値が設定されていれば、数値の小さい水場ユニットから数値の大きい水場ユニットの方に水の流れが作られる。このような処理をすべての水場ユニットに対して実行する。
図20(A)に示した距離マップについては、
図20(B)に示すように、水の流れが作られる。
図20(B)では、隣接する2つの水場ユニット間における水の流れを矢印で示してある。
図21(B)についても同様である。
【0130】
図21(A)は、水場を構成する複数の水場ユニットにおける終点に対する距離マップの限定しない一例を示す図である。
図21(A)の距離マップでは、終点の水場ユニットが基準の水場ユニットに設定され、この終点の水場ユニット自身の距離が0に設定される。
図21(A)からも分かるように、終点の水場ユニットに隣接する水場ユニットの距離は1に設定され、
図20(A)に示した始点に対する距離マップと同様に、各水場ユニットの距離が設定される。
【0131】
すべての水場ユニットに終点の水場ユニットからの距離が設定され、距離マップが生成されると、終点による水の流れの初期値が設定される。終点に対する距離マップにおいても、隣接する水場ユニットに同じ距離の数値が入っていれば、水の流れを作らない。ただし、終点に対する距離マップにおいては、距離の数値の大きい水場ユニットから数値の小さい水場ユニットの方に水の流れが作られる。
図21(A)に示した距離マップについては、
図21(B)に示すように、水の流れが作られる。
【0132】
始点による水の流れの初期値と、終点による水の流れの初期値が作られると、これらの初期値が合成され、水場における各水場ユニットの水の流れの初期値が決定される。また、水場を構成する各水場ユニット内における各点の水の流れは、
図19(A)および
図19(B)を示した場合と同様にして、算出(または、補間)される。
【0133】
上述したように、プレイヤキャラクタ202が水場のシーンに入場すると、水場における水の流れの初期値が決定され、決定された水の流れの初期値に基づいて所定期間(たとえば、30フレーム)水が流れるアニメーションが再生される。
【0134】
ただし、フレームは、画面を更新する単位時間であり、この実施例では、1フレームは1/30秒である。これは一例であり、1フレームは1/60秒または1/120秒であってもよい。
【0135】
この所定期間において、流出エネルギの伝搬および流入エネルギの伝搬に基づく水の流れが毎フレーム算出され、距離マップに基づく水の流れからエネルギの伝搬に基づく水の流れに次第に変化される。
【0136】
また、プレイヤの操作入力に基づいて水場の形状が変化されると、始点および終点が新たに設定されるとともに、水場の形状の変化によって変形または新たに形成された水場の形状が長い形状であるかどうかが新たに判定される。
【0137】
変形または新たに形成された水場の形状が長い形状である場合には、新たに設定された始点からの流出エネルギの伝搬が算出されるとともに、新たに設定された終点からの流出エネルギの伝搬が算出される。流出エネルギの伝搬と流入エネルギの伝搬とが合成されたエネルギの伝搬に従って水の流れが算出される。ただし、地形が変化する前の水の流れから、地形が変化した後の水の流れに急に変化すると違和感があるため、次第に水の流れが変化するように、各地点の水の流れが制御される。このように、地形が変化されることにより、水の流れが変化する場合には、エネルギが平衡状態となり、水の流れが定常状態になるまでに時間がかかるため、地形が変化したときに限り、所定期間(この実施例では、1秒)において、エネルギの伝搬を毎フレーム算出し、エネルギが平衡状態となり、水の流れが定常状態になるまでの時間を短縮するようにしてある。
【0138】
また、変形または新たに形成された水場の形状が長い形状でない場合には、この水場には水の流れは無い。ただし、地形が変化する前に水の流れがあった場合に、地形が変化した後に水の流れを急に無くすと違和感があるため、次第に水の流れが無くなるように、各地点の水の流れが制御される。
【0139】
図22は
図6に示したDRAM85のメモリマップ850の限定しない一例を示す図である。
図22に示すように、DRAM85は、プログラム記憶領域852およびデータ記憶領域854を含む。プログラム記憶領域852には、ゲームアプリケーションのプログラム(つまり、ゲームプログラム)が記憶される。
図22に示すように、ゲームプログラムは、メイン処理プログラム852a、画像生成プログラム852b、操作検出プログラム852c、キャラクタ制御プログラム852d、背景オブジェクト変更プログラム852e、形状判定プログラム852f、端点設定プログラム852g、流れ算出プログラム852hおよび画像表示プログラム852iなどを含む。
【0140】
ただし、生成されたゲーム画像などの画像を表示する機能は本体装置2が備える機能である。したがって、画像表示プログラム852iは、ゲームプログラムに含まれない。
【0141】
詳細な説明は省略するが、各プログラム852a-852hは、本体装置2に電源が投入された後の適宜のタイミングで、フラッシュメモリ84および/またはスロット23に装着された記憶媒体からその一部または全部が読み込まれてDRAM85に記憶される。ただし、各プログラム852a-852hの一部または全部は、本体装置2と通信可能な他のコンピュータから取得するようにしてもよい。また、画像表示プログラム852iは、本体装置2に電源が投入された後の適宜のタイミングで、フラッシュメモリ84から読み込まれてDRAM85に記憶される。
【0142】
メイン処理プログラム852aは、この実施例の仮想のゲームの全体的なゲーム処理を実行するためのプログラムである。画像生成プログラム852bは、画像生成データ854bを用いて、ゲーム画像などの各種の画像に対応する表示画像データを生成するためのプログラムである。
【0143】
操作検出プログラム852cは、左コントローラ3または/および右コントローラ4からの操作データ854aを取得するためのプログラムである。つまり、プレイヤの操作入力に応じた操作データ854aが取得される。キャラクタ制御プログラム852dは、プレイヤの操作入力に基づいて、プレイヤキャラクタ202の動作を制御したり、プレイヤの操作入力に関わらず、ノンプレイヤキャラクタの動作を制御したりするためのプログラムである。
【0144】
背景オブジェクト変更プログラム852eは、この実施例では、主として、プレイヤキャラクタ202の掘る動作に応じて地面を掘り、プレイヤキャラクタ202の埋める動作に応じて穴または水場を埋めるためのプログラムである。つまり、背景オブジェクト変更プログラム852eは、主として、プレイヤキャラクタ202の動作に応じて、地形を変形するためのプログラムである。このため、背景オブジェクト変更プログラム852eに従って、家、壁または橋が建築されたり、家、壁または橋が撤去されたりすることもある。
【0145】
形状判定プログラム852fは、地形が変形された場合に、水場の形状が長い形状であるかどうかを判定するためのプログラムである。端点設定プログラム852gは、水場を構成する複数の水場ユニットにおいて、所定のルール(すなわち、第1のルールまたは第2のルール)に従って、始点または/および終点を設定するためのプログラムである。
【0146】
流れ算出プログラム852hは、水場において、流出エネルギおよび流入エネルギに基づいて、各水場ユニット内の水の流れ(各点における水の流れる方向および速さ)を算出するためのプログラムである。また、流れ算出プログラム852hは、プレイヤキャラクタ202が水場のシーンに入場したときには、始点に対する距離マップおよび終点に対する距離マップを生成し、これらの距離マップを合成することにより、水の流れの初期値を算出するためのプログラムでもある。
【0147】
画像表示プログラム852iは、画像生成プログラム852bに従って生成した表示画像データを表示装置に出力するためのプログラムである。したがって、表示画像データに対応する画像(つまり、ゲーム画面200など)がディスプレイ12などの表示装置に表示される。
【0148】
なお、プログラム記憶領域852には、BGM等の音を出力するための音出力プログラム、他の機器と通信するための通信プログラム、データをフラッシュメモリ84などの不揮発性の記憶媒体に記憶するためのバックアッププログラムなども記憶される。
【0149】
また、データ記憶領域854には、操作データ854a、画像生成データ854b、現在位置データ854c、背景オブジェクトデータ854d、形状判定データ854e、端点データ854f、流れデータ854gおよび短縮フラグ854hなどが記憶される。
【0150】
操作データ854aは、左コントローラ3または/および右コントローラ4から受信される操作データである。この実施例においては、本体装置2が左コントローラ3および右コントローラ4の両方から操作データを受信する場合には、本体装置2は、左コントローラ3および右コントローラ4のそれぞれに分類して操作データ854aを記憶する。
【0151】
画像生成データ854bは、ポリゴンデータおよびテクスチャデータなど、表示画像データを生成するために必要なデータである。また、テクスチャデータは、水の流れをアニメーションで表示するためのデータを含む。
【0152】
現在位置データ854cは、プレイヤキャラクタ202および魚オブジェクト206などのノンプレイヤキャラクタのような仮想空間内において移動可能なキャラクタまたはオブジェクトについての現在フレームの位置に対応する位置座標のデータである。
【0153】
背景オブジェクトデータ854dは、仮想空間内に配置される背景オブジェクト204についてのデータであり、具体的には、背景オブジェクト204を構成するポリゴンおよびテクスチャのデータと、仮想空間における背景オブジェクト204の配置位置の位置座標のデータを含む。
【0154】
形状判定データ854eは、プレイヤキャラクタ202によって生成または変形された水場の形状が長い形状であるかどうかを判定した結果についてのデータである。プレイヤキャラクタ202によって生成または変形された水場が複数存在する場合には、水場毎に判定した結果が記憶される。
【0155】
端点データ854fは、端点設定プログラム852gに従って設定された、始点および終点についての識別情報と、始点および終点の位置座標を示すデータである。ただし、水場が複数存在する場合には、水場毎に、始点および終点についての識別情報と、始点および終点の位置座標を示すデータが端点データ854fとして記憶される。
【0156】
流れデータ854gは、流れ算出プログラム852hに従って算出された水場ユニット毎の水の流れ(各点における水の流れる方向および速さ)についてのデータである。
【0157】
短縮フラグ854hは、水の流れが時間の変化に従って変化しない状態すなわち定常状態に達するまでの時間を短縮するかどうかを判断するためのフラグである。水の流れが定常状態に達するまでの時間を短縮する場合には、短縮フラグ854hはオンされ、水の流れが定常状態に達するまでの時間を短縮しない場合には、短縮フラグ854hはオフされる。
【0158】
図示は省略するが、データ記憶領域854には、ゲームプログラムの実行に必要な、他のデータが記憶されたり、他のフラグおよびタイマ(またはカウンタ)が設けられたりする。
【0159】
図23は、本体装置2のプロセッサ81(またはコンピュータ)のゲームプログラム7処理(ゲーム全体処理)の限定しない一例を示すフロー図である。以下、
図23を用いて、ゲーム全体処理について説明するが、同じ処理を実行するステップについては重複する説明は省略することにする。
【0160】
ただし、
図23に示すフロー図(
図24-
図26も同じ)の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、
図23-
図26に示すフロー図の各ステップの処理をプロセッサ81が実行するものとして説明するが、プロセッサ81以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
【0161】
本体装置2の電源が投入されると、ゲーム全体処理の実行に先だって、プロセッサ81は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってDRAM85等の各ユニットが初期化される。本体装置2は、ユーザによって、この実施例のゲームプログラムの実行が指示されると、ゲーム全体処理を開始する。
【0162】
図23に示すように、プロセッサ81は、ゲーム全体処理を開始すると、ステップS1で、初期処理を実行する。初期処理では、たとえば、プロセッサ81は、ゲーム画面200を生成および表示するための仮想空間を構築し、この仮想空間に登場するプレイヤキャラクタ202、ノンプレイヤキャラクタおよび背景オブジェクト204等の各キャラクタないし各オブジェクトを初期位置に配置する。また、プロセッサ81は、ゲーム制御処理(S5)で用いる各種パラメータの初期値を設定する。
【0163】
なお、詳細な説明は省略するが、ゲーム全体処理の開始に先立って、左コントローラ3および右コントローラ4が本体装置2に装着されているかどうかが判断され、左コントローラ3および右コントローラ4が本体装置2から分離されている場合には、本体装置2と、左コントローラ3および右コントローラ4との間でペアリング処理が実行される。
【0164】
続いて、プロセッサ81は、ステップS3で、コントローラ(3,4)から送信されてくる操作データを取得し、ステップS5で、ゲーム制御処理を実行する。たとえば、ゲーム制御処理では、操作データに従ってプレイヤキャラクタ202を移動させるなどの任意のアクションを実行する。また、ゲームプログラムに従ってノンプレイヤキャラクタを移動させるなどの任意のアクションを実行する。水場のシーンでは、魚オブジェクト206が移動する(つまり、泳ぐ)動作が実行される。この場合、水場が川であれば、魚オブジェクト206は川の流れに逆らうように移動され、水場が池であれば、魚オブジェクト26はランダムに移動される。さらに、必要に応じて、アイテムを仮想空間に出現させる(配置する)、または、消滅させる(除去する)。水場のシーンにおいて、プレイヤキャラクタ202に釣りをさせる場合には、水場が川であれば、川の流れに従って浮き216が流れるように移動される。
【0165】
次のステップS7では、プロセッサ81は、ディスプレイ12に表示するためのゲーム画像を生成する。簡単に説明すると、プロセッサ81は、ステップS5のゲーム制御処理の結果を表すデータおよび画像生成データ854bをDRAM85から読み出し、ゲーム画像データを生成する。
【0166】
さらに、ステップS9では、プロセッサ81は、スピーカ88に出力するためのゲーム音声を生成する。簡単に説明すると、プロセッサ81は、ステップS5のゲーム制御処理の結果を表すデータおよび音データをDRAM85から読出し、ゲーム音声データを生成する。
【0167】
ステップS11では、ステップS7で生成したゲーム画像データをディスプレイ12に出力し、ステップS13では、ステップS9で生成したゲーム音声データを、コーデック回路87を介してスピーカ88に出力する。ただし、ゲーム音声データは、音声入出力端子25に出力される場合もある。
【0168】
そして、ステップS15では、ゲームを終了するかどうかを判断する。ステップS15の判断は、たとえば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS15で“NO”であれば、つまりゲームを終了しない場合には、ステップS3に戻る。一方、ステップS15で“YES”であれば、つまりゲームを終了する場合には、ゲーム全体処理を終了する。
【0169】
図24-
図26は、
図23に示した本体装置2のプロセッサ81(またはコンピュータ)のゲーム画像の生成処理の限定しない一例を示すフロー図である。
【0170】
図24に示すように、プロセッサ81は、ゲーム画像の生成処理を開始すると、ステップS21で、プレイヤキャラクタ202の水場のシーンへの入場かどうかを判断する。ステップS21で“NO”であれば、つまり、水場のシーンへの入場でなければ、後述するステップS31に進む。一方、ステップS21で“YES”であれば、つまり、水場のシーンへの入場であれば、ステップS23で、入場した水場のシーンにおける水場(以下、「当該水場」と呼ぶことにする)は水の流れが有ることが判断されているかどうかを判断する。ここでは、プロセッサ81は、形状判定データ854eを参照して、当該水場の形状が長い形状であることが判定されているかどうかを判断する。
【0171】
ステップS23で“YES”であれば、つまり、当該水場は水の流れが有ることが判断されていれば、ステップS27に進む。一方、ステップS23で“NO”であれば、つまり、当該水場は水の流れが有ることが判断されていなければ、ステップS25で、当該水場において、始点および終点が与えられているかどうかを判断する。つまり、当該水場がゲームフィールドに予め配置された水源を含んでいるかどうかが判断される。
【0172】
ステップS25で“NO”であれば、つまり、当該水場において、始点および終点が与えられていない場合には、
図25に示すステップS53に進む。一方ステップS25で“YES”であれば、つまり、当該水場において、始点および終点が与えられている場合には、ステップS27で、始点に対する距離マップおよび終点に対する距離マップを算出して、水の流れの初期値を算出する。続くステップS29では、水の流れの初期値を各水場ユニットに設定して、ステップS51に進む。
【0173】
また、ステップS31では、プレイヤキャラクタ202が水場のシーンに存在しているかどうかを判断する。ステップS31で“NO”であれば、つまり、プレイヤキャラクタ202が水場のシーンに存在していない場合には、
図25に示すステップS53に進む。一方、ステップS31で“YES”であれば、つまり、プレイヤキャラクタ202が水場のシーンに存在していれば、
図25に示すステップS33で、地面を掘ったり埋めたりしたかどうかを判断する。つまり、プロセッサ81は、プレイヤキャラクタ202によって背景オブジェクト204が変更(つまり、地形が変形)されたかどうかを判断する。
【0174】
ステップS33で“NO”であれば、つまり、地面を掘ったり埋めたりしていなければ、
図26に示すステップS55に進む。一方、ステップS33で“YES”であれば、つまり、地面を掘ったり埋めたりしていれば、当該水場が始点および終点が与えられている領域(すなわち、水源が配置された川)に繋がったかどうかを判断する。
【0175】
ステップS35で“YES”であれば、つまり、当該水場が始点および終点が与えられている領域に繋がっていれば、ステップS37で、第2のルールに従って始点および終点を設定し、ステップS51に進む。一方、ステップS35で“NO”であれば、つまり、当該水場が始点および終点が与えられている領域に繋がっていなければ、ステップS39で、短縮フラグ854hをオンし、ステップS41で、第1カウント値を1に設定する。ただし、第1カウント値は、定常状態に達するまでの時間を短縮するために、ユニット毎の水の流れを毎フレーム算出する所定期間(この実施例では、1秒(30フレーム))をカウントするための変数である。
【0176】
次のステップS43では、第1のルールに従って始点および終点を設定する。次のステップS45では、形状判定処理を実行する。ここでは、プロセッサ81は、上述したように、水場の面積Sと始点から終点までの距離dを算出し、数1を満たすかどうかを判断する。続くステップS47では、ステップS45における判断結果を記憶する。つまり、プロセッサ81は、この水場についての形状判定データ854eを記憶する。
【0177】
続いて、ステップS49では、水場の形状が長い形状であるかどうかを判断する。ステップS49で“NO”であれば、つまり、水場の形状が長い形状でなければ、ステップS53に進む。一方、ステップS49で“YES”であれば、つまり、水場の形状が長い形状であれば、水の流れが有ると判断し、ステップS51で、水場における水の流れをユニット毎に算出して、ステップS53に進む。
【0178】
そして、ステップS53では、描画処理を実行して、ゲーム画像の生成処理を終了し、ゲーム全体処理にリターンする。ステップS53の描画処理においては、プロセッサ81は、水場のみならず、プレイヤキャラクタ202、水場以外の他の背景オブジェクト204および魚オブジェクト206などのノンプレイヤキャラクタを描画する。また、水場のシーンにおいて、プレイヤの操作入力に基づいてプレイヤキャラクタ202に釣りをさせる場合には、釣竿212、糸214および浮216も描画される。さらに、水場のシーンにおいて水の流れが有る場合には、水のテクスチャのアニメーションを再生する再生処理が実行される。また、水場のシーンにおいては、魚オブジェクト206が泳ぐアニメーションを再生する再生処理も実行される。ただし、水場のシーンでない場合には、水場は描画されず、アニメーションも再生されない。また、水場のシーンかどうかに関係無く、プレイヤの操作入力に基づいてプレイヤキャラクタ202に地面を掘らせる場合には、スコップ210も描画される。
【0179】
図26に示すように、ステップS55では、短縮フラグ854hがオンかどうかを判断する。ステップS55で“YES”であれば、つまり、短縮フラグ854hがオンであれば、ステップS57で、第1カウント値を1加算して、ステップS59で、第1カウント値が30以上であるかどうかを判断する。つまり、水の流れが定常状態に達するまでの時間を短縮する所定期間が経過したかどうかを判断する。
【0180】
ステップS59で“NO”であれば、つまり、第1カウント値が30に達していなければ、
図25に示したステップS51に進む。一方、ステップS59で“YES”であれば、つまり、第1カウント値が30以上であれば、ステップS61で、短縮フラグ854hをオフして、ステップS53に進む。
【0181】
また、ステップS55で“NO”であれば、つまり、短縮フラグ854hがオフであれば、ステップS63で、第2カウント値を1加算し、ステップS65で、第2カウント値が30以上であるかどうかを判断する。第2カウント値は、1秒毎に隣接するユニットに流出エネルギおよび流入エネルギを伝搬するために、1秒に相当するフレーム数をカウントするための変数である。ステップS65で“NO”であれば、つまり、第2カウント値が30未満であれば、ステップS53に進む。一方、ステップS65で“YES”であれば、つまり、第2カウント値が30以上であれば、ステップS67で、第2カウント値を0に設定し、ステップS51に進む。
【0182】
この実施例によれば、プレイヤの操作入力に基づいてプレイヤキャラクタに地面を掘ったり埋めたりさせることにより、地形を変形することができ、地面が掘られて形成された穴に水を配置し、水場の形状が長い形状であるかどうかに応じて水の流れを生成するので、地形を変形するとともに、変形した地形に水の流れを生成することができる。
【0183】
また、この実施例によれば、地形に応じて水の流れの有無を判定し、水の流れの有無に応じた処理が実行されるため、地形を変形させる楽しみをプレイヤに提供することができる。
【0184】
なお、この実施例では、流体オブジェクトとして水(オブジェクト)を穴に配置し、水場(穴)の形状が長い形状であると判定した場合に、水が流れるようにしたが、流体オブジェクトは水オブジェクトに限定される必要はない。溶岩流(または、マグマ)、砂(流)および雲などの他の流体オブジェクトが配置される場合についても同様である。なお、砂は流体では無いが、ゲームにおいては、砂を流体のように扱う場合があり、そのような場合に適用することができる。また、雲を配置する場合には、穴を形成する必要は無く、仮想空間内の空中において、ユニットに相当する大きさの雲を複数結合して、長い形状の雲を作るようにすれば良い。
【0185】
また、この実施例では、スコップを用いて地面を掘ったり埋めたりしたが、これに限定される必要はない。プレイヤの操作入力またはゲームイベントによって、地面が変形したり、単に地面が消滅したりしてもよい。また、スコップ以外の道具を用いて地面を掘り下げることもできる。たとえば、爆破により、地面を掘り下げることができる。ただし、地面に埋もれた岩を爆破することにより、岩を消滅させて穴が現れるようにしてもよい。
【0186】
さらに、この実施例では、情報処理システムの一例としてゲームシステム1を示したが、その構成は限定される必要は無く、他の構成を採用することが可能である。たとえば、上記「コンピュータ」は、上述の実施例においては、1つのコンピュータ(具体的には、プロセッサ81)であるが、他の実施例においては、複数のコンピュータであってもよい。上記「コンピュータ」は、例えば、複数の装置に設けられる(複数の)コンピュータであってもよく、より具体的には、上記「コンピュータ」は、本体装置2のプロセッサ81と、コントローラが備える通信制御部(マイクロプロセッサ)101、111とによって構成されてもよい。
【0187】
さらにまた、他の実施例では、インターネットのようなネットワーク上のサーバで、
図23-
図26に示したゲーム制御処理、ゲーム画像の生成処理およびゲーム音声の生成処理を実行するようにしてもよい。かかる場合には、本体装置2のプロセッサ81は、左コントローラ3および右コントローラ4から受信した操作データを、ネットワーク通信部82およびネットワークを介して上記のサーバに送信し、サーバでゲーム制御処理、ゲーム画像の生成処理およびゲーム音声の生成処理を実行された結果(つまり、ゲーム画像のデータおよびゲーム音声のデータ)を受信して、ゲーム画像をディスプレイ12に表示するとともに、ゲーム音声をスピーカ88から出力する。つまり、上記の実施例で示したゲームシステム1とネットワーク上のサーバを含む情報処理システムを構成することもできる。
【0188】
また、上述の実施例では、ディスプレイ12にゲーム画像を表示する場合について説明したが、これに限定される必要はない。本体装置2を、クレードルを介して据置型モニタ(たとえば、テレビモニタ)に接続することにより、ゲーム画像を据置型モニタに表示することもできる。かかる場合には、ゲームシステム1と据置型モニタを含む情報処理システムを構成することもできる。
【0189】
さらに、上述の実施例では、本体装置2に左コントローラ3および右コントローラ4を着脱可能な構成のゲームシステム1を用いた場合について説明したが、これに限定される必要はない。たとえば、左コントローラ3および右コントローラ4と同様の操作ボタンおよびアナログスティックを有する操作部を本体装置2に一体的に設けたゲーム装置またはゲームプログラムを実行可能な他の電子機器のような情報処理装置を用いることもできる。他の電子機器としては、スマートフォンまたはタブレットPCなどが該当する。かかる場合には、操作部はソフトウェアキーで構成することもできる。
【0190】
また、その他の実施例では、連結部材を用いて、左コントローラ3および右コントローラ4を一体的に構成して1つのコントローラとして使用するようにしてもよい。
【0191】
さらに、上述の実施例で示した具体的な数値および画像は一例であり、実際の製品に応じて適宜変更可能である。
【符号の説明】
【0192】
1 …ゲームシステム
2 …本体装置
3 …左コントローラ
4 …右コントローラ
32、52 …アナログスティック
39 …ZLボタン
60 …Rボタン
61 …ZRボタン
81 …プロセッサ