격자 모델, 공식, 그리고 숫자를 재는 방법
모든 타일은 크기가 같습니다. 여백은 첫 열(과 첫 행) 앞에서 한 번만 건너뛰고, 간격은 이웃한 두 타일 사이에 있으며, 마지막 타일 뒤에는 아무것도 가정하지 않습니다. 그래서 (c, r) 타일은 x = 여백 + c × (타일 + 간격), y = 여백 + r × (타일 + 간격)에서 시작합니다. 고도는 같은 숫자를 Texture Region Size, Margins, Separation이라 부르고, Tiled는 타일 크기, Margin, Spacing이라 부릅니다.
타일 n장에는 여백 + n × 타일 + (n − 1) × 간격 픽셀이 필요하므로, 들어가는 최대 개수는 floor((W − 여백 + 간격) ÷ (타일 + 간격))입니다. 양쪽 여백이 같으면 교과서식 (W − 2 × 여백 + 간격) ÷ (타일 + 간격)이 딱 나누어떨어집니다. Nerulio의 floor는 오른쪽에 남는 띠가 타일 하나와 간격보다 좁기만 하면 같은 개수를 주며, 여분 픽셀이 조금 있는 시트도 깔끔하게 잘리는 이유가 이것입니다.
감지기는 이미지를 한 줄씩 읽어 각 행과 열이 앞줄과 얼마나 다른지 봅니다. 그 프로필을 4px부터 이미지 절반까지의 모든 주기로 접어 변화를 가장 많이 설명하는 주기를 고르고, 위상을 확인하고, 여백이나 간격이라고 주장하는 줄이 실제로 비었거나 단색인지 따집니다. 모든 타일의 첫 줄이나 마지막 줄이 비어 있으면 "16px + 1px 간격"이 "17px 타일"을 이깁니다. 실제 크기의 배수는 약수의 점수가 0.02 이내면 집니다. Studio는 공개된 오토타일 배치가 딱 맞는 크기도 함께 시험합니다.
가장 약한 경우는 구분선이 전혀 없는 시트, 즉 타일 속이 테두리보다 복잡한 촘촘한 시트입니다. 축마다 타일이 하나뿐이면 잴 수 없고, Studio는 16메가픽셀까지의 이미지만 잽니다. 그보다 크면 크기를 직접 입력하세요.
- 타일 크기
- 타일 한 장의 가로·세로 픽셀(고도: Texture Region Size).
- 여백
- 왼쪽과 위쪽 가장자리에서 첫 타일 앞에 있는 픽셀.
- 간격
- 이웃한 두 타일 사이의 픽셀(고도: Separation). 보통 1px, 가장자리 픽셀을 늘린 경우도 있음.
- 촘촘한 시트
- 간격 없이 타일을 붙인 시트. 다른 에디터에는 가장 편하지만 재기는 가장 어렵습니다.
예시: 테스트 코퍼스의 Kenney 시트 두 장
CC0 파일을 Nerulio 격자 감지기로 잰 결과(2026-09-28):
Kenney Tiny Dungeon tilemap.png 203 × 186 px 16px 타일, 1px 간격, 여백 0
열 = floor((203 − 0 + 1) / (16 + 1)) = floor(204 / 17) = 12
행 = floor((186 − 0 + 1) / (16 + 1)) = floor(187 / 17) = 11 → 132장
13번 타일 = 1열 1행 → x = 0 + 1 × 17 = 17, y = 17, 크기 16 × 16
감지: 16 × 16, 간격 1, 12 × 11, 점수 0.976 (높음)
tilemap_packed.png 192 × 176 px 같은 타일, 간격 없음 → 192 / 16 = 12, 176 / 16 = 11
감지: 16 × 16, 12 × 11, 하지만 점수 0.514 (낮음): 타일 사이에 빈 줄이 없음
Kenney Pixel Platformer tilemap.png 379 × 170 px → (379 + 1) / (18 + 1) = 20, (170 + 1) / 19 = 9
타일은 16px가 아니라 18px: 감지 18 × 18, 간격 1, 20 × 9, 점수 0.946 (높음)
같은 그림이 간격이 있으면 0.976, 없으면 0.514입니다. 비어 있는 구분선은 시트가 줄 수 있는 가장 강한 증거입니다. 촘촘한 시트라면 이 격자 사용을 누르기 전에 점선 격자를 보거나, 알고 있는 크기를 입력하세요.
쓰기 전에 격자 확인하기
- 점선이 마지막 열과 마지막 행까지 간격 위에 놓여야 합니다. 왼쪽은 맞는데 오른쪽이 틀리면 타일 크기나 간격이 어긋난 것입니다.
- 열 × 행이 예상과 같고(Tiny Dungeon은 12 × 11 = 132), 빈 타일로 센 칸이 정말 비어 있어야 합니다.
- 내보낸 뒤 고도 아틀라스의 Texture Region Size, Margins, Separation이 같은 값이어야 합니다. 여백 1·간격 2로 내보낸 Nerulio 고도 파일은 Godot 4.7.2에서
TileSetAtlasSource에 그대로 들어갔습니다. - 타일별 PNG가 필요하면 기존 자르기 도구는 영역을 그대로 복사하고 다시 샘플링하지 않으므로, 각 타일이 원본 사각형과 바이트 단위로 같습니다.
문제 해결
| 증상 | 유력한 원인 | 확인 방법 | 해결 |
|---|
| 열이 넘어갈수록 타일이 점점 어긋남 | 타일 크기가 틀림: Pixel Platformer의 18px 타일을 16px + 1px로 읽으면 c번째 타일이 19 × c가 아니라 17 × c에서 시작해 열마다 2px씩 더 어긋남 | 첫 열은 맞는데 열 번째 열은 18px 빗나감 | 18px 후보를 고르거나 타일 18, 간격 1을 입력 |
|---|
| 모든 타일이 위·왼쪽으로 1px씩 밀려 잘림 | 테두리를 여백으로 지정하지 않음 | 이미지의 첫 행과 첫 열이 비었거나 한 가지 색 | 여백 1로 설정. 개수 공식은 여백을 한 번 뺌 |
|---|
| 오른쪽이나 아래에 반쪽 열·행이 남음 | 타일 크기가 시트를 나누지 못함. floor는 타일 하나와 간격보다 좁은 부분을 버림 | (W − 여백 + 간격) ÷ (타일 + 간격)을 계산: 정수이거나 정수보다 조금 커야 함 | 타일 크기를 다시 확인. 남는 픽셀이 많다면 시트가 아니라 해석이 틀린 것 |
|---|
| 첫 후보가 낮음이나 중간뿐 | 촘촘한 시트: 타일 사이에 빈 줄이 없고 타일 속이 복잡함 | 후보마다 붙은 점수와 신뢰도 | 점선 격자를 확인하거나, 다른 후보를 고르거나, 크기를 입력 |
|---|
| 아주 큰 이미지에서 후보가 하나도 없음 | Studio는 16메가픽셀까지의 시트만 잼 | 이미지 너비 × 높이 | 타일 크기·여백·간격을 직접 입력 |
|---|
| 다른 에디터가 시트를 받지 않음 | 간격을 받지 않는 에디터가 있음: Sprite Fusion은 타일셋 너비와 높이가 타일 크기의 정확한 배수여야 함 | W ÷ 타일이 정수인가? | 시트의 촘촘한 버전을 쓰거나 간격 없이 다시 패킹 |
|---|
다른 방법
| 방법 | 이럴 때 더 낫습니다 |
|---|
| 엔진에 숫자를 직접 입력: 고도 아틀라스(Texture Region Size, Margins, Separation)나 Tiled 새 타일셋 대화상자(타일 크기, Margin, Spacing) | 에셋 팩의 설명서 등으로 격자를 이미 알고 있을 때. |
|---|
| 기존 타일 격자 자르기 | 타일마다 PNG 파일, 완전·유사 중복 찾기, 회전·뒤집기 변형, 번짐을 막는 가장자리 확장 아틀라스가 필요할 때. |
|---|
| 스프라이트 자르기 | 크기가 제각각인 스프라이트가 격자 없이 놓인 시트일 때. 타일 자르기는 규칙적인 격자가 필요합니다. |
|---|
이 방법의 한계
- 규칙적인 격자만 다룹니다. 아이소메트릭·육각 시트는 모델링하지 않습니다.
- Studio는 타일마다 PNG를 쓰지 않습니다. 그 기능은 기존 자르기 도구에 있습니다.
- 축마다 타일이 하나뿐인 시트는 잴 주기가 없습니다.
버전과 출처
공식과 사각형은 src/game/tile-grid.js의 tileRects 그대로입니다. 감지는 합성 시트 10장에서 확인했고(10장 모두 실제 격자가 1위), 위의 Kenney 숫자는 2026-09-28에 코퍼스 파일로 쟀습니다. 2026-09-22 Godot 4.7.2 실행에서 만들어진 TileSet이 여백 1과 간격 2를 그대로 읽어 냈습니다. 엔진의 필드 이름은 링크한 공식 문서를 따릅니다.
참고한 공식 문서
타일셋 분리
여백·간격이 있는 타일 시트를 개별 PNG와 메타데이터 JSON으로 분리하세요.
사용 방법
- 이미지 넣기
- 필요한 설정을 조정하고 결과 확인
- 다운로드로 새 파일 저장
지원 형식
PNG / JPG / WebP / AVIF / HEIC → PNG + JSON (ZIP) — 입력 디코딩은 브라우저 지원과 추가 엔진 사용 여부에 따라 다릅니다.
이 도구로 할 수 있는 일
여백·간격이 있는 타일 시트를 개별 PNG와 메타데이터 JSON으로 분리하세요.
처리 방식과 검증 수준
advanced · Studio Tile workspace: seam-continuity layout identification, terrain bits, Godot 4 terrain matcher port, quarter-exact generator, Godot/Tiled/LDtk/Unity writers. 품질 검증을 진행 중입니다. Pro·Flagship 수준은 아직 입증되지 않았습니다.
저장 전에 확인하세요
규칙적인 격자만 다룹니다. 불규칙하게 놓인 스프라이트는 스프라이트 분리 도구를 쓰세요.