[ЭКСПЕРЕМЕНТ] Оптимизация Атмоса и Ауксмоса через ИИ#3049
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
DuLL-FoX
left a comment
There was a problem hiding this comment.
Короче основной риск - пропуск __update_auxtools_turf_adjacency_info(). Это не "лишний вызов", а механизм синхронизации DM с нативным auxmos. Без него любой рассинхрон (рантайм, нештатная ситуация) не будет исправлен и приведёт к призрачным стенам или утечкам атмоса. Кэш adjacent_turfs на скраббере не покрывает изменения окружения (двери, стены, объекты рядом) - в оригинале это решается пересчётом каждые 2 секунды, который тут частично порезан. В остальном, тестируй, пробуй, но могут возникнуть много проблем
| UNSETEMPTY(atmos_adjacent_turfs) | ||
| src.atmos_adjacent_turfs = atmos_adjacent_turfs | ||
| __update_auxtools_turf_adjacency_info() | ||
| if(!atmos_adjacent_lists_equal(old_atmos_adjacent_turfs, atmos_adjacent_turfs)) |
There was a problem hiding this comment.
То же - безусловный sync это не баг, а страховка
| if(!(vertical ? CANVERTICALATMOSPASS(O, src) : CANATMOSPASS(O, src))) | ||
| return FALSE | ||
|
|
||
| /proc/atmos_adjacent_lists_equal(list/old_adjacent_turfs, list/new_adjacent_turfs) |
There was a problem hiding this comment.
А есть уверенность что итерация по старому списку + сравнение каждого элемента дешевле одного FFI-вызова? Без профайла это может быть дороже того что экономим
| . = FALSE | ||
| if(blocks_air || T.blocks_air) | ||
| . = FALSE | ||
| if(!.) |
There was a problem hiding this comment.
В оригинале ранний return тут не делается специально - проверяются все объекты в обоих тайлах. Ещё изменился порядок: теперь сначала src.contents, потом T.contents, а не единый список. Вряд ли это сломает что-то прямо сейчас, но контракт прока поменялся
| if(old_reverse_adjacency != new_reverse_adjacency) | ||
| current_turf.__update_auxtools_turf_adjacency_info() |
There was a problem hiding this comment.
__update_auxtools_turf_adjacency_info() синхронит всё состояние тайла в auxmos, не только одну запись. Оригинал вызывает его безусловно не просто так - auxmos может разойтись с DM после рантайма или любой нештатной ситуации. Безусловный вызов это чинит. Без него получим ситуации где газ не проходит через открытый тайл (или наоборот), и воспроизвести это будет невозможно
…into atmos-auxmos-automation-pr
Невероятный Нейрослоп от ИИ.
Вроде бы он работает.