Об этом проекте

# 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` и актуальный файл состояния сборки. Запускается явно; он не входит в набор по умолчанию.