[ DATT-A9D > マップの作り方 > 地形の自動生成 ]
最終更新:2025年3月17日
PCゲーム「A列車で行こう9」(A9V1~A9V5)には、ほんのわずかの設定をするだけで簡単に地形データを生成できる機能が標準搭載されている。他社ゲームやゲームエンジンの基本機能としておなじみだが、本作では「A列車で行こう9」(2010年2月~)でシリーズ初の実装となった。なお、歴史的な経緯により本作では永らく「マップコンストラクション」は別売りだったが、Xbox360版「A列車で行こうHX」以降のバージョンでは別売りではなく標準搭載になっている。家庭用ゲーム機のコントローラ(ゲームパッド)でプレーする「A列車で行こう6」(A6)・「A列車で行こう2001」(A2001)には「マップコンストラクション」は提供されなかった。「A列車で行こう The 21st Century」(A21C)の「マップエディタ」(別売り)や「A列車で行こう7」(A7)の「マップコンストラクション」(別売り)には自動生成の機能はなく、完全な手作業が強いられていた。「地形の自動生成」はPS4版「A列車で行こうExp.」にも標準搭載。PS4のコントローラによるプレーでも多彩な地形のマップを楽々と作成して楽しむことができる。
「A列車で行こう9」(PS4「A列車で行こうExp.」)の地形の自動生成は、簡単な方向づけをしてあげる以外にはユーザーが介入する部分はなくランダムなので、実行するたびにまったく異なる生成結果が脈絡なく出てくる。すごくいいのも出れば、ぜんぜんだめなのも出る。1回目にいきなりいいのが出ることもあるし、50回でもさっぱりなこともある。いかにもコンピューターらしいコンピューターの使い方で、コンピューター好きにとっては気持ちいい※1。そのようにランダムで脈絡がないのであるから、前後の結果を比較して「さっきよりいいのが出た」といったことを思わないように努める。人間としては無意識のうちに脈絡を見い出そうとしてしまうので、これを意識的に封じ込めて臨むことが肝要である。コンピューターという新しい友達と会話※2するときは、じぶんもコンピューターのように振る舞おう。
※1 じぶんのコンピューターがコンピューターらしい働きをしているのが実感できて満足する。
※2 ChatGPTとはいわないけれど。あなたが中学校の数学でサイコロを習ったときの試行回数は何回でしたか。地形の自動生成を50回というのは、これでも少ない。気がつくとあっという間に500回くらいは地形の自動生成を実行しているものだ。こうして秋の夜長は更けていくのだった。
生成結果の中の目立つ特徴に注目しすぎないように努めることも重要だ。社会科の地理的分野や理科の地学分野で習う単元のように細切れの何か1つの特徴、例えばマップコンストラクションの「テンプレート」にある扇状地と三角州やリアス式海岸といったものは、確かにマップの中で大きく目を引く『ワンポイント』ではあるが、マップの全体を見て美しい調和がある(と感じられる)ことのほうが重要である。地形の特徴はフラクタルで、大きな特徴から小さな特徴まであり、大きな特徴の数は少なく、小さな特徴の数は多い。大きな特徴を1つだけつまみ上げるようなことはしないほうがよい。
「A列車で行こう9」(PS4「A列車で行こうExp.」)の地形の自動生成を思い通りに(一発で)御する方法はなく忍耐と妥協とひとつまみの湿気たスパイスが必要。ほしいものが8秒以内に出てこないと癇癪を起こす年長男児のような人には向かない。地形の自動生成を実行するときは、これだけを延々と繰り返すつもりで(30分くらいは地形の自動生成だけをするつもりで)しっかり集中して臨もう。
古い例えになるが、キラカードほしさのあまりキラカード以外は捨て続けるようなやり方『地形ガチャ』も厳禁だ。理科の実験では予想と仮説が大切だが、コンピューターを使ってランダムなデータを生成するときに『予想』(予断・先入観・思い込み)は無意味で邪魔である。どの方角に海があって山はどんな形だといいといった『いますぐほしい地形データ』を具体的に思い浮かべてしまうと、それとは違うけれど魅力のある地形が生成されても、その魅力を無視してしまいがち。どんな生成結果であっても、その1つ1つを吟味していこう。『いますぐほしいのとは違うけれどこれはこれで魅力のある地形データ』が生成されたら、どんどん保存しよう。
地形の自動生成による生成結果の細部に不満があれば手作業で修正して使えばいいと考える人もいるだろうが、アルゴリズムによる生成の細かさや自然さに対して、わたしたちが自分の手で(マウスを使って)手作業で加える修正は粗すぎて不自然にしかならないし、そもそも手間がかかりすぎる。地形の自動生成のプログラムが『とてつもなくすばらしい地形データ』を何食わぬ顔で出してくることが決して珍しくはないので、手作業に時間をかけるくらいなら地形の自動生成の試行回数を多くすることに時間をかけたほうがリターンが大きい。自分の手で行なった手作業の労力に自分本位に酔う(「手作り」を自慢しすぎる)のでなく、地形データのよしあし(プレイアビリティ)は客観的に見定めたいものである。
「A列車で行こう9」(PS4「A列車で行こうExp.」)では「320mグリッド」ごとに「(市街化)調整区域」を設定することができる。この「320mグリッド」でマップの特徴をとらえることができるとみなすなら、横32、縦32という解像度になる。高さ方向については、「サテライト」での色分けがたぶん32段階くらいあるので、32という解像度でじゅうぶんに地形(標高)の特徴がとらえられるとみなすことにする。32×32=1024の「マス目」が、それぞれ32段階の高さの値を持つことができる。隣り合う「マス目」の高さが-80mと240mになるようなめちゃくちゃなものも含めると、生成結果のバリエーションはククク……10の59乗にもなる。控えめに言って「無限」である。
ところで、「A列車で行こう9」を起動すると「ニューゲーム」と「マップコンストラクション」を選択させられ、「マップコンストラクション」を開始するには必ず「テンプレート」からいずれかの地形データを選ばなくてはならない。その「テンプレート」の地形には自動生成が活用されておらず、A8以前のような手作り感のある地形データ(ペイントソフトで絵として描いてから読み込ませたもの)が並んでいる。「A列車で行こう9」の開発工程の中で「地形の自動生成」の実装に遅れがあったのではないかと思われる。ほかの機能やゲーム全体のメニューの構成を考える段階で「地形の自動生成」が大きな前提になっていれば、現状のようなまどろっこしいことにはなっていなかったはずだ。
マップの中に構築する路線網についても、どのくらいのバリエーションになるかざっくり考えてみよう。1つのマップに駅を30個ちょうどつくり、その各々の駅間を線路でつないだりつながなかったりするとする。まず、マップを横6×縦6くらいの36マス(36マスの形状や配置はふにゃふにゃに曲がっていてもよい)でとらえ、そのうち30のマスに駅を置くとする(「駅を置くマス」を36個の中から30個選ぶ)。これだけで1,947,792にもなる。もっと多いと思った人もいれば、もっと少ないと思った人もいるだろうが、いずれにしても直感に反するというか、とっさには想像できず、たったこれだけと思うようなことでも実際に計算してみないとわからないことがわかるだろう。
次に、各々の駅間をつなぐかつながないかということについては、どの駅ともつながらない駅はない(すべての駅が1個以上の駅とつながる)が、すべての駅同士がたどれるようにつながる保証はない(路線が孤立していてもよい)ということにしておく。30個の駅が、それぞれ自分以外の1~29個の駅とつながるとして、そうすると有向グラフになるがエッジの向きを無視してよい。この表から「0」と「29」の場合をなくした536,870,910を半分にして268,435,455に、完全グラフとなる「29」の場合の数「1」を足し戻してあげて268,435,456という数字になる。まったくもって直感でわかるような数字ではないとわかる。
※「足し戻してあげる」という日本語があるかないかは知らないし、完全グラフはおもしろくない。あなたは大丈夫だろうけれど、「A列車」というゲームを生まれて初めて遊ぶ子どもは、1路線に2駅しかない路線を15本引くかもしれない。30個ちょうどの駅があって路線網が完全グラフになっているとき、各々の駅と駅を結ぶ線は何本ですか。
むやみに漢字の熟語ばかりを使おうとせず「作り方(how to make)」「作れる(makeable)」「作った(created)」などと書くほうが格段に情報量が増して正確になる。「何を」「どうやって」を詳しく述べることにも注意を向けたい。
データの互換性と「交換」「配布」「共有」
「A列車で行こう9」は最初のリリース(A9V1)のあと、A9V2、A9V3、A9V4、A9V5と改版を重ねているが、新しいバージョンで作成したマップを古いバージョンのソフトでは読み込むことができない。
「マップコンストラクション」があって「地形の自動生成」まであるというのに他人のマップをネットで探し回ってダウンロードしまくろうとするような人の中には、最新版が出ても古いバージョンの「A列車で行こう9」を遊び続ける人も多くいるだろう。より多くの人にダウンロードしてもらえるマップを制作したいとすると、制作する側も古いバージョンを使い続ける必要が出てしまう。「A列車で行こう9」のマップを他人にダウンロードさせるというエコシステムの成立は、そもそも考慮されていなかったのだ。ここには、同級生とカセットの貸し借りをしていたファミコン世代の感覚があるように思う。せいぜい3年くらいで学校を卒業すれば「A列車で行こう9」も終わりにするものだろう、学校にいる間はみんな同じバージョンを使っているはずだ。メーカーの考えはそのように古臭く硬直化しているが、客はしたたかである。マップそのものを配布するのでなく、制作のノウハウを紹介するコンテンツにすれば、バージョンの違いは吸収できる。
- 「交換」:家庭内や学校内など顔の見える範囲の対等な関係のもとで行なわれるものをいう。両者が均等に責任を持つ。要求や催促はしない。時間をおいてお礼やお返しをする。進学や就職で生活が変われば自動的に関係は終了する。
- 「配布」:不特定多数の人に対して一方的にするものをいう。配布する側が大きな責任を持つ。図書・雑誌・新聞などの出版をお手本にするとよい。無理のないスケジュールを組んでじゅうぶんな労力をかけ、校正には万全を期そう。
- 「共有」:「遊んだら必ず感想を言え(必ずオレ様をほめろ)」「あなたもマップをアップロードしろ(オレ様にも遊ばせろ)」とあつかましく、質より数で、数さえ増えるなら誰でもよい(オレ様のオレ様によるオレ様のための)といった感じになりがち。データ以外のメッセージのやりとりがあると出会い系まがいのサービスになるので年齢確認が必須。メーカーの所在地である月島で適用される条例をすべて順守するのが望ましい。メッセージのやりとりがある場では、さまざまなハラスメントへの対策も必要になる。利用者や保護者としても自衛に努めてほしい。
「プロフェッショナル公式ガイドブック」(2012年12月19日)では「仲間にプレゼントしよう」(108ページ)/「配ろう!!」(109ページ)という文言で、「交換」または「配布」という形になるよう促している。「ファイルをやりとりすれば、他の人とマップの共同制作や都市の共同開発ができる」(096ページ)という記述もあるが、「他の人」とは学校の同級生という意味だろう。児童・生徒が自分たちのことを「人」や「子」と呼ぶのに寄り添った表現になっている。「仲間」とは高校生の部活や大学生のサークルを念頭にしたものだろう。一方、「SNSのような遊び方も」(096ページ)という見出しもあるが、SNSそのものへの言及はない。SNSを使うまでもなく顔を合わせる近しい関係の中で楽しもうという指南である。高専の寮では年4回の「部屋替え」でいろいろなものがリセットされるといいます。
「A列車で行こう7」では「マップコンストラクション」が別売りで、これを買わない人も多かったことから「別売りのマップコンストラクションを買ったリッチなオレ様がマップを作ってやるからありがたく受け取れ!」という構図があった。「マップコンストラクション」が標準搭載になったうえ「地形の自動生成」まである「A列車で行こう9」では、技量を問われることもなく誰でも他人の手を借りずに新しいマップを「無限」に作成できるのだから、もはやオレ様に出番はない。「地形の自動生成」は人間の仕事を奪う。…「生成」だけに?(しーん)
- 「もんじゃストリート」は続くよ(網走編)(2018年6月10日)
※「procedural generation」:「手続き型生成」。数式と乱数を組み合わせたアルゴリズムにより自動的に生成すること。
「A列車で行こう9」に内蔵された地形の自動生成はすばらしい。これだけで1つのソフトになり、卒論が書けるほどの題材なのだ。英語で検索すれば、さまざまなアルゴリズムに関する論文やブログ、あるいはダウンロードして実行できるソフトウェアが見つかるだろう。わたしたちは「A列車で行こう9」のソースコードを見ることはできないが、いろいろな挙動から地形の自動生成のアルゴリズムを突きとめてみるのも一興だろう。
そのような数理的な興味は持たないとしても、地形の自動生成はそれ自体が魅力的な機能である。ゲームのマップ(地形データ)は、整数の座標でいえば1024×1024の分解能の平面に、高さの値を持たせたものである。地形の自動生成は関数のはずだから、計算量が増えることなくいくらでも細かい分解能で地形データを生成できると期待される。将来のバージョンでマップの分解能が高くなった時もそのまま使えるものになっているだろう。
一般的なプログラムを念頭にしていえば、地形の自動生成のプログラムは、地形を生成する数式と乱数を決定する処理(モデリング)と、それを使って有限の解像度のハイトマップを得る処理(ラスタライズ)の2段階になっているはずである。この2つを明示的に分ける(処理を抽象化・一般化する)と、“ワンランク上の気の利いたプログラム”に進化することができる。数式と乱数を一意に決める「シード」や「ハッシュ」の短い文字列を表示する機能をつければ、これをコピペするだけで地形データを共有できるようになる。地形を生成する数式に代入する座標を回転させる機能をつければ、地形仮生成を実行して生成した地形を、任意の向きに回転させたハイトマップとして書き出すといった柔軟なことができるようになる。マップとして使用するよりも少し広い範囲の地形を生成したり、拡大・縮小ができるようにするのも容易だろう。反転(鏡像)や、遠近感の強調(プロジェクターの台形補正や魚眼レンズのような変形)も可能だ。しかし、ビットマップにしてしまってからでは、何をしても汚くなるだけだ。こうした操作を、有限の解像度のハイトマップに書き下してしまう前にできるようにするというところが肝である。
「A列車で行こう9」に内蔵された地形の自動生成には、そのようなポテンシャルがある。現時点では未実装でも、将来の実装を妨げない実装になっていることを「すばらしい」と評しておく。欲を言えば、せっかくアルゴリズムで地形を生成しているのだから、そのパラメータを活かしてそれっぽい地質(の境界面)も模擬できるものになっていると、もっとすばらしい。ゲームシステムに即して言えば、ゲームモードでの地形編集を許可する表層の地質と、許可しない岩盤と、水流や波浪によって絶えず動く川や海岸の未固結堆積物が区別されるだけでも、トンネルや橋のコストを地質によって変えるなどの表現が可能になり、じゅうぶんにリアルになるだろう。
公式ガイドブック(121ページ) | このサイト | |
---|---|---|
「無限に新マップを入手できる」 | ⇒ | おっしゃる通りで ございます |
「池や川でいいなら“浅”にする」 | ⇒ | 「川」はできないという認識 でございます |
「海岸線が単純になる」「複雑になる」 「山岳、平地、海が集合するか分散するか」 | ⇒ | どちらも同じことで ございます |
「少しでも見所があると思ったらセーブ」 | ⇒ | まったくで ございます |
「テンプレートマップに気に入った地形がない」 | ⇒ | あんなのを気に入るわけないので テンプレートも地形の自動生成で 作り直してもらえたらと存じます |
「平地が細分化」「広い平地」 「難易度に直結」 | ⇒ | 「プレイアビリティとは」と題する 別稿にてまとめてございます |
「海岸線が単純になる」「複雑になる」 「平地が細分化」「広い平地」 | ⇒ | 「地形の特徴・地形の複雑度」にて 「平地の輪郭」を地形データの分類 の指標にしています |
フルスクリーンのスクリーンショットが 1ページに6枚も小さく載っているので 「地形仮生成の目標値」が読めません | ⇒ | 「地形仮生成の目標値」を具体的に 例示してございます |
まったく使い物にならない初期設定値を 「標準の設定」と呼ぶのは大いに語弊があります | ⇒ | 「平地の輪郭」の細かさの分布の 中央部を「標準」と呼ぶべきです |
「A列車で行こう9」のアップデートパッチ「Version 5.00 Build 4431」(2018年12月7日)では「取り込んだ画像から地形を生成できる機能」が追加されている。「取り込んだ画像から地形を生成できる機能」は、画像を入力として地形の自動生成を行なう(地形仮生成の目標値を画像で与える)といった高度な機能ではなく、入力した画像をそのままハイトマップとして用い、ゲーム内の地形データに変換するだけの単純な機能である。「ハイトマップ入出力機能」と呼んで出力にも対応してほしい。「生成」という用語は「地形の自動生成」だけに使ってほしい。また、以下の理由により積極的には使用をおすすめしない。
これらの注意点を自力で解決できる場合は「取り込んだ画像から地形を生成できる機能」にもチャレンジしてみてほしい。「取り込んだ画像から地形を生成できる機能」を使いさえすればお手軽にリアルなマップ(実在の都市を再現するマップ)がつくれるなどとは思わないでほしいということである。「取り込んだ画像から地形を生成できる機能」は、地形の自動生成のプログラムを自作して楽しんでいるような専門家向けの機能であると思ったほうがよい。この種のプログラムには、ゲームのマップとしてではなく映像表現として背景に使う目的で非常に繊細な起伏をも表現するものもあるが、あまりざわざわした地形データ(ハイトマップ)を「A列車で行こう9」に読み込ませても、平地を選んで線路を敷いて勾配に弱い汽車を走らせて『汽笛一声』を気取る“地べた”のゲームのマップとしては使いづらい。適当に「平地」に均すという手間が発生してしまう。「A列車で行こう9」の「地形の自動生成」は、この点を最初からうまく処理してくれている感じがある。アルゴリズムにより生成した地形データに、ゲームとして遊びやすい「平地」を生み出すべく、ある範囲の標高を0mに落とすようなフィルターをかけているのだろう。これの逆をやるのが「ベクトル円海山」であるのでゆっくりして楽しんでいってほしい。
なお、「A列車で行こう7」の「マップコンストラクション」にも「ビットマップファイル読み込み」があった。この機能を「A列車で行こう9」で廃止したのは「地形の自動生成」あってのこと。いまさらわざわざ「ビットマップファイル読み込み」という機能に需要はないだろうという判断だったのだろうと思われる。最近のアップデートパッチでの思わぬ復活となったが、基本的には後ろ向きな機能であることを理解しておきたい。表現力を比較すると、ビットマップのようなラスターグラフィックス(画像)が最も低く(画像化したときの解像度に固定されてしまう)、アウトラインフォントやPDFのようなベクターグラフィックスが中くらい(データ点の取り方にもよるが拡大すれば粗が見えてしまう)、「地形の自動生成」のようなプロシージャルグラフィックス(まだ辞書には載っていないが業界では言う)が無限に細かい(必要の都度、必要な解像度で画像化できる=4Kの天球なーんてことも可能)。しがないゲーマー(※ゲームは無心で遊びたい人)はもとより、文系のライターなどコンピューターに疎い者に対して「A列車で行こう9」というPCゲームの敷居はあまりにも高いとは思うが、本作の作者が払った確かな労に全力で応えるプレーをしたいもの。追いついて追い越そうという努力の先には、必ず得るものがある。われらコンピューターの歴史とともにあれ!
※「A列車で行こう9 地形 画像」で検索すると「北海道」「沖縄」の地形を国土地理院のサイトからダウンロードして読み込ませているものが見つかるが、これらはあくまで機能を説明するためのデモンストレーション(新機能をちょっと使ってみたというだけの話)であるから、このようなスケールで「北海道」「沖縄」のマップを作って実際に遊べるとは思わないようにしてほしい。わざわざ「北海道」「沖縄」を選び取る意味も必要もないとは思われるが、強いていえば私立学校や新設校の飛行機で行く修学旅行の行き先である。「A列車で行こう9」というゲームに対して本質的な興味を持っていれば地理にも興味があり、わざわざ「北海道」「沖縄」を読み込んでみせるという雑で乱暴なことをするはずはないと思う。地理にほとんど興味がないからこそ、修学旅行の案内として見せられた「北海道」「沖縄」の島の形だけを印象深く思ってしまうのだ。また、マップコンストラクションではゲーム本体よりも難易度が高いマップを作らないといけないという強迫観念から「難問奇問」「悪問」「無理難題」の類ばかりを作ろうとする人もいるので要注意である。これはマップコンストラクションが別売りだったときの、別売りのものをわざわざ買ったのだからゲーム本体よりすごいものが作れないと元が取れないといった感覚によるものである。マップコンストラクションが標準搭載の「A列車で行こう9」にあっては周回遅れの発想である。
(このサイトの初版公開:2018年8月1日、地域の土地利用の初出:2018年9月28日、地形が気に入らないときはの初出:2019年7月1日、駅名のつけ方の初出:2020年2月10日)
ARXおひねり持ち(77704) All Rights Reserved. ©2018-2025, tht.