Перейти к основному содержимому
The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.

Приступаем к работе

Требуемые программы

Для начала, установите следующее программное обеспечение:

  • dnSpy - редактор сборок .NET (и отладчик, но его довольно сложно настроить под BepInEx и плагины). Вы не будете редактировать сборки, а будете просто их просматривать, чтобы понимать как работает игра или другие плагины.

  • Visual Studio 2019 Community - Интегрированная среда разработки (IDE - Integrated Development Environment), в которой мы будем работать.

Новый способ моддинга

Вместо создания проекта вручную, мы будем использовать специальный шаблон с кучей плюсов!

  • Шаблон использует SDK, а то есть:
    • Вы сможете использовать большинство фич последних версий C#!
    • Меньше придётся лазять в настройках и конфигурациях!
  • Без ада зависимостей. Все ссылки в одной отдельной папке!
  • Утилита PluginBuildEvents автоматически перенесёт ваши моды в BepInEx/plugins!
  • Шаблон содержит основной код, чтоб вы могли быстро начать работать над своим модом!
  • Почти всё, что вам только может понадобиться, уже включено в шаблоне!

Вы можете просто скопировать и вставить этот шаблон и начать работать над модом меньше чем за минуту!

Без этого шаблона, надо создавать проект и несколько папок, копировать-вставлять .dll, добавлять ссылки, выставлять настройки, писать базовый код, потом написать немного контента из твоего мода, потом осознать что ты забыл добавить ссылку, добавить эту ссылку, потом продолжить работать над своим модом, потом снова, ты забыл добавить что-то очень важное и тебе надо всё переписывать, и потом когда ты почти добрался до стабильного релиза, ты вспоминаешь об "этой крутой фиче из C# 8.0 и позже", начинаешь проект с самого начала, пытаясь добавить эту фичу, ничего не выходит и ты плачешь в подушку, потому что тебе реально нужна эта фича и ты не можешь представить себе моддинг игры без неё, и ещё потому что ты уже стёр весь проект и тебе слишком пофиг, чтобы начинать всё сначала... Да-да.

Структура рабочего места

Во-первых, скачайте шаблон рабочего места и извлеките папку sor-repos.

Совет от профи: Менеджмент папок репозиториев

Советую располагать репозитории как можно ближе к корню диска, чтобы у них были как можно более короткие и удобные пути, например D:\sor-repos, F:\rim-repos (для модов на Rimworld), E:\uni-repos (для проектов в универе) и т.д. Таким образом вы всегда будете знать точный путь к вашим проектам, и все ошибки и предупреждения насчёт файлов будут гораздо короче и содержать меньше бесполезной информации.

Давайте теперь посмотрим что нам даёт это рабочее пространство!

.ref - Ссылки

Папка .ref содержит все ссылки ваших модов. Есть два вида:

Статичные ссылки (то есть, которые обновляются редко, и даже если обновляются, то не сильно) хранятся в подпапке static. Почти всё что вы можете найти в /StreetsOfRogue_Data/Managed идёт сюда.

Динамические ссылки (которые часто обновляются) - это Assembly-CSharp.dll (содержащий код игры) и RogueLibsCore.dll (библиотека RogueLibs). Они хранятся в самой папке .ref для удобства обновления.

Совет от профи: Файлы документации

У некоторых сборок может быть документация в отдельном файле, например RogueLibsCore.xml. Убедитесь что они находятся рядом с .dll файлом в той же папке. Таким образом вы сможете просматривать краткую документацию по типам и членам прямо в Visual Studio!

.events - PluginBuildEvents

PluginBuildEvents - это простая утилита для копирования ваших модов в папку BepInEx/plugins. Шаблон проекта по умолчанию использует её как после-сборочное событие, поэтому вам надо лишь собрать ваш мод, и его файл автоматически перенесётся куда надо!

Не-Steam версии игры

Если вы не купили Steam версию игры (или если вы каким-то образом накосячили путь установки Steam в регистре), то укажите полный путь к корневой папке игры в свойствах вашего проекта (кликните правой кнопкой по проекту в Обозревателе решений и выберите Свойства > Сборка > События сборки):

"$(SolutionDir)\..\.events\PluginBuildEvents.exe" "$(TargetPath)" "D:\Games\Streets of Rogue"

Папки решений

Все остальные папки должны содержать решения с вашими проектами:

Чтобы создать новый проект, просто скопируйте и вставьте шаблон проекта. Также вы можете изменить шаблон под ваши конкретные нужды.

The project's repository is archived as part of the GitHub Archive Program. RogueLibs' code and the documentation will no longer be updated.