🛡 От подписчика: как я вытащил 60 FPS с 200+ врагами в своей tower defense
🛡 От подписчика: как я вытащил 60 FPS с 200+ врагами в своей tower defense Я соло-разработчик, делаю игру про пластиковых солдатиков против инопланетного улья (до 4 игроков). На больших волнах FPS падал до 12-30, поэтому я две недели мерил производительность вместо того чтобы гадать. Вот что оказалось важным: Проблема была не на сервере. Симуляция занимала меньше 1 мс, а данные о врагах (около 13 байт на каждого при частоте 10 Гц) давали всего ~23 КБ/с для 200 юнитов. Главный расход - рендеринг видимых объектов на клиенте, около 0,1 мс на врага. Скрытые объекты всё равно стоят денег. Враги в пуле, спрятанные под картой, были дороже активных. Решение - полностью выгружать их из сцены (Parent = nil), то же самое для юнитов в туннелях. Skinned meshes в толпе бьют по FPS. Когда на экране больше 60 мелких врагов, они переключаются на простую crowd mesh из 1800 треугольников - в игровом режиме разница незаметна. Эффекты требуют динамического бюджета. При числе врагов выше 60 обломки, дым и искры уменьшаются, а полупрозрачные эффекты ограничиваются по кадру. Тени на мелких юнитах отключаются при 60+ и включаются ниже 45 (зазор нужен, чтобы избежать мерцания). Итог: все 14 карт держат стабильные 60 FPS с 150-270 живыми врагами.
Канал в каталоге Максиметера
3 подписчиков · Новости