오토타일 테스트 · Godot 규칙으로 테스트 맵 칠하기
새 테스트 맵은 섬·호수·반도가 그려진 채로 시작해 오토타일이 바로 보입니다. Godot 4 지형 매칭을 옮긴 규칙이나 Tiled의 정확한 Wang 매칭으로 그리므로, 보이는 그대로 엔진이 배치합니다.
오토타일 세트는 시트에서는 다 갖춘 것처럼 보여도 실제 맵에서는 구멍이 날 수 있습니다. 엔진은 맵이 만들어 내는 이웃 패턴마다 타일이 한 장씩 필요하기 때문입니다. 테스트 도구는 테스트 맵을 칠하고 엔진과 같은 방식으로 풉니다. 고도 4의 set_cells_terrain_connect를 옮긴 규칙(비교한 모든 칸에서 Godot 4.7.2와 같았음) 또는 Tiled의 정확한 Wang 매칭입니다. 엔진이 비워 두거나, 다른 타일로 대신하거나, 맞출 수 없는 칸마다 윤곽선을 치고 필요한 패턴을 알려 줍니다. 타일셋을 진단할 뿐 그림을 고쳐 주지는 않으며, 엔진 자체의 편집기도 아닙니다.

- 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
엔진이 엉뚱한 타일을 놓거나 아무것도 놓지 않는 이유
빠진 조합. 47장 세트에서 한 장이 모자라면 대부분의 맵에서는 문제가 없다가, 그 타일이 필요한 모양에서만 정확히 실패합니다. 대개 호수의 안쪽 모서리입니다. 이때 고도는 비트가 가장 잘 맞는 타일을 놓거나 칸을 비워 두고, Tiled는 정확히 맞는 타일이 없으며, 유니티는 룰 타일의 기본 스프라이트를 그립니다.
잘못된 비트. 배치에서 두 타일이 뒤바뀌었거나 비트를 엉뚱한 변에 칠했다면 엔진은 비트를 따릅니다. 비트가 요구하는 타일을 놓으므로 땅이 이어지는 곳에 테두리가 보입니다.
그 모양을 그릴 수 없는 세트. 9장짜리 3×3 박스는 변만 보고, 변 조합 16가지 중 9가지만 다룹니다. 한 칸 폭의 줄, 끝부분, 외딴 타일은 구조상 타일이 없습니다.
엔진마다 다른 규칙. Tiled는 Wang ID가 모두 0인 타일을 버립니다. 그래서 한 가지 색 블롭 세트의 외딴 타일은 기록되지 않고 Tiled는 그 타일을 놓을 수 없습니다. 고도 편집기는 한 획씩 칠하며 결과가 획의 순서에 따라 달라집니다. 테스트 도구는 지형마다 한 번, 행 순서로 칠한 결과를 보여 줍니다. 스크립트에서 set_cells_terrain_connect를 부르는 것과 같은 방식입니다.
- 빈칸(고도 규칙)
- 칠한 칸인데 맞는 타일이 없어 엔진이 비워 두는 칸.
- 잘못됨(고도 규칙)
- 엔진이 이웃과 비트가 맞지 않는 타일을 대신 놓은 칸.
- 틈(Tiled 규칙)
- 이웃이 요구하는 Wang 색과 정확히 같은 타일이 없는 칸.
예시: 호수가 필요로 하는 타일
시작 맵은 호수가 있는 섬입니다. 호수의 오른쪽 아래 물 칸에서 대각선 오른쪽 아래에 있는 땅 칸을 봅시다.
이웃 NW = 물, 나머지 7칸 = 땅
원래 마스크 N1 + NE2 + E4 + SE8 + S16 + SW32 + W64 = 127
줄인 마스크 127 (NE, SE, SW는 양옆 변이 모두 땅이라 셈에 들어감)
필요한 타일 안쪽 모서리 "N E S W · NE SE SW"
같은 호수는 253(NE 열림), 247(SE 열림), 223(SW 열림)도 필요: 모서리마다 하나
127이 없는 세트 고도 규칙 → 그 칸에 윤곽선(빈칸 또는 잘못됨) Tiled 규칙 → 틈
해결 그 타일 한 장을 그리거나 세트를 생성하면 윤곽선이 사라짐네모난 호수는 안쪽 모서리 네 개를 모두 요구하므로, 그중 하나라도 빠진 세트는 처음 그린 호수에서 바로 드러납니다. 시작 맵에 호수가 있는 이유입니다.
같은 상황에서 엔진마다 하는 일
| 맵의 상황 | 고도 4(고도 규칙) | Tiled(Tiled 규칙) | 유니티 룰 타일 |
|---|---|---|---|
| 세트에 그 조합이 있음 | 그 피어링 비트를 가진 타일 | 그 Wang ID를 가진 타일 | 맞는 타일링 규칙 |
| 세트에 그 조합이 없음 | 가장 잘 맞는 대체 타일 또는 빈칸: 잘못됨·빈칸으로 표시 | 정확한 타일 없음: 틈으로 표시 | 기본 스프라이트를 그림 |
| 외딴 칸, 한 가지 색 블롭 세트 | 외딴 타일 | 외딴 타일이 기록되지 않음(Wang ID가 모두 0): 표시됨 | 자기 규칙으로 그림. 블롭 세트는 유니티 6에서 모든 칸이 일치 |
| 모서리(듀얼 그리드) 세트 | 일반 칸 위의 Match Corners 지형 | 격자점 위의 타일, 반 칸 밀린 레이어 | 내보내지 않음: 룰 타일은 칸 위에 그림 |
| 두 지형이 만남 | 그림에 있다면 가장 잘 맞는 전환 타일 | Wang 색이 이웃과 같은 타일 | 지형마다 룰 타일 하나, 지형 사이 전환 없음 |
| 칠하는 순서 | 편집기 결과는 획 순서에 따라 달라짐. 테스트 도구는 지형마다 한 번, 행 순서로 칠함 | 정확한 매칭이라 순서와 무관 | — |
고도 규칙은 엔진의 매칭을 옮긴 것으로, 코퍼스의 모든 맵에서 Godot 4.7.2와 칸 단위로 같았습니다. Tiled 규칙은 내보낸 sample.tmx가 쓰는 정확한 Wang 조회입니다(전환 타일을 끼워 넣을 수 있는 Tiled의 대화형 지형 브러시는 조작하지 않았습니다). 유니티의 동작은 유니티 6 검증 실행 결과입니다.
이렇게 작동합니다
- Godot 규칙: 테스트 코퍼스에서 Godot 4.7.2와 칸 단위로 일치한 set_cells_terrain_connect 이식.
- Tiled 규칙: 정확한 Wang 매칭, 모서리 세트는 반 칸 어긋난 격자점 기준.
- 엔진이 비워 두거나 다른 타일로 대체하는 칸은 윤곽선과 목록으로 표시되고, 칸에 마우스를 올리면 어떤 타일인지와 이유가 보입니다.
- 크기 조절 브러시, 지우개, 채우기, 스포이트, 무작위 채우기, 타일셋이 따로 있는 맵 레이어.
사용 방법
- 타일셋을 넣고 배치를 적용합니다(또는 비트를 칠합니다).
- M으로 맵을 열고 P로 칠하고 E로 지우고 G로 채웁니다.
- Godot 규칙과 Tiled 규칙을 바꿔 비교합니다.
- 타일셋에서 빠진 타일을 고친 뒤 내보냅니다.
세트가 준비됐는지
- 시작 섬에서 고도 규칙과 Tiled 규칙 모두 윤곽선 칸이 없어야 합니다(위에서 말한 외딴 칸 제외).
- 까다로운 모양을 일부러 칠해 봅니다. 한 칸, 한 칸 폭 통로, 모서리로만 닿은 두 칸, 2×2 덩어리, 호수. 그다음 무작위 채우기를 몇 번 합니다. 남는 윤곽선이 고칠 것입니다.
- 점검 패널이 완료라고 하고, 맵 아래 문제 칸 수가 0입니다.
- 엔진에서 같은 모양을 한 번 칠해 봅니다. 타일이 테스트 맵과 같아야 합니다.
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| 호수마다 안쪽 모서리에 윤곽선 | 안쪽 모서리 타일(마스크 127, 253, 247, 223)이 없거나 비트가 틀림 | 윤곽선 칸에 마우스를 올리면 필요한 패턴이 나옴. 점검 패널에도 같은 마스크가 반투명 타일로 나옴 | 그 타일들을 그리거나 기본 블록에서 생성. 세트에 들어가는 즉시 윤곽선이 사라짐 |
| "잘못됨" 칸: 땅이 이어지는데 고도가 테두리 있는 타일을 놓음 | 두 타일이 뒤바뀌었거나 비트 하나가 엉뚱한 변에 있음 | 마우스를 올리면 놓인 타일과 그 비트가 필요한 패턴 옆에 나옴 | 그 타일의 비트(3×3 비트 편집기)나 시트 순서를 고침 |
| Tiled 규칙에서만 외딴 칸이 표시됨 | Tiled는 한 가지 색 블롭 세트의 외딴 타일(Wang ID가 모두 0)을 버림 | 고도 규칙으로 바꾸면 같은 칸이 정상 | Tiled 맵에서는 외딴 칸을 피하거나, 열린 변에 지형 B가 들어가는 A 위 B 세트를 만듦 |
| 한 칸 폭 길과 끝부분이 깨짐 | 세트가 9장짜리 3×3 박스: 변 조합 16가지 중 7가지는 들어갈 수 없음 | 점검 패널: 변 조합 7개 부족 | 변 타일 16장이나 블롭 47장 세트를 사용. 47장 블롭 참고 |
| 고도 편집기가 테스트 도구와 다르게 칠함 | 편집기의 칠하기는 경로에 따라 달라짐: 획 순서가 다르면 다른 타일이 놓임 | 그 구역을 Connect 모드 한 획으로 다시 칠하거나 스크립트에서 set_cells_terrain_connect 호출 | 타일셋에서 고칠 것은 없음. 차이가 중요하면 그 구역을 한 획으로 칠함. 고도에서 틀린 타일 참고 |
| Tiled 규칙에서 모서리 세트가 반 칸 밀려 보임 | 모서리 세트는 격자점 위에 놓임: W × H 칸 맵에 (W+1) × (H+1) 타일 | 고도 규칙으로 바꾸면 타일이 칸 위로 돌아옴 | 정상. 내보낸 sample.tmx에도 같은 반 칸 레이어 오프셋이 들어감 |
다른 방법
| 방법 | 이럴 때 더 낫습니다 |
|---|---|
| 고도 TileMap 편집기(Terrains 탭)에서 바로 칠하기 | 세트가 작고 고도만 쓸 때. 획 순서의 영향까지 포함해 고도 자체의 결과를 중간 단계 없이 봅니다. |
| Tiled 지형 브러시로 칠하기 | 레벨을 Tiled에서 만들 때. 브러시는 도중에 전환 타일을 끼워 넣기도 하는데, 여기의 정확 매칭 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에서 블롭·변 세트의 칠한 모든 칸 일치.
한계
- 고도 편집기의 획 단위 칠하기와 Tiled의 대화형 브러시는 재현하지 않습니다. 지형마다 한 번 칠한 결과를 보여 줍니다.
- 테스트 맵은 최대 128 × 128칸입니다. LDtk 규칙은 내보내지만 맵에서 실시간 규칙으로 보여 주지는 않습니다.
- 그림이 어디서 모자란지 보여 줄 뿐 그려 주지는 않습니다(생성기는 기본 블록에서 세트를 조립할 수 있습니다).
- Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
- Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
- 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
- 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.
버전과 출처
Nerulio 검증(docs/STUDIO-TILE.md, 2026-09-23): 고도 규칙은 코퍼스 모든 맵의 칠한 모든 칸에서 Godot 4.7.2.stable.official과 같았고, 불완전한 세트와 여러 지형 세트에서 엔진이 고른 결과는 단위 테스트가 다시 재생합니다. Tiled 1.12.2는 Wang ID를 쓴 그대로 읽고 sample.tmx를 픽셀 단위로 똑같이 렌더링했습니다. Unity 6000.5.3f1은 Studio가 예측한 칸에 정확히 기본 스프라이트를 그렸습니다. 엔진 편집기에서의 동작은 링크한 공식 문서를 따릅니다.
참고한 공식 문서
자주 묻는 질문
Godot가 엉뚱한 타일을 놓는 이유는?
조합이 빠져 있으면 Godot는 가장 가까운 타일로 대체합니다. 테스트 맵은 그 칸을 표시하고 빠진 조합을 알려 주므로 어떤 타일을 그려야 할지 알 수 있습니다.
칠하는 순서에 따라 결과가 달라지나요?
Godot 매칭은 순서에 영향을 받습니다. 테스트 맵은 지형마다 한 번씩 행 순서로 칠한 결과(스크립트나 엔진 점검이 하는 방식)를 보여 줍니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).