いきなり日曜大工

好きなことを好きなだけやる

地図にのせる情報と Leaflet のレイヤークラス

ゲーム中の「地物」と Leaflet のレイヤークラス

今回からこれまで作ってきたゲーム地図タイルのベースに拠点やエリアなどの情報をのせていく段階に入ります。

ゲーム中の「地物」

どこまで実装というのはひとまず別の話として、BotW のゲームプレイに有用と思われ、かつ地図上の位置が決まっている情報には例えば以下のようなものがあります。

  • シーカータワー
  • (シーカータワーと連動する)エリア
  • 試練の祠
  • 拠点(町、馬宿など)
  • 大物モンスター(イワロック、ヒノックス、モルドラジーク、ライネル)
  • コログ
  • 各種チャレンジ、ミニゲーム等の開始位置

このような情報をこれまで用意したベース地図のタイルにレイヤーとして重ねていくわけですが、Leaflet にはいろんなタイプのレイヤークラスが用意されているので、まずは情報ごとにどのレイヤークラスを使うかを考えます。地図タイルも L.TileLayer を使って描画するレイヤーですが、ここで話題にするのは実世界でいうところの「地物」に相当するものです。

L.Layer クラス群との組み合わせを考える

Leaflet 公式サイトの Class diagramAPI Reference を参考に、Leaflet に用意されている L.Layer 群のクラスのどれに先に挙げたゲーム中の要素があてはまりそうかざっと分類してみました。

クラス名 タイプ
L.Marker シーカータワー、試練の祠、拠点、大物モンスター、
コログ、チャレンジ・ミニゲーム
L.Polygon 面(多角形) エリア
L.Polyline コログ線(後述)など

先に挙げた項目のほとんどは地図上の1点を示すもの(町や馬宿もゲーム内の地図で表されているアイコン同様1点ということで)なので L.Marker を使ってアイコンで見た目を区別します。

L.Marker で表される地物。現在作っているテスト環境から。

シーカータワーに連動して解放されるエリアは L.Polygon で多角形を表すことができます。

「始まりの台地」エリアの境界。L.Polygon で描画できる

L.Polyline は先に挙げた項目には該当するものがありませんが、コログのミをとる時のスタート地点と実際にコログを発見する地点とを結ぶ線として使おうと思えば使えそうです。

L.Polyline で一直線以外のジグザグパターンにも対応可能

データ収集

地物の情報採集は実際にゲームをプレイして行います。具体的には Nintendo Switch で BotW を最初からプレイして欲しい情報のスクリーンショットをとりつつ、これを参考に自作マップ上での位置を決めていきます。まだリレーショナルデータベースを使うかなどは決めてないので、データは当面 Excel 等で管理して後で JSON かなと漠然と考えているところです。

次回は L.Marker とアイコンのお話です。各種アイコン画像の作成と、ゲーム内のデータ収集を平行して進めていきます。