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 สำหรับหอคอยสร้างจากโค้ดเกม
