듀얼 그리드 타일셋 · 47개 대신 16개, Godot·Tiled용
듀얼 그리드는 47개 블롭 타일 대신, 맵 격자에서 반 칸 어긋난 16개 모서리 타일로 그립니다. Studio는 듀얼 그리드 시트(한 팩에 여러 지형 포함)를 인식하고, 4분할 조각으로 생성하고, Godot 4와 Tiled로 내보냅니다.
듀얼 그리드는 지형은 맵의 칸에 두고, 타일은 칸 사이의 점, 즉 반 칸 어긋난 자리에 그립니다. 그려지는 타일 하나가 네 칸의 모서리를 하나씩 덮으므로, 그 네 칸 중 어느 칸이 지형인지만 알면 됩니다. 2⁴ = 16장이면 되고 블롭의 47장이 필요 없습니다. 대가는 반 칸 밀린 표시 레이어(W × H 칸 맵에 (W+1) × (H+1) 타일)와, 가장자리가 타일 한가운데를 지나도록 그린 그림입니다. Studio는 모서리 16장 시트(한 팩에 여러 지형 포함)를 인식하고, 블롭 세트와 같은 조각으로 생성하며, Godot 4 Match Corners 지형, Tiled 모서리 Wang 세트, LDtk 규칙으로 내보냅니다. 유니티 룰 타일에는 담을 수 없습니다.

- 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
격자를 반 칸 옮기면 16장으로 충분한 이유
블롭 세트에서는 한 칸의 타일이 그 칸의 네 조각을 모두 그려야 합니다. 조각마다 이웃 셋에 좌우되고(왼쪽 위 조각은 N, W, NW), 모양은 다섯 가지입니다. 바깥 모서리, 위쪽 테두리, 옆쪽 테두리, 안쪽 모서리, 가득 참. 네 조각은 맞닿는 변에서 서로 맞아야 하고, 가능한 조합을 세면 47가지입니다.
그린 격자를 반 칸 옮기면 타일 하나가 서로 다른 네 칸의 조각을 하나씩 보여 줍니다. 타일 중심점에서 만나는 네 칸입니다. 조각이 다섯 모양 중 무엇이어야 하는지는 같은 타일 안의 나머지 세 칸으로 정해지므로, 타일은 칸마다 비트 하나(지형인지 아닌지)만 알면 됩니다. 비트 네 개로 16장: 빈 것 1, 지형 칸 하나(바깥 모서리) 4, 나란한 두 칸(곧은 가장자리) 4, 대각선 두 칸 2, 세 칸(안쪽 모서리) 4, 가득 참 1입니다.
어느 쪽이든 조각은 같은 이웃 셋으로 정해지므로, Nerulio 생성기는 그린 조각 20개(모서리 4 × 모양 5)로 블롭 47 세트와 듀얼 그리드 16 세트를 모두 만듭니다. 바뀌는 것은 타일이 놓이는 자리이지, 그림이 보여 줘야 할 내용이 아닙니다.
대가도 분명합니다. 표시 레이어는 밀려 있고 데이터 격자보다 가로세로로 한 장씩 크며, 충돌과 게임 로직은 데이터 격자에 남고, 모든 엔진이 격자점에 타일을 놓을 수 있는 것은 아닙니다. 변 타일 16장 세트와 혼동하지 마세요. 그쪽은 칸의 네 변을 맞추며(길, 울타리, 발판) 모서리 타일과 서로 바꿔 쓸 수 없습니다.
- 데이터 격자
- 칠하는 칸이자 게임 로직이 읽는 칸. 지형이거나 아니거나.
- 표시 격자
- 그려지는 타일. 네 칸 사이의 격자점마다 하나, 반 칸 밀려 있음.
- 모서리 마스크
- 한 점을 둘러싼 네 칸에 대해 NW 1 + NE 2 + SE 4 + SW 8. 0(빈 것)부터 15(가득)까지.
- 변 세트
- 네 변(N 1, E 2, S 4, W 8)으로 맞추고 칸 위에 그리는 16장. 다른 세트입니다.
예시: 격자점마다 어떤 타일이 오나
가운데에 2 × 2 땅이 있는 4 × 3 맵:
데이터 격자 (# = 땅) 격자점 위의 표시 타일: (4 + 1) × (3 + 1) = 20
. . . .
. # # . 칸 (1,0) (2,0) (1,1) (2,1) 사이의 점:
. # # . NW . = 0 NE . = 0 SE # = 4 SW # = 8 → 마스크 12
= 아래쪽 절반이 땅: 곧은 위쪽 가장자리
점 주변의 땅 칸 0 1 나란한 2 대각선 2 3 4
모양 - 바깥 곧은 가장자리 대각선 안쪽 모서리 가득
타일 1 + 4 + 4 + 2 + 4 + 1 = 16같은 2 × 2 덩어리가 블롭 세트에서는 네 칸이고, 칸마다 여덟 이웃으로 47장 중 하나를 고릅니다. 듀얼 그리드에서는 격자점 아홉 개가 각각 네 칸을 보고 16장 중 하나를 고릅니다.
엔진마다 모서리 세트를 두는 곳
| 엔진 | 모서리 세트를 저장하는 방식 | Nerulio 내보내기 |
|---|---|---|
| 고도 4 | Match Corners 모드 지형 세트: 타일마다 모서리 피어링 비트 네 개 | 검증: 지형 4개짜리 듀얼 그리드 팩을 Godot 4.7.2가 251칸 모두 예측대로 칠함(여러 지형 맵 3개 포함) |
| Tiled | 모서리 Wang 세트(Tiled 설명서: 지형 두 개의 완전한 모서리 세트는 16장). 샘플 맵 레이어는 반 칸 밀림 | Tiled 1.12.2 자체 읽기 도구로 검증 |
| LDtk | 타일마다 규칙 하나, 타일은 반 칸 오프셋으로 그림 | 일부 검증: 1.5.3 스키마, 공식 로더, 규칙 재실행 |
| 유니티 | 룰 타일은 칸 위에 그리며 칸 사이의 점에는 그리지 않음 | 내보내지 않음 |
| 고도 3과 템플릿 | 고도 3의 "2×2" 템플릿, cr31 2-corner Wang 세트, 4×4 듀얼 그리드 시트는 같은 순서 | corner16 cr31로 인식 |
이렇게 작동합니다
- 모서리 16 배치(cr31 2-corner = Godot 3 "2×2" = 듀얼 그리드 4×4)를 신뢰도와 함께 인식합니다.
- 여러 지형 팩: 같은 단색 채움을 가진 블록을 한 지형으로 묶습니다.
- 블롭 세트와 같은 4분할 조각으로 듀얼 그리드 16을 생성하고, A 위 B 전환을 한 쌍씩 만듭니다.
- 모서리 모드 Godot 4 지형(검증, 여러 지형 맵 포함 251/251칸)과 Tiled 모서리 Wang 세트(검증). Unity로는 내보내지 않습니다.
사용 방법
- 듀얼 그리드 시트(또는 생성할 기본 블록)를 끌어다 놓습니다.
- 인식된 배치를 적용하고 지형별로 점검합니다.
- 테스트 맵을 칠합니다. 모서리 세트는 반 칸 어긋난 격자점에 놓입니다.
- Godot 4나 Tiled로 내보냅니다.
받게 되는 파일
grass.png라는 듀얼 그리드 시트의 경우:
| 파일 | 용도 |
|---|---|
nerulio_tileset_import.gd | 고도 4: Match Corners 지형 세트가 든 nerulio-tileset.tres를 만듭니다. 블록이 여러 개인 팩은 지형을 그대로 유지합니다. |
grass.tsx | Tiled: 지형마다 색 하나인 모서리 Wang 세트. sample.tmx는 반 칸 밀린 레이어에 세트를 그립니다. |
grass.ldtk | LDtk: 지형마다 IntGrid 값 하나, 반 칸 타일 오프셋이 있는 타일별 규칙. |
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|---|---|---|
| 엔진에서 전부 반 칸 어긋나 보임 | 블롭식 그림(가장자리가 타일 테두리에 있음)을 모서리 세트로 썼거나, 모서리 그림을 밀리지 않은 레이어에 놓음 | 테스트 맵에서 Tiled 규칙으로 칠한 칸과 테두리 위치를 비교 | 지형 가장자리가 타일 한가운데를 지나도록 모서리 타일을 그리고, 표시 레이어 오프셋을 유지 |
| 유니티 내보내기에 이 세트의 지형이 없음 | 룰 타일은 칸 위에 그림. 모서리 세트는 격자점이 필요 | 내보내기 안내에 유니티는 모서리 세트를 건너뛴다고 나옴 | 고도·Tiled·LDtk를 쓰거나, 유니티에는 블롭 47 세트를 사용 |
| 여러 지형 팩에서 지형이 뒤섞임 | 지형은 같은 그림인 단색 채움으로 묶음. 채움이 조금만 달라도 새 지형이 됨 | 적용 후 지형 목록 확인 | 지형을 합치거나 이름을 바꾸거나, 채움을 똑같이 맞춤 |
| Tiled 규칙에서 맵 바깥 테두리에 틈이 보임 | 맵 가장자리의 격자점은 맵 밖의 칸에 닿음 | 이 점들은 문제로 보고되지 않음 | 정상. 가장자리까지 그려야 하면 테두리에 칸을 하나 더 칠함 |
| 생성기가 A4 벽 블록으로 듀얼 그리드를 만들지 않음 | 변만 있는 원본에는 모서리 타일을 만들 조각이 없음 | 변만 있는 원본은 모서리 타일을 그릴 수 없다는 오류 | 알만툴 A2, Blobsmith, 5칸, 절차적 테두리 원본을 사용 |
다른 방법
| 방법 | 이럴 때 더 낫습니다 |
|---|---|
| 블롭 47장 세트 | 유니티 룰 타일이 필요하거나, 오프셋 레이어 없이 타일이 칸 위에 놓이길 원할 때(블롭 설명). |
| Tiled의 모서리 세트만 쓰기 | 레벨을 Tiled에서 만들고 거기서 Wang 색을 표시할 때. Tiled Wang 세트 참고. |
| 기본 블록에서 16장 생성 | A2 블록이나 2×3 기본 블록을 그렸을 때. 타일셋 생성기가 블롭과 같은 조각으로 듀얼 그리드 세트를 조립합니다. |
엔진별 내보내기와 검증 방법
"검증됨"은 실제 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에서 블롭·변 세트의 칠한 모든 칸 일치.
한계
- 모서리 세트는 유니티로 내보내지 않습니다.
- 지형 사이 전환은 팩의 그림이나 A 위 B 생성에서 오며, 한 쌍씩입니다.
- 테스트 맵은 맵 바깥 테두리의 격자점을 보여 주되 점검하지는 않습니다.
- Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
- Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
- 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
- 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.
버전과 출처
Nerulio 검증(docs/STUDIO-TILE.md, 2026-09-23): MIT 라이선스인 GlitchedinOrbit 듀얼 그리드 시트를 corner16 블록 5개, 지형 4개로 읽었고(모서리 지형 80/80, 이음새 AUC 1.000), Godot 4.7.2가 251칸 모두 예측대로 칠했으며, Tiled 1.12.2와 LDtk 1.5.3 점검을 통과했습니다. 엔진 용어는 링크한 공식 문서를 따릅니다.
참고한 공식 문서
자주 묻는 질문
듀얼 그리드는 왜 Unity로 내보내지 않나요?
Unity Rule Tile은 칸 위에 그리고 칸 사이 모서리에는 그리지 않으므로, 모서리·듀얼 그리드 세트는 Unity로 내보내지 않습니다.
시트 하나에 여러 지형을 둘 수 있나요?
네. 듀얼 그리드 블록 여러 개가 든 팩을 지형 4개로 인식했고 모서리 지형 80/80이 맞았습니다.
무료인가요? 계정이 필요한가요?
이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.
스프라이트가 업로드되나요?
아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.
Aseprite나 엔진 플러그인을 설치해야 하나요?
아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).