Next Run · Mod

Hướng dẫn mod Next Run

Mô tả chi tiết hệ thống mod, cấu trúc file và component. Lưu link này để tra cứu khi tạo và xuất bản mod.

1. Tổng quan

Tài liệu mô tả hệ thống mod trong Next Run: cài đặt, tạo và chia sẻ.

2. Hệ thống mod

Sau khi nhấn Chơi và Tạo game, game quét thư mục Mods. Mỗi thư mục con có modinfo.json là một mod.

2.1. Steam Workshop, cài và xuất bản

Nếu chơi qua Steam, menu Chơi có bảng Mod với các nút:

  • Steam Workshop
  • Thư mục mod
  • Xuất bản
  • Hướng dẫn

2.1.1. Steam Workshop

Mở Workshop trong Steam. Đăng ký để tải. Lớn thì mất thời gian. Trạng thái hiển trong Steam.

2.1.2. Thư mục mod

Mở thư mục mod của game.

2.1.3. Xuất bản

Game quét Mods và xuất bản lên Steam Workshop.

  • Mod mới: tự tạo steam_id.
  • Mod có: cập nhật.
  • Nút thay đổi khi đang tải.
  • Chỉ xuất khi có thay đổi.
  • Sửa modinfo.json không tính là thay đổi.
  • Mod xuất bản cho mọi người. Cũng có thể chia sẻ trực tiếp bằng copy thư mục.

2.1.4. Hướng dẫn

Link đến hướng dẫn này.

2.2. File JSON

Dữ liệu và văn bản dùng JSON. Dữ liệu trong ngoặc {}.

Cú pháp JSON:

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

Tham khảo file game.

2.3. Cấu trúc file

Mỗi mod có cấu trúc như game. File thêm hoặc sửa nội dung. JSON sửa từng phần. File khác (png, ogg) thay thế hoàn toàn.

Ví dụ: tạo data/game.json sửa Warrior, chỉ Warrior đổi. Thêm portrait_warrior_front.png thay hình.

Có file bắt buộc và tùy chọn:

  • Tên thư mục (bất kỳ, không phải tên mod)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

Xem ví dụ và mod có. Chi tiết bên dưới.

2.3.1. modinfo.json

File metadata mod. Một số dùng cho Steam Workshop.

  • title - tên mod, hiển trên Steam.
  • version - phiên bản.
  • description - mô tả.
  • tags - tag để tìm trong Workshop.
  • order - thứ tự tải. Mod order lớn ghi đè nhỏ.
  • steam_id - tự tạo khi xuất bản.
  • created_time - thời gian tạo.
  • changed_time - thời gian sửa.
  • Có thể thêm trường khác, chỉ dùng nội bộ. Tác giả xác định qua Steam.

2.3.2. preview.png

Hình mod cho Workshop. 256x256 hoặc 512x512. Vuông. PNG trong suốt hoặc JPG.

2.3.3. data

Thư mục data JSON. Sửa hoặc thêm thực thể. Chỉ tạo file và trường cần. Chi tiết ở phần 3.

2.3.4. icons

Thư mục icon. Hầu hết hình trừ GUI và tile. Nhiều kích thước và lớp. PNG trong suốt.

2.3.5. sounds

Thư mục âm thanh và nhạc. Thêm hoặc thay. Định dạng OGG.

2.3.6. texts

Thư mục văn bản bản địa hóa. Mỗi file 1 ngôn ngữ, chuẩn IETF BCP-47. 13 ngôn ngữ: 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

Thư mục tile. PNG trong suốt. Kích thước 256x384. Nhiều lớp: đất, vật, rừng, núi, đường.

2.4. Đồng bộ mod

Mod tự đồng bộ với Workshop mỗi khi chơi.

Nếu bạn là tác giả: không đồng bộ, không ghi đè.

Tạo mod từ mod người khác, trước khi khởi động lại:

  • Đổi tên thư mục.
  • Xóa trong modinfo.json: author, created_time, steam_id, changed_time.

2.5. Hợp nhất dữ liệu

JSON mod không thay mà hợp nhất.

Thứ tự:

  • File gốc là nền.
  • Mod xếp chồng theo order.

Mỗi trường xử lý riêng. Ví dụ hideIfZero:true muốn false phải ghi rõ false.

List trong list.json hợp nhất. List đơn giản (RndGoodEvents, RndEvents) thay hoàn toàn.

3. Component

Next Run dùng ECS. Game gồm thực thể (entity). Entity là container component. Chỉ có id. Dữ liệu trong component. Tất cả trong JSON.

Ví dụ JSON:

3.1. Button

Giao diện nút.

  • panel = string, panel mặc định. Nút ở trong panel. Xem ví dụ.
  • icon = string, tên icon từ thư mục icons, PNG.
  • iconType = string, loại nút: btn (thường), btnBig (có giá trị).
  • color = string, màu nền: 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, giá trị.
  • numTextAdd = string, phụ giá trị, ví dụ %.
  • numText1Type = string, loại giá trị: level, total, duration.
  • numCustom = string, giá trị riêng, ví dụ ∞.
  • numIcon = string, icon cạnh giá trị: star, coin.
  • hotkey = string, phím tắt.
  • hide = bool, ẩn nút.
  • hideIfZero = bool, ẩn khi Total.now = 0.
  • disabled = bool, tắt/bật.
  • interactable = bool, tương tác được (mặc định có). Slot không tương tác.
  • cantBeDeselect = bool, không bỏ chọn.
  • cantBeSelect = bool, không chọn.
  • draggable = bool, kéo thả.
  • x = double, tọa độ X, cho nút không panel.
  • y = double, tọa độ Y.
  • upMiniPred = string, kiểm tra hành động. Nếu có: mini icon Nâng cấp.
  • craftMiniPred = string, gợi ý Chế tạo.
  • raiseMiniPred = string, gợi ý Triệu hồi.

3.2. Tooltip

Nội dung tooltip.

  • text = string, tên hiển thị.
  • dontShowDuration = bool, ẩn thời lượng.
  • hideSources = bool, ẩn nguồn ảnh hưởng.
  • hideAsSubjTT = bool, ẩn làm nguồn cho entity khác.
  • desc = string, mô tả đầu tooltip.
  • desc2 = string, mô tả cuối tooltip.
  • redDesc = string, mô tả đỏ cuối.
  • totalTextAs = string, thay chữ Tổng.
  • ttPos = string, vị trí tooltip: top, left.

3.3. GameClass

Cơ chế lớp nhân vật.

  • text = string, tên lớp.
  • portrait_back = string, ảnh nền 391x598.
  • portrait_front = string, ảnh lớp 411x620, trong suốt.
  • figurine = string, avatar bản đồ 149x243.
  • doll = string, ảnh đen trắng inventory 460x784.
  • bonusSkill1 = string, kỹ năng thưởng 1.
  • bonusSkillVal1 = double, giá trị thưởng 1.
  • bonusSkill2 = string, kỹ năng thưởng 2.
  • bonusSkillVal2 = double, giá trị 2.
  • debuffSkill1 = string, kỹ năng phạt 1.
  • debuffSkillVal1 = double, giá trị phạt 1.
  • debuffSkill2 = string, kỹ năng phạt 2.
  • debuffSkillVal2 = double, giá trị phạt 2.
  • gold = double, vàng khởi đầu.
  • remains = double, xác khởi đầu.
  • equip = List(string), trang bị khởi đầu.
  • units = string, sinh vật khởi đầu.
  • itemName = string, vật phẩm khởi đầu.
  • itemNum = double, số lượng.
  • learnList = string, danh sách phép/bản vẽ trong list.json.
  • learnNum = double, số học từ danh sách.
  • lessTime = double, giảm thời gian giữa đợt Địa ngục.
  • manaBonus = double, thưởng mana.
  • upgradeDexterityBonusMod = double, thưởng nâng cấp từ Nhanh nhẹn.
  • skillPointsPerLevel = double, điểm kỹ năng/cấp.
  • upgradeManaCostMod = double, hiệu quả nâng phép.
  • freeRegion = bool, vùng miễn phí.
  • necroBonus = bool, gameplay Necromancer.
  • druidBonus = bool, gameplay Druid.
  • stances = bool, có thế/hình/lệnh.
  • defStance = string, thế mặc định.
  • notDemo = bool, không có trong demo.
  • notTutorial = bool, có trong Hướng dẫn.

3.4. GameMode

Cơ chế chế độ game.

  • text = string, tên chế độ.
  • back = string, ảnh nền 391x598.
  • moreTime = double, thêm thời gian giữa đợt.
  • lessTime = double, giảm thời gian.
  • woundChance = double, tỷ lệ thương.
  • notDemo = bool, không có demo.
  • scenario = string, bản đồ riêng.
  • noHellAttacks = bool, không Địa ngục (sandbox).
  • savesOnExitOnly = bool, lưu khi thoát.

3.5. Biome

Cơ chế biôm.

  • frequency = double, tần suất. 0 = không tạo. Lava luôn là vùng cuối.
  • hexBase = string, tile nền cho khu định cư.
  • music = string, nhạc biôm.
  • hexPatterns = List(string), mẫu vật. Như bộ bài: trộn, rút, hết thì tạo lại. Dùng # ngăn cách.
  • mobLevel1..8 = string, sinh vật theo cấp vùng.

3.6. TileAsset

Hình dạng trên bản đồ.

  • tileMap = string, lớp: LandTilemap, ObjectTilemap, RoadTilemap.
  • rawSprite = string, hình 256x384.
  • icon = string, icon trên tilemap.
  • buttonIcon = bool, lấy icon từ Button.
  • delLevel = double, độ khó xóa.

3.7. Shop

Cơ chế cửa hàng.

  • slots = int, số slot.
  • type = string, loại hàng trong list.json.

3.8. Item

Cơ chế vật phẩm.

  • slot = string, slot trang bị.
  • stackable = bool, chồng được.
  • upgradable = bool, nâng được.
  • upProgress = double, thời gian nâng.
  • order = double, thứ tự trong shop.

3.9. Mob

Cơ chế sinh vật.

  • hell = bool, địa ngục. Phạt hối lộ. Tham gia đợt. Thưởng xác.
  • undead = bool, vong linh. Không hối lộ. Nâng đặc biệt.
  • type = string, loại: Warriors, Defenders, Mages, Gatherers, Crafters. Xác định màu, tấn công, loot.
  • upMob = string, nâng thành gì.
  • upCostName = string, vật liệu nâng.
  • upCostNum = double, số lượng (mặc định 1).

3.10. Dungeon

Cơ chế hầm ngục.

  • magic = bool, phép. Ảnh hưởng sát thương, loot, addon.
  • boss = bool, hầm cuối.

3.11. Ruins

Cơ chế phế tích - tìm vật phẩm.

3.12. Addon

Addon: vật trong ô hầm/phế tích, thay đổi tham số và thưởng.

  • skill = string, kỹ năng nhận khi dọn. Random, Strength v.v.
  • unit = string, sinh vật thưởng. Random.
  • item = string, vật thưởng. Random.
  • phyChanceMulti = double, hệ số sát thương vật lý %.
  • magChanceMulti = double, hệ số sát thương phép %.
  • progressMulti = double, lâu hơn bao nhiêu %.
  • dmgMulti = double, hệ số damage %.

3.13. Build

Vật là công trình.

3.14. Center

Vật là khu định cư.

  • captureProgress = double, độ khó chiếm.
  • upProgress = double, độ khó nâng.
  • upCostName1 = string, vật liệu 1.
  • upCostNum1 = double, số lượng 1.
  • upCostName2 = string, vật liệu 2.
  • upCostNum2 = double, số 2.
  • upCostName3 = string, vật liệu 3.
  • upCostNum3 = double, số 3.
  • upProp = string, nâng thành gì.

3.15. Gatherable

Vật khai thác được.

  • gather = string, tài nguyên.
  • deposit = bool, mỏ. Xây hầm được.

3.16. AlliedForest

Rừng đồng minh cho Druid.

  • allyBonus = double, giá trị.

3.17. Graveyard

Nghĩa trang cho Necromancer. Xác ngẫu nhiên.

  • now = double, giá trị hiện tại.
  • rndMin = double, tối thiểu.
  • rndMax = double, tối đa.
  • rndCeil = bool, làm tròn lên.

3.18. Pred

Component hành động. Phần lớn trong code.

  • action = string, hành động khi thực hiện.
  • local = bool, phải cùng ô.
  • attackPred = bool, tấn công, tự kích hoạt với phép chiến.
  • gatherPred = bool, khai thác, tự với phép khai thác.
  • craftPred = bool, chế tạo, tự với phép craft.
  • skill = string, kỹ năng dùng.
  • longPred = bool, mất thời gian.
  • repeat = bool, lặp đến khi dừng.
  • noOwner = bool, không cần chọn.
  • skipLongTooltip = bool, tooltip đơn giản.
  • onlyClass = string, chỉ cho lớp cụ thể.

3.19. Total

Giá trị số, thường là số lượng.

  • now = double, giá trị.
  • inc = double, tăng/lượt.
  • max = double, tối đa.
  • min = double, tối thiểu.
  • rndMin = double, ngẫu nhiên min.
  • rndMax = double, ngẫu nhiên max, thay now.
  • rndCeil = bool, làm tròn lên.
  • overMax = bool, cho vượt max.
  • delIfZero = bool, xóa khi 0.
  • numPercent = bool, giá trị là %.

3.20. Level

Cấp entity.

  • now = double.
  • max = double.
  • min = double.
  • localLevelPlus = int, cấp địa phương = cấp vùng + giá trị.

3.21. Duration

Thời lượng.

  • now, max, min = double.
  • max = double.
  • min = double.
  • delIfZero = bool.

3.22. Mods

Modifier. Tạo thay đổi cho entity khác.

  • radius = int, bán kính bản đồ.
  • objType = string: Stat, Skill, Prop, Item, ModableVal, PropMod.
  • objName = string, tên entity.
  • objComp = string: Total, Level.
  • objKey = string: now, inc, max.
  • modType = string: add, mult, addPerLevel, multPerLevel.
  • now = double, giá trị.
  • subjTooltipText = string.
  • skipPerTooltip = bool.
  • skipSubjTooltip = bool.

3.23. ModableVals

Biến toàn cục.

  • now = double.

3.24. Slot

Slot inventory.

  • name = string, khớp Item.slot.

3.25. Container

Container.

  • cells = int.
  • cellsPanel = string.

3.26. Tom

Sách phép.

  • cast = string, tên phép.

3.27. Cast

Phép thuật.

  • mana = double.
  • predSkill = string, kích hành động nào.
  • notSkills = string, cần hành động.
  • attack = double, damage phép.
  • gather = double, tăng khai thác.
  • craft = double, tăng craft.
  • heal = double, hồi.
  • newEvent = string, buff.
  • teleport = bool.
  • explore = double, trinh sát.

3.28. Blueprint

Bản vẽ.

  • item = string, vật tạo.
  • build = string, công trình.
  • costName1 = string, vật liệu 1.
  • costNum1 = double.
  • costName2 = string.
  • costNum2 = double.
  • costName3 = string.
  • costNum3 = double.

3.29. Cost

Giá, mua bán.

  • raw = double, giá gốc.

3.30. Event

Sự kiện.

  • uniq = bool, duy nhất.
  • rndEvent = bool, ngẫu nhiên.
  • nextEvent1 = string.
  • nextEvent2 = string.
  • castType = string, loại buff.

3.31. Proc

Proc (tỷ lệ).

  • addEvent = string.

3.32. ProcMod

Ảnh hưởng proc.

  • proc = string.
  • chance = double.
  • dependsLevel = bool.

3.33. Usable

Dùng 1 lần (thuốc).

  • stat = string.
  • skill = string.
  • nowBonus = double.
  • maxBonus = double.
  • cure = bool, chữa bệnh.

3.34. Drankable

Uống (hồ, ốc đảo).

3.35. Sphinx

Quest Sphinx. Tự động theo cấp.

3.36. Living_tree

Quest Cây sống. Tự động.

3.37. Vision

Mở rộng tầm nhìn khi vào ô.

  • explore = int, bán kính. 1 = thường, 2 = rộng.

3.38. Remains

Xác. Biến thành vong linh.

3.39. Audio_comp

Âm thanh theo loại.

  • click = string, nhấn.
  • added = string, tạo.
  • ambient1..3 = string, môi trường.
  • ambient2 = string.
  • ambient3 = string.
  • process = List(string), âm khi làm.
  • waits = List(double), nghỉ giữa.
  • finish = string, xong.
  • rndProcess = bool, hiệu ứng ngẫu nhiên.

3.40. Childs

Tạo entity con.

  • list = List(Entity), con tự tạo.

3.41. Preds

Tạo hành động cho entity.

  • list = List(string).

3.42. Equip

Trang bị cho hero.

3.43. Res

Entity là tài nguyên. Tooltip, animation, tổng kết.

3.44. TurnAct

Kiểm tra mỗi tick: Total và Duration.

4. Danh sách

File list.json chứa các danh sách không phải entity hay component. Dùng để tạo nội dung.

4.1. RndGoodEvents

Sự kiện tốt ngẫu nhiên, tạo lúc đầu.

4.2. RndEvents

Sự kiện tốt và xấu ngẫu nhiên, tạo khi chơi.

4.3. Generator_dungeon_addons_physical

Addon cho hầm vật lý.

4.4. Generator_dungeon_addons_magical

Addon cho hầm phép.

4.5. Generator_ruins_addons

Addon cho phế tích.

4.6. Generator_settlement_levels

Cấp vùng -> khu định cư. Ví dụ lvl1:Village.

4.7. Generator_rar_metals

Cấp vùng -> mỏ. Ví dụ lvl2:Deposit_tin.

4.8. Generator_mages

Cấp vùng -> pháp sư gác tháp. Ví dụ lvl3:Priestesses.

4.9. LevelMobs_

Sinh vật theo cấp, được sau giải phóng tù nhân.

4.10. Crafter_start, Lord_start, Mage_start,

Vật khởi đầu cho các lớp, trong GameClass.learnList. Số từ learnNum.

  • obj = string, tên vật.
  • min = double.
  • max = double.
  • chance = double, tỷ lệ.
  • Có thể tạo danh sách khác cho lớp khác.

4.11. Gold_

Vàng theo cấp vùng. 50% cơ hội. Xem 4.10.

4.12. Loot_-

Loot theo cấp. Cho sinh vật, hầm, phế tích. 50% loot chung, 50% theo loại (4.13). Xem 4.10.

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

Loot theo cấp và loại sinh vật. 50% cho loot riêng. Ví dụ pháp sư rơi sách và gậy. Xem 4.10.

4.14. Shop_, Books_

Danh sách shop theo cấp, ví dụ Books5, Shop6. Xem 4.10. Tháp từ code.