본문으로 건너뛰기

타일셋 자르기 · 타일 크기·여백·간격 자동 감지

타일셋을 넣으면 Studio가 픽셀에서 후보 격자를 측정하고(알려진 오토타일 배치가 정확히 맞는 크기 포함), 가장 좋은 격자를 적용하기 전까지 점선 미리보기로 보여 줍니다.

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

타일셋 또는 오토타일 시트(PNG)를 끌어다 놓으세요
빈 Studio 열기
브라우저에서 처리하며 파일은 업로드되지 않습니다.
Studio 타일 작업 공간: GameMaker 배치로 인식한 47타일 시트와 지형 비트, 완료된 점검
CC0 에셋(OpenGameArt)을 연 실제 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

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

모든 타일은 크기가 같습니다. 여백은 첫 열(과 첫 행) 앞에서 한 번만 건너뛰고, 간격은 이웃한 두 타일 사이에 있으며, 마지막 타일 뒤에는 아무것도 가정하지 않습니다. 그래서 (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입니다. 비어 있는 구분선은 시트가 줄 수 있는 가장 강한 증거입니다. 촘촘한 시트라면 이 격자 사용을 누르기 전에 점선 격자를 보거나, 알고 있는 크기를 입력하세요.

이렇게 작동합니다

  • 타일 크기·여백·간격이 있는 격자 후보와 각 신뢰도, 맞는 공개 오토타일 배치의 이름.
  • 빈 타일은 세어서 흐리게 표시하며, 프로젝트 하나에 타일셋 여러 개(시트마다 하나)를 둘 수 있습니다.
  • 이미 아는 격자는 직접 입력할 수 있습니다.
  • 타일셋은 격자와 지형 비트와 함께 Godot 4·Tiled·Unity·LDtk로 내보냅니다.

사용 방법

  1. 타일셋을 끌어다 놓습니다.
  2. 격자 후보를 확인하고 이 격자 사용을 누릅니다.
  3. 필요하면 오토타일 배치를 인식하거나 지형 비트를 칠합니다.
  4. 엔진용으로 내보냅니다.

쓰기 전에 격자 확인하기

  • 점선이 마지막 열과 마지막 행까지 간격 위에 놓여야 합니다. 왼쪽은 맞는데 오른쪽이 틀리면 타일 크기나 간격이 어긋난 것입니다.
  • 열 × 행이 예상과 같고(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 파일, 완전·유사 중복 찾기, 회전·뒤집기 변형, 번짐을 막는 가장자리 확장 아틀라스가 필요할 때.
스프라이트 자르기크기가 제각각인 스프라이트가 격자 없이 놓인 시트일 때. 타일 자르기는 규칙적인 격자가 필요합니다.

엔진별 내보내기와 검증 방법

"검증됨"은 실제 CC0 에셋으로 내보낸 파일을 해당 엔진·도구가 직접 불러와 원본과 비교했다는 뜻입니다. 불러오지 않은 형식은 그렇게 표시합니다.

대상파일검증
Godot 4 TileSetPNG · 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 Tilenerulio-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에서 블롭·변 세트의 칠한 모든 칸 일치.

한계

  • 규칙적인 격자만 다룹니다. 아이소메트릭·육각 시트는 모델링하지 않습니다.
  • Studio는 타일마다 PNG를 쓰지 않습니다. 그 기능은 기존 자르기 도구에 있습니다.
  • 축마다 타일이 하나뿐인 시트는 잴 주기가 없습니다.
  • Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
  • Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
  • 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
  • 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.

버전과 출처

공식과 사각형은 src/game/tile-grid.js의 tileRects 그대로입니다. 감지는 합성 시트 10장에서 확인했고(10장 모두 실제 격자가 1위), 위의 Kenney 숫자는 2026-09-28에 코퍼스 파일로 쟀습니다. 2026-09-22 Godot 4.7.2 실행에서 만들어진 TileSet이 여백 1과 간격 2를 그대로 읽어 냈습니다. 엔진의 필드 이름은 링크한 공식 문서를 따릅니다.

참고한 공식 문서

기존 도구

타일 PNG ZIP과 중복 타일 찾기는 아직 기존 타일 작업실에 있습니다.

기존 도구 열기 →

자주 묻는 질문

타일마다 PNG 파일로 받을 수 있나요?

Studio에서는 안 됩니다. 아래 링크의 기존 타일 작업실에서 타일 PNG ZIP을 받을 수 있습니다.

타일 사이에 1px 간격이 있는 시트는요?

여백과 간격은 모든 격자 후보와 내보낸 타일셋에 포함됩니다.

무료인가요? 계정이 필요한가요?

이 페이지의 기능은 모두 무료이며 계정 없이 쓸 수 있습니다. 워터마크나 막혀 있는 내보내기가 없습니다.

스프라이트가 업로드되나요?

아니요. Studio는 이 브라우저 탭 안에서 디코딩·패킹·내보내기를 합니다. 프로젝트는 브라우저(IndexedDB)에 자동 저장되며 .nerulio 파일로 저장할 수 있습니다.

Aseprite나 엔진 플러그인을 설치해야 하나요?

아니요. .aseprite 파일은 브라우저에서 읽고 씁니다. 엔진별 번들에는 그 엔진에 필요한 것이 들어 있습니다(Godot는 가져오기 설정과 씬, Unity와 Godot 타일셋은 작은 편집기 스크립트).