Clarus Victoria

Next Run · 모드

Next Run 모드 가이드

Next Run 모드의 동작 방식, 파일 구조, 게임 컴포넌트에 대한 자세한 설명입니다. 직접 모드를 만들고 배포할 때 빠르게 확인할 수 있도록 이 링크를 저장해 두세요.

1. 일반

이 문서는 Next Run의 모드 시스템을 설명합니다: 모드를 설치하는 방법, 자신만의 모드를 만드는 방법, 다른 플레이어와 공유하는 방법을 안내합니다.

2. 모드 시스템

게임을 실행하고 '플레이'와 '게임 만들기' 버튼을 누르면 게임 폴더 안의 Mods 폴더가 스캔됩니다. 이 디렉터리의 하위 폴더마다 modinfo.json 파일이 있으면 하나의 모드로 간주됩니다.

2.1. Steam Workshop, 설치 및 모드 게시

Steam 클라이언트에서 게임을 실행하면 '플레이' 메뉴에 '모드' 패널이 표시되며 다음 버튼이 포함됩니다:

  • Steam 워크숍
  • 모드 폴더
  • 게시
  • 가이드

2.1.1. Steam 워크숍

Steam 클라이언트 내에서 Steam Workshop을 엽니다. 모드를 다운로드하려면 구독해야 합니다. 그러면 다운로드가 자동으로 시작됩니다. 모드가 큰 경우 다운로드에 시간이 걸릴 수 있으며, 상태는 Steam 클라이언트에서 확인할 수 있습니다.

2.1.2. 모드 폴더

게임의 모드가 있는 폴더를 엽니다.

2.1.3. 게시

게임은 Mods 폴더를 자동으로 스캔해 당신이 작성한 모든 모드를 Steam Workshop에 게시합니다.

  • 새로운 모드라면 steam_id가 자동으로 생성됩니다.
  • 이미 존재하는 모드는 업데이트됩니다.
  • 업로드 중에는 게시 버튼의 외형이 바뀝니다.
  • 변경 사항이 있을 때만 모드가 게시됩니다.
  • modinfo.json 파일의 변경은 콘텐츠 변경으로 간주되지 않습니다.
  • 게시된 모드는 전 세계 다른 플레이어가 사용할 수 있습니다. Steam Workshop만이 모드를 배포하는 유일한 방법은 아니며, Mods 디렉터리에 모드 폴더를 직접 배포해도 됩니다.

2.2. JSON 파일

게임의 모든 데이터와 텍스트는 JSON 형식을 사용합니다. 일반 텍스트 형식과의 주요 차이점은 데이터가 {} 중괄호로 묶여야 한다는 점입니다.

JSON 구문 설명:

  • https://en.wikipedia.org/wiki/JSON
  • https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON

게임의 예제 파일을 참고하는 것이 좋습니다.

2.3. 파일 구조

각 모드는 게임과 동일한 파일 구조를 가집니다. 이러한 파일은 새 콘텐츠를 추가하거나 기존 콘텐츠를 변경합니다. JSON 파일은 게임의 개별 요소를 추가하거나 수정합니다. 기타 형식의 파일(png, ogg)은 전체를 교체합니다.

예: data/game.json 파일을 만들고 그 안에서 'Warrior'(게임 클래스) 엔티티를 변경하면 해당 클래스만 바뀌고 game.json에 있는 다른 엔티티는 그대로 유지됩니다. portrait_warrior_front.png 파일을 추가하면 이름이 동일하기 때문에 게임의 해당 이미지를 완전히 교체합니다.

모드 내부에는 필수 및 선택 파일과 폴더가 있습니다. 표준 구조는 다음과 같습니다:

  • 모드 폴더 이름(임의, 모드 이름은 아님)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

더 잘 이해하려면 게임의 예제와 기존 모드를 살펴보는 것이 좋습니다. 아래는 각 폴더와 파일에 대한 자세한 설명입니다.

2.3.1. modinfo.json

모드의 메타데이터 파일입니다. 일부 데이터는 게시 시 Steam Workshop에서 사용됩니다.

  • title — Steam에 표시되는 모드 이름.
  • version — 모드 버전.
  • description — 모드 설명.
  • tags — Steam Workshop 탐색을 위한 태그.
  • order — 모드 로드 순서. 여러 모드가 동일 데이터를 변경할 때 order 값이 더 큰 모드가 더 작은 값을 가진 모드를 덮어씁니다.
  • steam_id — 수동 입력 불필요, 게시 시 자동 생성됩니다.
  • created_time — 생성 시간.
  • changed_time — 변경 시간.
  • 다른 필드를 추가할 수 있지만 파일 내부에서만 사용됩니다. 모드 작성자는 Steam Workshop을 통해 자동으로 결정됩니다.

2.3.2. preview.png

Steam Workshop용 모드 아이콘입니다. 권장 해상도는 256x256 또는 512x512이며 정사각형 비율을 권장합니다. 투명 PNG나 JPG를 사용할 수 있습니다.

2.3.3. data

JSON 데이터 파일이 있는 폴더입니다. 기존 엔티티를 변경하거나 새로 추가하는 파일을 포함합니다. 변경하거나 추가해야 하는 파일과 필드만 만들면 됩니다. 변경 가능한 데이터의 자세한 설명은 3장에서 확인하세요.

2.3.4. icons

게임 아이콘 폴더입니다. GUI와 타일을 제외한 대부분의 이미지를 포함합니다. 다양한 상황에 맞춰 여러 표준 크기와 레이어가 사용됩니다. 게임에서는 투명 배경의 PNG 파일을 사용합니다.

2.3.5. sounds

사운드와 음악 폴더입니다. 새 파일을 추가하거나 기존 파일을 교체할 수 있습니다. 사용되는 형식은 OGG입니다.

2.3.6. texts

게임 현지화 텍스트 폴더입니다. 각 파일은 한 언어에 대응하며 IETF BCP-47/ISO 표준을 사용합니다. 현재 13개 언어가 지원됩니다: ruRU.json, trTR.json, jaJP.json, koKR.json, zhTW.json, zhCN.json, plPL.json, ptBR.json, itIT.json, esES.json, frFR.json, deDE.json, enUS.json.

2.3.7. tiles

타일 이미지 폴더입니다. 투명 배경의 PNG 파일을 사용합니다. 기본 타일 크기는 256x384입니다. 타일은 땅, 오브젝트, 숲, 산맥, 도로와 같은 여러 레이어로 구성됩니다.

2.4. 모드 동기화

모드를 받은 후에는 게임을 실행할 때마다 Steam 창작마당에 게시된 최신 버전으로 자동 동기화됩니다.

본인이 모드의 제작자인 경우에는 동기화가 수행되지 않고 모드 파일이 덮어쓰여지지 않습니다. 이렇게 해서 모드 작업 중에 게임을 다시 시작해도 변경 사항이 사라지지 않도록 합니다.

다른 사람의 모드를 기반으로 모드를 만들고 싶다면 게임을 재시작하기 전에 다음을 수행해야 합니다.

  • 모드 폴더 이름을 해당 id와 다른 아무 이름으로 변경합니다.
  • modinfo.json 파일에서 "author", "created_time", "steam_id", "changed_time" 필드를 삭제합니다.

2.5. 데이터 병합

모드와 게임의 JSON 데이터 파일은 교체되지 않고 병합됩니다.

병합 순서:

  • 게임 JSON 파일의 원본 엔티티를 기본으로 사용합니다.
  • 그 위에 모드 데이터를 적용합니다. 모드는 modinfo.json의 order 필드에 설정된 우선순위에 따라 적용됩니다.

병합 시 모든 컴포넌트의 각 필드는 개별적으로 처리됩니다. 예를 들어 엔티티에 "hideIfZero":true가 있고 이를 false로 바꾸려면 필드를 삭제하는 것만으로는 부족하며, "hideIfZero":false를 명시적으로 지정해야 합니다.

list.json의 목록들도 같은 방식으로 병합됩니다. 항목 하나만 추가하려면 모든 필드가 포함된 각 목록을 복제할 필요가 없습니다. 단, 단순 데이터만 포함하는 목록은 완전히 교체되며, RndGoodEvents와 RndEvents 등이 해당됩니다.

3. 컴포넌트

Next Run은 ECS 아키텍처로 구축되었습니다. 게임은 모두 엔티티로 구성됩니다. 엔티티는 컴포넌트를 담는 컨테이너이며 id 필드만 가집니다. 나머지 데이터는 모두 컴포넌트로 정의됩니다. 모든 데이터는 JSON 파일로 설정됩니다.

JSON 파일의 요소 예시는 다음과 같습니다:

"Speed": {
    "Button": {"panel": "statsPanel","iconType": "btnBig","numText1Type": "total","icon": "arrow2"},
    "Tooltip": {"text": "Speed"},
    "Total": {"now": 25}
}

이 예시에서는 'Speed' 엔티티가 설명되어 있으며 세 가지 컴포넌트를 포함합니다: 버튼은 게임에서의 버튼 모양과 동작을 정의하고, 툴팁은 툴팁 설명을, 총합(Total)은 엔티티의 수치 값을 정의합니다. 여기서는 속도가 25입니다.

아래에는 컴포넌트와 필드에 대한 더 자세한 설명이 있습니다. 일부 속성은 자동으로 결정되어 JSON 파일에서 편집할 수 없습니다. 예를 들어 정화 난이도는 레벨과 게임이 계산하는 다른 매개변수에 따라 달라집니다.

3.1. Button

게임의 버튼 모양과 동작을 설명합니다.

  • panel = string, 기본 버튼 패널입니다. 게임의 모든 버튼은 특정 패널과 메뉴 안에 있습니다. 버튼을 어느 패널에 배치할지 결정하려면 예시를 참고하세요.
  • icon = string, 버튼 아이콘 이름입니다. icons 폴더의 PNG 파일 이름을 사용합니다.
  • iconType = string, 버튼 유형으로 크기와 버튼의 요소에 영향을 줍니다. 선택지: 'btn' — 일반 버튼, 'btnBig' — 아래쪽에 값이 있는 버튼.
  • color = string, 아이콘 배경색입니다. 예: green, yellow. 게임이 인식하는 색상 목록: green, superGreen, lightGreen, darkGreen, red, superRed, darkRed, gray, lightGray, darkGray, lightBlue, blue, darkBlue, darkDarkBlue, grayYellow, yellow, pink, cyan, darkCyan, almostBlack, black, orange, darkOrange, lightViolet, purple, chartreuse, num, gameBack, blank, halfTrans, white, base.
  • numText1 = double, 아이콘의 값입니다.
  • numTextAdd = string, 값에 붙는 추가 텍스트(예: '%').
  • numText1Type = string, 아이콘 값의 유형(예: level, total, duration).
  • numCustom = string, 고유한 아이콘 값(예: '∞').
  • numIcon = string, 값 옆에 표시할 아이콘(예: 레벨용 star, 상품용 coin).
  • hotkey = string, 키보드 단축키.
  • hide = bool, 버튼 숨김 여부.
  • hideIfZero = bool, 총합.now가 0이면 버튼을 숨깁니다.
  • disabled = bool, 버튼을 비활성화할지 여부. 예: 게임 시작 시 일부 메뉴가 비활성화됩니다.
  • interactable = bool, 버튼 상호작용 가능 여부(기본값 예). 비상호작용 버튼의 예시는 인벤토리 슬롯입니다.
  • cantBeDeselect = bool, 이 버튼의 선택 해제를 금지합니다.
  • cantBeSelect = bool, 버튼을 눌러도 선택되지 않도록 금지합니다.
  • draggable = bool, 드래그앤드롭으로 버튼을 이동할 수 있는지 여부.
  • x = double, 패널이 없는 버튼의 X 좌표(예: 인벤토리 슬롯에 사용).
  • y = double, 위와 동일한 Y 좌표.
  • upMiniPred = string, 이 엔티티에 대해 확인되는 동작 이름입니다. 동작이 가능하면 '개선' 유형의 미니 아이콘 팁이 표시됩니다.
  • craftMiniPred = string, '제작' 동작에 대한 동일한 팁입니다.
  • raiseMiniPred = string, '올리기' 동작에 대한 동일한 팁입니다.

3.2. Tooltip

버튼 툴팁의 내용을 설명합니다.

  • text = string, 게임에서 표시되는 엔티티 이름입니다.
  • dontShowDuration = bool, 지속 시간 값을 표시하지 않습니다.
  • hideSources = bool, 이 값에 영향을 주는 소스 엔티티를 표시하지 않습니다.
  • hideAsSubjTT = bool, 연관된 엔티티의 소스로서 이 객체를 표시하지 않습니다.
  • desc = string, 설명 텍스트(툴팁 맨 앞).
  • desc2 = string, 설명 텍스트(툴팁 끝 부분).
  • redDesc = string, 붉은색으로 강조되는 설명 텍스트(툴팁 끝 부분).
  • totalTextAs = string, '총합' 대신 사용할 텍스트.
  • ttPos = string, 버튼 대비 툴팁 위치. 선택지: 'top', 'left'.

3.3. GameClass

게임 클래스의 메커니즘을 설명합니다.

  • text = string, 게임에 표시되는 클래스 이름.
  • portrait_back = string, 클래스 선택 시 배경 이미지 391x598.
  • portrait_front = string, 클래스 선택 시 클래스 이미지 411x620, 투명 배경.
  • figurine = string, 지도에서 캐릭터 아바타 이미지 149x243.
  • doll = string, 인벤토리의 흑백 클래스 이미지 460x784.
  • bonusSkill1 = string, 보너스로 받는 스킬 1의 이름.
  • bonusSkillVal1 = double, 스킬 1 보너스 수치.
  • bonusSkill2 = string, 보너스로 받는 스킬 2의 이름.
  • bonusSkillVal2 = double, 스킬 2 보너스 수치.
  • debuffSkill1 = string, 패널티를 받는 스킬 1의 이름.
  • debuffSkillVal1 = double, 패널티 1 수치.
  • debuffSkill2 = string, 패널티를 받는 스킬 2의 이름.
  • debuffSkillVal2 = double, 패널티 2 수치.
  • gold = double, 클래스의 시작 골드 양.
  • remains = double, 시작 시 남는 유해 수.
  • equip = List<string>, 시작 시 착용할 아이템 목록.
  • units = string, 시작 시 등장할 존재의 이름.
  • itemName = string, 시작 인벤토리 아이템 이름.
  • itemNum = double, 시작 인벤토리 아이템 수.
  • learnList = string, 배울 주문 또는 설계도 목록 이름(list.json에 있음).
  • learnNum = double, 목록에서 학습할 주문 또는 설계도 수.
  • lessTime = double, 지옥의 공격 간격이 얼마나 짧아지는지.
  • manaBonus = double, 마나 보너스(최대치와 총합).
  • upgradeDexterityBonusMod = double, 민첩 스킬이 제공하는 업그레이드 보너스.
  • skillPointsPerLevel = double, 레벨업 시 얻는 스킬 포인트 수.
  • upgradeManaCostMod = double, 주문 업그레이드 효율 보너스.
  • freeRegion = bool, 무료 지역 여부.
  • necroBonus = bool, 강령술사 게임플레이 및 보너스.
  • druidBonus = bool, 드루이드 게임플레이 및 보너스.
  • stances = bool, 자세/폼/명령의 존재 여부.
  • defStance = string, 기본 자세.
  • notDemo = bool, 데모 버전에서 클래스가 비활성인지.
  • notTutorial = bool, 튜토리얼 모드에서 사용 가능한지 여부.

3.4. GameMode

게임 모드의 메커니즘을 설명합니다.

  • text = string, 게임에 표시되는 모드 이름.
  • back = string, 모드 선택 시 배경 이미지 391x598.
  • moreTime = double, 지옥의 공격 사이 시간이 얼마나 길어지는지.
  • lessTime = double, 지옥의 공격 사이 시간이 얼마나 짧아지는지.
  • woundChance = double, 부상 확률.
  • notDemo = bool, 데모 버전에서 모드가 비활성인지.
  • scenario = string, 이 모드용 별도 지도 이름.
  • noHellAttacks = bool, 이 모드에서 지옥 공격이 없는지(샌드박스처럼).
  • savesOnExitOnly = bool, 이 모드에서는 게임 종료 시에만 저장되는지 여부.

3.5. Biome

바이옴의 메커니즘을 정의합니다.

  • frequency = double, 지도 생성 시 바이옴이 등장하는 빈도입니다. 숫자가 클수록 더 자주 등장합니다. 0이면 생성되지 않습니다. Lava 바이옴은 항상 최종 지역으로 생성됩니다.
  • hexBase = string, 해당 바이옴의 기본 타일로, 정착지 아래쪽에 생성됩니다.
  • music = string, 바이옴의 음악 트랙 파일 이름.
  • hexPatterns = List<string>, 바이옴의 오브젝트 패턴 목록입니다. 카드 덱처럼 작동합니다: 패턴이 무작위로 섞인 뒤 무작위로 뽑히고, 0이 되면 다시 생성됩니다. 패턴 형식: 이름_오브젝트#이름_오브젝트, #은 오브젝트 사이 구분자입니다.
  • mobLevel1 .. mobLevel8 = string, 지역 레벨에 따라 바이옴에서 생성되는 존재 이름.

3.6. TileAsset

게임 지도에서 오브젝트의 외형을 결정합니다.

  • tileMap = string, 레이어 이름입니다: LandTilemap — 땅 표면, ObjectTilemap — 일반 오브젝트, RoadTilemap — 도로 등. 차이는 레이어가 서로 덮이는 순서뿐입니다.
  • rawSprite = string, 지도에 배치할 256x384 이미지.
  • icon = string, 모든 TileMap 위에 추가할 아이콘.
  • buttonIcon = bool, 아이콘을 Button에서 가져올지 여부.
  • delLevel = double, 삭제 레벨로, 동작으로 오브젝트를 제거하기 얼마나 어려운지 나타냅니다.

3.7. Shop

상점의 메커니즘을 설명합니다.

  • slots = int, 상점 슬롯 수.
  • type = string, list.json에 있는 상점 품목군 이름입니다.

3.8. Item

아이템의 메커니즘을 설명합니다.

  • slot = string, 장비 슬롯 이름.
  • stackable = bool, 한 묶음에 아이템을 1개 이상 쌓을 수 있는지 여부.
  • upgradable = bool, 아이템을 업그레이드할 수 있는지. 업그레이드 지속 시간은 레벨에 따라 달라집니다.
  • upProgress = double, 업그레이드에 필요한 노력.
  • order = double, 상점에서의 아이템 정렬 순서(숫자가 작을수록 위에 표시).

3.9. Mob

생명의 메커니즘을 설명합니다.

  • hell = bool, 존재가 지옥에 속합니다. 매수 시 패널티가 있으며 지옥 공격에 참여하고 유해 보너스를 제공합니다.
  • undead = bool, 존재가 언데드입니다. 매수할 수 없으며 특별한 업그레이드 메커니즘을 가집니다.
  • type = string, 존재의 유형 — 'Warriors', 'Defenders', 'Mages', 'Gatherers', 'Crafters'. 이는 배경색, 플레이어 적중 확률, 피해 유형, 전리품 유형을 결정합니다.
  • upMob = string, 존재가 업그레이드되는 대상.
  • upCostName = string, 업그레이드에 필요한 아이템 이름.
  • upCostNum = double, 업그레이드에 필요한 자원 수(기본 1).

3.10. Dungeon

던전 메커니즘을 설명합니다.

  • magic = bool, 던전이 마법 속성인지. 피해, 전리품, 애드온 유형에 영향을 줍니다.
  • boss = bool, 최종 던전인지.

3.11. Ruins

아이템을 탐색할 수 있는 장소인 유적의 메커니즘을 설명합니다.

3.12. Addon

확장(애드온) 메커니즘입니다. 확장은 던전 또는 유적이 있는 타일에 배치되어 해당 매개변수를 변경하고 별도 보상을 제공합니다.

  • skill = string, 던전을 정화하거나 유적을 조사할 때 플레이어가 받게 될 스킬 이름입니다. 'Random', 'Strength' 등을 지정할 수 있습니다.
  • unit = string, 행동 완료 후 받게 될 보너스 존재 이름입니다. 'Random'을 지정할 수 있습니다.
  • item = string, 행동 완료 후 받게 될 보너스 아이템 이름입니다. 'Random'을 지정할 수 있습니다.
  • phyChanceMulti = double, 정화 시 물리 피해 확률 수정치(예: 50%).
  • magChanceMulti = double, 정화 시 마법 피해 확률 수정치(예: 50%).
  • progressMulti = double, 정화나 조사 같은 행동을 얼마나 오래 수행하는지(예: 100%).
  • dmgMulti = double, 정화 시 피해량 수정치(예: 50%).

3.13. Build

해당 오브젝트가 건물임을 정의합니다.

3.14. Center

이 오브젝트가 정착지임을 정의합니다.

  • captureProgress = double, 정착지를 점령하는 데 필요한 노력.
  • upProgress = double, 정착지를 업그레이드하는 데 필요한 노력.
  • upCostName1 = string, 업그레이드에 필요한 아이템 1 이름.
  • upCostNum1 = double, 업그레이드에 필요한 아이템 1 수량.
  • upCostName2 = string, 아이템 2 이름.
  • upCostNum2 = double, 아이템 2 수량.
  • upCostName3 = string, 아이템 3 이름.
  • upCostNum3 = double, 아이템 3 수량.
  • upProp = string, 업그레이드 후 변하는 정착지 이름.

3.15. Gatherable

이 오브젝트에서 자원을 채집할 수 있음을 정의합니다.

  • gather = string, 채집 시 얻는 자원 이름.
  • deposit = bool, 해당 자원이 광맥인지 여부이며, 그렇다면 여기에서 광산을 건설할 수 있습니다.

3.16. AlliedForest

드루이드로 플레이할 때 '동맹 숲'의 메커니즘과 수치를 정의합니다.

  • allyBonus = double, '동맹 숲' 보너스의 크기.

3.17. Graveyard

이 오브젝트가 강령술사 플레이에서 중요한 공동묘지임을 정의합니다. 여기에서는 얻을 수 있는 유해 수가 무작위로 생성됩니다.

  • now = double, 현재 유해 수.
  • rndMin = double, 무작위 최소 유해 수.
  • rndMax = double, 무작위 최대 유해 수.
  • rndCeil = bool, 무작위 값을 올림할지 여부.

3.18. Pred

동작 컴포넌트입니다. 대부분의 기능은 코드에 숨겨져 있지만 일부는 사용할 수 있습니다.

  • action = string, 동작 실행 시 발동되는 행동 이름.
  • local = bool, 오브젝트와 같은 타일에 있어야 상호작용할 수 있는지.
  • attackPred = bool, 이 동작이 공격형인지. 공격 주문을 사용하면 자동으로 적용됩니다.
  • gatherPred = bool, 이 동작이 채집형인지. 자원 채집 주문을 사용하면 자동으로 적용됩니다.
  • craftPred = bool, 이 동작이 제작형인지. 제작 주문을 사용하면 자동으로 적용됩니다.
  • skill = string, 동작 수행에 사용되는 스킬. 예: 공격형 동작은 공격 스킬을 사용합니다.
  • longPred = bool, 동작이 즉시가 아니며 시간이 필요한지.
  • repeat = bool, 동작이 중단될 때까지 반복되는지.
  • noOwner = bool, 어떤 오브젝트도 선택하지 않아도 되는 동작인지.
  • skipLongTooltip = bool, 해당 동작의 간소화된 툴팁을 사용합니다.
  • onlyClass = string, 이 동작이 자세, 폼, 명령 유형이며 특정 클래스에만 가능한지.

3.19. Total

엔티티의 수치 값을 정의하는 컴포넌트로 보통 어떤 수량을 의미합니다.

  • now = double, 현재 값.
  • inc = double, 턴당 증가량.
  • max = double, 최대 값.
  • min = double, 최소 값.
  • rndMin = double, 무작위 최소 값.
  • rndMax = double, 무작위 최대 값으로 now를 대체합니다.
  • rndCeil = bool, 무작위 값을 올림할지 여부.
  • overMax = bool, 최대치를 초과할 수 있도록 허용합니다.
  • delIfZero = bool, 값이 0이면 삭제합니다.
  • numPercent = bool, 값이 백분율인지 여부.

3.20. Level

엔티티의 레벨을 정의하는 컴포넌트입니다.

  • now = double, 현재 값.
  • max = double, 최대 값.
  • min = double, 최소 값.
  • localLevelPlus = int, 지역 레벨 보너스로, 맵 오브젝트에만 적용됩니다. 해당 오브젝트 레벨은 지역 레벨 + 이 값이 됩니다.

3.21. Duration

엔티티의 지속 시간을 정의하는 컴포넌트입니다.

  • now = double, 현재 값.
  • max = double, 최대 값.
  • min = double, 최소 값.
  • delIfZero = bool, 값이 0이면 삭제합니다.

3.22. Mods

모디파이어 목록 컴포넌트입니다. 이 컴포넌트가 생성되면 다른 엔티티에 영향을 주는 변경 세트가 생성됩니다. 엔티티가 삭제되면 이러한 변경도 사라집니다.

  • radius = int, 맵에서 모디파이어가 영향을 주는 반경.
  • objType = string, 모디파이어가 적용되는 엔티티 유형(예: 'Stat', 'Skill', 'Prop', 'Item', 'ModableVal', 'PropMod').
  • objName = string, 엔티티 이름(예: 'Speed').
  • objComp = string, 모디파이어가 적용되는 컴포넌트(예: 'Total', 'Level').
  • objKey = string, 모디파이어가 적용되는 컴포넌트 필드(예: 'now', 'inc', 'max').
  • modType = string, 필드에 영향을 주는 방식: 'add', 'mult', 'addPerLevel', 'multPerLevel'.
  • now = double, 변경이 적용되는 모디파이어 값.
  • subjTooltipText = string, 동적 툴팁에 주체 표시가 추가됩니다.
  • skipPerTooltip = bool, 툴팁에서 PerLevel을 Plus로 대체합니다.
  • skipSubjTooltip = bool, 이 주체에 대한 툴팁을 생략합니다.

3.23. ModableVals

게임의 글로벌 변수 목록 컴포넌트입니다. 특정 엔티티에 대한 연결은 형식적입니다. 이러한 변수의 대부분의 로직은 게임 코드에 숨겨져 있습니다.

  • now = double, 변수 값.

3.24. Slot

엔티티를 인벤토리 슬롯으로 정의하는 컴포넌트입니다.

  • name = string, 슬롯 이름입니다. 이 슬롯에 아이템을 넣으려면 Item 컴포넌트의 slot 값이 동일해야 합니다.

3.25. Container

해당 엔티티를 칸이 있는 컨테이너로 정의합니다.

  • cells = int, 컨테이너 칸 수.
  • cellsPanel = string, 패널 이름.

3.26. Tom

주문서를 정의하며, 배우거나 주문을 얻거나 업그레이드할 수 있습니다.

  • cast = string, 주문 이름.

3.27. Cast

엔티티가 주문임을 정의합니다.

  • mana = double, 주문의 마나 비용.
  • predSkill = string, 이 주문을 활성화할 때 실행해야 하는 동작 유형입니다. 예를 들어 Attack 유형은 공격형 동작을 자동으로 실행합니다.
  • notSkills = string, 이 주문을 사용하려면 필요한 동작에 대한 툴팁.
  • attack = double, 이 주문을 사용하면 공격 타입 행동이 얼마나 빨라지는지(개념적으로는 마법 피해).
  • gather = double, 이 주문을 사용하면 자원 채집 행동이 얼마나 빨라지는지.
  • craft = double, 이 주문을 사용하면 제작 행동이 얼마나 빨라지는지.
  • heal = double, 플레이어 영웅이 회복하는 양.
  • newEvent = string, 주문이 호출하는 이벤트 이름으로 보통 버프류 이벤트입니다.
  • teleport = bool, 선택한 위치로 순간이동.
  • explore = double, 이 타일과 인접한 타일을 탐사합니다.

3.28. Blueprint

설계도 엔티티의 메커니즘입니다.

  • item = string, 생성될 아이템 이름.
  • build = string, 건설될 건물 이름.
  • costName1 = string, 제작에 필요한 아이템 1 이름.
  • costNum1 = double, 아이템 1 필요 수량.
  • costName2 = string, 아이템 2 이름.
  • costNum2 = double, 아이템 2 수량.
  • costName3 = string, 아이템 3 이름.
  • costNum3 = double, 아이템 3 수량.

3.29. Cost

구매 및 판매가 가능함을 정의하는 가격 컴포넌트입니다.

  • raw = double, 모디파이어가 적용되기 전 기본 비용입니다. 구매 및 판매 가격은 이를 기반으로 계산됩니다.

3.30. Event

이벤트용 컴포넌트입니다.

  • uniq = bool, 이벤트가 고유합니다. 동일한 이름의 새 이벤트가 나타나면 기존 이벤트를 제거합니다.
  • rndEvent = bool, 이벤트가 무작위입니다.
  • nextEvent1 = string, 현재 이벤트 완료 후 시작될 첫 번째 이벤트 이름.
  • nextEvent2 = string, 현재 이벤트 완료 후 시작될 두 번째 이벤트 이름.
  • castType = string, 주문 강화 효과 유형으로 동일 유형을 덮어씁니다.

3.31. Proc

확률(프로크) 작동을 위한 컴포넌트로, 예를 들어 질병 발생 확률 등을 정의합니다.

  • addEvent = string, 확률이 발동될 때 실행될 이벤트.

3.32. ProcMod

엔티티가 프로크 확률에 영향을 줄 수 있게 하는 컴포넌트입니다.

  • proc = string, 이 컴포넌트가 영향을 주는 프로크 이름.
  • chance = double, 영향력 크기로 일부 기능은 코드에 있습니다.
  • dependsLevel = bool, 엔티티 레벨에 따라 달라지는지.

3.33. Usable

일회성으로 효과를 주는 컴포넌트로, 예: 물약. '사용' 동작을 실행할 때 활성화됩니다.

  • stat = string, 효과가 영향을 주는 스탯 이름.
  • skill = string, 효과가 영향을 주는 스킬 이름.
  • nowBonus = double, 총합.now 필드에 영향을 주는 보너스.
  • maxBonus = double, 총합.max 필드에 영향을 주는 보너스.
  • cure = bool, 아이템이 질병 효과를 치유하는지.

3.34. Drankable

지도에서 마실 수 있는 오브젝트(예: 호수, 오아시스 등)를 가능하게 하는 컴포넌트입니다.

3.35. Sphinx

지도 퀘스트 오브젝트인 스핑크스 컴포넌트입니다. 매개변수는 지역 레벨을 기반으로 자동 결정됩니다.

3.36. Living_tree

지도 퀘스트 오브젝트인 '살아있는 나무' 컴포넌트입니다. 매개변수는 지역 레벨을 기반으로 자동 결정됩니다.

3.37. Vision

플레이어 영웅이 해당 엔티티가 있는 위치에 들어가면 지도 탐사 범위를 넓혀 주는 오브젝트 메커니즘입니다.

  • explore = int, 탐사 반경입니다. 1 — 일반 탐사, 2 — 한 칸 더 넓은 탐사.

3.38. Remains

엔티티를 유해 컴포넌트로 설명하며, 이러한 엔티티를 언데드로 변환할 수 있게 합니다.

3.39. Audio_comp

엔티티 유형에 따라 특정 사운드를 재생할 수 있게 하는 컴포넌트입니다.

  • click = string, 엔티티를 클릭할 때 나는 소리(동작 및 주문에 사용).
  • added = string, 엔티티가 생성될 때 재생되는 소리(이벤트에 사용).
  • ambient1 = string, 환경음 트랙 1.
  • ambient2 = string, 환경음 트랙 2.
  • ambient3 = string, 환경음 트랙 3.
  • process = List<string>, 동작이 진행되는 동안 재생되는 사운드 목록.
  • waits = List<double>, 사운드 재생 사이의 대기 시간 목록.
  • finish = string, 동작이 끝날 때 재생되는 소리.
  • rndProcess = bool, 재생 중 사운드에 약간의 무작위 효과를 줍니다.

3.40. Childs

재귀적으로 새 엔티티를 생성하는 컴포넌트입니다.

  • list = List<Entity>, 특정 엔티티에 대해 자동으로 생성되고 연결되는 자식 목록.

3.41. Preds

특정 엔티티에 대한 동작을 생성하는 컴포넌트지만, 대부분의 엔티티는 게임 코드에서 정의됩니다.

  • list = List<string>.

3.42. Equip

이 아이템을 영웅이 착용할 수 있음을 나타내는 태그 컴포넌트입니다.

3.43. Res

엔티티가 자원임을 나타내는 인디케이터 컴포넌트입니다. 툴팁, 애니메이션, 게임 요약에 필요합니다.

3.44. TurnAct

엔티티를 매 게임 시간 틱마다 확인해야 함을 의미하는 컴포넌트로, 예를 들어 Total과 Duration 컴포넌트에 사용됩니다.

4. 리스트

list.json 파일에는 엔티티나 컴포넌트가 아닌 데이터 섹션이 있으며, 게임 콘텐츠 생성을 위한 다양한 목록을 정의합니다.

4.1. RndGoodEvents

게임 시작 시 바로 생성되는 좋은 무작위 이벤트 목록입니다.

4.2. RndEvents

게임 진행 중 생성될 좋고 나쁜 무작위 이벤트 목록입니다.

4.3. Generator_dungeon_addons_physical

물리 피해를 주는 던전용으로 생성될 확장(애드온) 목록입니다.

4.4. Generator_dungeon_addons_magical

마법 피해를 주는 던전용으로 생성될 확장(애드온) 목록입니다.

4.5. Generator_ruins_addons

유적용으로 생성될 확장(애드온) 목록입니다.

4.6. Generator_settlement_levels

지역 레벨과 정착지 엔티티 이름 간의 대응 목록입니다. 예: 'lvl1':'Village'는 1레벨 지역에서 Village 유형 정착지가 생성됨을 의미합니다.

4.7. Generator_rar_metals

지역 레벨과 광맥 이름 간의 대응 목록입니다. 예: 'lvl2':'Deposit_tin'은 2레벨 지역에 주석 광맥이 생성됨을 의미합니다.

4.8. Generator_mages

지역 레벨과 마법사 이름 간의 대응 목록으로, 마법사 탑을 생성하고 방어하는 마법사들을 정의합니다. 예: 'lvl3':'Priestesses'는 3레벨 지역에서 여사제가 생성됨을 의미합니다.

4.9. LevelMobs_

지역 레벨별 존재 목록으로, 던전을 정화하거나 유적을 조사할 때 포로를 해방하면 플레이어가 받게 되는 존재를 정의합니다.

4.10. Crafter_start, Lord_start, Mage_start,

GameClass 컴포넌트의 learnList 필드에서 서로 다른 게임 클래스가 시작 시 받는 다양한 아이템 목록입니다. 생성되는 아이템 수는 learnNum 필드에 정의됩니다.

  • obj = string, 아이템 이름.
  • min = double, 무작위 최소 수.
  • max = double, 무작위 최대 수.
  • chance = double, 해당 아이템이 생성될 확률.
  • 다른 목록을 만들어 여러 클래스에 연결하면 다른 설계도나 주문을 배우게 할 수 있습니다.

4.11. Gold_

이 목록은 지역 레벨에 따라 생성되는 골드의 양을 정의합니다. 골드는 지도상의 모든 보상 유형에서 50% 확률로 등장합니다. 구문은 4.10을 참고하세요.

4.12. Loot_-

지역 레벨에 따른 보상 생성을 정의하는 목록 그룹입니다. 존재, 던전, 유적에 적용됩니다. 존재의 경우 50% 확률로 특정 아이템 드롭 확률을 결정하며, 나머지 50%는 4.13 목록을 사용합니다. 구문은 4.10을 참고하세요.

4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,

지역 레벨과 존재 클래스에 따라 보상을 생성하는 목록 그룹입니다. 존재에만 적용됩니다. 이 목록은 Loot_- 목록을 확장하며, 클래스 의존 보상을 생성하기 위해 50% 확률로 작동합니다(예: 마법사에게 주문서와 지팡이가 더 자주 나오도록). 구문은 4.10을 참고하세요.

4.14. Shop_, Books_

지역 레벨별 목록으로, 예: Books5 또는 Shop6. 상점 품목 구성을 생성하는 데 사용됩니다. 구문은 4.10을 참고하세요. 이 목록은 Shop 컴포넌트의 type 필드에 정의되며, 탑의 경우 게임 코드에서 생성됩니다.

Next Run — 모드 가이드