고도 지형 타일이 이상할 때 · 빠진 조합 찾기
Godot 4 지형이 엉뚱한 타일을 놓거나 칸을 비워 두는 원인은 대개 그 이웃 모양에 맞는 타일이 타일셋에 없거나, 타일의 피어링 비트가 잘못 찍혀 있기 때문입니다. 그러면 Godot는 가장 가까운 타일로 대신하거나 칸을 비우고, 칠하는 순서에 따라 결과가 달라지기도 합니다.

- 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 규칙은 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을 다시 만듭니다.
Godot 지형 타일 오류: 증상·원인·해결
| 증상 | 흔한 원인 | Studio에서 고치기 |
|---|---|---|
| 안쪽 모서리나 갈림길에 가장자리가 틀린 타일 | 그 이웃 모양의 타일이 없어 가장 가까운 타일로 대체 | 검사 패널의 유령 타일을 그리거나 생성기로 세트 재구성 |
| 칠한 칸이 비어 있음 | 어떤 타일도 이웃 모양에 맞지 않음 | 테스트 맵(Godot 규칙)이 빈 칸을 표시하고 빠진 조합을 알려 줌 |
| 같은 자리에 두 타일이 무작위로 번갈아 나옴 | 비트가 같은 타일이 둘, 확률로 선택됨 | 중복 목록에서 하나만 남기거나, 변형이면 확률 지정 |
| 타일이 있는데 한 번도 쓰이지 않음 | 열린 변 뒤에 모서리 비트가 찍혀 있음 | 3×3 비트 편집기에서 그 모서리 비트를 지움 |
| 비트는 맞아 보이는데 이음새가 보임 | 비트와 그림이 어긋남(타일 두 개가 뒤바뀜 등) | 그림 대 비트 검사가 두 타일을 표시, 고치거나 레이아웃 재적용 |
| 칠하는 순서에 따라 결과가 바뀜 | Godot 매칭이 경로에 의존 | 지형마다 한 번씩 행 순서로 칠하기(테스트 맵과 같은 방식) |
코퍼스 결과: Godot 4.7.2가 모든 시험 칸을 Studio 예측대로 칠했습니다(블롭 세트마다 485/485, 4지형 듀얼 그리드 팩 251/251).
엔진별 내보내기와 검증 방법
"검증됨"은 실제 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 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
- Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
- 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
- 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.
자주 묻는 질문
타일맵에 지형이 아예 안 나와요.
이웃 모양에 맞는 타일이 없으면 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 타일셋은 작은 편집기 스크립트).