本文へスキップ

デュアルグリッド タイルセット · 47枚ではなく16枚、Godot・Tiled向け

デュアルグリッドは47のブロブタイルの代わりに、マップのグリッドから半タイルずれた16の角タイルで描きます。Studioはデュアルグリッドのシート(1パックに複数地形も)を認識し、4分割パーツから生成し、Godot 4とTiledへ書き出します。

デュアルグリッドは、地形はマップのマスに置いたまま、タイルをマスの間の点、つまり半タイルずれた位置に描きます。描くタイル1枚が4つのマスの角を1つずつ覆うので、その4マスのどれが地形かさえわかればよく、2⁴ = 16枚で済み、ブロブの47枚は要りません。その代わり、半タイルずれた表示レイヤー(W × Hマスのマップに(W+1) × (H+1)枚)と、境目がタイルの真ん中を通るように描いた絵が必要です。Studioは角16枚のシート(1パックに複数の地形も)を認識し、ブロブと同じパーツから生成し、Godot 4のMatch Corners地形、Tiledの角Wangセット、LDtkのルールとして書き出します。UnityのRule Tileには入れられません。

タイルセットやオートタイルのシート(PNG)をドロップ
空のStudioを開く
ブラウザ内で処理し、ファイルはアップロードされません。
Studio のタイル作業画面:Godotの地形ルールで塗ったテストマップ
CC0アセット(OpenGameArt)を開いた実際のStudio画面です。
書き出し先
  • Godot 4 TileSet検証済み· Godot 4.7.2
  • Tiled検証済み· Tiled 1.12.2
  • Unity 6 Rule Tile検証済み· Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3
  • LDtk一部検証· LDtk 1.5.3 schema + loader

グリッドを半タイル動かすと16枚で足りる理由

ブロブセットでは、マスのタイルがそのマスの4つのパーツをすべて描かなければなりません。パーツはそれぞれ3つの隣で決まり(左上ならN・W・NW)、見た目は5種類です。外側の角、上の縁、横の縁、内側の角、全面。4つのパーツは接する辺でかみ合う必要があり、ありうる組み合わせを数えると47通りになります。

描くグリッドを半タイルずらすと、1枚のタイルは異なる4マスのパーツを1つずつ見せることになります。タイルの中心点で出会う4マスです。パーツが5種類のどれになるかは同じタイル内のほかの3マスで決まるので、タイルはマスごとに1ビット(地形かどうか)だけ知っていればよくなります。4ビットで16枚:空1、地形のマス1つ(外側の角)4、並んだ2マス(まっすぐな縁)4、斜めの2マス2、3マス(内側の角)4、全面1です。

どちらの場合もパーツは同じ3つの隣で選ばれるので、Nerulioのジェネレーターは描いた20個のパーツ(角4 × 見た目5)から、ブロブ47のセットとデュアルグリッド16のセットの両方を作ります。変わるのはタイルを置く場所で、絵が見せるべき内容ではありません。

代償もはっきりしています。表示レイヤーはずれていて、データのグリッドより縦横1枚ずつ大きく、当たり判定やゲームのロジックはデータのグリッドに残り、格子点にタイルを置けないエンジンもあります。辺タイル16枚のセットと混同しないでください。あちらはマスの4辺で合わせるもので(道・柵・足場)、角タイルとは入れ替えられません。

データのグリッド
塗るマスであり、ゲームのロジックが読むマス。地形かそうでないか。
表示のグリッド
描かれるタイル。4マスの間の格子点ごとに1枚、半タイルずれている。
角マスク
1点を囲む4マスについてNW 1 + NE 2 + SE 4 + SW 8。0(空)から15(全面)まで。
辺セット
4辺(N 1、E 2、S 4、W 8)で合わせ、マスの上に描く16枚。別のセットです。

例:格子点にどのタイルが来るか

中央に2 × 2の陸がある4 × 3のマップ:

データのグリッド(# = 陸)  格子点上の表示タイル:(4 + 1) × (3 + 1) = 20
. . . .
. # # .                     マス(1,0) (2,0) (1,1) (2,1)の間の点:
. # # .                       NW . = 0   NE . = 0   SE # = 4   SW # = 8   → マスク12
                              = 下半分が陸:まっすぐな上の縁

点の周りの陸マス           0   1         並んだ2         斜めの2      3              4
見た目                      -   外側の角  まっすぐな縁    斜め         内側の角       全面
タイル                      1 + 4       + 4             + 2          + 4            + 1   = 16

同じ2 × 2の塊は、ブロブセットでは4マスで、それぞれが8つの隣から47枚の1枚を選びます。デュアルグリッドでは9つの格子点が、それぞれ4マスを見て16枚の1枚を選びます。

エンジンごとの角セットの置き場所

エンジン角セットの保存のしかたNerulioの書き出し
Godot 4Match Cornersモードの地形セット:タイルごとに角のピアリングビット4つ検証済み:地形4つのデュアルグリッドパックをGodot 4.7.2が251マスすべて予測どおりに塗った(複数地形のマップ3つを含む)
Tiled角Wangセット(Tiledのマニュアル:地形2つの完全な角セットは16枚)。サンプルマップのレイヤーは半タイルずらすTiled 1.12.2自身の読み込み機能で検証
LDtkタイルごとにルール1つ、タイルは半タイルのオフセットで描く一部検証:1.5.3スキーマ、公式ローダー、ルールの再実行
UnityRule Tileはマスの上に描き、マスの間の点には描かない書き出さない
Godot 3とテンプレートGodot 3の「2×2」テンプレート、cr31の2-corner Wangセット、4×4のデュアルグリッドシートは同じ並びcorner16 cr31として認識

できること

  • 角16配置(cr31 2-corner=Godot 3「2×2」=デュアルグリッド4×4)を信頼度つきで認識。
  • 複数地形パック:同じ単色の塗りを持つブロックを1つの地形にまとめます。
  • ブロブと同じ4分割パーツでデュアルグリッド16を生成。AからBへの遷移を1組ずつ。
  • 角モードのGodot 4地形(検証済み、複数地形マップを含め251/251セル)とTiledの角Wangセット(検証済み)。Unityへは書き出しません。

使い方

  1. デュアルグリッドのシート(または生成元の基本ブロック)をドロップ。
  2. 認識された配置を適用し、地形ごとにチェック。
  3. テストマップを塗る。角セットは半タイルずれた格子点に置かれます。
  4. Godot 4かTiledへ書き出し。

出力されるファイル

grass.pngというデュアルグリッドシートの場合:

ファイル用途
nerulio_tileset_import.gdGodot 4:Match Cornersの地形セットを持つnerulio-tileset.tresを作ります。ブロックが複数あるパックは地形をそのまま保ちます。
grass.tsxTiled:地形ごとに1色の角Wangセット。sample.tmxは半タイルずらしたレイヤーにセットを描きます。
grass.ldtkLDtk:地形ごとにIntGridの値1つ、半タイルのタイルオフセット付きのタイルごとのルール。

トラブルシューティング

症状考えられる原因確認方法対処
エンジンで全体が半タイルずれて見えるブロブ式の絵(縁がタイルの境界にある)を角セットとして使った、または角の絵をずらしていないレイヤーに置いたテストマップでTiledルールにして、塗ったマスと縁の位置を比べる地形の境目がタイルの真ん中を通るように角タイルを描き、表示レイヤーのオフセットを保つ
Unityの書き出しにこのセットの地形がないRule Tileはマスの上に描く。角セットには格子点が必要書き出しの注意に、Unityでは角セットを省くとあるGodot・Tiled・LDtkを使うか、Unityにはブロブ47のセットを使う
複数地形のパックで地形が混ざる地形は同じ絵の単色の塗りでまとめる。塗りが少しでも違うと別の地形になる適用後の地形一覧を読む地形をまとめるか名前を変える、または塗りをそろえる
Tiledルールでマップの外周にすき間が見えるマップの端の格子点はマップ外のマスに接しているこれらの点は問題として報告されない正常。端まで描く必要があれば外周にマスを1つ足して塗る
ジェネレーターがA4の壁ブロックからデュアルグリッドを作らない辺だけの素材には角タイルを作るパーツがない辺だけの素材は角タイルを描けないというエラーRPGツクールA2、Blobsmith、5タイル、手続き的な縁の素材を使う

ほかの方法

方法こんなときに向いています
ブロブ47枚のセットUnityのRule Tileが必要なとき、またはオフセットのレイヤーなしでタイルをマスの上に置きたいとき(ブロブの解説)。
Tiledの角セットだけを使うレベルをTiledで作り、そこでWangの色を付けるとき。TiledのWangセットを参照。
基本ブロックから16枚を生成A2ブロックや2×3の基本ブロックを描いたとき。タイルセットジェネレーターがブロブと同じパーツでデュアルグリッドのセットを組み立てます。

エンジン別の書き出しと検証方法

「検証済み」は、実際のCC0アセットから書き出したファイルを本物のエンジン・ツールで読み込み、元データと比較したという意味です。読み込んでいない形式はそのように表示します。

書き出し先ファイル検証
Godot 4 TileSetPNG · nerulio-tileset.json · nerulio_tileset_import.gd検証済み Godot 4.7.2同梱のインポートスクリプトが地形ピアリングビット付きのTileSetを作成。set_cells_terrain_connectで塗ったマップが、9つのコーパスシートの全セルでStudioのプレビューと一致。
Tiled.tsx Wang set · sample.tmx検証済み Tiled 1.12.2Tiled自身の読み込みで全Wang IDが記述どおりに読まれ、サンプルマップはピクセル単位で一致。地形ブラシ自体は操作していません。
Unity 6 Rule Tilenerulio-ruletile.json · Editor/NerulioRuleTileImporter.cs検証済み Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3ブロブ・辺タイルセット:塗ったTilemapの全セルが予測どおりのスプライト。角/デュアルグリッドはUnityへ書き出しません。
LDtk.ldtk (1.5.3) · rules · sample level一部検証 LDtk 1.5.3 schema + loaderLDtkのJSONスキーマと公式ローダーで受理され、ルールを再実行すると書き出したタイルと一致。LDtkアプリでは未確認。

検証の根拠

タイルコーパスでピクセルだけから配置を判定:ブロブ47テンプレート4つとWangテンプレート2つは高信頼度、実在の64px洞窟タイルセットは中信頼度で全タイルのビットが正解。Godot 4.7.2は全テストセルをStudioの予測どおりに塗りました(ブロブセットごとに485/485、4地形のデュアルグリッド251/251)。Tiled 1.12.2は全Wang IDを読み戻し、Unity 6000.5はブロブ・辺セットの塗った全セルで一致。

制限

  • 角セットはUnityへ書き出しません。
  • 地形間の遷移はパックの絵かA over Bの生成によるもので、1組ずつです。
  • テストマップはマップ外周の格子点を表示しますが、チェックはしません。
  • Tiledの地形ブラシ、LDtkアプリ、Godotエディターでの塗りは操作していません。検証はエンジンの読み込み機能とset_cells_terrain_connectで行いました。
  • Unityへはブロブ・辺タイルセットのみ。地形が複数あると、互いにつながらないRule Tileが複数になります。
  • アイソメトリック・六角タイル、アニメーションタイル、オクルージョン・ナビゲーションレイヤーは対象外です。
  • 既知の配置なしでビットを提案するには基準となる「塗りつぶし」タイルが必要です。辺だけの道テンプレートでは、そのタイルを選ぶまで推定を誤ることがあります。

バージョンと出典

Nerulioの検証(docs/STUDIO-TILE.md、2026-09-23):MITライセンスのGlitchedinOrbitのデュアルグリッドシートをcorner16ブロック5つ、地形4つとして読み(角の地形80/80、継ぎ目AUC 1.000)、Godot 4.7.2が251マスすべてを予測どおりに塗り、Tiled 1.12.2とLDtk 1.5.3の確認も通りました。エンジンの用語はリンク先の公式ドキュメントに基づきます。

参照した公式ドキュメント

よくある質問

デュアルグリッドをUnityへ書き出さないのはなぜ?

UnityのRule Tileはセルの上に描き、セル間の角には描かないため、角・デュアルグリッドのセットはUnityへ書き出しません。

1枚のシートに複数の地形を入れられますか?

はい。複数のデュアルグリッドブロックを含むパックを4地形として認識し、角の地形は80/80正解でした。

無料ですか?アカウントは必要ですか?

このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。

スプライトはアップロードされますか?

いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。

Asepriteやエンジンのプラグインは必要ですか?

いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。