Files
airdef/docs/ENGINE.md
T
chexit dedb0213c7
build / mod (push) Failing after 19s
Validate the actual hmod in the pinned host sandbox (#102)
Keep runtime compilation in an opt-in CI tier; run asset consistency on regular builds. Sandbox checks do not substitute for GPU, capture or maximum-scenario budgets.

Co-Authored-By: Codex <noreply@openai.com>
2026-11-02 21:01:07 +03:00

4.5 KiB
Raw Blame History

Закреплённый движок AirDef

Движок: https://gitea.maoniao.team/chexit/horizon-airdef, ветка airdef. AirDef хранит точный SHA как gitlink horizon/; новый push движка не меняет старые сборки мода. История upstream и всех 44 прежних патчей сохранена в форке. Старые patch-файлы и HORIZON_COMMIT доступны в истории AirDef и больше не являются вторым источником движка. Baseline описан в AIRDEF-FORK.md.

Windows: обновление и запуск

git fetch origin
git switch kimi-work
git pull --ff-only
python tools/airdef.py all
python tools/airdef.py play

Первое клонирование: git clone --recurse-submodules https://gitea.maoniao.team/chexit/airdef.git. Обычный clone тоже поддерживается: python tools/airdef.py fork или команда submodule выше. all инициализирует зависимость сам, включая переход со старой папки horizon/. Для чистого checkout можно отдельно выполнить git submodule update --init --recursive. Нужны Git, Python и Rust согласно INSTALL.md. Сборка клиента и мод устанавливаются в обычное место; ресурсы Minecraft готовятся отдельно по INSTALL.md.

При первом переходе со старого отдельного clone horizon/ скрипт сохраняет его Git-историю и ветки, переводит в сабмодуль и получает закреплённый SHA. Если там есть изменения при другом SHA, обновление останавливается с объяснением: сначала закоммитьте/сохраните свои изменения. Скрипт не выполняет reset --hard или clean. Чистый checkout может остаться detached HEAD — это нормально для зависимости.

Изменение движка

  1. В horizon/ создать рабочую ветку от закреплённого SHA. Проверить изменение и push в репозиторий движка.
  2. В AirDef выполнить git add horizon, проверить мод/игру, коммитить обновление gitlink отдельно.
  3. Push AirDef выполняется после движка. Не коммитить Git URL с токенами.
  4. Для возврата выбрать прежний commit AirDef и выполнить git submodule update --init --recursive.

Упаковщик собирается repo-local в .horizon-cache/packer/<engine-identity>/, глобальный cargo-horizon-mod не используется. Изменения tracked-исходников движка входят в identity. Рядом с airdef.hmod записывается build-identity.json: SHA AirDef, pin/identity движка, SHA256 WIT и артефакта. API-диагностика остаётся в python tools/airdef.py check. Нативные тесты не заменяют отдельную игровую проверку графики, звука и экспорта.

Проверка настоящего WASM

python tools/airdef.py test-wasm собирает .hmod и запускает tests/*.toml в настоящем runtime закреплённого движка. Используется временное storage; игровые миры не нужны. Сценарий проверяет загрузку/регистрацию команды, два комплекса, налёт, tick/frame, выход из мира и перезагрузку мода. Действуют лимиты runtime: 64 MiB linear memory, 300 млн fuel на tick, 10 млн на frame, 1 млрд на event, 2 млрд на init. Это проверка ABI и fallback при отсутствии render replies; она не измеряет GPU, не подтверждает акустику/MP4 и не заменяет максимальный боевой полигон.

В CI проверка assets входит в лёгкий build. Wasmtime tier вынесен в ручной workflow wasm-contract, чтобы не компилировать тяжёлый runtime на каждом push слабого общего runner.