타일셋
타일셋은 Cataclysm: Bright Nights에서 게임 엔티티의 그래픽 표현을 정의합니다. ASCII 디스플레이 대신 게임을 표시하는 데 사용되는 타일(이미지 스프라이트)의 모음입니다.
개요
타일셋은 다음으로 구성됩니다:
- 타일셋 이미지 - 개별 타일 스프라이트를 포함하는 PNG 파일
- 구성 파일 - 게임 엔티티를 타일에 매핑하는 JSON 파일
- 메타데이터 - 타일 크기, 이름, 호환성에 대한 정보
타일셋 구조
일반적인 타일셋 디렉토리 구조:
gfx/
MyTileset/
tileset.txt # 메인 타일셋 구성
tile_config.json # 타일 매핑 정의
tiles.png # 메인 타일 이미지
fallback.png # 대체 타일
items/ # 아이템 타일용 선택적 서브디렉토리
monsters/ # 몬스터 타일용 선택적 서브디렉토리
terrain/ # 지형 타일용 선택적 서브디렉토리
tileset.txt
tileset.txt 파일은 타일셋의 기본 메타데이터를 정의합니다:
{
"type": "tileset",
"view_name": "My Custom Tileset",
"json": [
{ "file": "tile_config.json" }
],
"tiles-new": [
{
"file": "tiles.png",
"tiles": []
}
],
"tile_info": [
{
"width": 32,
"height": 32,
"pixelscale": 1
}
]
}
tileset.txt 필드
| 필드 | 타입 | 설명 |
|---|---|---|
type |
string | 반드시 "tileset"이어야 합니다. |
view_name |
string | 게임 설정에 표시되는 타일셋 이름. |
json |
array | 로드할 추가 JSON 구성 파일. |
tiles-new |
array | 타일 이미지 파일 정의. |
tile_info |
array | 타일 크기 및 스케일 정보. |
tile_config.json
tile_config.json 파일은 게임 엔티티가 타일에 매핑되는 방식을 정의합니다:
{
"tiles-new": [
{
"file": "tiles.png",
"sprite_width": 32,
"sprite_height": 32,
"sprite_offset_x": 0,
"sprite_offset_y": 0,
"tiles": [
{
"id": "t_grass",
"fg": 0,
"bg": 0
},
{
"id": "t_dirt",
"fg": 1,
"bg": 0
}
]
}
]
}
타일 항목
| 필드 | 타입 | 설명 |
|---|---|---|
id |
string | 게임 엔티티 ID (지형, 아이템, 몬스터 등). |
fg |
integer | 전경 타일 인덱스 (이미지의 스프라이트 번호). |
bg |
integer | 배경 타일 인덱스. 투명의 경우 0. |
rotates |
boolean | 선택 사항. true이면 이 타일이 방향에 따라 회전합니다. |
multitile |
boolean | 선택 사항. true이면 이 타일이 인접 타일에 연결됩니다. |
animated |
boolean | 선택 사항. true이면 이 타일이 애니메이션됩니다. |
타일 인덱싱
타일셋 이미지의 타일은 왼쪽에서 오른쪽, 위에서 아래로 0부터 인덱싱됩니다:
32x32 타일을 가진 320x320 이미지의 경우:
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
...
타일 인덱스 5는 첫 번째 행의 6번째 타일을 참조합니다.
멀티타일 (연결된 타일)
멀티타일을 사용하면 벽, 펜스 및 기타 연결 구조가 인접한 타일에 부드럽게 연결될 수 있습니다:
{
"id": "t_wall",
"multitile": true,
"fg": 100,
"bg": 0,
"additional_tiles": [
{ "id": "center", "fg": 100 },
{ "id": "corner", "fg": [101, 102, 103, 104] },
{ "id": "edge", "fg": [105, 106] },
{ "id": "t_connection", "fg": [107, 108, 109, 110] },
{ "id": "end_piece", "fg": [111, 112, 113, 114] },
{ "id": "unconnected", "fg": 115 }
]
}
멀티타일 연결 타입
| 타입 | 설명 |
|---|---|
center |
모든 면에 연결. |
corner |
두 인접 면에 연결 (4개 회전). |
edge |
한 면에 연결 (4개 회전). |
t_connection |
세 면에 연결 (4개 회전). |
end_piece |
반대 면에 연결 (4개 회전). |
unconnected |
연결 없음. |
계절 변형
지형 타일은 계절별 변형을 가질 수 있습니다:
{
"id": "t_tree_pine",
"fg": [
{ "season": "spring", "index": 200 },
{ "season": "summer", "index": 201 },
{ "season": "autumn", "index": 202 },
{ "season": "winter", "index": 203 }
],
"bg": 0
}
애니메이션
타일은 여러 프레임을 지정하여 애니메이션할 수 있습니다:
{
"id": "mon_zombie_brute",
"fg": [
{ "weight": 1, "sprite": 300 },
{ "weight": 1, "sprite": 301 },
{ "weight": 1, "sprite": 302 }
],
"animated": true,
"bg": 0
}
애니메이션 필드
| 필드 | 타입 | 설명 |
|---|---|---|
animated |
boolean | 애니메이션 활성화. |
animation_speed |
integer | 선택 사항. 프레임 사이의 밀리초 수. |
가중 변형
단일 ID에 대해 여러 타일 변형을 랜덤하게 선택할 수 있습니다:
{
"id": "t_grass",
"fg": [
{ "weight": 50, "sprite": 10 },
{ "weight": 30, "sprite": 11 },
{ "weight": 20, "sprite": 12 }
]
}
가중치가 높을수록 해당 변형이 선택될 확률이 높아집니다.
스프라이트 오프셋
타일이 그리드에 완벽하게 정렬되지 않는 경우, 오프셋을 지정할 수 있습니다:
{
"file": "tall_sprites.png",
"sprite_width": 32,
"sprite_height": 64,
"sprite_offset_x": 0,
"sprite_offset_y": -32
}
이것은 키가 큰 엔티티(예: 2x1 스프라이트)에 유용합니다.
대체 타일
타일셋은 정의되지 않은 엔티티에 대한 대체 타일을 지정할 수 있습니다:
{
"id": "unknown",
"fg": 9999,
"bg": 0
}
대체가 정의되지 않은 경우 게임은 ASCII 기호를 사용합니다.
오버레이
오버레이는 기본 타일 위에 그려지는 추가 레이어입니다:
{
"id": "overlay_wielded_knife",
"fg": 500
}
오버레이는 다음에 사용됩니다:
- 휘두르는 아이템 (
overlay_wielded_<item_id>) - 착용한 의복 (
overlay_worn_<item_id>) - 돌연변이 (
overlay_mutation_<mutation_id>) - 상태 효과 (
overlay_effect_<effect_id>)
타일셋 크기
일반적인 타일 크기:
- 16x16 - 작은, 레트로 스타일
- 32x32 - 표준, 가장 일반적
- 64x64 - 큰, 상세한
- 혼합 - 일부 타일셋은 다양한 엔티티에 대해 다양한 크기를 사용
모범 사례
- 일관된 아트 스타일 - 타일셋 전체에서 일관된 시각적 스타일을 유지하세요.
- 적절한 크기 - 지정된 타일 크기에 맞는 스프라이트를 사용하세요.
- 투명도 - 배경에는 PNG 알파 채널을 사용하세요.
- 조직화 - 타일을 카테고리(지형, 아이템, 몬스터 등)별로 정리하세요.
- 명명 - 타일 ID에 명확하고 일관된 명명 규칙을 사용하세요.
- 최적화 - 로딩 시간을 위해 이미지 크기를 최적화하세요.
- 문서화 - 타일셋 기능 및 호환성을 문서화하세요.
타일셋 테스트
타일셋을 테스트하려면:
- 타일셋을
gfx/디렉토리에 배치 - 게임 실행
- 설정 → 그래픽 → 타일셋으로 이동
- 타일셋 선택
- 게임에서 다양한 엔티티 확인
- 누락되거나 잘못 정렬된 타일 확인
호환성
타일셋은 게임 버전과 호환되어야 합니다:
- 새 게임 엔티티는 타일셋 업데이트가 필요할 수 있습니다
- 이전 타일셋은 새 콘텐츠에 대해 누락된 타일이 있을 수 있습니다
- 타일셋 형식은 게임 업데이트에 따라 변경될 수 있습니다
성능 고려사항
- 이미지 크기: 큰 타일셋은 더 많은 메모리를 사용합니다
- 타일 수: 더 많은 타일은 더 긴 로딩 시간을 의미합니다
- 애니메이션: 애니메이션 타일은 CPU 사용량을 증가시킵니다
- 투명도: 알파 블렌딩은 성능에 약간의 비용이 듭니다
추가 자료
예시 타일셋
Cataclysm: Bright Nights에서 사용할 수 있는 인기 타일셋:
- MSX++DEAD_PEOPLE - 클래식, 널리 사용됨
- UltimateCataclysm - 현대적, 상세함
- ChestHole - 간단함, 명확함
- MShock - 어두움, 대기감
각 타일셋은 고유한 아트 스타일과 기능을 가지고 있습니다.