• 產品
  • 特點
  • Mod Master
  • 下載
  • 遊戲
  • 博客
  • 定價

MoonstormSharedUtils

作者:TeamMoonstorm最後更新:2021-09-11 03:40:242.6M530KB

Risk of Rain 2 MoonstormSharedUtils-1-lagofast 模組大師

預依賴項

模組介紹

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 管理虛空倖存者中添加的物品損壞系統。
        • IItemTierContentPiecefor ItemTierDefs
        • ISceneContentPiece 場景定義.
    • ,表示綁定到特定類型的 UnityEngine.MonoBehaviour
      • MSU包括以下實現的接口 IGameObjectContentPiece<TComponent>
        • ICaracterContentPiece for 人物
          • IMonsterContentPiece 可以用來對付敵對的怪物
          • 調用的子接口 ISurvivorContentPiece可用於管理新的倖存者。
        • 交互內容件 for 可互動的.
    • 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委託。

BaseItemMasterBehaviour

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 Name 說明
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]提供注意圖標

立即下载模组

安裝 LagoFast,啟動 Risk of Rain 2 並暢玩你喜愛的模組。