GameMaker 오토타일을 Godot·Tiled·Unity로
GameMaker Studio 2의 47타일 오토타일 템플릿은 벽·가장자리·모서리마다 자리가 정해져 있고, 다른 엔진은 이 순서를 읽지 못합니다. 그 배치의 시트를 넣으면 타일 작업 공간이 타일 사이 이음새로 배치를 알아보고 지형 비트를 한 번에 넣은 뒤, 피어링 비트가 있는 Godot 4 TileSet, Tiled Wang 세트, 유니티 룰타일, 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 자체는 실행하지 않았습니다.

- 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타일 두 가지 오토타일을 제공하고, 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 지형 세트 하나nerulio-tileset.json의 아틀라스 좌표가 곧 그 칸이므로, (0,2) 칸은 딱 그 다섯 비트를 가진 "atlas":{"x":0,"y":2}가 됩니다.
무엇이 어디로 옮겨지나
| GameMaker | Nerulio | Godot 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로 짠 충돌 | 선택: 타일 알파에서 폴리곤을 땀 | 타일마다 폴리곤 하나가 든 물리 레이어 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종에 없습니다.
사용 방법
- 타일 작업 공간을 열고 GameMaker 오토타일 시트를 넣습니다.
- 격자 후보를 보고 이 격자 사용을 누릅니다.
- 알아본 GameMaker 47 배치를 받아들이고 적용을 누릅니다(실행 취소 한 번).
- 검사 패널을 본 뒤 Godot나 Tiled 규칙으로 테스트 맵(M)을 칠해 봅니다.
- Godot 4, Tiled, Unity, LDtk 중 하나로 내보냅니다.
받게 되는 파일
ZIP 하나에 대상마다 폴더가 하나씩 들어 있습니다(cave.png라는 시트 기준).
| 파일 | 용도 |
|---|---|
godot/nerulio-tileset.json + nerulio_tileset_import.gd | Godot 4 TileSet을 만듭니다: 타일 47개, 피어링 비트 188개, Match Corners and Sides. |
tiled/cave.tsx + sample.tmx | 혼합 Wang 세트(표시된 타일 46개, 고립 타일은 색이 없음)와 샘플 맵. |
unity/nerulio-ruletile.json + Editor/NerulioRuleTileImporter.cs | 규칙 47개짜리 RuleTile 하나. |
ldtk/cave.ldtk | IntGrid 레이어의 자동 레이어 규칙 47개(일부 검증). |
GameMaker 시트에서 Godot 맵까지
- Godot 4를 체크해 내보내고 PNG,
nerulio-tileset.json,nerulio_tileset_import.gd를 프로젝트 루트에 복사합니다(또는 스크립트의JSON_PATH·OUTPUT_PATH설정). - PNG를 가져온 뒤 File › Run으로 스크립트를 실행합니다. 출력 패널에 타일 47개와 피어링 비트 188개가 나와야 합니다.
TileMapLayer의 Tile Set 속성에nerulio-tileset.tres를 넣습니다.- GameMaker 오토타일 브러시에 가장 가까운 Terrains 탭의 Connect 모드로 칠하거나, 코드에서
set_cells_terrain_connect(cells, 0, 0)를 부릅니다. - 룸 경계에서 GameMaker의 "닫힌 가장자리"처럼 보이게 하려면, 보이는 영역보다 한 칸 더 지형을 칠해 경계 칸에도 이웃이 있게 하면 테두리가 생기지 않습니다.
결과 확인
- 출력 줄에 타일 47개가 나오고, TileSet 편집기에서 (0,0) 아틀라스 칸에는 타일이 없습니다.
- 3 × 3 영역, 외딴 한 칸, ㄱ자 모양을 칠합니다. 서로 다른 타일 9개, (6,5) 칸의 고립 타일, 안쪽 모서리가 나와야 하며 GameMaker 룸 편집기가 놓을 조각과 같습니다.
- Studio 테스트 맵에서 같은 모양을 Godot 규칙으로 칠해 봅니다. 저희 실행에서 Godot 4.7.2는 칸 단위로 같았습니다.
GameMaker 47타일 시트를 보낼 수 있는 곳
| 대상 | 파일 | 확인 방법 |
|---|---|---|
| Godot 4 | PNG, nerulio-tileset.json, 피어링 비트가 있는 TileSet을 만드는 nerulio_tileset_import.gd | 검증: Godot 4.7.2가 테스트 칸 485/485를 예측대로 칠함 |
| Tiled | Wang 세트가 든 .tsx와 sample.tmx | 검증: Tiled 1.12.2에서 열림(지형 브러시는 조작하지 않음) |
| Unity 6 룰타일 | JSON과 Editor/NerulioRuleTileImporter.cs, 지형마다 RuleTile 하나 | 검증: 2D Tilemap Extras 8.0.3, blob 세트 485/485 |
| LDtk 1.5.3 | IntGrid, 타일마다 3×3 규칙 하나, 샘플 레벨이 든 .ldtk | 일부 검증: 스키마·공식 로더·규칙 재실행, LDtk 앱에서는 열지 않음 |
| 범용 | PNG와 JSON | 일반 파일 |
| GameMaker | 내보내기 없음 | 미검증: GameMaker는 실행하지 않음 |
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| 배치 후보에 "GameMaker 47"이 없음 | 스프라이트가 템플릿 순서가 아니거나(오토타일 라이브러리가 연결을 맡음) 격자가 어긋남 | 배치 후보와 "at col,row" 위치 | GameMaker에서 쓴 격자(Tile Set Properties의 타일 크기·오프셋·간격)를 쓰거나, 인식된 다른 배치를 적용하거나, 비트를 직접 칠하기 |
| Godot에서 안쪽 모서리가 엉뚱한 곳에 나옴 | 배치가 한 칸 어긋나게 적용됨(시트에 행이나 열이 더 있음) | 후보와 함께 표시되는 위치 | 올바른 위치로 후보를 적용해 다시 내보내기 |
| 16타일 GameMaker 시트가 GameMaker로 인식되지 않음 | 알고 있는 GameMaker 순서는 47타일뿐 | 후보에 edge16·corner16만 있거나 아무것도 없음 | 맞는 16 배치를 적용하거나 변 비트를 직접 칠하기 |
| GameMaker에서는 없던 테두리가 맵 경계에 생김 | GameMaker의 닫힌 가장자리 옵션에 해당하는 설정이 TileSet에 없음 | 맵 경계에만 테두리가 있음 | 가장자리 밖으로 한 칸 더 지형을 칠하기 |
| Godot에서 타일 사이에 이음새가 보임 | 스프라이트에 격자가 모르는 오프셋이나 타일 간격(GameMaker Tile Set Properties)이 있음 | 타일셋 패널의 여백과 간격 | 격자의 여백과 간격을 스프라이트의 실제 배치에 맞추고 다시 내보내기 |
다른 방법
| 방법 | 이럴 때 더 낫습니다 |
|---|---|
| Godot TileSet 편집기에서 비트를 직접 지정 | 세트가 작거나, 순서를 GameMaker 오토타일 라이브러리만 알고 있는 스프라이트일 때. |
| 레벨 작업은 GameMaker에 그대로 두기 | GameMaker를 계속 쓸 때. 여기서는 GameMaker 파일을 쓰지 않습니다. |
| Tiled를 거치기: Tiled Wang 세트 | 먼저 Tiled에서 맵을 칠하고 나중에 여러 엔진으로 가져가고 싶을 때. |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 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에서 블롭·변 세트의 칠한 모든 칸 일치.
한계
- 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 타일셋은 작은 편집기 스크립트).