Об этом проекте
# 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` и `-AdditionalArgs` для дополнительных аргументов CLI редактора. Обёртка также поддерживает ожидание сборки до подтверждённого завершения.
## Модули и режимы сборки
Код проекта использует объявления `code.module.json`. Runtime-модули зависят только от runtime-модулей; модули только для редактора используют `"moduleKind": "editor"` и могут зависеть от runtime-модулей. Папки тестов должны называться `<module-id>.tests` и соответствовать объявленному production-модулю. Интерактивные сессии редактора и команды редактора используют `EditorFull` (включает runtime + модули редактора + тесты), тогда как сборки платформ используют `RuntimeOnly` (исключает тесты/команды редактора). Профили сборки платформ могут объявлять упорядоченные prebuild-команды через `editorPrebuildCommandIdsByBuildProfileId`.
## Кэш и контракт вызова
Повторно используемый кэш `v2` использует детерминированную идентичность, производную от канонического пути проекта и checkout редактора. Сборки сериализуются по проекту через блокировку проекта и по выводу через блокировку вывода; разные проекты могут пересекаться только при использовании разных выводов. Обёртка не копирует проект; она собирает на месте и хранит промежуточные файлы в кэше. `HELENGINE_BUILD_INVOCATION_ID` — это внутренний корреляционный GUID, а не пользовательская настройка. Коды выхода (`0`, `2`, `3`, `4`, `5`, `6`, `10`) описывают сбои обёртки и валидации; коды выхода дочерних процессов могут совпадать, поэтому вызывающие должны проверять диагностику и `.helengine-build-state.json`.
## Генерация кода
Генератор кода C#-в-C++ — это git-субмодуль в `engine/vendor/csharpcodegen`, закреплённый коммитом движка. Скрипт сборки публикует его в каталог `codegen/` рядом с редактором, используемый для сборок платформ. Записи платформ больше не содержат `codegenToolPath`; напоминания игнорируются с предупреждением. После клонирования или переключения ветки запустите `git submodule update --init --recursive`.
## Ожидание подтверждённой сборки
`tools/build-waiter` ожидает успешного завершения сборки, фиксируя код выхода, актуальный `.helengine-build-state.json` и свежесть требуемых артефактов (например, `game.iso`, `disc/SYSTEM.CNF`). Он координируется с обёрткой через фазу подтверждения. В вызовах, управляемых waiter, обёртка завершается с кодом выхода `10` через 30 секунд, если подтверждение отсутствует. Пример сборки 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 ...
```
## Нативный smoke-тест стабильного кэша
Нативный smoke-тест для Windows (`scripts/tests/build-platform-native-cache-smoke.tests.ps1`) требует внешний соседний исходный код платформы, инструменты Visual Studio C++, CMake, Ninja и сборщик Windows. Он дважды собирает крошечный фикстур с одним и тем же кэшем, ожидая непустой `helengine_windows.exe` и актуальный файл состояния сборки. Запускается явно; он не входит в набор по умолчанию.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.