• Produits
  • Fonctionnalités
  • Mod Master
  • Télécharger
  • Jeux
  • Blog
  • Prix

MoonstormSharedUtils

Auteur:TeamMoonstormDernière mise à jour :11/09/2021 03:40:242.6M530KB

Risk of Rain 2 MoonstormSharedUtils-1-modérateur lagofast

Prédépendances

Présentation du module

MSU est une API modulaire conçue pour fonctionner dans un environnement d'éditeur avec ThunderKit, conçue pour être facile à utiliser et simple.

Moonstorm Shared Utility-Chargement de contenu et cadre d'utilitaires génériques pour les modules de contenu volumineux.

MoonstormSharedUtils, également connu sous le nom de MSU, est une API conçue pour créer des modules de contenu autour du système ThunderKit.

Initialement faisant partie des API et des cadres construits pour les mises à jour Starstorm2 Pour une meilleure expérience de développement, le paramètre ThunderKit s’est multiplié pour devenir sa propre bibliothèque indépendante, de sorte qu’il est accessible à tous ceux qui souhaitent créer de gros modules de contenu avec ThunderKit.

Objectifs de l'API

MSU s'efforce d'atteindre les objectifs suivants concernant le développement et la gestion du ministère de la Défense nationale.

  • Système simple et puissant pour gérer et charger le contenu du jeu de manière asynchrone.
  • Un framework puissant construit sur des modules qui vous permet d'automatiser diverses parties de votre workflow de modding, comme l'exécution des appareils, les monstres et les spawns interactifs, et bien plus encore.
  • Simplifiez les flux de travail ThunderKit en fournissant un ensemble d'objets composables personnalisés pour gérer les inventaires, les chemins et les pipelines.
  • Un accent fort est mis sur l'utilisation autant que possible des systèmes fournis par le jeu, tels que les délégations fournies par défaut, le comportement de base du projet, etc.
  • Exploiter les cadres R2API existants pour alimenter le système, comme les modifications du contrôleur.
  • Mettez l'accent sur le travail dans l'éditeur plutôt que sur le code pour créer des actifs.

Caractéristiques clés

IContentPiece, IContentPieceProvider et module framework

Bien que seuls les mods de code créent leur contenu (préréglages, ScriptableObjects, etc.) à l'exécution et généralement à l'éveil, cela entraîne un problème appelé « écran noir pour toujours », où le système de la plupart de ces mods est initialisé avant que l'écran de chargement du jeu ne commence. Cela donne l'idée que le jeu est gelé et ne répond pas aux utilisateurs oubliés. Bien que cela soit vrai, il est difficile de gérer le chargement et l'interaction entre le contenu personnalisé provenant d'Assetbundles et le système de jeu.

MSU résout ce problème par une trinité de contenu, fournisseur de contenu et cadre modulaire. Ce triplet est utilisé pour permettre aux mods de charger leurs actifs de manière asynchrone pendant l'écran de chargement et de les faire fonctionner correctement avec le système du jeu de base.

Pièces contenues

  • Indique une forme de contenu que le mod ajoute
  • Chaque ContentPiece est lié à un module spécifique qui gère le chargement et l'implémentation du contenu.
  • ContentPieces dispose d'un système de disponibilité que les modules utilisent pour savoir quel contenu charger et initialiser.
  • ContentPiece possède une méthode de chargement asynchrone utilisée par le module lors de l'initialisation pour charger asynchrone les actifs du contenu.
  • En tant qu’interface, l’API fournit d’autres implémentations:
    • , qui signifie une liaison à un particulier UnityEngine.Object.
      • Le MSU comprend les interfaces implémentées par Pièces contenues<T>
        • IArtifactContentPiece, pour ArtifactDefs
        • IEquipmentContentPiece Définition des équipements
          • IEliteContentPiece Gestion Définition d'élite Associé à un dispositif spécifique.
        • IItemContentPiece Définition du projet.
          • Une sous-interface est appelée IVoidItemContentPiece Gérer les objets ajoutés à Void Survivor pour endommager le système.
        • IItemTierContentPiecefor ItemTierDefs
        • ISceneContentPiece Définition des scénarios.
    • , indiquant la liaison à un type particulier de UnityEngine.MonoBehaviour
      • Le MSU comprend les interfaces implémentées par IGameObjectContentPiece<TComponent>
        • ICaracterContentPiece for Personnage
          • IMonsterContentPiece Peut être utilisé contre des monstres hostiles
          • Sous-interfaces appelées ISurvivorContentPiecePeut être utilisé pour gérer de nouveaux survivants.
        • Contenu interactif for Interactible.
    • IVanillaSurvivorContentPiece, qui représente une modification de Vanilla Survivor.
  • Les classes peuvent également être implémentées IContentPackModifier, pour l'interface directe avec le ContentPack de votre mod.

Module

  • Un module est une classe qui gère Pièces contenues Cours avec des jeux de base.
  • Chaque module traite un type spécifique d'interface, et éventuellement des sous-interfaces.
  • Le module sait utiliser Système.
  • Une fois que vous avez fourni IContentProviderPour un module, vous pouvez l'appeler Initialisation Méthode pour obtenir une coroutine qui initialisera votre contenu de manière asynchrone.
  • MSU propose les modules suivants:
    • Module de pièce IArtifactContentPieces, ArtifactModule avec R2API.ArtifactCode Ajoutez de nouveaux codes d'artefact au jeu. Il gère également l'accrochage et le décrochage corrects de la pièce, de sorte que son accrochage n'est activé que lorsque la pièce est activée.
    • Module de caractères, gérant ICaracterContentPiece, ISurvivorContentPiece IMonsterContentPiece, module avec R2API.Director Gérer la fraie des monstres à toutes les étapes du jeu.
    • Module de l'équipement IEquipmentContentPieceEt IEliteContentPieceCe module utilise un seul crochet pour gérer les appels d'exécution de l'appareil.
    • Module interactif, gérant Contenu interactif, module avec R2API.Director Gérer les générations interactives pour les différentes étapes du jeu.
    • Module de projet IItemContentPiece Et IVoidItemContentPiece. Il gère automatiquement les dommages d'articles.
    • Module de projet IItemTierContentPiece, qui crée automatiquement une collection de listes déroulantes disponibles pour cette couche au début de l'exécution.
    • Module de scène, gérant ISceneContentPiece, il est associé à R2API. Phase Pour gérer l'ajout d'une étape au jeu.
    • Vanilla Survivant Module, gérant IVanillaSurvivorContentPiece. Pour ajouter de nouveaux contenus (skins, compétences, etc.) aux survivants du jeu de base

  • Faites savoir au module quels fragments de contenu doivent être créés, chargés et initialisés. Utilisation du MSU Offrir Pièces contenuess au module.
    • Bien que vous puissiez créer votre propre IContentPieceProvider Interface pour gérer les schémas de disponibilité, MSU Contenu utile Les classes contiennent des méthodes qui permettent de les créer à partir de zéro simplement en analysant les assemblies.

Système convivial RoR2

L'un des objectifs clés de MSU est de travailler avec les risques du système Rain 2 et de produire du contenu qui fonctionne avec lui, plutôt que de forcer le système du jeu de base à fonctionner avec le nôtre. Par conséquent, MSU fournit un système puissant pour interagir avec les systèmes clés du jeu tels que l'équipement, les buffs, les objets, etc.

Interfaces des composants

Afin d'éviter les crochets inutiles sur les types couramment utilisés, le MSU fournit des interfaces qui peuvent être utilisées à l'intérieur des composants des systèmes suivants:

  • IOnIncomingDamageOtherServerReciever, qui fonctionne comme un crochet sur TakeDamage et peut être utilisé pour modifier les dommages de la victime.
  • Comportement des éléments statistiques, qui sert d'interface raccrochée pour recalculer les statistiques, contient des méthodes qui s'exécutent avant et après le recalcule des statistiques.
  • Modificateur iBodyStatArg, une interface qui agit en tant que R2API. Recalculer les statistiquesLa commission GetStatCoefficient.

BaseItemMasterBehaviour

BaseItemMasterBehaviour, tout comme son équivalent Body (Comportement physique de base) Utilisé pour créer un comportement qui est ajouté au CharacterMaster lorsque le projet spécifié est obtenu.

BaseBuffBehaviour

BaseBuffBehaviour est un composant qui peut être utilisé pour gérer les effets Buff. Pour des raisons de performance, BaseBuffBehaviours n'est pas cassé lorsque le buff est supprimé, au contraire, le comportement est ajouté lorsque le buff est acquis pour la première fois par le corps, et lorsque la pile de buffs est épuisée, le comportement est HandicapésAprès cela, lorsque le corps reçoit à nouveau le buff, le comportement est ActivéCela réduit la charge de travail du collecteur de déchets et améliore globalement les performances du système.

Amélioration du flux de travail Thunderkit:

Comme l'objectif de MSU tourne autour du travail dans un éditeur, MSU fournit un grand nombre d'utilitaires sur la création de contenu pour les jeux.

Support WWise

MSU fournit une Extension ImportExtension personnalisée qui peut être utilisée pour mettre sur liste noire les assemblies WWise dans votre jeu, vous permettant d'utiliser le système d'intégration WWise dans votre projet.

Objet scriptable

MSU fournit les ScriptableObjects suivants qui permettent de créer du contenu « exécuté uniquement » au moment de l'édition.

  • Déverrouillage peut être réalisé, comme une abstraction des systèmes UnlockableDef et AchievementDef, son Déverrouillage sens Ceci est déverrouillé grâce à des réalisations.
  • Point BuffDef, comme une abstraction de DotDef et assigne automatiquement DotDef à son BuffDef spécifié.
  • Extension Supprimer la définition, comme Définition d'élite Classes, prise en charge de l'ajout automatique aux couches de jeu de base, rampes d'élite, matériaux de couverture, et bien plus encore.
  • Fournisseur de cartes interactivesUn ScriptableObject qui contient les métadonnées nécessaires à la génération d'interactivité par étapes, plusieurs étapes pouvant être affectées à une seule carte.
  • MonsterCardProvider, un ScriptableObject qui contient les métadonnées nécessaires pour pondre des monstres par étapes, plusieurs étapes peuvent être attribuées à une seule carte.
  • Dictionnaire d'affichage des projetsUn ScriptableObject qui fonctionne comme R2API. ProjetsSystème ItemDisplayDictionary, qui peut être utilisé pour ajouter plusieurs groupes de règles à un existant ItemDisplayRuleSets, les actifs clés et les préréglages d'affichage sont établis par
  • NamedItemDisplayRuleSet, ScriptableObject, peut être utilisé pour créer un complet ItemDisplayRuleSet Pour le modèle de personnage. Les actifs clés et les préréglages d'affichage sont établis ItemDisplayCatalogSystèmes à l'intérieur du MSU.
  • SerializableEliteTierDef, comme Elite DEF Le jeu au sein du système peut être affecté à un multiplicateur de coût, adressable en référence aux niveaux et modes d'élite du jeu de base.
  • UberSkinDef, comme un utilitaire tout compris pour SkinDefs, implémente le support du système SkinVFX de R2API et ajoute des skins aux personnages normaux

Objets composables préconstruits

Comme MSU a été créé en tenant compte du thunderkit, MSU propose les ComposableObjects suivants pour votre projet:

  • Simplement Liste Utilisez le nécessaire Date du manifeste Utilisé pour déclarer votre mod
  • Les paramètres de Référence de cheminCeci est utilisé pour la construction propre et la publication de vos mods
  • Système de tuyauterie hautement configurable:
    • Un pipeline de publication qui construit automatiquement un fichier zip pour préparer votre mod à la publication.
    • Pipeline générique qui peut être utilisé pour construire vos assemblies, construire des paquets d'actifs compressés ou non compressés, et staging vos actifs de streaming pour vos mods.
    • Configuration de la pipeline des contributeurs, qui peut être utilisée par les contributeurs pour configurer facilement une pipeline pour construire vos mods.

Gestion de la configuration et des jetons

Avec l'implémentation par défaut de BepInEx, la création de configurations pour vos mods peut être très longue, mais MSU implémente un système de configuration au-dessus de BepInEx qui vous permet de configurer tout facilement.

ConfigureField, ConfiguredVariable et Option Risk

MSU fournit les abstractions suivantes du système de configuration BepInEx:

  • Champs de configuration

    • Les propriétés personnalisées qui peuvent être appliquées aux champs statiques pour configurer automatiquement leurs propriétés.
    • Le processus de configuration lie la configuration au profil en utilisant un ID de chaîne unique attribué au profil personnalisé.
    • The Royal Partie de configuration Et Surnom Aucune implémentation requise, MSU utilise par défaut Informations sur les membres ConfigurationName, et Type de déclarationLe nom de Partie de configuration
    • Il existe une version "RiskofOptions" de ConfigureField qui utilise l'API RiskofOptions pour créer automatiquement des options. Cependant, ces options ne peuvent pas être massivement personnalisées en raison des limites des propriétés.
  • Variables de configuration

    • ConfiguredVariable est une classe qui représente des variables qui peuvent être configurées.
    • Il peut être utilisé pour créer des scénarios de configuration complexes avec des risques d'option.

Système FormatToken

La liaison des modifications de configuration à la valeur du jeton est l'une des meilleures parties de la création de jetons à l'aide du code. Cependant, la traduction de ces jetons peut être difficile à gérer car elle nécessite que le traducteur code la traduction directement dans le fichier source C#.

Fourni par MSU Format Token Système, vous pouvez maintenant utiliser le système de formatage de chaînes de C# pour écrire la valeur du jeton. Avec cela, vous pouvez guider correctement les fichiers de langage JSON et les traducteurs peuvent facilement utiliser ces fichiers pour la traduction, à condition que l'ordre d'indexation correct soit maintenu.

Documentation et code source

  • La documentation et le code source sont disponibles dans le dépôt Github de MoonstormSharedUtil, où vous pouvez trouver Ici

Contributions

MSU est un projet de passion de Nebby, l'un des membres de TeamMoonstorm. Il y a donc eu son temps libre pour y travailler, permettant au reste de la communauté de créer du contenu incroyable et impressionnant.

MSU sera toujours gratuit à utiliser et ne sera jamais enfermé derrière un paywall, cependant, les dons sont incroyablement appréciés.

ko-fi

Utiliser les Mods de MSU

(Cliquez sur moi!)

(Remarque: Cliquez sur l'icône pour ouvrir un nouvel onglet du Mod!)

Icône/URL Name Description
StarstormIcon Starstorm2 La suite de Starstorm 1. Ajoutez de nouveaux survivants, mécaniques, éléments, compétences, ennemis, et plus encore!
LostInTransitIcon Perdu en transit Lost in Transport est un mod qui se concentre sur la restauration des fonctionnalités perdues de Risk of Rain 1 et comprend actuellement des objets.
VarianceAPIIcon API de variance VarianceAPI vous permet de créer des variantes de personnages qui peuvent avoir différentes textures, éclairages, compétences et bien plus encore.
FortunesFromTheScrapyardIcon À libérer-La richesse du dépôt de ferraille Un mod de contenu de type expansion autour d'une compagnie spatiale tierce, visuellement basé sur des thèmes Junkydump et cyberpunk.
RulersOfTheRedPlaneIcon Dirigeant de l'avion rouge Mode de contenu universel étendu sur le plan rouge

Merci et crédits

  • Twiner qui a créé ThunderKit.
  • IDeath et Harb aident à résoudre divers problèmes de codage.
  • KingEnderBrine et RuneFox237 de RoR2SkinBuilder, utilisés comme base du système VanillaSkinDef.
  • GrooveSalad aide dans le processus de conceptualisation du système de modules et fournit StubbedShaders.
  • Glaçure inconnue pour le logo MSU
  • L'équipe Starstorm 2, qui a d'abord sorti nebby de la situation et a créé MSU.
  • Une fortune de l'équipe de Scrapyard parce qu'ils croyaient en mes objectifs et utilisaient le MSU pour leur département de la défense.
  • KevinFromHPCustomerService pour la création du système de modules originaux qui deviendra finalement MSU 2.0
  • Tout le monde dans la communauté de Risk of Rain 2 apprécie mon travail.
Cet outil est fourni par le tiers [bufftool]Icône d'attention

Téléchargez les mods

Installez LagoFast, démarrez Risk of Rain 2 et jouez avec les mods que vous aimez.