デュアルグリッド タイルセット · 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には入れられません。

- 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 4 | Match Cornersモードの地形セット:タイルごとに角のピアリングビット4つ | 検証済み:地形4つのデュアルグリッドパックをGodot 4.7.2が251マスすべて予測どおりに塗った(複数地形のマップ3つを含む) |
| Tiled | 角Wangセット(Tiledのマニュアル:地形2つの完全な角セットは16枚)。サンプルマップのレイヤーは半タイルずらす | Tiled 1.12.2自身の読み込み機能で検証 |
| LDtk | タイルごとにルール1つ、タイルは半タイルのオフセットで描く | 一部検証:1.5.3スキーマ、公式ローダー、ルールの再実行 |
| Unity | Rule 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へは書き出しません。
使い方
- デュアルグリッドのシート(または生成元の基本ブロック)をドロップ。
- 認識された配置を適用し、地形ごとにチェック。
- テストマップを塗る。角セットは半タイルずれた格子点に置かれます。
- Godot 4かTiledへ書き出し。
出力されるファイル
grass.pngというデュアルグリッドシートの場合:
| ファイル | 用途 |
|---|---|
nerulio_tileset_import.gd | Godot 4:Match Cornersの地形セットを持つnerulio-tileset.tresを作ります。ブロックが複数あるパックは地形をそのまま保ちます。 |
grass.tsx | Tiled:地形ごとに1色の角Wangセット。sample.tmxは半タイルずらしたレイヤーにセットを描きます。 |
grass.ldtk | LDtk:地形ごとに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 TileSet | PNG · 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 Tile | nerulio-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のタイルセットは小さなエディタースクリプト)。