Оптимізація Deep Rock Galactic: Survivor під мобільні пристрої
Public- 19 Sep, 2026

Перенести Deep Rock Galactic: Survivor на мобільні означало взяти bullet-heaven гру з ПК і змусити її працювати на залізі з куди меншим запасом GPU, CPU та пам'яті. Портом займалася Piktiv, поки гілка для ПК ще активно розроблялася, і команди розійшлися настільки, що злиття йшло лише в один бік: з ПК у мобільну версію, але ніколи назад. Таке розділення дало Piktiv свободу поводитися з вихідними системами жорстко — розбирати усталені підходи й перебудовувати їх під зовсім інший набір завдань оптимізації. Головним обмеженням була пам'ять: майже всі цільові пристрої несли 4 ГБ оперативної пам'яті, крім одного iPad, у якого було лише 3 ГБ. На ньому в команди залишалося приблизно 1 850 МБ на все, і вихід за межі означав падіння.
Роботу над продуктивністю зосередили на системах, чия вартість зростає разом із числом ворогів. Цифри шкоди спочатку були GameObjects з TextMesh Pro, але генерація текстової сітки одразу для тисячі ворогів ставала вузьким місцем. Рішенням стала звичайна система частинок Unity зі спрайт-листом цифр від 0 до 9. Пошук шляху пішов із вбудованої NavMesh-системи, яка погано справляється, коли тисячі агентів прокладають маршрут кожен сам по собі, на підхід через flow-field, де вартість залежить від площі, а не від числа агентів. Фізичні запити прискорили KD-деревом для просторових вибірок — наприклад, щоб знайти всіх ворогів у радіусі гранати, — хоча це вимагало частих перебудов у міру руху ворогів. У рендері ворогів приблизно тисячу skinned mesh renderer'ів замінили запеченою анімацією вершин: кожен ключовий кадр зберігається в текстурі й відтворюється шейдером на GPU, що зводить витрати CPU майже до нуля і відкриває GPU-інстансинг на одній спільній сітці та матеріалі.
Глибші технічні деталі пояснюють, як влаштовані ці заміни. Flow-field перевертає модель вартості пошуку шляху: на рівень накладається сітка, і від цілі плитки малюють стрілки в бік сусідів, у яких стрілки вже є, поки все поле не покриється. Тоді вартість залежить від покритої площі, а не від числа агентів, і її можна додатково обмежити, обчислюючи обмежувальний паралелепіпед навколо всіх ворогів і гравця та оновлюючи поле лише всередині цієї області. KD-дерево рекурсивно ділить простір, тож запит «точка і радіус» швидко повертає все всередині, підміняючи важчі фізичні запити. Ці системи складалися в ланцюжок Burst-джобів завдовжки в 10–15 залежностей, яка виводить усіх ворогів за межі звичайної фізики й помітно підіймає нижню планку частоти кадрів.
Addressables займали центральне місце в тому, щоб укластися в ліміт iPad з 3 ГБ. Оскільки гра ніколи не показує більше одного біома за раз, Piktiv винесла графічні ассети та налаштування конкретних біомів так, щоб вони завантажувалися лише за потреби. Плата за це — Addressables привносять асинхронність у код, який раніше був синхронним, а перебудова системи під async може стати серйозним архітектурним завданням, але тут це себе виправдало. Тестування спиралося на автоматичну систему вимірювань, що проганяла шість сценаріїв по всіх біомах: базовий з гравцем, що простоює, тисяча ворогів, що наступають, або 500 ворогів плюс автоматична зброя, що стріляє. Протягом усього часу замірялися CPU, GPU та пам'ять, а Unity Profiler вів ранні аудити по CPU. Один сценарій, який за десять секунд породжував близько 4 000 синіх кубів-підбирок, до оптимізації був серйозним ударом, а після неї став невимірним. Геометрію рівня, яка процедурно будується з окремих об'єктів, теж зібрали в батчі через користувацькі draw-команди, адже фіксована камера зверху дозволяє легко обчислити видиму область.
Для команд, які роздумують над схожим портом, висновки стосуються не стільки якогось одного трюку, скільки розкладки даних і взаємодії між системами. Перекладати дані з компонентів і назад дорого, коли тисячі сутностей виконуються щокадру, тож вигідно тримати все в нативних контейнерах і проганяти ці ж контейнери через увесь конвеєр. А грі, якій слід було б використовувати ECS або Data-Oriented Technology Stack, не потрібна повна переробка: цей проєкт сперся на компілятор Burst і нативні типи даних, не переводячи гру цілком. Deep Rock Galactic: Survivor доступна у Steam, Xbox, App Store і Google Play.