고도 지형 타일이 이상할 때 · 빠진 조합 찾기
Godot 4 지형이 엉뚱한 타일을 놓거나 칸을 비워 두는 원인은 대개 그 이웃 모양에 맞는 타일이 타일셋에 없거나, 타일의 피어링 비트가 잘못 찍혀 있기 때문입니다. 그러면 Godot는 가장 가까운 타일로 대신하거나 칸을 비우고, 칠하는 순서에 따라 결과가 달라지기도 합니다.
Godot 4 지형이 틀린 타일을 칠하거나 칸을 비워 두는 이유는 네 가지입니다. 지형 세트에 그 이웃 조합용 타일이 없거나(대개 고립 타일, 한 칸 너비 띠, 안쪽 모서리), 세트의 매칭 모드가 그림과 맞지 않거나, 타일의 피어링 비트가 틀린 위치나 지형을 가리키거나, 타일과 브러시가 서로 다른 지형 세트에 있는 경우입니다. Godot는 경고 없이 가장 가까운 패턴을 고르며 그것이 빈 패턴일 수도 있습니다. 아래 표 순서대로 확인하세요. 앞의 세 가지는 Godot를 열기 전에 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
Godot가 타일을 고르는 방식과 틀어지는 이유
Terrains 탭이나 set_cells_terrain_connect로 칠하면, Godot는 칠한 칸의 가운데·변·모서리에 제약을 걸고 칸을 하나씩 풉니다. 칠한 칸은 역순으로, 그다음 이웃 칸입니다. 칸마다 지형 세트의 모든 패턴과 항상 있는 빈 패턴의 점수를 매겨 가장 낮은 것을 고릅니다. TileMapLayer 레퍼런스는 조건을 밝힙니다. TileSet에 "필요한 모든 지형 조합"이 있어야 하며 "그렇지 않으면 예상치 못한 결과가 나올 수 있다"고 합니다.
가장 큰 원인은 빠진 조합입니다. 빈칸을 상대로 한 지형 하나에 Match Corners and Sides는 47개, Match Sides는 16개, Match Corners는 16개가 필요하고, 지형 쌍에는 전환 타일이 더 필요합니다. 흔히 빠지는 것은 고립 타일, 변 세트의 막다른 끝 4개와 직선 2개(3 × 3 상자는 16개 중 9개뿐), 그리고 안쪽 모서리입니다. 두 번째 원인은 모드입니다. 블롭 그림을 Match Sides로 두면 47타일이 16패턴으로 뭉쳐, 안쪽 모서리가 다른 타일들이 Godot가 무작위로 고르는 중복이 됩니다.
나머지 둘은 데이터 오류입니다. Godot 문서에 따르면 Terrain Set과 Terrain 번호는 0부터 시작하고 −1은 없음입니다. Terrain Set이 −1로 남은 타일이나, 세트 0을 칠하는데 세트 1에 있는 타일은 선택되지 않습니다. 피어링 비트가 틀린 변에 있거나 지형 0 대신 1을 가리키면, 그 타일은 어떤 맵에도 나오지 않는 조합에만 맞게 됩니다. Nerulio는 기존 .tres를 열어 고치지 못하며, 이미지와 올바른 비트로 TileSet을 새로 만듭니다.
- 빈 패턴
- Godot가 항상 고려하는 "타일 없음" 후보. 다른 것이 충분히 맞지 않으면 이것이 이깁니다.
- 필요한 조합
- 모드별로 맵이 요구할 수 있는 모든 이웃 조합. 빈칸 상대 지형 하나에 47, 16, 16.
- 중복 패턴
- 지형과 비트가 같은 두 타일. Godot는 확률로 그중 하나를 고릅니다.
- 열린 변 뒤의 모서리 비트
- 옆 변이 열려 있는데 켜진 모서리 비트. 어떤 맵도 요구하지 않으므로 그 타일은 쓰이지 않습니다.
예시: 불완전한 세트에서 Godot가 하는 일(Godot 규칙, 4.7.2와 같음)
고립 타일이 없는 블롭 세트, 한 칸만 칠함
set_cells_terrain_connect([Vector2i(1, 1)], 0, 0) → 칸이 빈 채로 남음
Match Sides의 3 × 3 상자(변 타일 16개 중 9개), 가로 4칸 띠
→ 4칸 모두 빈칸: 위아래가 열린 타일이 없음
마스크 223이 없는 블롭 세트, 맵 X X X
X C X C가 원하는 것 N NE E SE S W NW = 223
. X X Godot는 215를 그림: 왼쪽 아래와 오른쪽 아래 모두 안쪽 모서리
Match Sides의 블롭 그림 → 타일 47개가 변 패턴 16개에, 31개가 다른 타일과 중복세 번째 경우 맵이 꽉 찬 C의 오른쪽 아래에 안쪽 모서리가 하나 더 생깁니다. 사람들이 말하는 전형적인 "틀린 모서리"입니다.
이렇게 작동합니다
- 검사 패널이 지형마다 있는 조합과 필요한 조합을 세고, 빠진 조합은 유령 타일로 그려 무엇을 더 그려야 하는지 보여 줍니다.
- 같은 비트를 가진 중복 타일은 클릭할 수 있는 목록으로, 열린 변 뒤에 모서리 비트가 찍힌 타일(어떤 맵도 요구하지 않는 조합)은 따로 셉니다.
- 그림 대 비트 검사는 타일 가장자리 픽셀과 비트를 비교합니다. 코퍼스에서 일부러 바꿔 놓은 타일 두 개를 정확히 찾았고, 잘못 짚은 타일은 없었습니다.
- 테스트 맵의 Godot 규칙은 set_cells_terrain_connect를 옮긴 것으로 Godot 4.7.2와 칸마다 같았습니다. 빈 칸과 대체된 칸은 테두리로 표시되고, 마우스를 올리면 어떤 타일이 왜 들어갔는지 나옵니다.
- 빠진 조합이 너무 많으면 생성기가 작은 원본 블록(알만툴 A2, Blobsmith 베이스, A4 벽, 5타일, 절차적 테두리)으로 블롭 47이나 듀얼 그리드 16 세트를 통째로 조립합니다.
사용 방법
- 타일 작업 공간에 타일셋 PNG를 넣고 “이 격자 사용”을 누릅니다.
- 인식된 레이아웃을 적용하고, 맞는 레이아웃이 없으면 B로 비트를 칠합니다.
- 검사 패널에서 표시된 비트를 고친 뒤, 유령 타일로 나온 조합을 그리거나 생성합니다.
- M으로 테스트 맵을 열고 Godot 규칙 그대로 칠해 테두리 표시가 사라질 때까지 확인합니다.
- Godot 4로 내보내고 nerulio_tileset_import.gd를 실행해 고친 비트로 TileSet을 다시 만듭니다.
결과 확인
- 외딴 한 칸, 한 칸 너비 띠, 3 × 3 사각형, ㄱ자 안쪽 모서리가 든 시험 모양을 칠합니다. 모든 칸에 가장자리가 이어진 타일이 보여야 합니다.
- 코드에서는 빈칸으로 남은 칸에 대해
get_cell_source_id(coords)가 −1을 돌려줍니다. 칠한 칸을 돌며 남은 칸을 찾으세요. - Studio 점검 패널이 모든 조합에 타일이 하나씩 있고 잘못된 비트가 없다고 하며, Godot 규칙 테스트 맵에 표시된 칸이 없어야 합니다.
Godot 지형 타일 오류: 증상·원인·해결
| 증상 | 흔한 원인 | Studio에서 고치기 |
|---|---|---|
| 안쪽 모서리나 갈림길에 가장자리가 틀린 타일 | 그 이웃 모양의 타일이 없어 가장 가까운 타일로 대체 | 검사 패널의 유령 타일을 그리거나 생성기로 세트 재구성 |
| 칠한 칸이 비어 있음 | 어떤 타일도 이웃 모양에 맞지 않음 | 테스트 맵(Godot 규칙)이 빈 칸을 표시하고 빠진 조합을 알려 줌 |
| 같은 자리에 두 타일이 무작위로 번갈아 나옴 | 비트가 같은 타일이 둘, 확률로 선택됨 | 중복 목록에서 하나만 남기거나, 변형이면 확률 지정 |
| 타일이 있는데 한 번도 쓰이지 않음 | 열린 변 뒤에 모서리 비트가 찍혀 있음 | 3×3 비트 편집기에서 그 모서리 비트를 지움 |
| 비트는 맞아 보이는데 이음새가 보임 | 비트와 그림이 어긋남(타일 두 개가 뒤바뀜 등) | 그림 대 비트 검사가 두 타일을 표시, 고치거나 레이아웃 재적용 |
| 칠하는 순서에 따라 결과가 바뀜 | Godot 매칭이 경로에 의존 | 지형마다 한 번씩 행 순서로 칠하기(테스트 맵과 같은 방식) |
코퍼스 결과: Godot 4.7.2가 모든 시험 칸을 Studio 예측대로 칠했습니다(블롭 세트마다 485/485, 4지형 듀얼 그리드 팩 251/251).
문제 해결
이 순서로 원인을 확인하세요. 행마다 Godot에서, 도움이 되면 Studio에서 확인하는 방법을 적었습니다.
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| 한 칸만 칠하면 빈칸으로 남음 | 세트에 고립 타일(마스크 0)이 없음 | TileSet 편집기: 피어링 비트 8개가 모두 −1인 지형 타일이 있는지. Studio 점검 패널에는 빠진 것으로 표시 | 그리거나, 바깥 모서리 네 개가 들어간 세트를 생성 |
| 한 칸 너비 길이나 띠가 비거나 테두리가 생김 | 3 × 3 상자 9타일뿐인 변 세트라 막다른 끝과 직선이 없음 | 지형 타일 개수 세기: Match Sides는 16개 필요 | 빠진 변 타일 7개를 추가하거나 16개 전체를 생성 |
| 안쪽 모서리가 엉뚱한 쪽에 나옴 | 세트에 그 안쪽 모서리 조합이 없어 Godot가 가장 가까운 타일로 대체 | Studio 테스트 맵(Godot 규칙)이 대체된 칸을 표시하고 빠진 패턴을 알려 줌 | 빠진 모서리 타일 그리기 |
| 같은 모양의 자리에 서로 다른 타일이 놓이고 안쪽 모서리가 무시됨 | 그림에 비해 매칭 모드가 거침(블롭 세트를 Match Sides로) | TileSet 인스펙터 › Terrain Sets › Mode | 47타일 그림은 Match Corners and Sides, 모서리 16 그림은 Match Corners |
| 그린 타일이 전혀 쓰이지 않음 | 피어링 비트가 틀린 위치(열린 변 뒤의 모서리)에 있거나 지형 번호가 틀림 | TileSet 편집기 › Select 모드 › 그 타일의 Terrains 섹션. Studio는 "열린 변 뒤의 모서리 비트"를 셈 | 비트를 지우거나 옮기기. 비트 값은 0부터 시작하는 지형 번호 |
| 브러시가 아무것도 안 칠하거나 특정 타일을 고르지 않음 | 타일의 Terrain Set이 −1이거나 Terrains 탭에서 고른 세트와 다른 세트에 있음 | 타일의 Terrain Set 값과 Terrains 탭에서 고른 세트 비교 | 그 지형의 타일을 모두 같은 지형 세트에 넣기 |
| 칠하는 순서에 따라 결과가 바뀜 | Godot가 칸을 차례로 풀기 때문에 세트의 빈 곳이 획마다 다르게 채워짐 | 같은 영역을 한 번에 칠할 때와 여러 획으로 칠할 때 비교 | 세트를 완성하기. 완전한 세트면 순서가 결과에 영향을 주지 않음 |
| 두 지형이 만나는 곳에 틈이 생김 | A와 B 사이의 전환 타일이 없음 | A–B 쌍에 대한 Studio 점검 패널 | A 위 B 전환을 생성하거나 그리기 |
다른 방법
| 방법 | 이럴 때 더 낫습니다 |
|---|---|
| TileSet 편집기에서 비트를 직접 고치기 | 나머지는 완전한 세트에서 틀린 타일이 한두 개일 때. |
| 이미지로 TileSet을 다시 만들기: Godot 4 오토타일 | 틀리거나 빠진 비트가 많거나 기존 .tres를 믿기 어려울 때. |
| Godot 전에 세트를 시험: 오토타일 테스터 | 아직 타일을 그리는 중이고 빈 곳을 바로바로 보고 싶을 때. |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 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에서 블롭·변 세트의 칠한 모든 칸 일치.
한계
- Nerulio는 기존
.tres를 열지 못합니다. 이미지와 비트로 TileSet을 새로 만드니, 비교할 때까지 예전 리소스를 보관하세요. - 없는 그림은 비트로 고칠 수 없습니다. 빠진 타일은 그리거나 생성해야 합니다.
- 불완전한 세트에서 Godot의 칠하기는 순서에 따라 달라집니다. Studio는 지형마다 행 단위로 한 번 채운 결과를 보여 줍니다.
- Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
- Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
- 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
- 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.
버전과 출처
Studio의 Godot 규칙은 Godot 4 지형 매칭을 이식한 것이며, 코퍼스에서 불완전한 세트와 여러 지형 세트의 대체 타일과 빈칸까지 포함해 Godot 4.7.2와 칸 단위로 같았습니다(테스트 고정 데이터로 기록). 위의 예시는 이 이식으로 계산했습니다. 지형 설정과 번호는 Godot 4.7 공식 문서를 따릅니다.
참고한 공식 문서
자주 묻는 질문
타일맵에 지형이 아예 안 나와요.
이웃 모양에 맞는 타일이 없으면 Godot는 칸을 비웁니다. 넓은 영역이 비어 있다면 맵이 요구하는 조합 대부분이 빠진 것입니다. 검사 패널의 조합 수와 테스트 맵의 빈 칸 표시로 얼마나 빠졌는지 확인하세요.
이미 만든 TileSet .tres를 열 수 있나요?
아니요. 타일셋 이미지에서 시작합니다. Godot 4로 내보내면 번들의 GDScript가 고친 지형 비트로 Godot 안에서 새 TileSet을 만듭니다. 둘을 비교해 볼 때까지 기존 리소스는 지우지 마세요.
듀얼 그리드(모서리) 세트가 Godot에서 반 칸 어긋나요.
Godot는 모서리 매칭 세트를 격자점이 아니라 칸 위에 그립니다. 듀얼 그리드에는 TileMapDual 같은 플러그인이 필요합니다. Godot 규칙은 Godot가 그리는 대로, Tiled 규칙은 반 칸 어긋난 Tiled 방식으로 보여 줍니다.
Godot 에디터의 지형 브러시로도 확인했나요?
아니요. 브러시가 내부에서 부르는 set_cells_terrain_connect를 Godot 4.7.2에서 실행해 칸마다 비교했고, 브러시 자체는 조작하지 않았습니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).