タイルセット分割

余白・間隔のあるタイルシートを個別PNGとメタデータJSONに分割。

タイルセットを切り分けるには、軸ごとに3つの数が必要です。タイルサイズ、余白(最初のタイルの前のピクセル)、間隔(タイル同士の間のピクセル)です。個数は列 = floor((幅 − 余白 + 間隔) ÷ (タイル + 間隔))で、行も同じです。Kenney Tiny Dungeonの203 × 186pxのシートは、16pxのタイルと1pxの間隔で12 × 11 = 132枚になります。Studioはこれらの数をピクセルから測り、「このグリッドを使う」を押すまで最良のグリッドを点線で示し、Godot 4・Tiled・Unity・LDtkへの書き出しにそのまま渡します。タイルごとのPNGのZIPは従来のタイルグリッド分割で作れます。

画像をここにドロップ複数のファイルをまとめて処理できます
アップロードなし · この端末で処理

グリッドのモデル、計算式、数の測り方

タイルはすべて同じ大きさです。余白は最初の列(と行)の前で一度だけ飛ばし、間隔は隣り合う2枚の間にあり、最後のタイルの後ろには何も仮定しません。したがってタイル(c, r)はx = 余白 + c × (タイル + 間隔)、y = 余白 + r × (タイル + 間隔)から始まります。Godotは同じ数をTexture Region Size、Margins、Separationと呼び、Tiledはタイルサイズ、Margin、Spacingと呼びます。

n枚のタイルには余白 + n × タイル + (n − 1) × 間隔のピクセルが要るので、入る最大数はfloor((W − 余白 + 間隔) ÷ (タイル + 間隔))です。両側の余白が同じなら、教科書どおりの(W − 2 × 余白 + 間隔) ÷ (タイル + 間隔)が割り切れます。Nerulioのfloorは、右側に残る帯がタイル1枚と間隔より狭ければ同じ個数になり、数ピクセル余ったシートでもきれいに切れるのはこのためです。

検出器は画像を1行ずつ読み、各行・各列が前の行とどれだけ違うかを見ます。その変化の並びを4pxから画像の半分までのあらゆる周期で折り重ね、変化を最もよく説明する周期を選び、位相を確かめ、余白や間隔と主張する行が本当に空か単色かを調べます。どのタイルも最初か最後の行が空なら「16px+1pxの間隔」が「17pxのタイル」に勝ち、本当のサイズの倍数は、約数のスコアが0.02以内なら負けます。Studioは公開オートタイル配置がぴったり収まるサイズも併せて試します。

最も苦手なのは区切りがまったくないシート、つまりタイルの中身が縁より複雑な詰めたシートです。軸ごとにタイルが1枚しかないと測れず、Studioが測るのは16メガピクセルまでの画像です。それより大きい場合はサイズを入力してください。

タイルサイズ
タイル1枚の幅と高さ(Godot:Texture Region Size)。
余白
左端と上端で、最初のタイルの前にあるピクセル。
間隔
隣り合うタイルの間のピクセル(Godot:Separation)。多くは1px、縁のピクセルを引き伸ばしたものもある。
詰めたシート
間隔なしでタイルを並べたシート。ほかのエディターには最も扱いやすく、測るのは最も難しい。

例:テストコーパスのKenneyシート2枚

CC0のファイルをNerulioのグリッド検出器で測った結果(2026-09-28):

Kenney Tiny Dungeon   tilemap.png          203 × 186 px   16pxタイル、間隔1px、余白0
列 = floor((203 − 0 + 1) / (16 + 1)) = floor(204 / 17) = 12
行 = floor((186 − 0 + 1) / (16 + 1)) = floor(187 / 17) = 11              → 132枚
タイル13 = 1列目・1行目  → x = 0 + 1 × 17 = 17、y = 17、サイズ16 × 16
検出:16 × 16、間隔1、12 × 11、スコア0.976(高)

tilemap_packed.png    192 × 176 px   同じタイル、間隔なし → 192 / 16 = 12、176 / 16 = 11
検出:16 × 16、12 × 11、ただしスコア0.514(低):タイル間に空の行がない

Kenney Pixel Platformer  tilemap.png  379 × 170 px → (379 + 1) / (18 + 1) = 20、(170 + 1) / 19 = 9
タイルは16pxではなく18px:検出18 × 18、間隔1、20 × 9、スコア0.946(高)

同じ絵でも間隔があれば0.976、なければ0.514です。空の区切り線は、シートが示せる最も強い手がかりです。詰めたシートでは「このグリッドを使う」を押す前に点線のグリッドを確かめるか、わかっているサイズを入力してください。

使う前にグリッドを確かめる

  • 点線が最後の列・最後の行まで間隔の上に乗っていること。左は合っているのに右がずれるなら、タイルサイズか間隔が違います。
  • 列 × 行が予想どおりで(Tiny Dungeonなら12 × 11 = 132)、空タイルとして数えたマスが本当に空であること。
  • 書き出し後、Godotのアトラスで Texture Region Size、Margins、Separationが同じ値であること。余白1・間隔2で書き出したNerulioのGodotファイルは、Godot 4.7.2でTileSetAtlasSourceにそのまま入りました。
  • タイルごとのPNGが要るなら、従来の分割ツールは領域をそのままコピーし再サンプリングしないので、各タイルが元の矩形とバイト単位で一致します。

トラブルシューティング

症状考えられる原因確認方法対処
列が進むほどタイルがずれていくタイルサイズの誤り:Pixel Platformerの18pxタイルを16px+1pxと読むと、c番目のタイルが19 × cではなく17 × cから始まり、1列ごとに2pxずつずれる最初の列は合うのに10列目では18px外れる18pxの候補を選ぶか、タイル18・間隔1を入力
すべてのタイルが上と左に1pxずれて切れる外周の枠を余白として指定していない画像の最初の行と列が空か単色余白を1にする。個数の式は余白を1回だけ引く
右端や下端に半端な列・行が残るタイルサイズがシートを割り切れない。floorはタイル1枚と間隔より狭い部分を捨てる(W − 余白 + 間隔) ÷ (タイル + 間隔)を計算:整数か、整数よりわずかに大きいはずタイルサイズを見直す。余りが大きいならシートではなく読み取りが間違っている
最初の候補が低か中しかない詰めたシート:タイル間に空の行がなく、中身が複雑各候補のスコアと信頼度点線のグリッドを確かめる、別の候補を選ぶ、またはサイズを入力
とても大きい画像で候補が1つも出ないStudioが測るのは16メガピクセルまで画像の幅 × 高さタイルサイズ・余白・間隔を手で入力
ほかのエディターがシートを受け付けない間隔を扱わないエディターがある:Sprite Fusionはタイルセットの幅と高さがタイルサイズのちょうど倍数であることを求めるW ÷ タイルが整数かシートの詰めた版を使うか、間隔なしで詰め直す

ほかの方法

方法こんなときに向いています
エンジンに数を直接入力:Godotのアトラス(Texture Region Size、Margins、Separation)やTiledの新規タイルセット画面(タイルサイズ、Margin、Spacing)素材パックの説明などでグリッドがもうわかっているとき。
従来のタイルグリッド分割タイルごとのPNG、完全一致と近似の重複検出、回転・反転の派生、にじみ対策の縁を拡張したアトラスが欲しいとき。
スプライト分割大きさの違うスプライトがグリッドなしで並んだシートのとき。タイルの分割には規則的なグリッドが必要です。

この方法の限界

  • 規則的なグリッドのみ扱います。アイソメトリック・六角形のシートはモデル化していません。
  • StudioはタイルごとのPNGを書き出しません。その機能は従来の分割ツールにあります。
  • 軸ごとにタイルが1枚しかないシートには、測る周期がありません。

バージョンと出典

計算式と矩形はsrc/game/tile-grid.jsのtileRectsそのものです。検出は合成シート10枚で確認し(10枚すべてで本当のグリッドが1位)、上のKenneyの数値は2026-09-28にコーパスのファイルで測りました。2026-09-22のGodot 4.7.2の実行では、作成したTileSetから余白1と間隔2がそのまま読み戻せました。エンジンの項目名はリンク先の公式ドキュメントに基づきます。

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

タイルセット分割

余白・間隔のあるタイルシートを個別PNGとメタデータJSONに分割。

使い方

  1. 画像を追加
  2. 設定を調整して結果を確認
  3. 新しいファイルを保存

対応形式

PNG / JPG / WebP / AVIF / HEIC → PNG + JSON (ZIP) — 入力のデコードはブラウザ対応と追加エンジンに依存します。

このツールでできること

余白・間隔のあるタイルシートを個別PNGとメタデータJSONに分割。

処理方式と検証状況

advanced · Studio Tile workspace: seam-continuity layout identification, terrain bits, Godot 4 terrain matcher port, quarter-exact generator, Godot/Tiled/LDtk/Unity writers. 品質検証中です。Pro・Flagship水準はまだ実証されていません。

書き出す前に

規則的な格子のみ。不規則に配置されたスプライトはスプライト分割をご利用ください。

よくある質問

このツールにはどのような制限がありますか?

規則的な格子のみ。不規則に配置されたスプライトはスプライト分割をご利用ください。

ファイルはアップロードされますか?

このツールで開いたファイルはアップロードせず端末で処理します。コミュニティの投稿に明示的に添付する画像は別途アップロードされます。一部のエンジンやモデルは外部から取得するため、IPアドレスなどの接続情報は配信元に伝わります。

作業は自動保存されますか?

いいえ。画像と編集状態はこのタブに保持され、メディア出力は端末の一時保存を利用する場合があります。言語を変えても作業は残りますが、再読み込み、タブを閉じる操作、別のページへの移動で失われることがあります。