Frame time 28ms на Samsung Galaxy A53 при целевых 16.6ms. Unity Profiler показывает Camera.Render занимает 18ms из них. Разработчик смотрит в Frame Debugger — 340 draw calls, половина из которых это UI Canvas в режиме Screen Space - Overlay с Rebuild каждый кадр. Мы решаем такие проблемы за день, но без точной диагностики итерации растягиваются на недели. Наш опыт — более восьми лет в геймдеве, свыше 50 проектов, где мы добивались стабильных 60 FPS на среднем железе.
Консультирование по визуальной оптимизации — это диагностика узких мест и план конкретных действий, а не «используйте меньше полигонов». Мы передаем команде не только отчет, но и понимание, как самостоятельно находить и устранять проблемы в будущем. Гарантируем сокращение времени на баг-фикс в 2–3 раза после нашей консультации.
Какие проблемы решает визуальная оптимизация?
CPU side. UnityEngine.Rendering.RenderPipeline.Render в Profiler — первая точка входа. Если там > 10ms на мобиле при простой сцене — смотрим дальше. Canvas.SendWillRenderCanvases — флаг проблемного UI. ShadowCaster.Render — теней слишком много или слишком большой shadow distance. Animator.Update с большим числом активных аниматоров в сцене — каждый активный Animator тратит CPU независимо от видимости.
GPU side. Snapdragon Profiler для Android, Xcode GPU Frame Capture для iOS — точнее Unity Profiler для GPU-анализа. Fillrate overdraw виден через Unity Scene View в режиме Overdraw — красные зоны это многократная перерисовка. Типичная проблема: партикл-системы с Additive blending рисуют по 15–20 слоёв поверх фона — каждый слой полный fillrate pass.
Memory. Memory Profiler package — не встроенный Profiler. Снапшот кучи показывает конкретные текстуры, которые занимают VRAM. Незасжатая 4K текстура = 64 МБ VRAM, без мипмапов ещё хуже — при удалении от объекта GPU всё равно читает полное разрешение.
Почему Dynamic Batching подводит на мобильных?
Dynamic batching автоматически батчит меши с одинаковым материалом если они <= 900 вершин и 300 треугольников. Но если у объектов разные MaterialPropertyBlock значения (например, цвет через скрипт) — батчинг ломается. GPU Instancing в 3 раза эффективнее на мобильных GPU, так как снижает количество draw calls за счёт одного вызова рендеринга для множества объектов. Переход на GPU Instancing — одно из самых эффективных изменений.
Какие типичные проблемы мы находим?
- Canvas Rebuild каждый кадр.
Canvas.willRenderCanvasesстреляет при любом изменении дочернего элемента — смещение, цвет, текст. Если в HUD обновляется таймер каждую секунду, весь Canvas пересчитывается. Решение: разделение Canvas на статичные и динамические части. Анимированные элементы на отдельный Canvas. - Shadow Distance. На мобильных платформах
Shadow Distance = 150(дефолт) рисует каскадные тени для всего что в 150 юнитах от камеры. Реальная потребность — обычно 20–40 юнитов. Разница в shadow render time — 3–4x. - MipMap Streaming не настроен. Без
QualitySettings.streamingMipmapsActive = trueвсе текстуры загружаются в полном разрешении при старте сцены. Для мобилок с 3–4 ГБ RAM это критично — сцена с 200 текстурами может занять 600 МБ VRAM при старте.
Как проходит консультация по визуальной оптимизации?
- Аудит. Запускаем проект на целевом устройстве с прикреплённым Profiler, снимаем несколько характерных сцен. Анализируем frame breakdown, draw calls, fillrate, memory snapshot. Результат — список узких мест с оценкой потенциального прироста.
- План действий. Приоритизируем по соотношению «сложность исправления / прирост производительности». Простые победы (shadow distance, canvas split, texture compression) — сначала. Архитектурные изменения (переход на GPU Instancing, реорганизация LOD) — с оценкой трудозатрат.
- Поддержка реализации. Мы реализуем изменения сами или консультируем команду при самостоятельном исправлении. Для второго варианта: письменный технический гайд с конкретными настройками и ожидаемыми результатами.
Что входит в консультацию по визуальной оптимизации?
- Документация: отчёт с графиками, скриншотами Profiler и Frame Debugger, рекомендации по приоритетам.
- Код оптимизаций: готовые шейдеры, скрипты для настройки Instancing, конфиги для Addressables.
- Доступ: временный доступ к нашему демо-стенду с эталонными решениями.
- Обучение: 2-часовая сессия с разбором типичных ошибок и ответами на вопросы команды.
- Поддержка: консультации по возникшим сложностям в течение месяца после завершения основного этапа.
Мы используем комбинированный подход: сначала CPU-профилирование для поиска логических узких мест, затем GPU-детализация через RenderDoc и Snapdragon Profiler. Это позволяет найти как очевидные, так и скрытые проблемы — например, неправильную настройку LOD или неэффективное использование шейдеров.
Инструменты, которые используем
| Инструмент | Назначение | Платформа |
|---|---|---|
| Unity Profiler + Frame Debugger | CPU/GPU профилирование, draw calls | Unity Editor |
| RenderDoc | Детальный GPU-анализ | PC, консоли |
| Snapdragon Profiler | GPU-профилирование Android | Android (Adreno) |
| Xcode GPU Frame Capture | GPU-профилирование iOS | iOS (Metal) |
| Memory Profiler 1.1+ | Анализ VRAM, текстуры | Unity Editor |
Сроки и экономия
| Тип консультации | Срок | Экономия времени для команды |
|---|---|---|
| Экспресс-аудит + отчёт (1 сцена, 1 платформа) | 1–3 дня | до 2 недель самостоятельного разбора |
| Полный аудит производительности + план оптимизации | 5–10 дней | до 4 недель на поиск решений |
| Аудит + реализация оптимизаций | 2–6 недель | полное снятие головной боли по FPS |
Средняя экономия на проекте — сокращение бюджета на отладку на 30–50% за счёт точного выявления коренных причин. Стоимость консультации фиксируется после первичного анализа проекта и целевых платформ. Свяжитесь с нами, чтобы обсудить ваш проект и получить предварительную оценку. Закажите консультацию, и мы поможем решить проблемы с производительностью.






