SDKへの貢献
SDKの問題はbullet-hero/sdkリポジトリのIssueに報告し、コードの変更はプルリクエストとして同じリポジトリに送ってください。コントリビューター向けのルールも、同じリポジトリのコードの隣にあります
リポジトリはbullet-hero/sdkで、デフォルトブランチはmasterです
報告先
| 内容 | 報告先 |
|---|---|
| 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のバージョンごとの変更。新しいものが上 |
ビルドとテスト
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~です - packコマンドは
.nupkgを作るだけです。nuget.orgへの公開は、svタグがプッシュされたときにリポジトリのreleaseワークフローが行います
注意
アナライザーとモデルジェネレーターは、SDKのルートにあるビルド済みのBH.SDK.Roslyn.dllとして同梱されています。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の型を1つも参照しません。エンジンが必要なコードは、UnityExtensions/に置くか、エンジンなしの分岐を用意したうえで#if BHSDK_UNITYの内側としてUnityIntegration/に置きます - コードはファイルでもメモリ上のデータでも同じように動き、非同期処理はBCLのものだけを使います
netstandard2.1とC# 9は、Unityプロジェクトがコンパイルに使う値です。引き上げることはありません- モデルは
[GenerateModel] public sealed partial classです。シリアライズされるフィールドはすべて、キーをNames.csから取ります - モデルの変更はどれも、スナップショットとマイグレーターを伴う新しい世代になります。詳細:バージョン管理とマイグレーション
- SDKのバージョンは3か所にあります:
SdkVersion.cs、package.json、BH.SDK.csprojの<Version>。どれか1つだけが変わるとSdkVersionAgreementTestsが失敗します