Next Run - ม็อด

คู่มือม็อด Next Run

คำอธิบายโดยละเอียดเกี่ยวกับการทำงานของม็อด โครงสร้างไฟล์ และส่วนประกอบของเกม Next Run บันทึกลิงก์นี้ไว้เพื่อค้นหาคำตอบอย่างรวดเร็วเมื่อสร้างและเผยแพร่ม็อดของคุณ

1. ทั่วไป

เอกสารนี้อธิบายระบบม็อดในเกม Next Run: วิธีติดตั้งม็อด สร้างม็อดเอง และแชร์กับผู้เล่นอื่น

  • อ่านส่วนที่ 2 อย่างน้อยหนึ่งครั้งเพื่อเข้าใจวิธีสร้างและทำงานของม็อด
  • ใช้ส่วนที่ 3 และ 4 เป็นเอกสารอ้างอิง
  • ใช้ตัวอย่างจากเกมเพื่อดูว่าทำงานจริงอย่างไรใน Steam Workshop: https://steamcommunity.com/app/1295870/workshop/
  • ไฟล์เกมสำหรับเวอร์ชัน 1.1.0 อยู่ที่: https://clarusvictoria.com/files/next_run_files_examples_1.1.0.zip

2. ระบบม็อด

หลังจากเปิดเกมและกดปุ่ม 'เล่น' และ 'สร้างเกม' จะมีการสแกนโฟลเดอร์ Mods ภายในไดเรกทอรีเกม ทุกโฟลเดอร์ย่อยในไดเรกทอรีนี้ที่มีไฟล์ modinfo.json จะถือว่าเป็นม็อด

2.1. Steam Workshop, การติดตั้งและเผยแพร่ม็อด

หากคุณเปิดเกมจากไคลเอนต์ Steam เมนู 'เล่น' จะมีแผง 'ม็อด' พร้อมปุ่มต่อไปนี้:

  • Steam Workshop
  • โฟลเดอร์ม็อด
  • เผยแพร่
  • คู่มือ

2.1.1. Steam Workshop

เปิด Steam Workshop ภายในไคลเอนต์ Steam สมัครสมาชิกม็อดเพื่อดาวน์โหลด การดาวน์โหลดเริ่มอัตโนมัติ หากม็อดมีขนาดใหญ่อาจใช้เวลา สถานะดาวน์โหลดแสดงในไคลเอนต์ Steam

2.1.2. โฟลเดอร์ม็อด

เปิดโฟลเดอร์ม็อดของเกมคุณ

2.1.3. เผยแพร่

เกมจะสแกนโฟลเดอร์ Mods อัตโนมัติและเผยแพร่ม็อดทั้งหมดที่คุณเป็นผู้สร้างไปยัง Steam Workshop

  • หากเป็นม็อดใหม่ steam_id จะถูกสร้างอัตโนมัติ
  • หากม็อดมีอยู่แล้ว จะถูกอัปเดต
  • ปุ่มเผยแพร่จะเปลี่ยนรูปลักษณ์ระหว่างอัปโหลด
  • ม็อดจะถูกเผยแพร่เฉพาะเมื่อมีการเปลี่ยนแปลงเนื้อหา
  • การเปลี่ยนไฟล์ modinfo.json ไม่ถือเป็นการเปลี่ยนแปลงเนื้อหา
  • ม็อดที่เผยแพร่จะพร้อมใช้งานสำหรับผู้เล่นทั่วโลก Steam Workshop ไม่ใช่วิธีเดียวในการเผยแพร่ม็อด - สามารถแชร์โดยตรงด้วยการวางโฟลเดอร์ม็อดในไดเรกทอรี Mods

2.1.4. คู่มือ

ลิงก์ไปยังคู่มือนี้

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' (คลาสเกม) จะเปลี่ยนเฉพาะ 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 มีไฟล์ที่เปลี่ยนเอนทิตีเกมที่มีอยู่หรือเพิ่มเอนทิตีใหม่ คุณสามารถสร้างเฉพาะไฟล์และฟิลด์ที่ต้องการเปลี่ยนหรือเพิ่ม

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 Workshop ทุกครั้งที่เปิดเกม

หากคุณเป็นผู้สร้างม็อด การซิงค์จะถูกข้ามและไฟล์ม็อดจะไม่ถูกเขียนทับ เพื่อป้องกันการสูญเสียการเปลี่ยนแปลงหลังรีสตาร์ทเกม

หากต้องการสร้างม็อดจากม็อดของคนอื่น ทำสิ่งต่อไปนี้ก่อนรีสตาร์ทเกม:

  • เปลี่ยนชื่อโฟลเดอร์ม็อดเป็นชื่ออื่นที่ต่างจาก id
  • ในไฟล์ modinfo.json ลบฟิลด์: 'author', 'created_time', 'steam_id', 'changed_time'

2.5. การรวมข้อมูล

ไฟล์ข้อมูล JSON ของม็อดและเกมจะถูกรวมเข้าด้วยกัน ไม่ใช่แทนที่

ลำดับการรวม:

  • เอนทิตีดั้งเดิมจากไฟล์ JSON ของเกมเป็นฐาน
  • ข้อมูลม็อดถูกวางทับ ม็อดถูกใช้ตามลำดับความสำคัญที่กำหนดโดยฟิลด์ order ใน modinfo.json

ระหว่างการรวม ทุกฟิลด์ของทุกคอมโพเนนต์จะถูกประมวลผลแยกกัน ตัวอย่างเช่น หากเอนทิตีมี 'hideIfZero':true และต้องการเปลี่ยนเป็น false การลบฟิลด์ไม่เพียงพอ ต้องระบุ 'hideIfZero':false อย่างชัดเจน

รายการใน list.json จะถูกรวมตามหลักการเดียวกัน ไม่ต้องคัดลอกทุกรายการพร้อมทุกฟิลด์หากต้องการเพิ่มเพียงรายการเดียว อย่างไรก็ตาม รายการที่มีเฉพาะข้อมูลธรรมดาจะถูกแทนที่ทั้งหมด เช่น RndGoodEvents และ RndEvents

3. คอมโพเนนต์

Next Run สร้างบนสถาปัตยกรรม ECS เกมทั้งหมดประกอบด้วยเอนทิตี เอนทิตีเป็นคอนเทนเนอร์ของคอมโพเนนต์ เอนทิตีมีเพียงฟิลด์ id ข้อมูลอื่นทั้งหมดอธิบายด้วยคอมโพเนนต์ ข้อมูลทั้งหมดกำหนดในไฟล์ JSON

ตัวอย่างรายการในไฟล์ 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, ซ่อนปุ่มหาก Total.now เท่ากับ 0
  • disabled = bool, ปุ่มถูกปิดใช้งานหรือเปิดใช้งาน บางเมนูเมื่อเริ่มเกมจะถูกปิดใช้งาน
  • interactable = bool, ปุ่มโต้ตอบได้หรือไม่ (ใช่ตามค่าเริ่มต้น) ตัวอย่างปุ่มที่โต้ตอบไม่ได้: ช่องกระเป๋า
  • cantBeDeselect = bool, ห้ามยกเลิกการเลือกปุ่มนี้
  • cantBeSelect = bool, ห้ามเลือกปุ่มเมื่อคลิก
  • draggable = bool, ลากวางปุ่มได้หรือไม่
  • x = double, ตำแหน่ง X ของปุ่มในอินเทอร์เฟซ ใช้สำหรับปุ่มที่ไม่มีแผง เช่น ช่องกระเป๋า
  • y = double, เหมือน X แต่สำหรับตำแหน่ง 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), รายการรูปแบบวัตถุในไบโอม ทำงานตามหลักสำรับไพ่: สับแบบสุ่ม ดึงแบบสุ่ม เมื่อหมดสำรับจะสร้างใหม่ รูปแบบมีรูปแบบ: ชื่อ_วัตถุ#ชื่อ_วัตถุ สัญลักษณ์ # เป็นตัวคั่น
  • 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, โบนัสเลเวลท้องถิ่น ทำงานเฉพาะวัตถุบนแผนที่ เลเวลเท่ากับเลเวลภูมิภาคบวก localLevelPlus

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, ชื่อช่อง เพื่อใส่ไอเทมในช่องนี้ ค่าฟิลด์ slot ของคอมโพเนนต์ Item ต้องตรงกัน

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

คอมโพเนนต์การทำงานของโอกาส (proc) เช่น ความน่าจะเป็นของการเกิดโรค

  • addEvent = string, อีเวนต์ที่ทำงานเมื่อโอกาสเกิดขึ้น

3.32. ProcMod

คอมโพเนนต์ที่ให้เอนทิตีส่งผลต่อโอกาส proc

  • proc = string, ชื่อ proc ที่คอมโพเนนต์นี้ส่งผล
  • chance = double, ความแรงของผล ส่วนหนึ่งของฟังก์ชันอยู่ในโค้ด
  • dependsLevel = bool, ขึ้นอยู่กับเลเวลของเอนทิตี

3.33. Usable

คอมโพเนนต์ใช้ครั้งเดียวที่ให้เอฟเฟกต์ เช่น ยา คอมโพเนนต์ทำงานเมื่อใช้แอคชัน ใช้

  • stat = string, ชื่อสถิติที่ได้รับผล
  • skill = string, ชื่อสกิลที่ได้รับผล
  • nowBonus = double, โบนัสที่ส่งผลต่อฟิลด์ Total.now
  • maxBonus = double, โบนัสที่ส่งผลต่อฟิลด์ Total.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

คอมโพเนนต์ที่หมายความว่าต้องตรวจสอบเอนทิตีทุก tick ของเวลาเกม เช่น สำหรับคอมโพเนนต์ 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 สำหรับหอคอยสร้างจากโค้ดเกม