dedb0213c7
build / mod (push) Failing after 19s
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>
54 lines
4.5 KiB
Markdown
54 lines
4.5 KiB
Markdown
# Закреплённый движок 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: обновление и запуск
|
||
|
||
```powershell
|
||
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.
|