[bug] Время реплея попадает в игровую sky_darken и меняет дневные правила живого мира #70
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Ревью
6f3fc644bc5194311a86baba722bc340215306b7. Регрессия render-only override из #57. Патч 25 ввёлshown_day_time, но применил его внутри общейGame::sky_darken, которую вызывает не только рендер.Подтверждено путями вызова engine
game.rs::shown_day_timeвозвращаетmods.time_override()вместо настоящегоworld.day_time.game.rs::sky_darkenсэмплирует environment по этому shown time и кэширует результат.game/creatures.rsпередаётdaylight: dim!=Nether && self.sky_darken()<4в AI.game.rs::with_levelпередаёт тот же darken вGameLevelдля block behaviour.game/raids.rs,natural_spawning.rs,stats.rsтакже используют sky_darken в игровых условиях.Следовательно в режиме --in-frame / HORIZON_SERVER_THREAD=0, где этот Game и симулирует мир, просмотр ночного реплея днём меняет значение дневного условия в живой симуляции. World.day_time не переписывается, но поведение уже зависит от исторического времени. В стандартном server-thread режиме серверный Game отделён: нельзя без отдельной проверки утверждать, что его authoritative AI тоже меняется; этот issue не делает такого утверждения.
Нужно
Разделить настоящий gameplay sky brightness и render/replay sky brightness. Все игровые правила, snapshot clock, spawn/AI/block behaviour используют реальное окружение; только параметры отрисовки соответствующей replay view — override. Проверить и другие потребители shown_day_time, а также одновременные камеры/монитор и сброс при stop/world change.
Приёмка
День в живом мире + ночной replay и обратный случай; in-frame и server thread. Одинаковые игровые daylight/spawn/block predicates до/во время/после повтора. Историческое небо и освещение повтора сохраняются. Это статически установленная утечка общего helper, полноценный игровой AI-тест в этой среде не запускался.
🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/f43fa5e (запушено в main).