К содержимому
Документация
На этой странице

Вклад в SDK

О проблемах SDK сообщайте в issues репозитория bullet-hero/sdk, изменения в код присылайте туда же пулл-реквестами. Правила для контрибьюторов лежат в том же репозитории, рядом с кодом

Репозиторий - bullet-hero/sdk, ветка по умолчанию master

Куда сообщать

О чёмКуда
SDK и его кодbullet-hero/sdk/issues
игра: ошибки и пожелания игроковbullet-hero/releases/issues
текст документацииbullet-hero/docs

Где правила

Правила для контрибьюторов лежат в самом репозитории SDK, рядом с кодом, который они описывают:

ФайлЧто в нём
README.mdзависимости, пакеты уровней, сборка DLL и пакета, пример-проверка
AGENTS.mdмодель мышления, указатель папок и соглашения всей библиотеки
AGENTS.md в каждой папкелокальные правила этой папки, например Serialization, Validations, Publishing
Docs/VERSIONING.mdоси версий, поколения, миграция и отказ
Docs/IDENTIFIERS.mdкак модель адресует сущности: Guid, int, кадр, путь к полю
Лицензионная политика для пользовательских уровней (на этом сайте)политика лицензирования пользовательского контента, правится вместе с TrustedSourceCatalog
Versions/README.mdкак написать снимок и мигратор
Generators/README.mdконтракт генератора
Roslyn/README.mdанализаторы и генератор моделей, как их пересобрать
UnityIntegration/README.mdконтракт двойной компиляции
CHANGELOG.mdизменения по версиям sv, новые сверху

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

dotnet build -c Release BH.SDK.csproj
dotnet test Tests/BH.SDK.Tests.csproj
dotnet pack -c Release BH.SDK.csproj
  • здесь без Unity собираются те же исходники, что компилирует Unity. Файл, нарушивший контракт независимости от движка, ломает эту сборку
  • вывод идёт в bin~ и obj~
  • команда упаковки только создаёт .nupkg. Публикацией на nuget.org занимается workflow release репозитория, когда отправлен тег sv
Внимание

Анализаторы и генератор моделей поставляются готовой BH.SDK.Roslyn.dll в корне SDK. После правки чего-либо в Roslyn/ пересоберите и скопируйте её. Иначе продолжит работать старый генератор, хотя исходники говорят другое

cd Roslyn
dotnet build BH.SDK.Roslyn.csproj -c Release
cp bin~/Release/BH.SDK.Roslyn.dll ../BH.SDK.Roslyn.dll
dotnet test Tests~/BH.SDK.Roslyn.Tests.csproj -c Release

Внутри редактора Unity то же самое делает пункт меню Tools > BH.SDK.Roslyn > Build Analyzer

Инварианты, которые стоит знать заранее

  • ядро не ссылается ни на один тип UnityEngine. Код, которому нужен движок, идёт в UnityExtensions/ или в UnityIntegration/ за #if BHSDK_UNITY с веткой без движка
  • код одинаково работает с файлами и с данными в памяти и использует только асинхронность из BCL
  • netstandard2.1 и C# 9 - то, с чем компилируется Unity-проект. Их не поднимают
  • модель - это [GenerateModel] public sealed partial class. Каждое сериализуемое поле берёт ключ из Names.cs
  • любое изменение модели - новое поколение со снимком и мигратором. Подробнее - Версии и миграции
  • версия SDK живёт в трёх местах: SdkVersion.cs, package.json и <Version> в BH.SDK.csproj. SdkVersionAgreementTests падает, если одна из них сдвинулась одна