외부 타일셋

외부 타일셋은 게임의 메인 소스 트리 외부에 저장되고 배포되는 타일셋입니다. 이를 통해 모더와 아티스트가 게임 자체를 수정하지 않고도 맞춤 그래픽 세트를 만들고 공유할 수 있습니다.

외부 타일셋 설정하기

외부 타일셋을 설정하려면 게임의 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에 지정된 widthheight를 차지합니다. 타일은 왼쪽에서 오른쪽, 위에서 아래로 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

모범 사례

  1. 일관된 타일 크기 - 타일셋 전체에서 일관된 너비와 높이를 사용하세요.
  2. 조직화 - 아이템, 몬스터, 지형 등 범주별로 타일을 별도의 PNG 파일로 구성하세요.
  3. 투명도 - 배경에는 PNG 투명도를 사용하세요.
  4. 명명 규칙 - 게임 데이터의 ID와 일치하는 명확하고 일관된 ID를 사용하세요.
  5. 문서화 - 타일셋에 대한 README와 라이선스 정보를 포함하세요.

기존 엔티티 ID 찾기

타일을 만들 엔티티 ID를 찾으려면:

  1. data/json/ 디렉토리에서 엔티티 정의를 확인하세요.
  2. 게임 내 디버그 메뉴를 사용하여 아이템/몬스터/지형 ID를 확인하세요.
  3. 기존 타일셋 정의를 참조로 확인하세요.

예시: 간단한 아이템 타일

{
  "id": "rock",
  "fg": 450,
  "bg": 0
}

이것은 타일셋 이미지의 인덱스 450에 있는 타일을 "rock" 아이템 ID에 매핑합니다.

참고사항

  • 타일셋은 게임 설정 메뉴에서 활성화되어야 합니다.
  • 게임은 정의가 없는 엔티티에 대해 대체 타일을 사용합니다.
  • 타일셋 크기가 클 경우 로딩 시간과 메모리 사용량에 영향을 줄 수 있습니다.
  • 타일셋 구성 형식은 게임 업데이트에 따라 변경될 수 있습니다.