лунная буря Sharedutils

Автор:TeamMoonstormПоследнее обновление:11/09/2021 03:40:242.6M530KB

Risk of Rain 2 лунная буря Sharedutils-1-lagofast mod master

Предварительные зависимости

Введение в мод

API, ориентированный на работу в среде редакторов с использованием thunderkit, msu — это модульная система API, разработанная для простоты использования и простоты.

Moonstorm shared utils — загрузка контента и общая структура утилиты для больших модов контента.

MoonstormSharedUtils, также известный как msu, — это API, предназначенный для работы вокруг системы Thunderkit для создания модов контента.

первоначально часть API и фреймворка, созданных для обновления Starstorm2 в настройку Thunderkit для лучшего опыта разработки он в геометрической прогрессии превратился в собственную отдельную библиотеку, поэтому любой, кто хочет создавать большие моды контента с помощью Thunderkit, может ее использовать.

цели API

Msu стремится к следующим целям в отношении разработки и управления модами.

  • простые, но мощные системы для управления и загрузки контента для игры асинхронным образом.
  • надежная структура, построенная на модулях, которая позволяет автоматизировать различные части рабочего процесса модификации, такие как выполнение оборудования, монстр и интерактивный рост и многое другое.
  • упрощение рабочего процесса thunderkit за счет предоставления пользовательского набора возможных объектов для управления манифестами, путями и конвейерами.
  • уделяйте большое внимание использованию систем, предоставляемых игрой, по мере возможности через крючки, таких как представители, предоставленные по умолчанию, поведение базовых элементов и многое другое.
  • использование существующей структуры r2api для энергосистем, таких как модификации директоров.
  • акцент на работе внутри редактора вместо работы над кодом для создания активов.

ключевые характеристики

контентпест, контентпест провайдер и структура модулей

в то время как только моды кода создают свой контент (предварительные материалы, объекты сценариев и т. д.) во время выполнения и обычно во время пробуждения, это вызывает проблемы, известные как «вечно черный экран», где большинство систем мода инициализируются до запуска экрана загрузки игры. это дает представление о том, что игра заморожена и не реагирует на незабывающих пользователей. и хотя это правда, управление загрузкой и взаимодействием между индивидуальным контентом из asetbundles и системами игры сложно.

Msu решает это за счет триады контентпиеса, поставщика контентпиеса и фреймворка модуля. эта триада используется, чтобы позволить модам загружать свои активы асинхронно во время экрана загрузки и заставить их правильно работать с системами базовой игры.

Контентная деталь

  • представляет какую-то форму контента, которую добавляет мод
  • каждый элемент контента привязан к конкретному модулю, который обрабатывает загрузку и реализацию контента.
  • Contentpieces имеют систему доступности, которую модуль использует, чтобы знать, какой контент загружать и инициализировать.
  • содержимое имеет метод асинхронной загрузки, который модуль использует во время инициализации, который используется для асинхронной загрузки активов для вашего контента.
  • Будучи интерфейсом, API обеспечивает дальнейшие реализации:
    • , который представляет собой контент, связанный с определенным UnityEngine.Object.
      • Msu включает следующие интерфейсы, которые реализуют Контентная деталь<T>
        • Содержание iartifactContentpart, для Артефакт Дефс
        • Содержание оборудования Оборудование Defs
          • Ielite контактная деталь Управлять Определение элиты связанные с конкретным оборудованием.
        • Содержание iitemContentpart Определение проекта.
          • подинтерфейс под названием Содержание ivoiditemContentpart управляет системой коррупции предметов, добавленной в переживших пустоту.
        • IItemTierContentPieceДля этого ItemTierDefs
        • Другой контактный элемент Сценарий Дефс.
    • , который представляет собой контент, связанный с определенным типом Unityengine.monobehavior
      • Msu включает следующие интерфейсы, которые реализуют Igameобъектсодержимое<TComponent>
        • ICharacterContentPiece Для этого тела характеристик
          • Имонстерсодержимое можно использовать для управления враждебными монстрами
          • подинтерфейс называемый содержимое для выживанияможно использовать для управления новыми выжившими.
        • Иинтерактивный контактный элемент Для этого взаимодействующая способность.
    • Ivanillassurvivorсодержимоечто представляет собой модификации для выжившего ванили.
  • классы также могут реализовать IContentPackModifier, который используется для непосредственного взаимодействия с пакетом содержимого вашего мода.

модули, модули

  • Модуль — это класс, который управляет загрузкой и взаимодействием Контентная деталь классы с базовой игрой.
  • каждый модуль обрабатывает определенный тип интерфейса наряду с возможными подинтерфейсами.
  • модуль знает, какие классы создавать и инициализировать, используя система.
  • как только вы предоставите поставщик контентовв модуль, вы можете назвать его инициализация метод возврата корутина, который инициализирует ваш контент асинхронно.
  • Msu поставляет следующие модули:
    • артефактный модуль Содержание iartifactContentparts, интерфейс артифактмодуля с R2api. артефакткод добавить в игру новые коды артефактов. он также будет обрабатывать правильное подключение и отключение артефакта, так что только когда артефакт включен, его крючки будут включены.
    • модуль характеристик, управляет ICharacterContentPiece, содержимое для выживания ИмонстерсодержимоеИнтерфейс модуля с R2API. Директор чтобы справиться с нерестью монстров на этапах игры.
    • Модуль оборудования Содержание оборудованияи Ielite контактная детальМодуль использует один крюк для управления вызовами выполнения оборудования.
    • взаимодействующая модуль, управляет Иинтерактивный контактный элементИнтерфейс модуля с Р2api. Директор для обработки появления интерактивных материалов для этапов игры.
    • Модуль проекта Содержание iitemContentpart и Содержание ivoiditemContentэлемент. он автоматически обрабатывает повреждения предметов.
    • Модуль проекта IItemTierContentPiece, он автоматически создает при запуске коллекции доступного списка выпадающих для уровня.
    • Модуль сцены, управляет Другой контактный элемент, он интерфейсируется с R2api. этапы для обработки добавления этапа в игру.
    • ваниллажеский модуль, управляет Ivanillassurvivorсодержимое., который используется для добавления нового контента к выжившим в базовой игре (скины, навыки и т. д.)

  • для того, чтобы модуль знал, какие части контента создавать, загружать и инициализировать. Msu использует предоставлять Контентная детальS к модулям.
    • в то время как вы можете создавать свои собственные реализации поставщик контентчастей интерфейс для управления сценариями доступности, MSU Содержание полезно класс содержит методы их создания с нуля, только анализируя вашу сборку.

Ror2 дружественные системы

Одна из ключевых целей msu — работать вместе с риском системы дождя 2, создавая контент, который работает с ним, вместо того, чтобы заставлять системы базовой игры работать с нашими. Таким образом, msu предоставляет надежную систему для взаимодействия наряду с ключевыми системами игры, такими как оборудование, буфы, предметы и многое другое.

интерфейсы для компонентов

Чтобы избежать ненужного подключения к обычно используемым типам, msu предоставляет интерфейсы, которые можно использовать внутри компонентов для следующих систем:

  • IoncomingdamageotherserverreceiverОн работает как крючок для takedamage, который может быть использован для изменения входящего урона для жертвы.
  • статистическое поведениеИнтерфейс, который работает как крюк для пересчета статистики, содержащий методы запуска до и после пересчета статистики.
  • Модификатор iBodyStatArg, интерфейс, который работает как реализация R2API. Перерасчетные данныеделегатов getstatcoefficient.

BaseItemMasterBehaviour

Базовое поведение мастера, похожее на телесное поведение (основополагающее поведение) используется для создания поведения, которое добавляется к характеристическому мастеру при получении указанного элемента.

основополагающее поведение

Basebuffbehavior — это компонент, который можно использовать для управления эффектами buff. по причинам производительности basebuffbehaviours не уничтожаются, когда буф удаляется, вместо этого, когда буф впервые получен телом, поведение добавляется, когда стеки буфа исчерпаны, поведение становится инвалидвпоследствии, когда тело снова получает буф, поведение происходит включеноЭто снижает рабочую нагрузку на сборщик мусора и в целом улучшает производительность системы.

улучшенный рабочий процесс Thunderkit:

поскольку цели msu вращаются вокруг работы в редакторе, msu поставляется в комплекте с множеством утилитов, связанных с созданием контента для игры.

поддержка wwise

Msu предоставляет пользовательское расширение импорта, которое можно использовать для включения сборки wwise в черный список из игры, что позволяет вам использовать систему интеграции wwise для вашего проекта.

скриптируемые объекты

Msu предоставляет следующие объекты сценариев, которые позволяют создавать контент «только во время выполнения» во время редактора.

  • достижимый разблокируемый деф, работает как абстракция разблокируемой системы def и achievementdef, это разблокируемый деф это разблокировано благодаря достижению.
  • Точка БуффДеф, работает как абстракция dotdef и автоматически назначает dotdef указанному ему buffdef.
  • Расширение Удаление определения, работает как расширение Определение элиты класс, поддерживающий автоматическое добавление базовых игровых уровней, элитных пандусов, материалов накладки и многого другого.
  • Поставщик интерактивных картОбъект сценария, содержащий метаданные, необходимые для поэтапного создания интерактивных материалов, можно назначить несколько этапов одной карте.
  • поставщик монстркартОбъект сценария, содержащий метаданные, необходимые для поэтапного появления монстров, можно назначить несколько этапов одной карте.
  • отображение предметов словарь, объект сценариев, который работает аналогично R2api. предметыСистема itemdisplaydictionary, которую можно использовать для добавления нескольких групп правил в существующие наборы правил отображения элементовКлючевые активы и монтажные сборные оборудования работают от
  • набор правил отображения по имени, объект сценариев, который можно использовать для создания полного набор правил отображения элементов для моделей персонажей. Ключевые активы и монтажные сборные оборудования работают от Каталог отображения товаровСистема внутри msu.
  • сериализационный elitetierdef, работает как абстракция Элитный DEF система внутри игры, может назначать множитель стоимости, адресируемые ссылки на элитные уровни и режимы базовой игры.
  • UberSkinDef, работает как универсальная утилита для скиндефов, реализуя поддержку системы skinvfx r2api и добавляя скины в ванильный персонаж.

предварительно построенные сооруженные предметы

поскольку msu был создан с учетом Thunderkit, msu предоставляет вашему проекту следующие composableobjects:

  • простой манифест проявления с необходимым Дата манифеста для объявления вашего мода
  • настройка Патреферентностьиспользуется для чистого строительства и выпуска вашего мода
  • Высоко настраиваемая система трубопроводов:
    • конвейер выпуска, который автоматически создает zip-файл, готовый к выпуску вашего мода.
    • общие конвейеры, которые можно использовать для создания вашей сборки, создания ваших пакетов активов как сжатых, так и несжатых, а также для постановки потоковых активов вашего мода.
    • настройка конвейера вкладчиков, которую вкладчики могут использовать для легкой настройки конвейера для создания вашего мода.

управление конфигурациями и токенами

создание конфигурации для вашего мода может быть чрезвычайно подробным, используя реализации bepinex по умолчанию, msu реализует систему конфигурации поверх bepinex, которая позволяет вам легко настраивать все.

ConfigureField, ConfiguredVariable и риск вариантов

Msu предоставляет следующую абстракцию системы конфигурации bepinex:

  • поле конфигурации

    • пользовательский атрибут, который можно применять к статическим полям для автоматической их настройки.
    • процесс конфигурации использует уникальный идентификатор строки, который вы назначаете пользовательскому конфигурационному файлу, чтобы привязать конфигурацию к конфигурационному файлу.
    • Этот Секция конфигурации и прозвище Реализация не требуется, msu по умолчанию использует Информация для участников НастройкаNameИ это Тип декларацииимя как Секция конфигурации
    • существует версия конфигурационного поля «RiskOfOptions», которая автоматически создает параметры с использованием API RiskOfOptions. однако эти параметры не могут быть сильно настроены из-за ограничений атрибутов.
  • конфигурированная переменная

    • Configuredvariable — это класс, представляющий переменную, которую можно настроить.
    • его можно использовать для создания сложных сценариев конфигурации с риском вариантов.

система форматтокенов

привязка изменений конфигурации к значениям токенов является одной из лучших частей создания токенов с использованием кода, однако перевод этих токенов может быть трудно управлять, поскольку переводчики требуют кодирования переводов непосредственно в исходный файл c

Msu предоставляет Формативный токен система, теперь вы можете написать значения своего токена, используя систему форматирования строк c С помощью этого вы можете правильно использовать файлы json langauge, которые переводчики могут легко использовать для переводов, если они сохраняют правильный порядок индексации.

документация и исходный код

  • документацию и исходный код можно найти в репозитории github moonstormsharedutil, который можно найти. Здесь

пожертвования

Msu — это страстный проект одного из участников teammoonstorm, небби. таким образом, в свободное время он работает над этим, чтобы позволить остальной части сообщества создавать удивительный и вдохновляющий контент.

Msu всегда будет бесплатно пользоваться и никогда не будет закрыт за платными стенами, однако пожертвования невероятно ценятся.

ko-fi

моды с использованием msu

(нажмите на меня!)

(примечание: нажмите значок, чтобы открыть новую вкладку мода!)

значок/URL имя имя описание
StarstormIcon Starstorm2 продолжение «Звездного шторма 1». добавляет новых выживших, механику, предметы, навыки, врагов и многое другое!
LostInTransitIcon потеряно при транспортировке потерянный в транспорте — это мод, ориентированный на восстановление функций, потерянных из-за риска дождя 1, в настоящее время включая предметы.
VarianceAPIIcon дисперсия апи Varianceapi позволяет создавать варианты для фигур, варианты могут иметь разные текстуры, огни, навыки и многое другое.
FortunesFromTheScrapyardIcon быть выпущенным — богатства с мусорного корпуса мод контента в стиле расширения, который вращается вокруг сторонней космической корпорации и визуально основанный на темах мусора и киберпанка.
RulersOfTheRedPlaneIcon правители красного плоскости общий мод контента, расширяющийся на красной плоскости

Спасибо и кредиты

  • Twiner для создания Thunderkit.
  • идея и признательность за помощь с различными вопросами кодирования.
  • Kingenderbrine и runefox237 для ror2skinbuilder, который использовался в качестве базы для системы vanillaskindef.
  • Groovesalad для оказания помощи при концептуализации модульной системы и предоставлении шейдеров.
  • неизвестная глазурь для логотипа msu
  • команда Starstorm 2 за то, что она позволила Небби уйти от глубокого конца и создать Msu в первую очередь.
  • судьба команды мусора за то, что она поверила в мои цели и использовала msu для своего мода.
  • KevinFromHPCustomerService, для создания оригинальных модульных систем, которые в конечном итоге стали msu 2.0.
  • все из сообщества риска дождя 2 за то, что оценили мою работу.
Этот инструмент предоставлен сторонним разработчиком [bufftool]Внимание (Нормальное)

Загрузите моды сейчас

Установите LagoFast, запустите Risk of Rain 2 и играйте с модами, которые вам нравятся.