지역 설정

region_settings는 전체 지역에 적용되는 맵 생성 속성을 정의합니다. 일반 설정은 기본 오버맵 지형과 지표 피복을 정의합니다. 추가 섹션은 다음과 같습니다:

섹션 설명
region_terrain_and_furniture 지역 지형/가구를 실제 타입으로 해석하는 방법을 정의합니다.
field_coverage field 오버맵 지형을 덮는 식생을 정의합니다.
overmap_lake_settings 지역 내 호수를 생성하기 위한 매개변수를 정의합니다.
overmap_forest_settings 지역 내 숲과 습지를 생성하기 위한 매개변수를 정의합니다.
forest_mapgen_settings forest 지형 타입을 덮는 식생(및 기타 요소)을 정의합니다.
forest_trail_settings 숲길의 오버맵 및 로컬 구조를 정의합니다.
city 도시의 구조적 구성을 정의합니다.
map_extras 오버맵 지형이 참조하는 맵 엑스트라 그룹을 정의합니다.
weather 지역의 기본 날씨 속성을 정의합니다.
overmap_feature_flag_settings 플래그 기반 오버맵 피처 처리 동작을 정의합니다.

기본 지역(default region)의 경우 모든 속성과 섹션이 필요합니다.

필드

식별자 설명
type 타입 식별자입니다. 반드시 "region_settings"여야 합니다.
id 이 지역의 고유 식별자입니다.
default_oter 이 지역의 기본 오버맵 지형입니다.
default_groundcover 기본 지표 피복으로 적용할 지형 타입과 가중치 목록입니다.

예시

{
  "type": "region_settings",
  "id": "default",
  "default_oter": "field",
  "default_groundcover": [
    ["t_grass", 4],
    ["t_dirt", 1]
  ]
}

지역 지형 / 가구

region_terrain_and_furniture 섹션은 지역 지형/가구 항목이 해당 지역의 실제 지형 및 가구 타입으로 해석되는 방식을 정의합니다. 각 항목에는 가중치 목록이 있으며, mapgen이 지역 항목을 실제 항목으로 해석할 때 각 후보의 상대적 비중을 결정합니다.

필드

식별자 설명
terrain 지역 지형과 그에 대응하는 가중치 목록입니다.
furniture 지역 가구와 그에 대응하는 가중치 목록입니다.

예시

{
  "region_terrain_and_furniture": {
    "terrain": {
      "t_region_groundcover": {
        "t_grass": 4,
        "t_grass_long": 2,
        "t_dirt": 1
      }
    },
    "furniture": {
      "f_region_flower": {
        "f_black_eyed_susan": 1,
        "f_lily": 1,
        "f_flower_tulip": 1,
        "f_flower_spurge": 1,
        "f_chamomile": 1,
        "f_dandelion": 1,
        "f_datura": 1,
        "f_dahlia": 1,
        "f_bluebell": 1
      }
    }
  }
}

초원 피복

field_coverage 섹션은 field 오버맵 지형을 덮는 식생을 구성하는 가구와 지형을 정의합니다.

필드

식별자 설명
percent_coverage 식물이 존재하는 오버맵 지형 타일 비율(%).
default_ter 식물용 기본 지형 피처입니다.
other default_ter를 사용하지 않을 때의 피처 목록과 각 % 확률입니다.
boost_chance 식물 성장이 강화되는 field 오버맵 지형의 비율(%).
boosted_percent_coverage 강화 상태에서 식물이 존재하는 타일 비율(%).
boosted_other 강화 상태에서 default_ter를 쓰지 않을 때의 피처 목록과 % 확률입니다.
boosted_other_percent boosted_percent_coverageboosted_other로 덮이는 비율(%).

예시

{
  "field_coverage": {
    "percent_coverage": 0.9333,
    "default_ter": "t_shrub",
    "other": {
      "t_shrub_blueberry": 0.4166,
      "t_shrub_strawberry": 0.4166,
      "f_mutpoppy": 8.3333
    },
    "boost_chance": 0.833,
    "boosted_percent_coverage": 2.5,
    "boosted_other": {
      "t_shrub_blueberry": 40.0,
      "f_dandelion": 6.6
    },
    "boosted_other_percent": 50.0
  }
}

오버맵 호수 설정

overmap_lake_settings 섹션은 오버맵에서 호수를 생성할 때 사용하는 속성을 정의합니다. 실제 피처 배치는 모든 오버맵 전역에서 가장자리가 맞도록 결정되며, 이 매개변수들은 그런 전역 피처를 어떻게 해석할지에 초점이 맞춰져 있습니다.

필드

식별자 설명
noise_threshold_lake [0, 1], x > 값이면 lake_surface 또는 lake_shore를 생성합니다.
lake_size_min 실제 생성되기 위한 호수의 최소 크기(오버맵 지형 단위).
lake_depth 호수 깊이(Z-레벨 기준, 예: -1 ~ -10).
shore_extendable_overmap_terrain 인접 시 해안까지 확장될 수 있는 오버맵 지형 목록입니다.
shore_extendable_overmap_terrain_aliases 해안 확장 시 다른 오버맵 지형으로 취급할 오버맵 지형 목록입니다.

예시

{
  "overmap_lake_settings": {
    "noise_threshold_lake": 0.25,
    "lake_size_min": 20,
    "lake_depth": -5,
    "shore_extendable_overmap_terrain": ["forest_thick", "forest_water", "field"],
    "shore_extendable_overmap_terrain_aliases": [
      { "om_terrain": "forest", "om_terrain_match_type": "TYPE", "alias": "forest_thick" }
    ]
  }
}

오버맵 숲 설정

overmap_forest_settings 섹션은 오버맵에서 숲과 습지를 생성할 때 사용하는 속성을 정의합니다. 실제 피처 배치는 모든 오버맵 전역에서 가장자리가 맞도록 결정되며, 이 매개변수들은 그런 전역 피처를 어떻게 해석할지에 초점이 맞춰져 있습니다.

필드

식별자 설명
noise_threshold_forest [0, 1], x > 값이면 forest를 생성합니다.
noise_threshold_forest_thick [0, 1], x > 값이면 forest_thick을 생성합니다.
noise_threshold_swamp_adjacent_water [0, 1], 물가 인접 숲에서 x > 값이면 forest_water를 생성합니다.
noise_threshold_swamp_isolated [0, 1], 물과 떨어진 숲에서 x > 값이면 forest_water를 생성합니다.
river_floodplain_buffer_distance_min 강 범람원 버퍼의 최소 거리(오버맵 지형 단위).
river_floodplain_buffer_distance_max 강 범람원 버퍼의 최대 거리(오버맵 지형 단위).

예시

{
  "overmap_forest_settings": {
    "noise_threshold_forest": 0.25,
    "noise_threshold_forest_thick": 0.3,
    "noise_threshold_swamp_adjacent_water": 0.3,
    "noise_threshold_swamp_isolated": 0.6,
    "river_floodplain_buffer_distance_min": 3,
    "river_floodplain_buffer_distance_max": 15
  }
}

숲 맵 생성 설정

forest_mapgen_settings 섹션은 숲(forest, forest_thick, forest_water) 지형 생성에 사용하는 속성을 정의하며, 여기에는 아이템, 지표 피복, 지형, 가구가 포함됩니다.

일반 구조

최상위에서 forest_mapgen_settings는 이름 있는 설정 모음이며, 각 항목의 이름은 해당 설정이 적용될 오버맵 지형 이름(예: forest, forest_thick, forest_water)입니다. 숲 mapgen에서 렌더링되지 않는 오버맵 지형에 대해서도 설정을 정의할 수 있으며, 이는 숲 지형을 다른 지형 타입과 블렌딩할 때 사용됩니다.

{
  "forest_mapgen_settings": {
    "forest": {},
    "forest_thick": {},
    "forest_water": {}
  }
}

각 지형은 mapgen을 제어하는 독립적인 설정값 집합을 가집니다.

필드

식별자 설명
sparseness_adjacency_factor 이웃 지형 대비 값으로 오버맵 지형의 성김 정도를 제어합니다.
item_group 오버맵 지형 내부에 아이템을 무작위 배치할 때 사용할 아이템 그룹입니다.
item_group_chance 아이템이 배치될 확률(1~100%).
item_spawn_iterations 아이템 생성 로직을 호출할 횟수입니다.
clear_groundcover 이 오버맵 지형의 기존 groundcover 정의를 모두 제거합니다.
groundcover 기본 지표 피복에 사용할 지형의 가중치 목록입니다.
clear_components 이 오버맵 지형의 기존 components 정의를 모두 제거합니다.
components 배치될 지형/가구를 구성하는 컴포넌트 모음입니다.
clear_terrain_furniture 이 오버맵 지형의 기존 terrain_furniture 정의를 모두 제거합니다.
terrain_furniture 지형에 따라 조건부로 배치되는 가구 모음입니다.

예시

{
  "forest": {
    "sparseness_adjacency_factor": 3,
    "item_group": "forest",
    "item_group_chance": 60,
    "item_spawn_iterations": 1,
    "clear_groundcover": false,
    "groundcover": {
      "t_grass": 3,
      "t_dirt": 1
    },
    "clear_components": false,
    "components": {},
    "clear_terrain_furniture": false,
    "terrain_furniture": {}
  }
}

컴포넌트

컴포넌트는 이름 있는 객체들의 모음으로, 각 객체는 sequence, chance, 타입 집합을 가지며 mapgen 중 순서대로 판정되어 해당 위치에 배치할 피처를 결정합니다. 컴포넌트 이름은 region overlay에서 이를 덮어쓸 때에만 의미가 있습니다.

필드

식별자 설명
sequence 컴포넌트를 처리하는 순서입니다.
chance 이 컴포넌트에서 무언가가 배치될 확률(1/X)입니다.
clear_types 이 컴포넌트의 기존 types 정의를 모두 제거합니다.
types 이 컴포넌트를 구성하는 지형/가구의 가중치 목록입니다.

예시

{
  "trees": {
    "sequence": 0,
    "chance": 12,
    "clear_types": false,
    "types": {
      "t_tree_young": 128,
      "t_tree": 32,
      "t_tree_birch": 32,
      "t_tree_pine": 32,
      "t_tree_maple": 32,
      "t_tree_willow": 32,
      "t_tree_hickory": 32,
      "t_tree_blackjack": 8,
      "t_tree_coffee": 8,
      "t_tree_apple": 2,
      "t_tree_apricot": 2,
      "t_tree_cherry": 2,
      "t_tree_peach": 2,
      "t_tree_pear": 2,
      "t_tree_plum": 2,
      "t_tree_deadpine": 1,
      "t_tree_hickory_dead": 1,
      "t_tree_dead": 1
    }
  },
  "shrubs_and_flowers": {
    "sequence": 1,
    "chance": 10,
    "clear_types": false,
    "types": {
      "t_underbrush": 8,
      "t_shrub_blueberry": 1,
      "t_shrub_strawberry": 1,
      "t_shrub": 1,
      "f_chamomile": 1,
      "f_dandelion": 1,
      "f_datura": 1,
      "f_dahlia": 1,
      "f_bluebell": 1,
      "f_mutpoppy": 1
    }
  }
}

지형 가구

지형 가구는 지형 id 모음이며, 일반 mapgen이 끝난 뒤 해당 지형 위에 배치할 가구를 가중치 목록에서 뽑아 적용할 확률을 정의합니다. 예를 들어 습지의 담수 지형 위에 부들을 배치할 때 사용됩니다. 부들을 components 섹션에 넣어 일반 숲 mapgen 과정에서 배치할 수도 있지만, 그 경우 담수 지형에만 배치된다는 보장이 없습니다. 이 방식은 그 보장을 제공합니다.

필드

식별자 설명
chance 이 컴포넌트의 가구가 배치될 확률(1/X)입니다.
clear_furniture 이 지형의 기존 furniture 정의를 모두 제거합니다.
furniture 이 지형 위에 배치될 가구의 가중치 목록입니다.

예시

{
  "t_water_sh": {
    "chance": 2,
    "clear_furniture": false,
    "furniture": {
      "f_cattails": 1
    }
  }
}

숲길 설정

forest_trail_settings 섹션은 숲길 생성에 사용하는 속성을 정의합니다. 여기에는 숲길 시스템 생성 확률, 연결성, 들머리(trailhead) 생성 확률, 그리고 mapgen에서 실제 숲길 폭/위치를 조정하는 일반 매개변수가 포함됩니다.

필드

식별자 설명
chance 연속된 숲에 숲길 시스템이 생길 확률(1/X)입니다.
border_point_chance 숲의 N/S/E/W 최외곽 지점이 숲길 시스템에 포함될 확률(1/X)입니다.
minimum_forest_size 숲길 시스템 생성이 가능한 최소 연속 숲 크기입니다.
random_point_min 숲길 시스템 구성에 사용할 연속 숲 내 무작위 지점의 최소 개수입니다.
random_point_max 숲길 시스템 구성에 사용할 연속 숲 내 무작위 지점의 최대 개수입니다.
random_point_size_scalar 숲 크기를 이 값으로 나눈 값을 무작위 지점 최소 개수에 더합니다.
trailhead_chance 초원 근처 숲길 끝에 들머리가 생성될 확률(1/X)입니다.
trailhead_road_distance 들머리가 생성되기 위해 도로와 떨어질 수 있는 최대 거리입니다.
trail_center_variance mapgen에서 숲길 중심점을 X/Y 축 각각 +/- 분산 범위 내 임의 오프셋합니다.
trail_width_offset_min mapgen 숲길 폭 오프셋의 최소값입니다(rng(trail_width_offset_min, trail_width_offset_max)).
trail_width_offset_max mapgen 숲길 폭 오프셋의 최대값입니다(rng(trail_width_offset_min, trail_width_offset_max)).
clear_trail_terrain 기존 trail_terrain 정의를 모두 제거합니다.
trail_terrain 숲길에 사용할 지형의 가중치 목록입니다.
trailheads 들머리로 배치할 오버맵 스페셜/도시 건물의 가중치 목록입니다.

예시

{
  "forest_trail_settings": {
    "chance": 2,
    "border_point_chance": 2,
    "minimum_forest_size": 100,
    "random_point_min": 4,
    "random_point_max": 50,
    "random_point_size_scalar": 100,
    "trailhead_chance": 1,
    "trailhead_road_distance": 6,
    "trail_center_variance": 3,
    "trail_width_offset_min": 1,
    "trail_width_offset_max": 3,
    "clear_trail_terrain": false,
    "trail_terrain": {
      "t_dirt": 1
    },
    "trailheads": {
      "trailhead_basic": 50
    }
  }
}

도시

city 섹션은 도시 건물로 사용할 수 있는 오버맵 지형과 스페셜, 이들의 가중치 기반 배치 확률, 그리고 건물 종류별 상대 배치를 제어하는 일부 속성을 정의합니다.

필드

식별자 설명
type 도시 타입 식별자(현재는 사용되지 않음).
shop_radius 상점 배치의 반경 빈도입니다. 값이 작을수록 상점이 많아집니다.
park_radius 공원 배치의 반경 빈도입니다. 값이 작을수록 공원이 많아집니다.
houses 주택으로 사용할 오버맵 지형/스페셜의 가중치 목록입니다.
parks 공원으로 사용할 오버맵 지형/스페셜의 가중치 목록입니다.
shops 상점으로 사용할 오버맵 지형/스페셜의 가중치 목록입니다.

상점, 공원, 주택 배치

특정 위치에 배치할 건물을 고를 때, 게임은 도시 크기, 해당 위치의 도심 거리, 그리고 지역의 shop_radiuspark_radius 값을 고려합니다. 이후 상점, 공원, 주택 순서로 배치를 시도하며, 상점/공원 배치 확률은 rng( 0, 99 ) > X_radius * distance from city center / city size 공식을 기반으로 계산됩니다.

예시

{
  "city": {
    "type": "town",
    "shop_radius": 80,
    "park_radius": 90,
    "houses": {
      "house_two_story_basement": 1,
      "house": 1000,
      "house_base": 333,
      "emptyresidentiallot": 20
    },
    "parks": {
      "park": 4,
      "pool": 1
    },
    "shops": {
      "s_gas": 5,
      "s_pharm": 3,
      "s_grocery": 15
    }
  }
}

맵 엑스트라

map_extras 섹션은 오버맵 지형의 extras 속성이 참조할 수 있는, 이름 있는 맵 엑스트라 모음을 정의합니다. 맵 엑스트라는 정의된 mapgen 위에 추가 적용되는 특수 mapgen 이벤트를 의미합니다. 여기에는 엑스트라 발생 확률과 엑스트라 가중치 목록이 모두 포함됩니다.

필드

식별자 설명
chance 해당 오버맵 지형에서 맵 엑스트라가 생성될 확률(1/X)입니다.
extras 생성 가능한 맵 엑스트라의 가중치 목록입니다.

예시

{
  "map_extras": {
    "field": {
      "chance": 90,
      "extras": {
        "mx_helicopter": 40,
        "mx_portal_in": 1
      }
    }
  }
}

날씨

weather 섹션은 지역에 사용되는 기본 날씨 속성을 정의합니다.

필드

식별자 설명
spring_temp 지역의 봄 중반 기온(섭씨)
summer_temp 지역의 여름 중반 기온(섭씨)
autumn_temp 지역의 가을 중반 기온(섭씨)
winter_temp 지역의 겨울 중반 기온(섭씨)
base_humidity 지역의 기본 습도(상대습도 %)
base_pressure 지역의 기본 기압(밀리바 단위)
base_acid 지역의 기본 산성도(? 단위). 값이 1 이상이면 산성으로 간주됩니다.
base_wind 지역의 기본 풍속(mph 단위). 대략적인 연평균 값입니다.
base_wind_distrib_peaks 풍속 피크가 얼마나 높아질 수 있는지입니다. 값이 높을수록 바람이 강한 날이 많아집니다.
base_wind_season_variation 계절에 따른 바람 변화량입니다. 값이 낮을수록 변동이 커집니다.
weather_types 이 지역에서 허용되는 날씨 타입 id입니다. 첫 값은 기본 날씨 타입이 됩니다. 선언 순서는 날씨 선택에 영향을 줍니다. 자세한 내용은 WEATHER_TYPE.md를 참고하세요.

예시

{
	"weather": {
		"spring_temp": 7,
		"summer_temp": 16,
		"autumn_temp": 6,
		"winter_temp": -14,
		"base_humidity": 66.0,
		"base_pressure": 1015.0,
		"base_acid": 0.0,
		"base_wind": 5.7,
		"base_wind_distrib_peaks": 30,
		"base_wind_season_variation": 64,
		"base_acid": 0.0,
		"weather_types": [
			"clear",
			"sunny",
			"cloudy",
			"light_drizzle",
			"drizzle",
			"rain",
			"thunder",
			"lightning",
			"acid_drizzle",
			"acid_rain",
			"flurries",
			"snowing",
			"snowstorm"
	      ]
	    },
	}
}

오버맵 피처 플래그 설정

overmap_feature_flag_settings 섹션은 오버맵 피처에 지정된 플래그를 대상으로 수행되는 동작을 정의합니다. 현재는 지역별 허용 목록/차단 목록을 지정하는 메커니즘으로 사용됩니다.

필드

식별자 설명
clear_blacklist 기존 blacklist 정의를 모두 제거합니다.
blacklist 플래그 목록입니다. 일치하는 플래그가 있는 위치는 오버맵 생성에서 제외됩니다.
clear_whitelist 기존 whitelist 정의를 모두 제거합니다.
whitelist 플래그 목록입니다. 일치하는 플래그가 있는 위치만 오버맵 생성에 포함됩니다.

예시

{
  "overmap_feature_flag_settings": {
    "clear_blacklist": false,
    "blacklist": ["FUNGAL"],
    "clear_whitelist": false,
    "whitelist": []
  }
}

지역 오버레이

region_overlay는 지정한 지역에 적용할 region_settings 값을 정의할 수 있게 해주며, 기존 값을 병합하거나 덮어씁니다. 변경할 값만 지정하면 됩니다.

필드

식별자 설명
type 타입 식별자입니다. 반드시 "region_overlay"여야 합니다.
id 이 지역 오버레이의 고유 식별자입니다.
regions 이 오버레이를 적용할 지역 목록입니다. "all"이면 모든 지역에 적용됩니다.

그 외 추가 필드와 섹션은 region_overlay에 대해 정의된 것과 동일합니다.

예시

[{
  "type": "region_overlay",
  "id": "example_overlay",
  "regions": ["all"],
  "city": {
    "parks": {
      "examplepark": 1
    }
  }
}]