本文へスキップ
ドキュメント
このページの内容

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.mdsvのバージョンごとの変更。新しいものが上

ビルドとテスト

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が失敗します