이 가이드는 Legion Hosting에서 호스팅하는 DayZ 서버의 루트 이코노미를 커스터마이징하기 위해 types.xml을 편집하는 방법을 설명합니다. 각 속성이 무엇을 제어하는지 배우고, 일반적인 튜닝 시나리오에 대한 예시를 보고, 변경 사항을 검증하는 방법을 이해하게 됩니다. 일반적인 서버 구성에 대해서는 DayZ 서버 설정 가이드를 참조하세요.
types.xml 또는 다른 미션 파일을 편집하기 전에 항상 GPanel의 Console 탭에서 서버를 중지하세요. 서버가 실행되는 동안 작성된 변경 사항은 다음 종료 시 덮어쓰이거나 무시될 수 있습니다.
types.xml 위치 찾기
DayZ의 루트 이코노미는 types.xml 파일에 의해 제어됩니다. 이 파일은 맵에서 스폰될 수 있는 모든 아이템과 각 아이템이 얼마나 자주 나타나는지를 정의합니다. 위치는 다음과 같습니다:
mpmissions/dayzOffline.chernarusplus/db/types.xml
다른 맵(예: Livonia)을 실행하는 경우, dayzOffline.chernarusplus를 해당 미션의 폴더 이름으로 바꾸세요. 일반적인 미션 폴더 이름:
| 맵 | 미션 폴더 |
|---|---|
| Chernarus | dayzOffline.chernarusplus |
| Livonia | dayzOffline.enoch |
GPanel 파일 편집기에서 types.xml을 열거나 SFTP를 통해 다운로드하여 로컬에서 편집한 후 다시 업로드하세요.
주요 속성 이해하기
types.xml의 각 아이템은 <type> 요소로 정의됩니다. 루트 빈도를 제어하기 위한 가장 중요한 하위 요소는 다음과 같습니다:
| 요소 | 설명 |
|---|---|
nominal |
서버가 항상 맵 전체에 유지하려고 시도하는 이 아이템의 목표 수량입니다. 아이템을 더 흔하게 만들려면 이 값을 늘리세요. 스폰을 완전히 비활성화하려면 0으로 설정하세요. |
min |
리스톡 시스템이 더 스폰하기 시작하기 전에 맵에 있는 이 아이템의 최소 수량입니다. nominal 이하여야 합니다. |
lifetime |
상호작용이 없을 경우 아이템이 디스폰되기 전 바닥에 남아 있는 시간(초)입니다. 아이템이 사라지기 전에 더 오래 지속되도록 하려면 이 값을 늘리세요. |
restock |
스폰 시도 사이의 시간(초)입니다. 이 값을 0으로 설정하면 수량이 min 아래로 떨어지는 즉시 아이템이 리스폰됩니다. |
quantmin / quantmax |
아이템이 스폰될 때의 수량 범위를 제어합니다(예: 탄창의 탄약 수). -1 값은 게임이 기본값을 사용함을 의미합니다. |
cost |
Central Economy에서 사용하는 우선순위 가중치입니다. 값이 높을수록 리스톡 주기 동안 아이템이 더 일찍 스폰됩니다. 희귀 아이템은 일반적으로 더 높은 cost 값을 가집니다. |
플래그 설명
각 <type> 요소에는 이코노미가 아이템의 기존 인스턴스를 계산하는 방법을 제어하는 <flags> 요소가 포함됩니다:
| 플래그 | 설명 |
|---|---|
count_in_map |
바닥에 있는 아이템을 nominal 총량에 포함하여 계산합니다. |
count_in_cargo |
컨테이너(배낭, 보관함) 내부의 아이템을 총량에 포함하여 계산합니다. |
count_in_hoarder |
플레이어 보관소와 묻힌 컨테이너에 있는 아이템을 총량에 포함하여 계산합니다. |
count_in_player |
온라인 플레이어가 소지한 아이템을 총량에 포함하여 계산합니다. |
crafted |
이 아이템이 제작 전용이며 자연적으로 스폰되지 않아야 하는 경우 1로 설정합니다. |
deloot |
다이내믹 이벤트 루트(헬리콥터 추락 등)의 경우 1로 설정합니다. |
예시: AKM 돌격소총 항목
<type name="AKM">
<nominal>5</nominal>
<lifetime>14400</lifetime>
<restock>0</restock>
<min>2</min>
<quantmin>-1</quantmin>
<quantmax>-1</quantmax>
<cost>100</cost>
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
<category name="weapons"/>
<usage name="Military"/>
</type>
이 예시에서 서버는 항상 맵에 5개의 AKM을 유지하려고 시도합니다(nominal=5). 수량이 2개 아래로 떨어지면(min=2), 새로운 것이 즉시 스폰됩니다(restock=0). 각 AKM은 건드리지 않으면 4시간 후 디스폰됩니다(lifetime=14400초). 바닥 스폰만 계산되므로(count_in_map=1), 플레이어 배낭이나 묻힌 보관소에 있는 AKM은 총량에서 차감되지 않습니다.
카테고리 및 사용 태그
<category> 및 <usage> 태그는 아이템이 맵의 어디에서 스폰되는지를 제어합니다:
<category name="weapons"/>-- 아이템 유형을 분류합니다(무기, 의류, 도구, 식량 등)<usage name="Military"/>-- 스폰을 군사 구역으로 제한합니다. 다른 값으로는Town,Village,Farm,Industrial,Hunting,School,Medic,Police,Firefighter,Coast등이 있습니다.
여러 개의 <usage> 태그를 추가하여 아이템이 여러 위치 유형에서 스폰되도록 허용할 수 있습니다.
일반적인 루트 튜닝 예시
| 목표 | 변경할 항목 |
|---|---|
| 아이템을 더 흔하게 만들기 | nominal과 min 늘리기 |
| 아이템 스폰 비활성화하기 | nominal을 0으로, min을 0으로 설정 |
| 아이템이 디스폰되기 전 더 오래 지속되게 하기 | lifetime 늘리기(값은 초 단위; 3600 = 1시간) |
| 획득 후 아이템 리스폰 속도 높이기 | restock을 줄이거나 0으로 설정 |
| 비축된 경우에도 희귀 루트를 계산하기 | count_in_hoarder="1"과 count_in_cargo="1" 설정 |
| 아이템이 마을과 군사 지역에서 스폰되도록 허용하기 | <usage name="Town"/>와 <usage name="Military"/>를 모두 추가 |
변경 사항 검증하기
types.xml은 유효한 XML이어야 합니다. 닫히지 않은 태그 하나, 일치하지 않는 괄호, 또는 잘못된 문자 하나만으로도 서버가 미션을 로드하지 못하게 되고 시작 시 충돌을 일으킬 수 있습니다. 이 파일을 로컬에서 편집할 때 업로드하기 전에 XML 검증 기능이 있는 텍스트 편집기(Notepad++ 또는 VS Code 등)를 사용하세요.
주의해야 할 일반적인 XML 실수:
<type>요소를</type>로 닫는 것을 잊기- 속성 값에서 일치하지 않는 따옴표(예: 닫는 따옴표가 없는
name="AKM) - 잘못된 문자 또는 추가 꺾쇠 괄호
- 파일 맨 위의 XML 선언을 실수로 삭제하기
types.xml과의 모드 상호작용
새 아이템을 추가하는 모드를 실행하는 경우, 해당 모드는 모드의 db/ 폴더에 자체 types.xml 항목을 포함할 수 있습니다. 바닐라 types.xml에 대한 변경 사항이 모드 아이템에 적용되지 않는 것 같다면, 모드가 해당 항목을 재정의하는지 확인하세요. 대신 모드 자체의 types.xml을 편집해야 할 수도 있습니다.
관련 문서
- DayZ 서버 설정 가이드 -- serverDZ.cfg 구성 및 플레이어 접속 방법
- DayZ 모드 설치 -- Steam Workshop 모드, 로드 순서 및 키 파일
- DayZ 문제 해결 -- 일반적인 오류, BattlEye 문제 및 RCON 설정
- SFTP를 통해 파일을 업로드하는 방법