Zum Inhalt springen
Dokumentation
Auf dieser Seite

Zum SDK beitragen

Probleme mit dem SDK meldest du in den Issues des Repositorys bullet-hero/sdk, Codeänderungen schickst du dorthin als Pull Requests. Die Regeln für Mitwirkende liegen dort neben dem Code

Das Repository ist bullet-hero/sdk, der Standardzweig ist master

Wo man meldet

Worum es gehtWohin
das SDK und sein Codebullet-hero/sdk/issues
das Spiel: Fehler und Wünsche der Spielerbullet-hero/releases/issues
der Text der Dokumentationbullet-hero/docs

Wo die Regeln stehen

Die Regeln für Mitwirkende liegen im SDK-Repository selbst, neben dem Code, den sie beschreiben:

DateiWas darin steht
README.mdAbhängigkeiten, Levelpakete, Bauen der DLL und des Pakets, das Prüfbeispiel
CLAUDE.mddas Denkmodell, ein Ordnerverzeichnis und die Konventionen der ganzen Bibliothek
CLAUDE.md in jedem Ordnerdie lokalen Regeln dieses Ordners, zum Beispiel Serialization, Validations, Publishing
Docs/VERSIONING.mdVersionsachsen, Generationen, Migration und Ablehnung
Docs/IDENTIFIERS.mdwie das Modell Entitäten adressiert: Guid, int, Frame, Feldpfad
Lizenzrichtlinie für Nutzerlevels (auf dieser Website)die Lizenzrichtlinie für Inhalte der Nutzer, wird gemeinsam mit TrustedSourceCatalog bearbeitet
Versions/README.mdwie man einen Schnappschuss und einen Migrator schreibt
Generators/README.mdder Vertrag der Generatoren
Roslyn/README.mddie Analyzer und der Modellgenerator, wie man sie neu baut
UnityIntegration/README.mdder Vertrag der doppelten Kompilierung
CHANGELOG.mdÄnderungen nach sv-Version, die neueste oben

Build und Tests

dotnet build -c Release BH.SDK.csproj
dotnet test Tests/BH.SDK.Tests.csproj
dotnet pack -c Release BH.SDK.csproj
  • hier werden dieselben Quellen, die Unity kompiliert, ohne Unity gebaut. Eine Datei, die den Vertrag der Engine-Unabhängigkeit bricht, bricht diesen Build
  • die Ausgabe landet in bin~ und obj~
  • der Pack-Befehl erzeugt nur ein .nupkg. Auf nuget.org veröffentlicht der Workflow release des Repositorys, wenn ein sv-Tag gepusht wird
Vorsicht

Die Analyzer und der Modellgenerator werden als vorgebaute BH.SDK.Roslyn.dll im Wurzelordner des SDK ausgeliefert. Wenn du irgendetwas in Roslyn/ änderst, baue sie neu und kopiere sie hinüber. Sonst läuft weiter der alte Generator, auch wenn die Quellen etwas anderes sagen

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

Im Unity-Editor erledigt der Menüpunkt Tools > BH.SDK.Roslyn > Build Analyzer dasselbe

Invarianten, die man vorher kennen sollte

  • der Kern verweist auf keinen einzigen Typ aus UnityEngine. Code, der die Engine braucht, kommt nach UnityExtensions/ oder nach UnityIntegration/ hinter #if BHSDK_UNITY mit einem Zweig ohne Engine
  • der Code arbeitet mit Dateien und mit Daten im Speicher gleich und nutzt nur die Asynchronität aus der BCL
  • netstandard2.1 und C# 9 sind das, womit das Unity-Projekt kompiliert. Sie werden nicht angehoben
  • ein Modell ist eine [GenerateModel] public sealed partial class. Jedes serialisierte Feld nimmt seinen Schlüssel aus Names.cs
  • jede Modelländerung ist eine neue Generation mit Schnappschuss und Migrator. Mehr - Versionierung und Migrationen
  • die SDK-Version steht an drei Stellen: SdkVersion.cs, package.json und <Version> in BH.SDK.csproj. SdkVersionAgreementTests schlägt fehl, wenn sich eine davon allein bewegt hat