JSON 지붕 추가 가이드

건물에 JSON 지붕을 추가하려면 맵젠 중에 지붕과 건물을 연결하기 위해 몇 가지 파일을 더 사용해야 합니다.

편집할 파일:

data/json/mapgen/[name of building].json : 건물과 지붕의 맵.

data/json/overmap_terrain.json : 건물의 오버맵 특성.

data/json/regional_map_settings.json : 건물의 오버맵 생성 설정.

data/json/overmap/multietile_city_buildings.json : 건물 층 연결.

지붕 맵 만들기

맵을 처음 만든다면 MAPGEN을 참고하세요.

건물 맵이 들어 있는 data/json/mapgen/[name of building].json 파일을 열고 지붕 항목을 새로 추가합니다. 지붕도 같은 기초 면적을 사용하므로 기존 건물 항목을 복사할 수 있습니다.

지붕에 고유한 om_terrain ID를 지정합니다. 본층과 지붕의 om_terrain ID 예시는 다음과 같습니다.

"om_terrain": [ "abstorefront" ],
"om_terrain": [ "abstorefront_roof" ],

참고: 다른 맵과 공통 om_terrain ID를 공유하는 기존 건물에 지붕을 추가한다면 기존 층의 om_terrain ID도 고유하게 바꿔야 합니다.

원래 층의 벽 외곽선을 유지하고, 건물 바깥에는 t_open_air, 건물 면적 위에는 t_flat_roof를 추가합니다. terrain.json에서 선택할 수 있는 평평한 지붕 지형을 확인할 수 있습니다.

홈통, 굴뚝, 지붕 터빈 환풍구를 포함한 지붕 지형과 가구가 있습니다. 아이디어를 얻으려면 json/terrain.json과 furniture.json을 살펴보세요. 지붕에 접근할 방법도 고려해야 합니다. 사다리, 계단, 홈통을 사용할 수 있으며 일부 가구는 올라갈 수 있습니다.

data/json/mapgen/nested_chunks_roof.json에는 선택적으로 사용할 수 있는 중첩 맵 청크가 있습니다. 새 지붕 청크도 이 파일에 추가하세요.

지붕 항목 예시:

{
  "type": "mapgen",
  "method": "json",
  "om_terrain": "abstorefront_roof",
  "weight": 200,
  "object": {
    "fill_ter": "t_flat_roof",
    "rows": [
      "                        ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |....................3 ",
      " |......&.............3 ",
      " |....................3 ",
      " |....................3 ",
      " |-----------------5--3 ",
      "                        ",
      "                        ",
      "                        ",
      "                        ",
      "                        ",
      "                        ",
      "                        ",
      "                        "
    ],
    "terrain": {
      ".": "t_flat_roof",
      " ": "t_open_air",
      "|": "t_gutter_west",
      "-": "t_gutter_south",
      "3": "t_gutter_east",
      "5": "t_gutter_drop"
    },
    "furniture": { "&": "f_roof_turbine_vent" },
    "place_items": [
      { "item": "roof_trash", "x": [2, 21], "y": [3, 14], "chance": 50, "repeat": [1, 3] }
    ],
    "place_nested": [
      {
        "chunks": [
          ["null", 50],
          ["roof_4x4_party", 15],
          ["roof_4x4_holdout", 5],
          ["roof_4x4_utility", 40],
          ["roof_5x5_coop", 5]
        ],
        "x": [3, 15],
        "y": [3, 7]
      }
    ]
  }
}

본층과 지붕 연결

한 z 레벨에서 오버맵 타일을 하나보다 많이 차지하는 건물(학교, 저택)은 json/overmap/multitile_city_buildings.json 또는 json/overmap/multitile_buildings_terrain.json으로 이동합니다. 본층 항목을 추가합니다. point 좌표는 건물의 x, y, z 위치를 정의합니다. 1은 지붕을 지상층보다 한 z 레벨 위에 둡니다. 건물을 회전시키려면 방향을 나타내는 north를 덧붙입니다.

{
  "type": "city_building",
  "id": "abstorefront",
  "locations": ["land"],
  "overmaps": [
    { "point": [0, 0, 0], "overmap": "abstorefront_north" },
    { "point": [0, 0, 1], "overmap": "abstorefront_roof_north" }
  ]
}

오버맵 스페셜

오버맵 스페셜은 조금 다르게 처리합니다. z 레벨 연결과 오버맵 생성을 모두 json/overmap/specials.json에서 처리하므로 data/json/regional_map_settings.json 항목이 필요하지 않습니다.

오버맵 스페셜 예시:

{
  "type": "overmap_special",
  "id": "Evac Shelter",
  "overmaps": [
    { "point": [0, 0, 0], "overmap": "shelter" },
    { "point": [0, 0, -1], "overmap": "shelter_under" },
    { "point": [0, 0, 1], "overmap": "shelter_roof" }
  ],
  "connections": [
    { "point": [0, -1, 0], "terrain": "road" }
  ],
  "locations": ["wilderness"],
  "city_distance": [5, 10],
  "city_sizes": [4, 12],
  "occurrences": [1, 3],
  "rotate": false,
  "flags": ["CLASSIC"]
}

overmap_terrain 항목 추가

data/json/overmap_terrain.json으로 이동합니다. 각 z 레벨에는 오버맵에 표시되는 방식을 정의하는 항목이 필요합니다. name 필드가 게임 오버맵에 표시되는 이름을 결정합니다. 항목은 같은 색과 기호를 공유해야 합니다.

  {
    "type": "overmap_terrain",
    "id": "abandonedwarehouse",
    "copy-from": "generic_city_building",
    "name": "abandoned warehouse",
    "sym": 119,
    "color": "brown"
  },
  {
    "type": "overmap_terrain",
    "id": "abandonedwarehouse_roof",
    "copy-from": "generic_city_building",
    "name": "abandoned warehouse roof",
    "sym": 119,
    "color": "brown"
}

regional_map_settings에 추가

data/json/regional_map_settings.json으로 이동합니다.

이 파일은 스페셜이 아닌 건물의 생성 빈도와 위치를 결정합니다. 건물에 맞는 범주를 찾아 오버맵 스페셜 ID 또는 도시 건물 ID를 추가하고 생성 가중치를 지정합니다.

"abandonedwarehouse": 200,

테스트할 때 자연 생성을 확인하고 싶다면 생성률을 높여도 됩니다.

마지막으로 제출하기 전에 항상 추가한 내용을 검사하세요.