Вклад в SDK
Куда сообщать о проблемах, где записаны правила SDK для контрибьюторов и как его собрать, протестировать и упаковать
SDK - отдельный репозиторий: bullet-hero/sdk, ветка по умолчанию master. Изменения в код SDK приходят туда пулл-реквестами
Куда сообщать
| О чём | Куда |
|---|---|
| SDK и его код | bullet-hero/sdk/issues |
| игра: ошибки и пожелания игроков | bullet-hero/releases/issues |
| текст документации | bullet-hero/docs |
Где правила
Правила для контрибьюторов лежат в самом репозитории SDK, рядом с кодом, который они описывают:
| Файл | Что в нём |
|---|---|
| README.md | зависимости, пакеты уровней, сборка DLL и пакета, пример-проверка |
| CLAUDE.md | модель мышления, указатель папок и соглашения всей библиотеки |
CLAUDE.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, сверху раздел [Unreleased] |
Сборка и тесты
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
Внимание
Анализаторы и генератор моделей поставляются готовой 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падает, если одна из них сдвинулась одна