외부 타일셋
외부 타일셋은 게임의 메인 소스 트리 외부에 저장되고 배포되는 타일셋입니다. 이를 통해 모더와 아티스트가 게임 자체를 수정하지 않고도 맞춤 그래픽 세트를 만들고 공유할 수 있습니다.
외부 타일셋 설정하기
외부 타일셋을 설정하려면 게임의 gfx 디렉토리에 타일셋 디렉토리를 만듭니다. 각 타일셋 디렉토리는 다음을 포함해야 합니다:
tileset.txt- 타일셋 메타데이터와 구성- 하나 이상의 타일셋 이미지 (PNG 형식)
tile_config.json- 타일 매핑 정의
tileset.txt
tileset.txt 파일은 타일셋에 대한 기본 정보를 정의합니다:
{
"type": "tileset",
"tile_info": [
{
"width": 32,
"height": 32,
"pixelscale": 1
}
],
"tiles-new": [
{
"file": "tiles.png",
"tiles": [
{
"id": "player_male",
"fg": 1,
"bg": 0
}
]
}
]
}
tileset.txt 필드
| 필드 | 타입 | 설명 |
|---|---|---|
type |
string | 반드시 "tileset"이어야 합니다. |
tile_info |
array | 기본 타일 크기와 스케일링 정보를 포함하는 배열. |
tiles-new |
array | 타일 이미지 파일과 해당 타일 매핑을 정의하는 배열. |
tile_info 필드
| 필드 | 타입 | 설명 |
|---|---|---|
width |
integer | 각 타일의 너비(픽셀 단위). |
height |
integer | 각 타일의 높이(픽셀 단위). |
pixelscale |
integer | 고해상도 디스플레이를 위한 픽셀 스케일 인수. 일반적으로 1. |
tiles-new 항목
| 필드 | 타입 | 설명 |
|---|---|---|
file |
string | 타일 이미지 파일의 경로(타일셋 디렉토리 기준). |
tiles |
array | 이 이미지의 타일 매핑을 정의하는 배열. |
tiles 항목
| 필드 | 타입 | 설명 |
|---|---|---|
id |
string | 이 타일이 나타내는 게임 엔티티의 ID. |
fg |
integer | 전경 타일 인덱스(이미지에서 타일 번호). |
bg |
integer | 배경 타일 인덱스. 투명 배경의 경우 0. |
rotates |
boolean | 선택 사항. true이면 타일이 방향에 따라 회전됩니다. |
multitile |
boolean | 선택 사항. true이면 타일이 벽이나 펜스와 같은 인접 타일에 연결됩니다. |
tile_config.json
tile_config.json 파일은 게임 엔티티에서 타일로의 더 복잡한 매핑을 정의합니다. 여러 타일로 구성된 항목, 애니메이션, 계절 변형 등을 지원합니다.
기본 타일 매핑
{
"id": "t_grass",
"fg": 10,
"bg": 0
}
계절 타일
{
"id": "t_tree_pine",
"fg": [
{ "season": "spring", "index": 100 },
{ "season": "summer", "index": 101 },
{ "season": "autumn", "index": 102 },
{ "season": "winter", "index": 103 }
]
}
멀티타일 (연결된 타일)
벽, 펜스, 기타 연결되는 지형의 경우 멀티타일을 사용하여 인접한 타일에 따라 매끄럽게 연결되는 타일을 정의할 수 있습니다.
{
"id": "t_wall",
"multitile": true,
"fg": 200,
"bg": 0,
"additional_tiles": [
{ "id": "center", "fg": 200 },
{ "id": "corner", "fg": 201 },
{ "id": "edge", "fg": 202 },
{ "id": "t_connection", "fg": 203 },
{ "id": "end_piece", "fg": 204 },
{ "id": "unconnected", "fg": 205 }
]
}
애니메이션
{
"id": "mon_zombie_brute",
"fg": [
{ "weight": 1, "sprite": 300 },
{ "weight": 1, "sprite": 301 },
{ "weight": 1, "sprite": 302 }
],
"animated": true,
"animation_speed": 100
}
타일 배치
타일셋 이미지는 일반적으로 그리드로 구성되며, 각 타일은 tile_info에 지정된 width와 height를 차지합니다. 타일은 왼쪽에서 오른쪽, 위에서 아래로 0부터 번호가 매겨집니다.
예를 들어, 32x32 픽셀 타일과 320x320 픽셀 이미지의 경우:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
...
타일셋 파일 구조
일반적인 외부 타일셋 구조:
gfx/
MyTileset/
tileset.txt
tile_config.json
tiles.png
items.png
monsters.png
terrain.png
모범 사례
- 일관된 타일 크기 - 타일셋 전체에서 일관된 너비와 높이를 사용하세요.
- 조직화 - 아이템, 몬스터, 지형 등 범주별로 타일을 별도의 PNG 파일로 구성하세요.
- 투명도 - 배경에는 PNG 투명도를 사용하세요.
- 명명 규칙 - 게임 데이터의 ID와 일치하는 명확하고 일관된 ID를 사용하세요.
- 문서화 - 타일셋에 대한 README와 라이선스 정보를 포함하세요.
기존 엔티티 ID 찾기
타일을 만들 엔티티 ID를 찾으려면:
data/json/디렉토리에서 엔티티 정의를 확인하세요.- 게임 내 디버그 메뉴를 사용하여 아이템/몬스터/지형 ID를 확인하세요.
- 기존 타일셋 정의를 참조로 확인하세요.
예시: 간단한 아이템 타일
{
"id": "rock",
"fg": 450,
"bg": 0
}
이것은 타일셋 이미지의 인덱스 450에 있는 타일을 "rock" 아이템 ID에 매핑합니다.
참고사항
- 타일셋은 게임 설정 메뉴에서 활성화되어야 합니다.
- 게임은 정의가 없는 엔티티에 대해 대체 타일을 사용합니다.
- 타일셋 크기가 클 경우 로딩 시간과 메모리 사용량에 영향을 줄 수 있습니다.
- 타일셋 구성 형식은 게임 업데이트에 따라 변경될 수 있습니다.