본문으로 건너뛰기

유니티 룰 타일 만들기 · 47·16 타일셋, 규칙 수작업 없이

시트를 잘라 이웃 규칙 47개를 클릭하는 대신 여기에 넣으세요. 배치를 인식하고, Unity 번들의 편집기 스크립트가 스프라이트를 자르고(Point, 무압축) 비트로 Rule Tile을 만듭니다.

Rule Tile(2D Tilemap Extras 패키지)은 타일링 규칙의 목록입니다. 규칙마다 3 × 3 격자가 있고, 각 이웃은 무시하거나, 이 Rule Tile이어야 하거나(초록 화살표), 아니어야 합니다(빨간 X). Unity는 위에서부터 규칙을 검사해 처음 맞는 것을 칠하고, 하나도 맞지 않으면 Default Sprite를 칠합니다. 블롭 타일셋이면 규칙 47개를 손으로 만들어야 합니다. Nerulio는 타일 비트로 규칙을 쓰고, PNG를 잘라 지형마다 RuleTile을 만드는 편집기 스크립트를 줍니다. Unity 6000.5.3f1과 Tilemap Extras 8.0.3에서 확인했습니다. 모서리·듀얼 그리드 세트는 Unity로 내보내지 않습니다.

타일셋 또는 오토타일 시트(PNG)를 끌어다 놓으세요
빈 Studio 열기
브라우저에서 처리하며 파일은 업로드되지 않습니다.
Studio 타일 작업 공간: GameMaker 배치로 인식한 47타일 시트와 지형 비트, 완료된 점검
CC0 에셋(OpenGameArt)을 연 실제 Studio 화면입니다.
내보내기 대상
  • Unity 6 Rule Tile검증됨· Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3
  • Godot 4 TileSet검증됨· Godot 4.7.2
  • Tiled검증됨· Tiled 1.12.2
  • LDtk일부 검증· LDtk 1.5.3 schema + loader

Rule Tile이 스프라이트를 고르는 방식

Tilemap Extras 매뉴얼이 구성 요소를 설명합니다. Default Sprite(맞는 규칙이 없을 때 칠함), Default Collider, 그리고 Tiling Rules 목록이 있고, 규칙마다 규칙 격자·스프라이트·출력(Single, Random, Animation)이 있습니다. 규칙 격자의 칸은 비워 두거나(그 이웃은 무시), 초록 화살표(이 Rule Tile이어야 함), 빨간 X(아니어야 함)로 둡니다. 매뉴얼은 Unity가 "위에서부터 차례로 각 규칙을 검사한다"고 적고 있습니다.

처음 맞는 규칙이 이기므로 순서가 중요합니다. 느슨한 규칙이 위에 있으면 엄격한 규칙이 가려집니다. Nerulio는 확인하는 이웃이 많은 규칙부터 정렬하고, 옆 변이 열린 모서리는 그림을 바꾸지 못하므로 비워 둡니다. 그래서 블롭 규칙 하나는 이웃 4~8칸을 봅니다. Unity 격자는 y축이 위를 향하므로 북쪽 이웃은 (0, 1)입니다.

Rule Tile은 자기가 놓인 칸에 그리고 주변 칸을 봅니다. 듀얼 그리드 타일은 네 칸 사이의 점에 속하므로 Rule Tile로는 표현할 수 없어, 모서리 세트는 Unity 내보내기에서 빠집니다. 한 시트의 지형 여러 개는 각각 별도의 Rule Tile이 되고 서로를 "이것이 아님"으로 보므로, 전환 타일 없이 맞닿습니다.

Rule Tile
이웃 타일을 보고 스프라이트를 고르는 2D Tilemap Extras의 타일 에셋.
Default Sprite
어떤 규칙도 맞지 않을 때 Unity가 칠하는 스프라이트. Nerulio 내보내기에서는 가득 찬 안쪽 타일.
This / Not This
초록 화살표: 이웃이 이 Rule Tile. 빨간 X: 아님. 빈칸: 무시.
규칙 순서
규칙은 위에서부터 검사하며 처음 맞는 것이 칠해집니다.

예시: 블롭 타일 하나의 규칙

타일 마스크 31: N, NE, E, SE, S 연결, W 열림(Unity 격자, y 위쪽)
  .  ✓  ✓      . = 무시(열린 서쪽 변 뒤의 모서리)
  ✕  C  ✓      ✓ = This(초록 화살표)
  .  ✓  ✓      ✕ = Not This(빨간 X)
JSON 이웃 [[0,1,1],[1,1,1],[1,0,1],[1,-1,1],[0,-1,1],[-1,0,2]]   (dx, dy, 1 This / 2 NotThis)
블롭 47 → 규칙 47개, 확인 수가 많은 것부터; Default Sprite = 가득 찬 타일
변 16 세트 → 규칙 16개, 각각 변 4개 확인

스프라이트 이름은 시트의 열과 행을 따르며(cr31 8 × 6 시트라면 위의 마스크 31 타일은 tile_4_1), 사각형은 Unity 방식대로 텍스처 왼쪽 아래부터 잽니다.

이렇게 작동합니다

  • 블롭 47·변 16 세트. 규칙은 인식하거나 칠한 지형 비트에서 만듭니다.
  • Editor/NerulioRuleTileImporter.cs가 2D Tilemap Extras로 지형마다 RuleTile을 만듭니다.
  • Unity 6000.5.3f1 + Tilemap Extras 8.0.3에서 확인: 칠한 Tilemap의 모든 칸이 예측한 스프라이트이며, 스프라이트 영역과 픽셀이 정확합니다.
  • 조합이 빠진 곳에는 Unity가 Rule Tile의 기본 스프라이트를 그리며, Studio 테스트 맵도 이를 보여 줍니다.

사용 방법

  1. 타일셋을 넣고 배치를 적용합니다.
  2. 점검 패널을 읽고 빠진 조합을 채웁니다.
  3. Unity 6으로 내보냅니다.
  4. 번들을 Assets/에 복사하고(.cs는 Editor 폴더에) JSON을 선택한 뒤 Tools › Nerulio › Build Rule Tiles를 실행합니다.

받게 되는 파일

파일용도
nerulio-ruletile.json스프라이트 사각형, 유닛당 픽셀(= 타일 너비), 지형마다 기본 스프라이트와 정렬된 규칙.
Editor/NerulioRuleTileImporter.csTools › Nerulio › Build Rule Tiles 메뉴를 추가: PNG를 Sprite(Multiple)·Point·밉맵 없음·무압축으로 설정하고 잘라 지형마다 RuleTile을 씁니다.
cave.png타일셋 이미지.
README.txt이 단계 안내.
Terrain.asset스크립트를 실행하면 Unity가 JSON 옆에 씁니다. 이름은 지형 이름을 따릅니다(바꾸지 않았다면 "Terrain").

Unity 6에서 Rule Tile을 만들고 칠하기

  1. 프로젝트에 없다면 2D Tilemap Extras를 설치합니다. Window › Package Manager › Unity Registry › 2D Tilemap Extras › Install.
  2. PNG와 nerulio-ruletile.json을 Assets/ 아래 한 폴더에, NerulioRuleTileImporter.cs를 이름이 Editor인 아무 폴더에 복사합니다.
  3. Project 창에서 JSON을 선택하고 Tools › Nerulio › Build Rule Tiles를 실행합니다. Console에 Nerulio: wrote 1 RuleTile(s)가 나오고 JSON 옆에 .asset이 생깁니다.
  4. 타일맵을 만듭니다. Hierarchy에서 우클릭 › 2D Object › Tilemap › Rectangular.
  5. Window › 2D › Tile Palette를 열고 RuleTile 에셋을 팔레트로 끌어 놓은 뒤, 선택해서 Paint with Active Brush 도구로 칠합니다.
  6. 충돌이 필요하면 Rule Tile 인스펙터에서 Default Collider(와 각 규칙의 Collider)를 Grid로 바꾸고(스크립트는 None으로 씀) 타일맵에 Tilemap Collider 2D를 추가합니다.

결과 확인

  • RuleTile 인스펙터에 블롭 세트면 타일링 규칙 47개(변 세트면 16개)가 보이고, Default Sprite는 가득 찬 안쪽 타일입니다.
  • 3 × 3 영역과 외딴 한 칸을 칠합니다. 서로 다른 스프라이트 9개와 고립 스프라이트가 나와야 합니다. 가장자리에 가득 찬 타일이 나오면 그 조합이 시트에 없는 것입니다.
  • 스크립트가 PNG를 Point 필터·무압축으로 가져오므로 어느 배율에서도 스프라이트가 선명해야 합니다.

문제 해결

증상유력한 원인확인 방법해결
Tools › Nerulio 메뉴가 없음스크립트가 Editor 폴더에 없거나, 2D Tilemap Extras나 2D Sprite 패키지가 없어 컴파일되지 않음Console에서 RuleTile이나 SpriteDataProviderFactories를 언급하는 컴파일 오류두 패키지를 설치하고 스크립트를 Editor 폴더로 옮기기
Nerulio: select nerulio-ruletile.json first.JSON이 아닌 것이 선택됨Project 창의 선택JSON을 선택하고 메뉴를 다시 실행
PNG가 "프로젝트에 없다"는 예외PNG가 JSON 옆에 없거나 이름이 바뀜JSON의 image 값과 파일 이름 비교내보낸 이름 그대로 PNG를 JSON 옆에 두기
가장자리나 모서리에 가득 찬 타일이 나옴시트에 그 조합이 없어 Unity가 Default Sprite를 칠함Studio 점검 패널의 빠진 조합빠진 타일을 그리거나 생성해 다시 내보내기
두 지형이 딱 끊겨 만남지형마다 별도 RuleTile이라 서로를 "이것이 아님"으로 봄빌드 후 .asset 파일이 두 개타일맵 하나에 지형 하나를 쓰거나, 전환이 필요하면 Godot·Tiled 사용
ZIP에 unity 폴더가 없음모서리·듀얼 그리드 세트라서 건너뜀(NOTES.txt에 적힘)Studio의 매칭 모드가 corners듀얼 그리드 세트는 Godot나 Tiled로
캐릭터가 타일맵을 통과해 떨어짐RuleTile의 Collider가 None이거나 Tilemap Collider 2D가 없음RuleTile 인스펙터의 Default ColliderGrid(또는 Sprite)로 바꾸고 Tilemap Collider 2D 추가

다른 방법

방법이럴 때 더 낫습니다
Rule Tile 인스펙터에서 규칙을 직접 만들기타일이 적거나, 내보내기가 쓰지 않는 규칙이 필요할 때: Extend Neighbor(3 × 3 밖), Random·Animation 출력.
Rule Override Tile(Create › 2D › Tiles › Rule Override Tile)같은 배치로 그린 두 번째 타일셋. 생성된 규칙을 그대로 쓰고 스프라이트만 바꿉니다.
Godot 지형이나 Tiled Wang 세트듀얼 그리드 세트나 지형 간 전환이 필요할 때: Godot 4, Tiled.

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

"검증됨"은 실제 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에서 블롭·변 세트의 칠한 모든 칸 일치.

한계

  • 모서리·듀얼 그리드 세트는 Unity로 내보내지 않습니다.
  • 지형 여러 개는 서로 전환이 없는 별도의 RuleTile이 됩니다.
  • 충돌 모양은 없습니다. RuleTile은 Collider None으로 쓰이며, Nerulio가 딴 폴리곤은 Godot로만 갑니다.
  • Tiled 지형 브러시, LDtk 앱, Godot 편집기의 칠하기는 실행하지 않았습니다. 검증은 엔진의 읽기 기능과 set_cells_terrain_connect로 했습니다.
  • Unity로는 블롭·변 타일셋만 내보냅니다. 지형이 여러 개면 서로 이어지지 않는 Rule Tile 여러 개가 됩니다.
  • 아이소메트릭·육각 타일, 애니메이션 타일, 오클루전·내비게이션 레이어는 지원하지 않습니다.
  • 알려진 배치 없이 비트를 제안하려면 기준이 되는 "가득 찬" 타일이 필요합니다. 변만 있는 길 템플릿은 그 타일을 선택하기 전까지 추측이 틀릴 수 있습니다.

버전과 출처

Unity 6000.5.3f1(배치 모드)과 2D Tilemap Extras 8.0.3에서 확인했습니다. 함께 주는 스크립트가 RuleTile을 만들었고, 칠한 Tilemap이 코퍼스 10세트의 모든 칸에서 Studio가 예측한 스프라이트를 돌려주었으며 스프라이트 사각형과 픽셀도 정확했습니다. 규칙 JSON에서 스프라이트 두 개를 바꾸면 이 점검이 실패합니다. 위의 Unity 메뉴 경로는 Unity 6 매뉴얼과 Tilemap Extras 8.0.3 문서를 따릅니다.

참고한 공식 문서

자주 묻는 질문

Unity 2D Tilemap Extras가 필요한가요?

네. Rule Tile은 그 패키지에 있습니다(8.0.3으로 확인).

시트 하나에 지형이 여러 개면요?

지형마다 Rule Tile이 따로 생기며, Unity는 그 사이의 전환을 그리지 않습니다.

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

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

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

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

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

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