このプロジェクトについて
# helengine
helengineは、プロジェクトの`.heproj`ファイルからプラットフォームパッケージをビルドする共有エンジン兼エディタワークスペースです。モダンなアセットパイプラインとツールを使用しながら、制約のあるハードウェア(DSやPS2などのレトロコンソールなど)を対象とするように設計されています。
## エディタCLIプラットフォームビルド
プラットフォームビルドはPowerShellラッパースクリプト`scripts/build-platform.ps1`を介してオーケストレーションされ、エディタCLIを復元および発行した後、作成されたプロジェクトを直接ビルドします。使用例:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File C:\dev\helworks\helengine\scripts\build-platform.ps1 `
-Project C:\dev\helprojs\city\project.heproj `
-Platform ds `
-Output C:\dev\helprojs\city\ds-build `
-BuildProfile release `
-CacheRoot D:\helengine-cache
```
主要なパラメータには、`-Project`(`.heproj`へのパス)、`-Platform`(プロジェクトの`settings/platforms.json`で宣言されているもの)、`-Output`(出力ディレクトリ)、`-BuildProfile`(例: `debug`または`release`)、`-CacheRoot`(再利用可能なキャッシュ場所)、`-LockTimeout`、`-Clean`、`-PruneCacheOlderThanDays`、および追加のエディタCLI引数用の`-AdditionalArgs`が含まれます。ラッパーは検証済みの完了を待つビルド待機もサポートしています。
## モジュールとビルドモード
プロジェクトコードは`code.module.json`宣言を使用します。ランタイムモジュールはランタイムモジュールのみに依存し、エディタ専用モジュールは`"moduleKind": "editor"`を使用し、ランタイムモジュールに依存できます。テストフォルダは`<module-id>.tests`という名前で、宣言された本番モジュールと一致する必要があります。対話型エディタセッションとエディタコマンドは`EditorFull`(ランタイム + エディタモジュール + テストを含む)を使用し、プラットフォームビルドは`RuntimeOnly`(テスト/エディタコマンドを除外)を使用します。プラットフォームビルドプロファイルは、`editorPrebuildCommandIdsByBuildProfileId`を介して順序付けられたプリビルドコマンドを宣言できます。
## キャッシュと呼び出し契約
再利用可能な`v2`キャッシュは、正規のプロジェクトパスとエディタチェックアウトから導出された決定論的アイデンティティを使用します。ビルドはプロジェクトごとにプロジェクトロックを介して、出力ごとに出力ロックを介して直列化されます。異なるプロジェクトは、異なる出力を使用する場合にのみ重複できます。ラッパーはプロジェクトをコピーせず、その場でビルドし、中間ファイルをキャッシュに保持します。`HELENGINE_BUILD_INVOCATION_ID`は内部相関GUIDであり、ユーザー設定ではありません。終了コード(`0`、`2`、`3`、`4`、`5`、`6`、`10`)はラッパーと検証の失敗を記述します。子プロセスの終了コードが一致する可能性があるため、呼び出し元は診断と`.helengine-build-state.json`を検査する必要があります。
## コード生成
C#からC++へのコード生成は、`engine/vendor/csharpcodegen`にあるgitサブモジュールであり、エンジンのコミットによって固定されています。ビルドスクリプトはそれをエディタの隣の`codegen/`ディレクトリに発行し、プラットフォームビルドに使用されます。プラットフォームエントリはもはや`codegenToolPath`を持ちません。リマインダーは警告とともに無視されます。クローンまたはブランチ切り替え後は、`git submodule update --init --recursive`を実行してください。
## 検証済みビルド待機
`tools/build-waiter`は、終了コード、最新の`.helengine-build-state.json`、および必要なアーティファクトの鮮度(例: `game.iso`、`disc/SYSTEM.CNF`)をキャプチャすることにより、ビルドが正常に完了するのを待機します。確認フェーズを介してラッパーと連携します。ウェイター制御の呼び出しでは、確認が欠落している場合、ラッパーは30秒後に終了コード`10`で失敗します。PS2ビルドの例:
```powershell
dotnet run --project ...\helengine.buildwaiter.csproj -- `
--output ...\output\ps2 `
--require game.iso `
--require disc/SYSTEM.CNF `
--require disc/HELENGIN.ELF `
-- powershell ... -File ...\build-platform.ps1 -Project ... -Platform ps2 -Output ...
```
## ネイティブ安定キャッシュスモーク
Windowsネイティブスモークテスト(`scripts/tests/build-platform-native-cache-smoke.tests.ps1`)には、外部の兄弟プラットフォームソース、Visual Studio C++ツール、CMake、Ninja、およびWindowsビルダーが必要です。同じキャッシュで小さなフィクスチャを2回ビルドし、空でない`helengine_windows.exe`と最新のビルド状態ファイルを期待します。明示的に実行してください。デフォルトのスイートには含まれていません。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.