• Produkte
  • Funktionen
  • Mod Master
  • Herunterladen
  • Spiele
  • Blog
  • Preisgestaltung

MoonstormSharedUtils

Autor:TeamMoonstormLetzte Aktualisierung:11/09/2021 03:40:242.6M530KB

Risk of Rain 2 MoonstormSharedUtils-1-lagofast mod master

Vorabhängigkeiten

Mod-Einführung

MSU ist eine modulare API, die für die Arbeit in einer Editor-Umgebung mit ThunderKit entwickelt wurde und einfach und einfach zu bedienen ist.

Moonstorm Shared Utility-Inhaltsladung und generisches Dienstprogramm-Framework für große Inhaltsmodule.

MoonstormSharedUtils, auch bekannt als MSU, ist eine API, die zum Erstellen von Inhaltsmodulen rund um das ThunderKit-System entwickelt wurde.

Ursprünglich Teil einer API und eines Frameworks, das für das Update erstellt wurde Starstorm2 Für ein besseres Entwicklerlebnis ist das ThunderKit-Setup exponentiell zu einer eigenen eigenständigen Bibliothek gewachsen, so dass es für jeden verfügbar ist, der große Inhaltsmodule mit ThunderKit erstellen möchte.

Ziele der API

MSU verfolgt die folgenden Ziele in Bezug auf die Entwicklung und Verwaltung des Verteidigungsministeriums.

  • Einfaches und dennoch leistungsstarkes System zum asynchronen Verwalten und Laden von Spielinhalten.
  • Ein leistungsstarkes Framework, das auf Modulen aufgebaut ist, ermöglicht es Ihnen, verschiedene Teile Ihres Modd-Workflows zu automatisieren, wie z. B. die Ausführung von Geräten, Monster und interaktive Spawns, und viele mehr.
  • Vereinfachen Sie den ThunderKit-Workflow, indem Sie einen Satz benutzerdefinierter zusammensetzbarer Objekte bereitstellen, um Inventare, Pfade und Pipelines zu verwalten.
  • Es wird großen Wert darauf gelegt, die vom Spiel bereitgestellten Systeme so weit wie möglich zu nutzen, wie z. B. standardmäßig bereitgestellte Delegate, grundlegendes Projektverhalten usw.
  • Nutzen Sie bestehende R2API-Frameworks, um Systeme anzutreiben, wie z. B. Controller-Modifikationen.
  • Der Schwerpunkt liegt auf der Arbeit im Editor statt auf der Arbeit am Code, um Assets zu erstellen.

Schlüsselmerkmale

IContentPiece, IContentPieceProvider und Modulframework

Während Mods, die nur Code haben, ihre Inhalte (Presets, ScriptableObjects usw.) zur Laufzeit und normalerweise während des Waches erstellen, führt dies zu einem Problem, das als "Forever Black Screen" bekannt ist, bei dem das System der meisten Mods initialisiert wird, bevor der Ladescreen des Spiels beginnt. Dies gibt den Eindruck, dass das Spiel eingefroren ist und nicht auf vergessliche Benutzer reagiert. Obwohl dies wahr ist, ist es schwierig, das Laden und die Interaktion zwischen benutzerdefinierten Inhalten von Assetbundles und dem Spielsystem zu verwalten.

MSU löst dieses Problem durch die Dreifaltigkeit von Inhaltsstoffen, Inhaltsstoffanbietern und Modulrahmen. Dieses Triplet wird verwendet, um Mods zu ermöglichen, ihre Assets während des Ladescreens asynchron zu laden und sie mit dem System des Basisspiels funktionieren zu lassen.

Inhaltliche Stücke

  • Zeigt irgendeine Form von Inhalten an, die der mod hinzufügt
  • Jedes ContentPiece ist an ein spezifisches Modul gebunden, das das Laden und die Implementierung von Inhalten abwickelt.
  • ContentPieces verfügt über ein Verfügbarkeitssystem, mit dem das Modul versteht, was geladen und initialisiert werden soll.
  • ContentPiece verfügt über eine asynchrone Lademethode, die das Modul während der Initialisierung verwendet, um Assets von Inhalten asynchron zu laden.
  • Die API bietet als Schnittstelle weitere Implementierungen:
    • , die eine Bindung an eine bestimmte UnityEngine.Object.
      • Die MSU umfasst Schnittstellen für folgende Implementierungen Inhaltliche Stücke<T>
        • IArtifactInhaltPiece, für ArtifactDefs
        • IEquipmentInhaltStück Gerätedefinition
          • IEliteInhaltStück Verwaltung Elite Definition Einem bestimmten Gerät zugeordnet ist.
        • IItemInhaltStück Projektdefinition.
          • Eine Unterschnittstelle heißt IVoidItemInhaltStück Verwalten Sie Gegenstände, die in Void Survivor hinzugefügt wurden, um das System zu beschädigen.
        • IItemTierInhaltStückFür ItemTierDefs
        • ISceneInhaltStück Szenariodefinition.
    • , bedeutet die Bindung an einen bestimmten Typ UnityEngine.MonoBehaviour
      • Die MSU umfasst Schnittstellen für folgende Implementierungen IGameObjectInhaltStück<TComponent>
        • ICharakterInhaltStück Für Charakter
          • IMonsterInhaltPiece Kann gegen feindliche Monster eingesetzt werden
          • Unterschnittstelle aufgerufen ISurvivorInhaltStückKann verwendet werden, um neue Überlebende zu verwalten.
        • Interaktive Inhalte Für Interaktiv.
    • IVanillaSurvivorInhaltStück, die eine Modifikation der Vanilla Survivor darstellt.
  • Klassen können auch implementiert werden IContentPackModifier, für die direkte Schnittstelle mit dem ContentPack Ihres Mods.

Modulen

  • Ein Modul ist eine Klasse, die verwaltet Inhaltliche Stücke Kurse mit Grundspielen.
  • Jedes Modul befasst sich mit einem bestimmten Schnittstellentyp sowie gegebenenfalls mit Subschnittstellen.
  • Das Modul weiß, dass es zu verwenden ist System.
  • Sobald Sie bereitgestellt haben IContentProviderFür ein Modul kann man es nennen Initialisierung Methode, um eine Coroutine abzurufen, die Ihren Inhalt asynchron initialisiert.
  • Die MSU bietet folgende Module an:
    • Werkstückmodul IArtifactInhaltPieces, ArtifactModule mit R2API.ArtifactCode Fügen Sie neue Artefakt-Codes zum Spiel hinzu. Es kümmert sich auch um das korrekte Ein- und Entkoppeln des Werkstücks, so dass das Einhaken des Werkstücks nur freigegeben ist, wenn es freigegeben ist.
    • Zeichenmodul, Verwaltung ICharakterInhaltStück, ISurvivorInhaltStück IMonsterInhaltPiece, Modul mit R2API.Director Umgang mit dem Laichen von Monstern in verschiedenen Phasen des Spiels.
    • Gerätemodul IEquipmentInhaltStückUnd IEliteInhaltsstückDieses Modul nutzt einen einzigen Hook, um die Ausführungsaufrufe des Gerätes zu verwalten.
    • Interaktionsmodul, Verwaltung Interaktive Inhalte, Modul mit R2API.Director Handhabung interaktiver Generationen für verschiedene Phasen des Spiels.
    • Projektmodul IItemInhaltStück Und IVoidItemInhaltStück. Es handelt sich automatisch um Artikel Beschädigung.
    • IItemTierModule IItemTierInhaltStück, das zu Beginn des Laufs automatisch eine Sammlung verfügbarer Dropdown-Listen für diese Ebene erstellt.
    • Szenenmodul, Verwaltung ISceneInhaltStück, die mit R2API. Phase Um mit dem Hinzufügen einer Phase im Spiel umzugehen.
    • Vanilla Survivor Modul, Verwaltung IVanillaSurvivorInhaltStück. für das Hinzufügen neuer Inhalte (Skins, Skills usw.) für die Überlebenden des Basisspiels

  • Lassen Sie das Modul wissen, welche Inhaltsfragmente erstellt, geladen und initialisiert werden sollen. MSU Nutzung Angeboten Inhaltliche Stückes zu den Modulen.
    • Während Sie Ihre eigenen erstellen können IContentPieceProvider Schnittstelle zur Verwaltung von Verfügbarkeitsschemata, MSU Der Inhalt ist nützlich Klassen enthalten Methoden, die die Assembly einfach analysieren können, um sie von Grund auf zu erstellen.

RoR2-freundliches System

Eines der wichtigsten Ziele von MSU ist es, mit dem Risiko des Rain 2-Systems zu arbeiten und Inhalte zu produzieren, die mit ihm funktionieren, anstatt das System des Basisspiels zu zwingen, mit unserem zu arbeiten. Daher bietet MSU ein leistungsstarkes System zur Interaktion mit den wichtigsten Systemen des Spiels wie Ausrüstung, buffs, Gegenständen usw.

Schnittstelle der Komponenten

Um unnötige Haken von häufig verwendeten Typen zu vermeiden, bietet die MSU Schnittstellen, die innerhalb der Komponenten folgender Systeme verwendet werden können:

  • IOnEinkommenDamageAnderer ServerEmpfangen, der als Haken auf TakeDamage fungiert und verwendet werden kann, um den Schaden des Opfers zu modifizieren.
  • Statistisches Projektverhalten, die als Hook-Schnittstelle für die Neuberechnung von Statistiken dient, enthält Methoden, die vor und nach der Neuberechnung von Statistiken ausgeführt werden.
  • iBodyStatArg Modifikator, eine Schnittstelle, die als R2API. Statistiken neu berechnenGetStatCoefficient-Delegation.

BaseItemMasterBehaviour

BaseItemMasterBehaviour, ähnlich wie sein Body-Gegenstück (Grundlegendes körperliches Verhalten) wird verwendet, um Verhaltensweisen zu erstellen, die dem CharacterMaster hinzugefügt werden, wenn das angegebene Element erhalten wird.

BaseBuffBehaviour

BaseBuffBehaviour ist eine Komponente, die verwendet werden kann, um Bufff-Effekte zu verwalten. Aus Performance-Gründen wird BaseBuffBehaviours nicht zerstört, wenn ein buff entfernt wird, stattdessen wird das Verhalten hinzugefügt, wenn der buff zum ersten Mal vom Hauptkörper erworben wird und wenn der buff-Stack erschöpft ist BehinderteDanach, wenn der Körper den buff wieder erhält, ist das Verhalten ErmöglichtDies reduziert den Arbeitsaufwand des Garbage Collectors und verbessert insgesamt die Leistung des Systems.

Verbesserter Thunderkit-Workflow:

Da sich das Ziel von MSU um die Arbeit in einem Editor dreht, hat MSU zahlreiche Dienstprogramme zur Erstellung von Inhalten für Spiele gebündelt.

WWise Unterstützung

MSU bietet eine benutzerdefinierte ImportExtension, die verwendet werden kann, um WWise-Assemblies im Spiel auf die schwarze Liste zu setzen, sodass Sie das WWise-Integrationssystem in Ihrem Projekt verwenden können.

Skriptbare Objekte

MSU stellt die folgenden ScriptableObjects zur Verfügung, die es ermöglichen, "Nur-Laufzeit"-Inhalte zum Zeitpunkt der Bearbeitung zu erstellen.

  • Realisierbare Entsperrungsbedeutung, als Abstraktion der Systeme UnlockableDef und AchievementDef, seine Entsperrung der Bedeutung Dies wird durch Erfolge freigeschaltet.
  • Punkt BuffDef, als Abstraktion von DotDef und weist DotDef automatisch seinem zugewiesenen BuffDef zu.
  • Erweiterte Definition löschen, als Elite Definition Klassen, Unterstützung für die automatische Hinzufügung zu den Basisspielebenen, Elite-Rampen, Deckmaterialien und mehr.
  • Anbieter von interaktiven KartenEin ScriptableObject, das die Metadaten enthält, die erforderlich sind, um die Interaktivität schrittweise zu generieren, wobei einer einzelnen Karte mehrere Schritte zugeordnet werden können.
  • MonsterCardProvider, ein ScriptableObject, das die Metadaten enthält, die erforderlich sind, um Monster in Stufen zu spawnen, und mehrere Stufen können einer Karte zugewiesen werden.
  • Projekte anzeigen WörterbuchEin ScriptableObject, das ähnlich wie R2API.ProjekteItemDisplayDictionary-System, das verwendet werden kann, um mehrere Regelgruppen zu bestehenden hinzuzufügen ArtikelDisplayRuleSets, Schlüsselassets und Display-Presets werden durch
  • NamedItemDisplayRuleSet, ScriptableObject, kann verwendet werden, um vollständige ArtikelDisplayRuleSet Für das Rollenmodell. Schlüsselassets und Display-Presets werden durch ArtikelDisplayKatalogSysteme innerhalb der MSU.
  • SerializableEliteTierDef, als Elite DEF Spiele innerhalb des Systems, denen ein Kostenmultiplikator zugewiesen werden kann, ist adressierbar mit Bezug auf die Basisspiel-Elite-Ebenen und -Modi.
  • UberSkinDef, als ein all-inclusive Dienstprogramm für SkinDefs, implementiert Unterstützung für das SkinVFX-System von R2API und fügt Skins zu normalen Charakteren hinzu

Vorgebaute zusammensetzbare Objekte

Da MSU unter Berücksichtigung des Thunderkits erstellt wurde, bietet MSU folgende ComposableObjects für Ihr Projekt:

  • Einfache Liste Verwenden Sie die notwendigen Manifestdatum Für die Deklaration Ihrer mod
  • Einstellungen von PfadreferenzDies ist für saubere Builds und Veröffentlichung Ihrer Mods
  • Hoch konfigurierbare Rohrleitungen:
    • Eine Veröffentlichungspipeline, die automatisch eine zip-Datei erstellt, um Ihre Mods für die Veröffentlichung vorzubereiten.
    • Allgemeine Pipeline, die verwendet werden kann, um Ihre Assemblies zu erstellen, komprimierte oder unkomprimierte Asset-Pakete zu erstellen und Streaming-Assets für Ihre Mods zu staging.
    • Contributor Pipeline Setup, mit der die Mitwirkenden einfach eine Pipeline zum Erstellen Ihrer Mods einrichten können.

Verwaltung von Konfiguration und Token

Mit der Standard-Implementierung von BepInEx kann das Erstellen einer Konfiguration für Ihre Mods ziemlich langwierig sein, MSU implementiert ein Konfigurationssystem über BepInEx, das es Ihnen ermöglicht, alles einfach zu konfigurieren.

ConfigureField, ConfiguredVariable und Optionsrisiken

Die MSU bietet folgende Abstraktionen für das BepInEx-Konfigurationssystem:

  • Konfigurationsfelder

    • Benutzerdefinierte Eigenschaften, die auf statische Felder angewendet werden können, um sie automatisch zu konfigurieren.
    • Der Konfigurationsprozess bindet die Konfiguration an das Profil mit einer eindeutigen Zeichenfolgen-ID, die dem benutzerdefinierten Profil zugewiesen ist.
    • Die Konfigurationsteil Und Spitzname Keine Implementierung erforderlich, MSU wird standardmäßig verwendet Mitgliederinformationen KonfigurationName, und DeklarationstypDer Name ist Konfigurationsteil
    • Es gibt eine "RiskofOptions"-Version von ConfigureField, die mit der RiskofOptions-API automatisch Optionen erstellt. Aufgrund der Beschränkungen der Eigenschaften können diese Optionen jedoch nicht massiv angepasst werden.
  • Konfigurationsvariablen

    • ConfiguredVariable ist eine Klasse, die Variablen darstellt, die konfiguriert werden können.
    • Es kann verwendet werden, um komplexe Konfigurationsszenarien mit Optionsrisiken zu erstellen.

FormatToken-System

Die Bindung von Konfigurationsänderungen an einen Token-Wert ist einer der besten Teile der Erstellung von Token mit Code. Die Übersetzung dieser Token kann jedoch schwierig zu verwalten sein, da der Übersetzer die Übersetzung direkt in eine C#-Quelldatei kodiert.

MSU zur Verfügung gestellt Format Token System, können Sie jetzt den Wert des Tokens mit dem String-Formatierungssystem von C # schreiben. Damit können Sie JSON-Sprachdateien richtig bootstrappen, die Übersetzer leicht für Übersetzungen verwenden können, solange die richtige Indexreihenfolge beibehalten wird.

Dokumentation und Quellcode

  • Die Dokumentation und der Quellcode finden Sie im Github Repository von MoonstormSharedUtil, wo Sie Hier

Spendenspenden

MSU ist ein Leidenschaftsprojekt von Nebby, einem der TeamMoonstorm-Mitglieder. Daher widmete er sich in seiner Freizeit daran und ermöglichte es dem Rest der Community, erstaunliche und beeindruckende Inhalte zu erstellen.

Die MSU wird immer kostenlos zu nutzen sein und wird nie hinter einer Paywall eingeschlossen sein, aber die Spende ist unglaublich geschätzt.

ko-fi

Nutzen Sie Mods von MSU

(Klicken Sie auf mich!)

(Hinweis: Klicken Sie auf das Symbol, um eine neue Registerkarte des Mod zu öffnen!)

Icon/URL Name Beschreibung
StarstormIcon Starstorm2 Die Fortsetzung von Star Storm 1. Füge neue Überlebende, Mechaniken, Gegenstände, Fähigkeiten, Feinde und mehr hinzu!
LostInTransitIcon Im Transport verloren gehen Lost in Transport ist ein mod, der sich auf die Wiederherstellung von Funktionen konzentriert, die von Risk of Rain 1 verloren gegangen sind und derzeit Gegenstände enthält.
VarianceAPIIcon Varianz-API Die VarianceAPI ermöglicht es Ihnen, Varianten für Ihren Charakter zu erstellen, die verschiedene Texturen, Beleuchtungen, Fertigkeiten und mehr haben können.
FortunesFromTheScrapyardIcon Zu veröffentlichen-Reichtum auf dem Schrottplatz Ein erweiterungsartiger Inhaltsmod rund um eine Drittanbieter-Weltraumfirma, die visuell auf Junkydump- und Cyberpunk-Themen basiert.
RulersOfTheRedPlaneIcon Herrscher der roten Ebene Allgemeines Inhaltsmuster, das auf der roten Ebene erweitert wird

Dank und Credits

  • Twiner, der ThunderKit erstellt.
  • IDeath und Harb helfen bei einer Vielzahl von Codierungsproblemen.
  • KingEnderBrine und RuneFox237 von RoR2SkinBuilder, die als Basis für das VanillaSkinDef-System eingesetzt werden.
  • GrooveSalad hilft bei der Konzeptionierung des Modulsystems und bietet StubbedShaders an.
  • Unbekannte Glasur für das MSU-Logo
  • Das Starstorm 2-Team, das nebby zuerst aus der Schwierigkeit brachte und MSU erschaffte.
  • Reichtum vom Scrap Yard Team, weil sie an meine Ziele glaubten und die MSU für ihr Verteidigungsministerium benutzten.
  • KevinFromHPCustomerService für die Erstellung des ursprünglichen Modulsystems, das schließlich MSU 2.0 wurde
  • Jeder aus der Risk of Rain 2 Community schätzt meine Arbeit.
Dieses Tool wird von der Drittpartei [bufftool] bereitgestellt.Hinweis-Symbol

Mods jetzt herunterladen

Installieren Sie LagoFast, starten Sie Risk of Rain 2 und spielen Sie mit den Mods, die Sie lieben.