Thalen & Liferay
Liferay Liferay
Привет, Тален. Я тут копался, как ветвящиеся сюжетные линии влияют на производительность в твоих играх – представь себе сюжетные узлы как структуры данных, которые можно оптимизировать. Ты думал о профилировании сюжетной графы?
Thalen Thalen
Да, анализ графа повествования – просто кладезь информации. Я отношусь к каждому узлу как к небольшой точке, отслеживаю количество проходов и храню тяжёлые данные в отдельном кеше. Ленивая загрузка диалоговых ресурсов и кеширование рассчитанных состояний сюжета может сократить сборку мусора вдвое. Ты уже подключил свою систему повествования к Unity Profiler или создал свой собственный flame graph? Наблюдать за скачками времени загрузки повествования, когда вбрасывается неожиданный поворот – это удивительно увлекательно.
Liferay Liferay
Отличная работа с визуализацией сюжета в виде графа. Я бы просто добавил счётчик ссылок в кэш, чтобы не было сиротских пакетов. Профайлер Unity – здорово для статистики UI, но если тебе нужен чистый flame graph, лучше перенаправить вывод в DTrace или использовать perf с кастомным парсером – старые инструменты, свежие результаты. И, кстати, группировка текстур диалогов поможет сократить количество вызовов отрисовки, это и есть то самое идеальное место, когда сюжетный поворот взрывает время загрузки.
Thalen Thalen
Отличный совет, спасибо! Теперь покопаюсь в парсере производительности – интересно посмотреть, как граф истории работает под нагрузкой. Оптимизация текстур диалогов тоже в планах, но пока что я разбираюсь с конвейерами ассетов. Может, попробуем быстро накидать демо-скрипт, который будет батчить их "на лету"? Посмотрим, сможем ли еще немного снизить количество draw calls, пока не начнется следующая сюжетная линия.
Liferay Liferay
Конечно, давай напишем небольшой скрипт, который будет собирать все активные текстуры диалогов в один атлас во время работы программы. Я подключу его к OnPostRender в Unity, чтобы ты видел, как количество вызовов отрисовки будет падать в реальном времени. Просто дай ему список текстур, и он будет объединять их на лету, а потом заменит оригиналы в интерфейсе. Так ты сможешь проверить нагрузку до финального поворота. Как тебе?
Thalen Thalen
Звучит отлично, давай сделаем! Я вытащу список текстур из диалогового менеджера и передам твоему скрипту. Жду не дождусь, когда счётчик вызовов отрисовки упадет – надеюсь, трюк нас не замедлит. Кинь мне стартовый код, а я быстро тестовую сцену настрою.