타일셋 분리

여백·간격이 있는 타일 시트를 개별 PNG와 메타데이터 JSON으로 분리하세요.

타일셋을 자르려면 축마다 세 숫자가 필요합니다. 타일 크기, 여백(첫 타일 앞의 픽셀), 간격(타일 사이의 픽셀)입니다. 개수는 열 = floor((너비 − 여백 + 간격) ÷ (타일 + 간격))이고 행도 같습니다. Kenney Tiny Dungeon의 203 × 186px 시트는 16px 타일과 1px 간격으로 12 × 11 = 132장이 됩니다. Studio는 이 숫자를 픽셀에서 재고, 이 격자 사용을 누를 때까지 가장 좋은 격자를 점선으로 보여 주며, Godot 4·Tiled·유니티·LDtk 내보내기에 그대로 넘깁니다. 타일마다 PNG로 된 ZIP은 기존 타일 격자 자르기에서 받습니다.

이미지을(를) 여기에 놓으세요여러 개를 한 번에 처리할 수 있습니다
업로드 없음 · 이 기기에서 처리

격자 모델, 공식, 그리고 숫자를 재는 방법

모든 타일은 크기가 같습니다. 여백은 첫 열(과 첫 행) 앞에서 한 번만 건너뛰고, 간격은 이웃한 두 타일 사이에 있으며, 마지막 타일 뒤에는 아무것도 가정하지 않습니다. 그래서 (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으로 분리하세요.

사용 방법

  1. 이미지 넣기
  2. 필요한 설정을 조정하고 결과 확인
  3. 다운로드로 새 파일 저장

지원 형식

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 수준은 아직 입증되지 않았습니다.

저장 전에 확인하세요

규칙적인 격자만 다룹니다. 불규칙하게 놓인 스프라이트는 스프라이트 분리 도구를 쓰세요.

자주 묻는 질문

이 도구의 한계는 무엇인가요?

규칙적인 격자만 다룹니다. 불규칙하게 놓인 스프라이트는 스프라이트 분리 도구를 쓰세요.

파일이 서버에 업로드되나요?

이 도구에서 연 파일은 서버에 업로드하지 않고 사용자 기기에서 처리합니다. 커뮤니티 글에 직접 첨부하는 이미지는 별도로 업로드됩니다. 일부 엔진과 모델은 외부에서 내려받으므로 IP 주소 등 연결 정보가 해당 서비스에 전달됩니다.

작업이 자동 저장되나요?

아니요. 이미지와 편집 상태는 이 탭에 있고 미디어 결과는 기기 내 임시 저장소를 사용할 수 있습니다. 언어를 바꿔도 작업은 유지되지만 새로고침, 탭 닫기, 다른 페이지로 이동하면 사라질 수 있습니다.