夜明けの山々を映す静かな湖面

先行事例調査の重要性を学んだマップエディタ作り

国づくりのシミュレーションゲーム「クロニクル・オブ・エンパイア」の地図を作りました。150マスの六角形の地図です。最初は地図の絵から描いて失敗し、「形を先に作り、見た目は後から作る」やり方に切り替えました。

作り終えてみると、いちばんの学びは地図の作り方そのものより、先行事例を調べることの大切さでした。これはゲーム開発に限らず、いろいろな仕事に通じる話だと思います。

マスを使うゲームの地図づくりに迷っている方や、初めての仕事の進め方に迷っている方に向けて書きます。この記事は「ゲーム開発日記」の2本目です(1本目は判断と語りを分ける、Jev的なゲーム開発)。地図の作り方が分からず困ったこと、切り替えのきっかけになった先行事例、そして作ったマップエディタ(地図を作るための道具)を紹介します。

地図の作り方が分からなかった

作り手は前回と同じ3人です。私が企画と遊んでの確認、Claude Codeが要件と基本設計、HERMES(このMacで動いている別のAIエージェント)が詳細設計と実装とテストを担当しています。

地図づくりで最初に困ったのは、地図をどうやってきれいに仕上げていくのか、やり方が分からなかったことです。

マスを四角ではなく六角形にしたのは、そのほうがきれいに作れそうな気がしたからです。頭の中には、「先に六角形でざっくりと形を作り、最後にグラフィックを整える」という順番の案がありました。ただ、地図づくりにはもっと王道のやり方があるのではないか、という不安がずっとありました。

最初は、絵から描いた

そんな中で、私は「信長の野望や三国志のように、もっと高解像度で精緻な地図にしたい」とお願いしました。そこで、写実寄りの地形の絵を画像生成で先に描いてもらい、その上に六角形のマスを重ねました。

最初に描いた地形の絵。斜め上から見下ろした写実寄りの風景で、奥に雪をかぶった山脈と2つの湖、中央を蛇行する川、その両側に畑と村、城が描かれている。マスの区切りはまだ無い

ところが、ゲームとして動かそうとすると、困ることが出てきました。

  • 絵とマスのデータが合わない:マスごとの地形はまだ決まっておらず、絵で森に見える場所が、ゲームの中でも森になるとは限りませんでした
  • 地形が見栄えで決まっている:このゲームでは、地形が農業の伸び方や守りの固さに効きます。それなのに、どこが山でどこが平地かを絵の見栄えが決めていました
  • 街道にデータが無い:絵の上の街道は見本の点線で、どのマスとどのマスがつながっているかが決まっていませんでした

振り返ると、絵を描いてもらう前に、作り方を調べるべきでした。作り方の情報が無いときに、まず情報を集めることを忘れていたのです。

先行事例を探して、やり方を更新した

そこで、地図の作り方を探しました。私の探し方が悪かったのかもしれませんが、地図を土台にしたシミュレーションゲームの作り方を紹介した事例やノウハウは、意外なほど少なかったのです。その中で見つけたのが、次の5件です。

  1. マップ作成実践編(RPGツクールMZ 初心者講座):海、陸、森や山、地域ごとの飾り、の順に作ります。地面ばかりだと単調になる、と注意されています
  2. マップを作るうえで意図していること(Hytackaさん・YouTube):灰色の箱だけで構造とつながりを先に決め、見た目は後から付けます。近道のようなつながりは、後から足すのが難しいそうです。ゲームの要件から地形を逆算する考え方もありました
  3. SRPGの作り方2(Unity入門の森):マスの見た目と、マスの処理を1つの部品にまとめて量産します
  4. シミュレーションRPG開発講座 #2 マップの自動生成(スタジオしまづさん・YouTube):1マス、格子、中心合わせ、と小さく積み上げていきます
  5. ゲーム用のマップ画面を作成した話(ときなしさん・note):目的地を丸く切り抜き、白い縁を付けて見分けやすくしています。現実の土地を参考に地図を作り、友人に見せながら直したそうです

参考になる資料を見つけたとき、自分のやり方を更新できただけでなく、「他の方はこうやって作っているのか」という学びもありました。公開してくださっている方々に感謝しています。

ただ、5件の中に、六角形のマスを直接扱ったものはありませんでした。そこで設計の段階で、Claude Codeが六角形の戦略ゲームの資料も調べました。無料の戦略ゲーム「Battle for Wesnoth」のマップ作りの手引きには、「完璧でなくてよい。まずはおおまかな形があればよい」という趣旨の一文があります。ここでも、ざっくりとした形から始めるやり方が勧められていました。

資料と比べたのは、私の頭の中の案ではなく、その時点のゲームの作り方(絵が先)です。Claude Codeが、同じ点ではなく違う点だけを表にまとめてくれました。そこから取り入れることにしたのが、「構造を先に作る」「要件から地形を逆算する」「目的地を丸い印で示す」の3つです(丸い印は、今はマップエディタの都の印に使っています)。「現実の土地を参考にする」は、地形を遊びの要件から決める方針にしたので、今回は見送りました。

絵ではなく、データを基準にする

切り替えたあとは、絵ではなくデータを基準にしました。地形は、1行15文字×10行の文字の並びで書きます。P=平地、F=森林、M=山、W=湖、R=川、V=渓谷の6種類です。文字なので手で直せますし、直した差分も読めます。

地形は、各国の性格が読めるように逆算して置きました。

国 性格 都のまわりに多くした地形
北 商業 湖・川・平地
西 農業 平地・川
東 工業 山・森林
南 軍事 渓谷・山

国の範囲はデータに書いていません。遊ぶ人が始める土地を選んだあとに、4つの都から塗り広げて決めます。山や渓谷は広がりにくくしたので、国境が山脈や谷に沿いやすくなります。

データを変えたら必ず通す検査を、7つ置きました。

  • マスの数と文字
  • 川が源流から端まで途切れないか
  • 陸が1つにつながっているか
  • 都のまわりの地形が、国の性格に合うか
  • 始める土地の候補が公平か
  • どの候補を選んでも、国の広さが割り振れるか
  • 地名が重複しないか

最初は「地形の割合」の検査も入れていました。ただ、その基準が何を意味するのか私には分からなかったので、外してもらいました。

絵はデータから作る

見た目は、データから作ります。地形ごとに、真上から撮った写真のような部品の絵を用意し、データの地形どおりに並べます。並べた絵を下絵にして、画像生成で1枚の絵に仕上げます。部品も仕上げも、手元のPCの画像生成(ComfyUI)で作っていて、費用は0円です。この絵は、まだゲームには入れていません。

データから作った地図の絵。真上から見た写真のように、畑の区画、湖、川、森、岩山が並んでいる。湖と川の位置はデータの地形どおり

仕上げでは、下絵をどれだけ描き変えるかの加減(denoise)を0.6にしました。0.65にすると配置がずれ、0.5以下だと部品の継ぎ目が残りました。また、指示文に「地図」や「ゲーム」を入れると、絵の中に文字やアイコンが描き込まれてしまいました。そのため、この2語は入れていません。

マップエディタ

そこで、山や川、湖、森などの部品を組み合わせて、地図を自分で作れるようにしたいとお願いしました。こうして作ってもらったのが、マップエディタです。

マップエディタの画面。六角形のマスが並ぶ地図に、平地・森・山・湖・川・渓谷が色分けされ、北・西・東・南の都と点線の街道が置かれている。左に地形の部品、右に検査の結果と地形の数が並ぶ

左の部品を選んでマスを押すと、地形が変わります。右側には、検査の結果と地形の数、始める土地の候補の点数が出ます。通らない検査は赤で示します。使ってみて気になった所は、その場で直してもらいました。

  • 押したときは、押したマスだけを変えます(最初は周りのマスまで変わっていました)
  • 街道は、なぞるか2点を押すと、マスに沿って自動で引かれます(毎回2マスずつ選ぶのが面倒でした)

直したあとは、かなり使いやすくなりました。

ゲームに入れてから

地図のデータは、そのままゲームの本体に読み込ませました。今は地形が農業の生産に効き、街道を整えると軍が速く動き、商業も伸びます。始める土地も、マスの点数を見ながら選べます。

ゲームの画面。中央に150マスの六角形の地図があり、北・西・東・南の国と自分の国が色分けされ、都と地形の印が載っている。左右に女王の札、下に命令の入力欄

ゲームの中の地図は、今のところデータから直接描いた六角形です。絵の仕上げは、マップエディタで試せる段階まで来ています。形が先にできているので、見た目は後から作り直せる作りになっています。

分かったこと

1つ目は、先行事例を調べる大切さです。自分にとって未知の仕事でも、ほぼ確実に先に取り組んだ人がいるはずです。これはゲーム開発に限らず、いろいろな仕事に言えることだと思います。今回の地図づくりで、そのことを改めて強く感じました。

2つ目は、形を先に作れば、見た目を作り直してもデータは変わらないことです。絵はデータから作るので、描き直すたびに、絵とデータの食い違いを探さずに済む作りになりました。

次回予告

次回は、手元の小さなAIで女王の会話を作る話です。女王が前の会話を覚えていて、作り話には話を合わせないようにするまでの工夫と、会話の試験で測った数字を書く予定です。