本文へスキップ

GameMakerのオートタイルをGodot・Tiled・Unityへ

GameMaker Studio 2の47タイルのオートタイルテンプレートは、壁・縁・角のパターンごとに置き場所が決まっていて、ほかのツールはこの順番を読めません。その配置のシートを入れると、タイル作業画面がタイル間のつなぎ目から配置を見抜き、地形ビットを一度に設定して、ピアリングビット付きのGodot 4 TileSet、TiledのWangセット、UnityのRule Tile、LDtkのルールで書き出します。GameMakerへ戻す書き出しはなく、GameMaker本体では何も動かしていません(未検証)。

GameMakerの47タイルのオートタイルは、Autotile Editorで埋める47枠のテンプレートで、その対応づけはPNGではなくタイルセットアセットに保存されます。テンプレートの順序どおりに描いたタイルセットのスプライト(8 × 6セル、GameMakerの決まりどおり左上のセルは空)なら、Nerulioがピクセルだけで認識します。各枠はピアリングビット付きのGodot 4のタイル(Match Corners and Sides)になり、同じビットからTiledのWangセット、UnityのRule Tile、LDtkのルールも作れます。GameMakerへ戻す機能はなく、GameMaker自体は実行していません。

タイルセットやオートタイルのシート(PNG)をドロップ
空のStudioを開く
ブラウザ内で処理し、ファイルはアップロードされません。
Studio のタイル作業画面:GameMaker配置と認識した47タイルのシート、地形ビット、完了したチェック
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

GameMakerが保存するものと、Godotが必要とするもの

GameMakerのマニュアルは47タイルと16タイルの2種類のオートタイルを用意しており、Autotile Editorで埋めます。47 tileテンプレートを押し、テンプレートのセルごとにタイルセットからタイルを選ぶ方式です(薄い灰色が外側の縁、濃い灰色が塗り)。Tile Set Editorのページは、GameMakerは左上のセルを「空」のタイルとして使うため、そこは常に空でなければならないと補足しています。つまりオートタイルはプロジェクト内に保存される枠 → タイルの割り当てで、GameMakerの外に出るのはPNGだけです。

そのためNerulioが読めるのは、タイルがテンプレートの順序で並んだシートです。GameMakerのテンプレートシートや「GameMaker向け」のパックの多くはこのように描かれています。隣り合うタイルがどれだけ滑らかにつながるかで、この順序(とほかの公開された47の並びすべて)を採点します。スプライトが別の並びで、オートタイルライブラリが対応づけを担っている場合、順序はピクセルにありません。認識された別の配置を使うか、ビットを手で塗ってください。

Godotには決まった順序は要りません。タイルごとに自分の地形とピアリングビットを持つので、シートはGameMakerの配置のままで、TileSetにはどのアトラスセルがどの近傍を担うかだけを記録します。

オートタイルライブラリ
タイルセットアセット内のGameMakerのオートタイルのリスト。テンプレートの枠とタイルを対応づけます。
47タイルテンプレート
角+辺のオートタイル用のGameMakerの枠の順序。シートの0番セルは空です。
Match Corners and Sides
8方向すべてを合わせるGodot 4のモード。47タイルのセットに相当します。
cr31マスク
テンプレートの各セルが表す近傍マスク(N 1 … NW 128)。ビットを書くときに使います。

例:GameMakerのテンプレートのセルをGodotのタイルに

64pxのセル8 × 6 → 512 × 384pxのシート;セル(0,0)は空
セル(7,5)  全面タイル    マスク255   ピアリングビット8個
セル(6,5)  孤立タイル    マスク0     ピアリングビットなし
セル(0,2)  マスク31 = N NE E SE S   → top_side, top_right_corner, right_side,
                                      bottom_right_corner, bottom_side = 0
セル(1,0)  マスク127 = NW以外すべて → 4辺 + 3角:左上に内角
シート全体  タイル47、ピアリングビット188、Match Corners and Sidesの地形セット1つ

nerulio-tileset.jsonのアトラス座標はそのセルそのものなので、セル(0,2)はちょうどその5ビットを持つ"atlas":{"x":0,"y":2}になります。

何がどこに対応するか

GameMakerNerulioGodot 4
タイルセットのスプライト(固定グリッド、左上セルは空)ピクセルからグリッドを測り、47の配置がぴったり合うサイズを上位に同じタイルサイズ・余白・間隔のTileSetAtlasSource
47タイルテンプレートの枠枠の近傍マスク → そのタイルの地形パターンタイルの地形0とピアリングビット
タイルセットアセットのオートタイルライブラリ読まない:PNGだけを取り込む—
ルームエディターでオートタイルブラシで塗るGodotルール(set_cells_terrain_connectの移植)で塗るテストマップConnectモードのTerrainsタブ、またはset_cells_terrain_connect()
Open Or Closed Edgesボタン適用しない:塗った範囲の外は空地形の外のセルは空なので、端に縁が付く
16タイルのオートタイルGameMakerの配置としては認識しない(edge16やcorner16に合う場合はある)配置が合えばMatch SidesかMatch Corners
GMLで書いた衝突任意:タイルのアルファからポリゴンを取るタイルごとにポリゴン1つの物理レイヤー0

できること

  • タイルの縁が隣へどうつながるかで配置を判定。GameMaker 47のテンプレートは高信頼(AUC 1.000、ビット47/47)、同じ配置の実際の64px洞窟プラットフォーマーの絵は中信頼(0.964)で、47タイルのビットはすべて正解。
  • ピクセルからグリッド候補を測り、47配置がぴったり合うサイズを上位に。「このグリッドを使う」までは点線のプレビュー。
  • チェックパネル:あるべき組み合わせと実際の組み合わせ、欠けたものはゴーストタイルで表示、重複、ビットと絵の食い違い。
  • テストマップ(M)はGodotのルール(set_cells_terrain_connectの移植)かTiledのルールで描画。これらのセットでGodot 4.7.2はテストセル485個をすべて予測どおりに塗りました。
  • GameMakerの配置は47タイルだけを認識。16タイルの配置はStudioが知る公開配置12種に含まれません。

使い方

  1. タイル作業画面を開き、GameMakerのオートタイルシートをドロップ。
  2. グリッド候補を見て「このグリッドを使う」を押す。
  3. 認識されたGameMaker 47の配置を受け入れて「適用」(取り消しは1回)。
  4. チェックパネルを確認し、GodotかTiledのルールでテストマップ(M)を塗ってみる。
  5. Godot 4、Tiled、Unity、LDtkのいずれかで書き出し。

出力されるファイル

1つのZIPに、対象ごとのフォルダーが1つずつ入ります(cave.pngというシートの場合)。

ファイル用途
godot/nerulio-tileset.json + nerulio_tileset_import.gdGodot 4のTileSetを作ります:タイル47、ピアリングビット188、Match Corners and Sides。
tiled/cave.tsx + sample.tmx混合Wangセット(印付きタイル46、孤立タイルは色なし)とサンプルマップ。
unity/nerulio-ruletile.json + Editor/NerulioRuleTileImporter.csルール47個のRuleTile 1つ。
ldtk/cave.ldtkIntGridレイヤーのオートレイヤールール47個(一部検証)。

GameMakerのシートからGodotのマップへ

  1. Godot 4にチェックして書き出し、PNG、nerulio-tileset.json、nerulio_tileset_import.gdをプロジェクトのルートにコピーします(またはスクリプトのJSON_PATH・OUTPUT_PATHを設定)。
  2. PNGの取り込み後、File › Runでスクリプトを実行します。出力パネルにタイル47とピアリングビット188と出るはずです。
  3. TileMapLayerのTile Setプロパティにnerulio-tileset.tresを設定します。
  4. GameMakerのオートタイルブラシに最も近いTerrainsタブのConnectモードで塗るか、コードからset_cells_terrain_connect(cells, 0, 0)を呼びます。
  5. ルームの境界でGameMakerの「閉じた端」のように見せたいなら、見える範囲より1セル外まで地形を塗り、境界のセルにも隣があるようにすると縁が付きません。

結果の確認

  • 出力行にタイル47と出て、TileSetエディターでアトラスセル(0,0)にはタイルがありません。
  • 3 × 3の範囲、孤立した1セル、L字を塗ります。異なるタイル9枚、セル(6,5)の孤立タイル、内角が出るはずで、GameMakerのルームエディターが置くパーツと同じです。
  • Studioのテストマップで同じ形をGodotルールで塗ります。私たちの実行では、Godot 4.7.2とセル単位で一致しました。

GameMakerの47タイルシートの行き先

書き出し先ファイル確認方法
Godot 4PNG、nerulio-tileset.json、ピアリングビット付きTileSetを作るnerulio_tileset_import.gd検証済み:Godot 4.7.2がテストセル485/485を予測どおりに塗る
TiledWangセット入りの.tsxとsample.tmx検証済み:Tiled 1.12.2で読み込み(地形ブラシは操作せず)
Unity 6 Rule TileJSONとEditor/NerulioRuleTileImporter.cs、地形ごとにRuleTile 1つ検証済み:2D Tilemap Extras 8.0.3、blobセットで485/485
LDtk 1.5.3IntGrid、タイルごとの3×3ルール、サンプルレベル入りの.ldtk一部検証:スキーマ・公式ローダー・ルール再実行、LDtkアプリでは未確認
汎用PNGとJSONプレーンなファイル
GameMaker書き出しなし未検証:GameMakerは動かしていない

トラブルシューティング

症状考えられる原因確認方法対処
配置の候補に「GameMaker 47」がないスプライトがテンプレート順でない(オートタイルライブラリが対応づけている)、またはグリッドがずれている配置の候補と「at col,row」の位置GameMakerで使ったグリッド(Tile Set Propertiesのタイルサイズ・オフセット・間隔)を使う、認識された別の配置を適用する、またはビットを手で塗る
Godotで内角が違う場所に出る配置が1セルずれて適用された(シートに余分な行や列がある)候補と一緒に表示される位置正しい位置で候補を適用して書き出し直す
16タイルのGameMakerシートがGameMakerとして認識されない既知のGameMakerの並びは47タイルだけ候補がedge16・corner16だけ、または何もない合う16の配置を適用するか、辺のビットを手で塗る
GameMakerではなかった縁がマップの端に出るGameMakerの閉じた端のオプションに当たる設定がTileSetにない縁がマップの端にだけある端の外まで1セル多く地形を塗る
Godotでタイルの間に継ぎ目が見えるスプライトに、グリッドが知らないオフセットやタイル間隔(GameMakerのTile Set Properties)があるタイルセットパネルの余白と間隔グリッドの余白と間隔をスプライトの実際の配置に合わせて書き出し直す

ほかの方法

方法こんなときに向いています
GodotのTileSetエディターでビットを手で割り当てるセットが小さいとき、または並びをGameMakerのオートタイルライブラリだけが知っているスプライトのとき。
レベル作業はGameMakerに残すGameMakerを使い続けるとき。ここではGameMakerのファイルは書きません。
Tiledを経由する:TiledのWangセットまずTiledでマップを塗り、後で1つ以上のエンジンへ持っていきたいとき。

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

「検証済み」は、実際の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はブロブ・辺セットの塗った全セルで一致。

制限

  • 認識するのはGameMakerの47タイルの並びだけです。16タイルの並びは既知の配置にありません。
  • GameMakerへ戻す書き出しはなく、どのチェックでもGameMakerは実行していません。
  • オートタイルライブラリそのもの(.yyアセットの枠の割り当て)は読みません。
  • Tiledの地形ブラシ、LDtkアプリ、Godotエディターでの塗りは操作していません。検証はエンジンの読み込み機能とset_cells_terrain_connectで行いました。
  • Unityへはブロブ・辺タイルセットのみ。地形が複数あると、互いにつながらないRule Tileが複数になります。
  • アイソメトリック・六角タイル、アニメーションタイル、オクルージョン・ナビゲーションレイヤーは対象外です。
  • 既知の配置なしでビットを提案するには基準となる「塗りつぶし」タイルが必要です。辺だけの道テンプレートでは、そのタイルを選ぶまで推定を誤ることがあります。

バージョンと出典

GameMakerの47テンプレートは高い信頼度(継ぎ目のAUC 1.000、ビット47/47)で、同じ並びの実在する64pxの洞窟プラットフォーマーの絵は中程度の信頼度(0.964、ビット47/47)で認識されました。どちらもGodot 4.7.2がテストセル485個中485個を予測どおりに塗り、Tiled・LDtk・Unityの書き出しもチェックを通りました。GameMakerに関する記述はGameMakerのマニュアルに基づきます。

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

よくある質問

GameMakerの16タイルのテンプレートも使えますか?

GameMakerの配置としては使えません。認識するのは47タイルだけです。16タイルのシートがedge16やcorner16など別の公開配置に合うことはあり、Studioは見つけた配置を信頼度付きで示します。ビットはいつでも手で塗れます。

絵がテンプレートと同じでないとだめですか?

いいえ。テンプレートの画像と比べるのではなく、縁がタイルをまたいでどうつながるかで判定します。質感のある洞窟の絵でも0.964(中)で、ビットはすべて正解でした。

結果をGameMakerに戻せますか?

GameMaker用のタイルセット書き出しはなく、GameMaker内での確認もしていません。書き出し先はGodot 4、Tiled、Unity、LDtkと、汎用のPNG・JSONです。

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

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

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

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

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

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