「ちずぴた|日本地図パズル」を作る上で、特に時間がかかったのが地図の描画でした。
日本地図のデータがあれば、あとは画面に線を引くだけのようにも思えます。しかし実際には、「地図に見える」ことと「パズルとして遊べる」ことの間に、たくさんの課題がありました。
緯度経度は、そのままでは画面になじまない
地図の元データには、国土交通省の「国土数値情報」が公開している行政区域データと湖沼データを使っています。県や市区町村の輪郭は、緯度と経度の点の集まりです。
ただし、緯度経度をそのまま画面に置くだけでは、地域によって東西の広がり方が不自然に見えます。そこで、地域の中間緯度を使って経度方向を補正し、縦横比を保ったまま盤面に収まるように投影しています。
離島も難所でした。例えば沖縄を本土と同じ縮尺の枠に入れると、地図全体が小さくなり、ピースを置きにくくなります。そのため、沖縄は別枠に分け、本土側と異なる縮尺で描く仕組みにしました。見た目だけでなく、指を離した位置がどの枠に入っているかも先に判定する必要があります。
輪郭を滑らかにすると、県境にすき間ができた
小さなピースでも輪郭を見やすくしようと、当初はポリゴンの角を丸めていました。一枚のピースだけ見ると、輪郭はたしかに柔らかく見えます。
ところが、隣り合う県を盤面に並べると、共有していた県境がずれ、二重線や白いすき間に見える場所が出てきました。各県で別々に角を丸めたため、本来は同じだった境界線が一致しなくなっていたのです。
最終的には、座標そのものは変形させず、元データの共有境界を保つことにしました。その上で、線の端や角の描き方だけを丸くして、境界の整合性と見た目の柔らかさを両立させています。
湖は「くり抜く」だけでは残らない
行政区域データでは、湖の水面も県域に含まれます。そのまま県を塗ると、例えば霞ヶ浦や琵琶湖のような、土地の形を見分ける大切な特徴が消えてしまいます。
そこで湖沼データを別に重ね、ピースの内側を水色で描くようにしました。さらに、北浦のような細い湖は、小さなピースにすると塗りだけでは消えてしまいます。水面と同じ色で細く縁取りすることで、小さく表示しても形が残るようにしました。
拡大できるようにすると、今度は線と文字が崩れる
市区町村モードでは、小さな区画へピースを置くために地図の拡大が欠かせません。しかし地図全体をそのまま大きくすると、県境線や地名まで太く大きくなり、地図が読みにくくなります。
これに対しては、形と文字を別の層に分けました。地図の形は拡大しつつ、線幅は画面上でほぼ一定に見えるように調整します。地名は文字そのものを引き伸ばさず、表示位置と文字サイズを拡大率に合わせて計算し直しています。
この分離によって、拡大しても線が太りすぎず、文字もぼやけにくくなりました。一方で、形と文字が同じ動きをするように、拡大率や移動量の扱いをそろえる必要がありました。
正しく描けても、重ければ遊べない
都道府県だけでは見えにくかった課題が、市区町村を描き始めると一気に表面化しました。北海道全域のステージには179の市町村があり、すべての輪郭を指の動きのたびに作り直すと、地図が操作に遅れてついてくるようになります。
そこで、一度作った輪郭のパスを大きさごとに使い回し、画面の外にある地名は描かないようにしました。拡大中の線幅も、指が少し動くたびに再計算するのではなく、見た目で区別できる段階ごとに更新しています。
描画処理を軽くすることは、ただの高速化ではありません。指で地図を動かし、狙った位置へピースを置くゲームだからこそ、表示が操作に遅れないことも遊びやすさの一部です。
地図はデータではなく、遊びの盤面だった
地図描画に取り組む中で学んだのは、正しい地理データを持ってくるだけでは、ゲームの地図にはならないということでした。
輪郭の正しさ、小さな画面での見やすさ、ピースの置きやすさ、拡大縮小の気持ちよさ。どれかひとつだけを優先すると、別のところにひずみが出ます。
「ちずぴた」の地図は、背景に置く画像ではなく、指で動かし、拡大し、ピースを置くための盤面です。そう考えるようになってから、ひとつひとつの描画上の問題に、一貫した基準で向き合えるようになりました。
