Недавно несколько версий подряд искал причину одной странной задержки в игре.
Симптом был простой: игрок подключает кабель — и в этот момент игра на долю секунды подвисает.
Сначала я решил, что проблема в самой сетевой логике. Ведь после подключения кабеля игра должна понять, какие устройства теперь связаны между собой, обновить состояние сети и проверить задания.
Мы сделали несколько ревизий: оптимизировали обработку подключения, убрали лишние проверки, ускорили обновление интерфейса. Стало лучше, но задержка не исчезла.
Тогда я начал постепенно усиливать логирование. С каждой новой версией в лог писалось всё больше этапов: когда подключился кабель, когда обновилась сеть, когда проверились задания, когда началась и закончилась отрисовка кадра.
И в итоге нашли причину.
Оказалось, что сама сеть работала нормально.
После подключения кабеля одна из подсказок на экране каждый кадр дополнительно запускала проверку связи между устройствами. То есть игра во время обычной отрисовки внезапно начинала выполнять довольно тяжёлую сетевую проверку.
Из-за этого и появлялась задержка.
Исправили просто: теперь все такие проверки выполняются заранее, а интерфейс только показывает уже готовый результат.
После этого подвисание исчезло.
И здесь, наверное, главный вывод вообще про разработку приложений с помощью ИИ: не забывайте логировать события в коде.
ИИ может очень быстро писать и менять большие объёмы кода. Но чем больше становится проект, тем сложнее понимать, что реально происходит внутри приложения в конкретный момент.
Хорошие логи превращают разработку из угадывания в нормальный troubleshooting: видно, какое событие произошло, что запустилось после него, сколько это заняло и где именно всё пошло не так.
Для меня сейчас логирование — один из главных способов сделать код, написанный с помощью ИИ, действительно рабочим, понятным и управляемым.
Post #26
59
- 👍 2
- 👏 2
- ❤ 1
- 🔥 1