game background image

MoonstormSharedUtils

作者:TeamMoonstorm最后更新:2021-09-11 03:40:24257.0万530KB

雨中冒险2 MoonstormSharedUtils-1-奇游Mod大师

前置依赖

Mod简介

MSU是一个模块化的API,旨在使用ThunderKit在编辑器环境中工作,旨在易于使用和简单。

Moonstorm共享实用程序-大型内容模块的内容加载和通用实用程序框架。

MoonstormSharedUtils,也称为MSU,是一个API,旨在围绕ThunderKit系统创建内容模块。

最初是为更新而构建的API和框架的一部分 Starstorm2 为了获得更好的开发体验,ThunderKit设置已经成倍增长,成为自己独立的库,因此任何希望使用ThunderKit创建大型内容模块的人都可以使用它。

API的目标

MSU为以下关于国防部发展和管理的目标而奋斗。

  • 简单而强大的系统,用于以异步方式管理和加载游戏内容。
  • 一个建立在模块上的强大框架,允许您自动化改装工作流的各个部分,如设备执行、怪物和可交互产卵等等。
  • 通过提供一组用于管理清单、路径和管道的自定义可组合对象来简化ThunderKit工作流。
  • 高度强调尽可能利用游戏提供的系统,比如默认提供的委托、基本项目行为等等。
  • 利用现有的R2API框架为系统提供动力,如控制器修改。
  • 强调在编辑器中工作,而不是在代码上工作来创建资产。

关键特征

IContentPiece、IContentPieceProvider和模块框架

虽然只有代码的mod在运行时并且通常是在清醒时创建它们的内容(预设、ScriptableObjects等),但这会导致被称为“永远黑屏”的问题,其中大多数mod的系统在游戏的加载屏幕开始之前就被初始化了。这给人一种游戏被冻结了,对健忘的用户没有反应的想法。虽然这是真的,但管理来自Assetbundles的定制内容和游戏系统之间的加载和交互是很困难的。

MSU通过内容件、内容件提供者和模块框架的三位一体解决了这个问题。这个三元组用于允许mod在加载屏幕期间异步加载他们的资产,并让他们与基础游戏的系统正常工作。

内容件

  • 表示mod正在添加的某种形式的内容
  • 每个ContentPiece都绑定到一个特定的模块,该模块处理内容的加载和实现。
  • ContentPieces有可用性系统,模块使用它来知道要加载和初始化什么内容。
  • ContentPiece有一个异步加载方法,模块在初始化期间使用该方法,用于异步加载内容的资产。
  • 作为接口,API提供了进一步的实现:
    • ,它表示绑定到特定 UnityEngine.Object.
      • MSU包括以下实现的接口 内容件<T>
        • IArtifactContentPiece,对于 ArtifactDefs
        • IEquipmentContentPiece 设备定义
          • IEliteContentPiece 管理 精英定义 与特定设备相关联。
        • IItemContentPiece 项目定义.
          • 一个子接口称为 IVoidItemContentPiece 管理虚空幸存者中添加的物品损坏系统。
        • IItemTierContentPiece为了 ItemTierDefs
        • ISceneContentPiece 场景定义.
    • ,表示绑定到特定类型的 UnityEngine.MonoBehaviour
      • MSU包括以下实现的接口 IGameObjectContentPiece<TComponent>
        • ICaracterContentPiece 为了 人物
          • IMonsterContentPiece 可以用来对付敌对的怪物
          • 调用的子接口 ISurvivorContentPiece可用于管理新的幸存者。
        • 交互内容件 为了 可互动的.
    • IVanillaSurvivorContentPiece,它代表了对香草幸存者的修改。
  • 类还可以实现 IContentPackModifier,用于直接与您的mod的ContentPack接口。

模块

  • 模块是一个类,它管理 内容件 有基本游戏的课程。
  • 每个模块处理特定类型的接口,以及可能的子接口。
  • 模块知道要使用 系统。
  • 一旦您提供了 IContentProvider对于一个模块,您可以将其称为 初始化 方法来获取一个协程,该协程将以异步方式初始化您的内容。
  • MSU提供以下模块:
    • 工件模块 IArtifactContentPieces,ArtifactModule与 R2API.ArtifactCode 给游戏添加新的神器代码。它还将处理工件的正确挂钩和脱钩,因此只有当工件被启用时,它的挂钩才被启用。
    • 字符模块,管理 ICaracterContentPiece, ISurvivorContentPiece IMonsterContentPiece,模块与 R2API.Director 在游戏的各个阶段处理怪物的产卵。
    • 设备模块 IEquipmentContentPieceIEliteContentPiece该模块利用单个钩子来管理设备的执行调用。
    • 交互模块,管理 交互内容件,模块与 R2API.Director 为游戏的各个阶段处理可交互的生成。
    • 项目模块 IItemContentPieceIVoidItemContentPiece.它自动处理项目损坏。
    • 项目模块 IItemTierContentPiece,它会在运行开始时自动为该层创建可用下拉列表的集合。
    • 场景模块,管理 ISceneContentPiece,它与 R2API.阶段 来处理在游戏中添加一个阶段。
    • 香草幸存者模块,管理 IVanillaSurvivorContentPiece.用于为基础游戏的幸存者添加新内容(皮肤、技能等)

  • 让模块知道要创建、加载和初始化哪些内容片段。MSU利用 提供 内容件s到模块。
    • 虽然您可以创建自己的 IContentPieceProvider 管理可用性方案的接口,MSU的 内容有用 类包含只需分析程序集即可从头创建它们的方法。

RoR2友好系统

MSU的一个关键目标是与Rain 2系统的风险一起工作,制作与它一起工作的内容,而不是强迫基础游戏的系统与我们的系统一起工作。因此,MSU提供了一个强大的系统来与游戏的关键系统(如装备、buffs、物品等)进行交互。

组件的接口

为了避免对常用类型进行不必要的挂钩,MSU提供了可在以下系统的组件内部使用的接口:

  • IOnIncomingDamageOtherServerReciever,它作为TakeDamage上的钩子,可以用来修改受害者的伤害。
  • 统计项目行为,作为重新计算统计信息的挂接接口,包含在统计信息重新计算之前和之后运行的方法。
  • iBodyStatArg修改器,一个接口,它作为 R2API.重新计算统计数据的GetStatCoefficient委托。

BaseItemMasterBehavior

BaseItemMasterBehaviour,很像它的Body对应物(基本身体行为)用于创建在获得指定项目时添加到CharacterMaster的行为。

BaseBuffBehaviour

BaseBuffBehaviour是一个可用于管理Buff效果的组件。出于性能原因,当buff被移除时,BaseBuffBehaviours不会被破坏,相反,当buff第一次被主体获得时,会添加该行为,当buff堆栈耗尽时,该行为是 有残疾的之后,当身体再次接收buff时,行为是 已启用这减少了垃圾收集器的工作量,总体上提高了系统的性能。

改进的Thunderkit工作流程:

由于MSU的目标围绕着在编辑器中工作,MSU捆绑了大量关于为游戏创建内容的实用程序。

WWise支持

MSU提供了一个自定义ImportExtension,可用于将游戏中的WWise程序集列入黑名单,允许您在项目中使用WWise集成系统。

可脚本化对象

MSU提供了以下ScriptableObjects,允许在编辑时创建“仅运行时”内容。

  • 可实现解锁定义,作为UnlockableDef和AchievementDef系统的抽象,它的 解锁定义 这是通过成就解锁的。
  • 点BuffDef,作为DotDef的抽象,并自动将DotDef分配给其指定的BuffDef。
  • 扩展删除定义,作为 精英定义 类,支持自动添加到基础游戏层,精英坡道,覆盖材料,等等。
  • 交互卡提供程序一个ScriptableObject,它包含分阶段生成可交互性所需的元数据,多个阶段可以分配给单个卡。
  • MonsterCardProvider,一个ScriptableObject,包含分阶段产卵怪物所需的元数据,多个阶段可以分配给一张卡。
  • 项目显示字典一个ScriptableObject,其工作方式类似于 R2API.项目的ItemDisplayDictionary系统,它可用于将多个规则组添加到现有的 ItemDisplayRuleSets,关键资产和显示预设由
  • NamedItemDisplayRuleSet、ScriptableObject,可用于创建完整的 ItemDisplayRuleSet 对于角色模型。关键资产和显示预设由 ItemDisplayCatalogMSU内部的系统。
  • SerializableEliteTierDef,作为 精英DEF 系统内的游戏,可以分配一个成本乘数,可寻址参考基本游戏精英层和模式。
  • UberSkinDef,作为SkinDefs的一个包罗万象的实用程序,实现了对R2API的SkinVFX系统的支持,并向普通角色添加皮肤

预构建可组合对象

由于MSU的创建考虑到了thunderkit,MSU为您的项目提供了以下ComposableObjects:

  • 简单的 显示 用必要的 舱单日期 用于声明您的mod
  • 的设置 路径引用这是用于干净的构建和发布你的mod
  • 高度可配置的管道系统:
    • 一个发布管道,自动构建一个zip文件,为你的mod的发布做好准备。
    • 通用管道,可用于构建您的程序集,构建压缩或未压缩的资产包,以及暂存您的mod的流资产。
    • 贡献者管道设置,贡献者可以使用它来轻松地设置一个管道来构建你的mod。

配置和令牌的管理

使用默认的BepInEx实现,为你的mod创建配置可能会非常冗长,MSU在BepInEx之上实现了一个配置系统,允许你轻松地配置任何东西。

ConfigureField、ConfiguredVariable和选项风险

MSU提供了BepInEx配置系统的以下抽象:

  • 配置字段

    • 可应用于静态字段以自动配置它们的自定义属性。
    • 配置过程利用分配给自定义配置文件的唯一字符串ID将配置绑定到配置文件。
    • The 配置部分外号 不需要实现,MSU默认使用 会员信息 配置Name,以及 声明类型的名称为 配置部分
    • 存在ConfigureField的“RiskofOptions”版本,它利用RiskofOptions API自动创建选项。然而,由于属性的限制,这些选项不能大量定制。
  • 配置变量

    • ConfiguredVariable是一个表示可以配置的变量的类。
    • 它可用于创建具有选项风险的复杂配置场景。

FormatToken系统

将配置更改绑定到令牌值是使用代码创建令牌的最佳部分之一,但是,这些令牌的翻译可能很难管理,因为它需要翻译人员将翻译直接编码到C#源文件中。

MSU提供 格式令牌 系统,您现在可以利用C#的字符串格式化系统编写令牌的值。有了这个,您可以正确地引导JSON语言文件,只要保持正确的索引顺序,翻译人员就可以轻松地使用这些文件进行翻译。

文档和源代码

  • 文档和源代码可以在MoonstormSharedUtil的Github存储库中找到,可以找到 在这里

捐款

MSU是TeamMoonstorm成员之一Nebby的一个激情项目。因此,他在空闲时间致力于此,让社区的其他人创造出令人惊叹和敬畏的内容。

MSU将永远免费使用,永远不会被封闭在付费墙后面,然而,捐赠是令人难以置信的感谢。

ko-fi

利用MSU的Mods

(点我!)

(注意:点击图标打开Mod的新标签!)

图标/URL 名字 描述
StarstormIcon Starstorm2 星际风暴1的续集。增加新的幸存者,机制,项目,技能,敌人,等等!
LostInTransitIcon 在运输途中丢失 迷失在运输中是一个专注于恢复从雨的风险1中丢失的功能的mod,目前包括物品。
VarianceAPIIcon 方差API VarianceAPI允许您为角色创建变体,变体可以有不同的纹理、灯光、技能等等。
FortunesFromTheScrapyardIcon 待释放——废料场的财富 一个围绕第三方太空公司的资料片式内容mod,视觉上基于垃圾场和赛博朋克主题。
RulersOfTheRedPlaneIcon 红色位面的统治者 在红色平面上扩展的通用内容模式

感谢和学分

  • 创建ThunderKit的Twiner。
  • IDeath和Harb帮助解决各种编码问题。
  • RoR2SkinBuilder的KingEnderBrine和RuneFox237,用作VanillaSkinDef系统的基础。
  • GrooveSalad在模块系统的概念化过程中提供帮助,并提供StubbedShaders。
  • MSU徽标的未知釉料
  • Starstorm 2团队,首先让nebby走出困境并创造了MSU。
  • 来自废料场团队的财富,因为他们相信我的目标,并利用MSU为他们的国防部。
  • KevinFromHPCustomerService,用于创建最终成为MSU 2.0的原始模块系统
  • 来自雨的风险2社区的每个人都欣赏我的工作。
本工具由三方[bufftool]提供Attention Nomal
下载

立即下载模组

下载客户端搜索雨中冒险2后使用Mod大师工具。