[bug] Настройки графики меняют боевую случайность и ID: отделить RNG/идентичность эффектов #85
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).
Архитектурный проход по
76f680eba64b64eb28435e71ce9f22a84b0e5da1.Подтверждено тестом
airdef-mod/src/sim/mod.rs::fireballприshader=trueвозвращается до создания fallback-модели. Приshader=falseтот же взрыв вызываетself.id()и три раза расходуетself.rngна декоративный поворот. Этот же RNG используется механиками, в том числеdamage.rs::aim_error; entity ID участвуют и в statelessdiceдатчиков/повреждений.В изолированной копии выполнен native characterization test: два
Sim::new(12345), одинаковыйfireball, отличается толькоshader. После взрыва:aim_error(Shahed): (1.881179, 0, 1.971875) / (1.443901, 0, 0.000006536).Это проверяет конкретную цепочку до игрового значения, а не доказывает, что каждый бой обязательно даст другое число сбитий. Похожие смешения есть в шуме факела, pitch звуков и обломках.
Исправление
Приёмка
Одинаковые seed, команды и ответы мира дают одинаковый combat trace/state hash при HD/fallback, звуке on/off и разных частотах показа. Сравнивать попадания, ошибки наведения, повреждения, боезапас и domain ID, исключив косметику. Обычный same-seed тест с одинаковыми настройками этот случай не ловит. Нужен отдельный регрессионный тест. Поддерживает будущий общий журнал событий.
Общий порядок и зависимости: архитектурная дорожная карта.
🤖 Agent: сделано в
b43d471706(запушено в main). Проверено нативными тестами, в игре не запускалось.