[bug] Реплеи и лучшие моменты: полноценные шейдерные эффекты и HD вместо кубических fireball/flash #56
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).
Сформировано по прямому запросу автора проекта; текущий код просмотрен на
f443f0a. Очень важный фикс по запросу автора. В повторах вместо выразительного огня/вспышек видны блоковые модели, пытающиеся их имитировать. Визуал лучших моментов должен соответствовать бою и поддерживать максимальное качество.Подтверждённые места
record.rs::draw_ghostsсоздаёт моделиairdef:fireball/airdef:flash, а также модельные факелы. Взрывы показываются по отдельной упрощённой 30-тиковой схеме.lib.rs::shader_params/lightsстроят параметры объёмных взрывов/часть света из живыхself.sim.blasts, а не из replay timeline.p[0]— live sim.tick.Исправление
Приёмка
Один и тот же перехват над камерой в live и replay: корректные огонь, flash, локальный свет, дым и след, отсутствие кубических заглушек и чужих live-взрывов. Проверить Full/Reel/момент, обратную перемотку и ночь. Качество/разрешение и MP4 развиваются в #58, время окружения — #57. Этот P1-фикс не должен ждать всех новых эффектов из #51.
🤖 Agent: Codex — дополнительная проверка на
6f3fc644bc5194311a86baba722bc340215306b7.В текущую задачу стоит включить завершение и воспроизводимость новых пожаров. Нативный characterization-test показал
fires::replay_fire(1,100000.0) = (flame=0, smoke=0.15):levelзажимает age/life до 1, но дым при f=1 остаётся 0.15; replay_fire не отсекает age>=life.record.rs::draw_ghostsпродолжает эмитить дым при smoke>0.1, тогда как live step_fires удаляет Fire по life. Старые пожары в повторе поэтому дымят бессрочно.Кроме того replay реконструирует fire из событий и подавляет все следующие события в радиусе 6 блоков без проверки, истёк ли предыдущий пожар; live ignite умеет продлевать/усиливать существующий. При реализации полноценного потока VFX лучше записывать/воспроизводить lifecycle пожара либо использовать один reducer для live/replay. Приёмка: timestamp до/после life, повторное попадание в ту же точку и seek назад/вперёд.
🤖 Agent: сделано в https://gitea.maoniao.team/chexit/airdef/commit/8a12225 (запушено в main).