연구소 JSON 작성

연구소는 매우 무작위화되어 있지만 실제 오버맵 지형 타일은 거의 없습니다. 즉, 맵의 다양성은 거의 전적으로 JSON을 사용하여 얻어집니다. 특히 연구소는 새로운 연구실과 같은 서브맵을 무작위로 선택하기 위해 place_nested를 광범위하게 사용합니다.

새 연구소 구역을 위한 빠른 가이드:

lab_floorplans.json에 om_terrain이 lab_4side인 새 맵젠 JSON을 추가합니다.

각 경계의 중간 2칸을 비워두세요. 그곳이 문이 열리는 곳이기 때문입니다. 경계 공간의 일부 또는 전부가 연구소 섹션 사이의 1폭 벽으로 바뀌므로, 가장 바깥쪽 공간이 생성되든 아니든 맵이 '작동'하도록 해야 합니다(비워두거나, 카운터, 사물함, 고장난 콘솔 등과 같은 '일회용' 가구를 배치). 회전을 허용합니다.

대신 연구소 피날레를 추가하려면 om_terrain을 lab_finale_1level로 사용하고 JSON을 lab_floorplans_finale1level.json에 넣으세요.

새 연구소 막다른 골목을 위한 빠른 가이드:

lab_floorplans_1side.json에 om_terrain이 lab_1side인 새 맵젠 JSON을 추가합니다.

북쪽을 향하는 구역을 만들고, 북쪽 경계의 중간 2칸을 비워두세요. 그곳이 문이 열리는 곳이기 때문입니다. 잠긴 구역을 만들려면 바닥을 't_strconc_floor'로 설정하면 계단이 그곳에 나타나지 않습니다(이 바닥은 lab_palette에서 ','입니다). place_nested를 사용하여 'lab_1side_border_doors'를 좌표 [0, 0]에 배치하세요. 회전을 허용하지 마세요.

새 연구실을 위한 빠른 가이드:

lab_rooms.json에 nested_mapgen_id가 lab_room_7x7 또는 lab_room_9x9이고 mapgensize가 [7, 7] 또는 [9, 9]인 새 맵젠 JSON을 추가합니다.

일부 드문 경우 첫 번째 행이나 열의 지형이 경계 벽으로 교체될 수 있으므로, 그런 경우에도 온전해 보이는 레이아웃을 선호하세요.

레이아웃이 방의 문이 어디로 열릴지 알아야 하는 경우, 대신 nested_mapgen_id로 lab_room_7x7_crossdoors와 lab_room_9x9_crossdoors를 사용하세요. 이렇게 하면 문이 벽의 정확한 중앙에만 나타납니다.

연구소 JSON 전체 가이드

구역 맵젠 JSON의 작동 방식

연구소는 주로 'lab', 'lab_stairs' 타입의 오버맵 타일과 일반적으로 하나의 'lab_finale'로 구성됩니다.

연구소 지형은 특별한 처리가 필요합니다: 계단, 경계 벽, 막다른 골목 등. 따라서 JSON은 대신 세 가지 '가짜' 오버맵 타일 타입을 사용합니다. 이 중 하나로 om_terrain을 설정한 JSON 맵젠 객체를 생성하면, 코드가 이를 변환하여 맵에 올바르게 배치합니다.

  • lab_1side - 정확히 하나의 연구소가 인접할 때 배치됨, 맵은 북쪽 입구를 가정해야 함. 회전을 허용하지 마세요.
  • lab_finale_1level - 연구소 바닥의 지형 타입에 배치됨. 회전 선택 사항.
  • lab_4side - 다른 모든 맵. 회전 선택 사항.

경계 벽

연구소는 비정상적인 경계를 가지고 있습니다: 연구소 구역 사이의 1폭 벽으로, 타일의 남쪽과 동쪽에 배치되며, 잠재적으로 중앙에 금속 문이 있습니다:

"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       M",
"                       M",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"                       |",
"-----------MM----------|"

북쪽이나 서쪽 이웃이 연구소가 아니면, 전체 측면을 벽으로 덮어써야 하며, 일반적으로 있던 것을 교체합니다. 동쪽이나 남쪽 이웃이 연구소가 아니면, 그 문을 벽으로 덮어써야 합니다.

일부 JSON 맵은 위 레이아웃에서 시작하여 회전을 비활성화하고 JSON의 'lab_border_walls' 청크로 place_nested를 호출할 수 있습니다. 이 경우 경계가 완벽하고 추가 코드가 실행되지 않습니다.

하지만 경계가 관리되지 않은 경우(동쪽을 향한 문/벽의 존재를 확인하여 결정), 코드는 네 방향 모두에 연구소 경계 벽과 문을 생성합니다.

'lab_border_walls'는 회전된 맵에서 작동하지 않으므로, 회전된 맵은 하드코딩된 경계 벽 생성에 의존해야 합니다. 더 많은 다양성을 만들기 때문에 이것이 더 바람직합니다. 따라서 맵 레이아웃이 주변의 최종 1x1 경계가 배치되든 아니든 상관없이 작동할 수 있다면, 회전을 허용하고 'lab_border_walls'를 배치하지 않는 것이 바람직합니다.

하나의 중간 지점: 맵의 일부만 경계 벽의 위치를 알아야 올바르게 보이는 경우, 맵의 동쪽에 벽을 놓고 [0, 1] 회전만 허용하세요. 그러면 최종 회전에서 맵의 동쪽이나 남쪽에 벽이 배치됩니다. 예제로 "전기실" 평면도를 참조하세요.

기타 하드코딩된 맵 생성

연구소는 무작위로 조명을 얻을 작은 확률이 있으며, 중앙 및 타워 연구소는 항상 조명을 받습니다. 오버맵이 계단을 표시하면 비어 있는 thconc_floor 공간에 계단이 배치됩니다. 또한 홍수, 포털, 방사선 사고 등과 같은 특수 효과가 발생할 10% 확률이 있습니다. 개미에 감염된 연구소는 부서집니다.

이들 중 어느 것도 JSON 변경을 요구하지 않지만, 방의 연구소 특수 효과에 대한 JSON 아이디어는 lab_maybe_effects_7x7 및 lab_maybe_effects_9x9의 생성 테이블에 추가할 수 있습니다. 현재 이것은 거미 감염만 추가합니다.

방 생성

맵 _내부_의 무작위성의 가장 일반적인 원천은 7x7 또는 9x9 방을 만들고 place_nested를 사용하여 무작위 내용을 부여하는 것입니다. 방을 직접 배치하지 말고, 대신 더 많은 정보를 인코딩하고 해당 요구사항을 충족하는 모든 종류의 방 사이에서 무작위화하는 '생성'이라는 중간 맵 청크를 사용합니다.

  • lab_spawn_7x7 - 문이 어디에 있는지 보장하지 않는 7x7 방.
  • lab_spawn_7x7_crossdoors - 문이 각 경계 벽의 중앙에만 있는 7x7 방.
  • lab_spawn_9x9 - 문이 어디에 있는지 보장하지 않는 9x9 방.
  • lab_spawn_9x9_crossdoors - 문이 각 경계 벽의 중앙에만 있는 9x9 방.

생성을 선택하면 lab_room_[size]와 _rare 변형, 그리고 해당하는 경우 _crossdoors 변형 사이에서 무작위화됩니다.

방이 두 벽을 재정의하는 것도 허용하는 경우, 이러한 생성을 사용하여 창을 추가하거나, 벽을 체인링크로 교체하거나, 여러 문과 내부 벽을 만들어 벽을 수정할 수 있는 더 많은 무작위 방을 추가할 수도 있습니다. 이러한 템플릿은 이 서브맵의 일부가 아닌 두 벽에는 문이 없다고 가정합니다. 이러한 서브맵은 수정할 벽을 포함하므로 크기가 8x8 및 10x10입니다.

  • lab_spawn_7x7_wall_nw
  • lab_spawn_7x7_wall_sw
  • lab_spawn_9x9_wall_nw
  • lab_spawn_9x9_wall_sw

가능한 한 가장 구체적인 생성을 사용하세요.

디렉토리

  • lab_central.json - 중앙 연구소 상단의 하드코딩된 맵.
  • lab_common.json - 지형 팔레트, 전리품 팔레트, 일반 JSON 객체.
  • lab_escape.json - 연구소 챌린지 탈출을 위한 특별한 맵, 연구소 4층에 특별히 배치됨.
  • lab_floorplan_cross.json - 십자 평면도는 연구소 가장자리와 접할 때 암석 충전재를 가지며, 드문 금고가 있어 특이함.
  • lab_floorplans.json - 연구소 레이아웃의 주요 소스.
  • lab_floorplans_1side.json - 막다른 골목 평면도.
  • lab_floorplans_finale1level.json - 피날레 평면도.
  • lab_rooms.json - 무작위 방.
  • lab_rooms_wall.json - 벽 경계를 다시 작성하는 무작위 방.
  • lab_trains.json - 2층과 4층에서 드물게 발생하는 연구소 과학 기차용 타일.