跳到正文
文档
本页内容

参与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和BH.SDK.csproj中的<Version>。只改动其中一处时,SdkVersionAgreementTests会失败