Разработка мобильной 3D-игры
3D на мобильных — это постоянный баланс между визуальным качеством и тепловым дросселированием. iPhone 15 Pro с A17 Pro потянет то, что Snapdragon 680 не осилит. Задача разработчика — сделать игру, которая выглядит хорошо на премиальном железе и не падает ниже 30 FPS на среднем Android.
Выбор движка
Unity — стандарт для мобильного 3D. Богатая экосистема, URP (Universal Render Pipeline) оптимизирован под мобильные GPU. Unreal — когда нужна AAA-визуализация и есть бюджет на более долгую разработку и оптимизацию. Godot 4 с Vulkan Mobile — для небольших студий с ограниченным бюджетом.
Рендеринг и оптимизация — основная работа
Universal Render Pipeline (Unity). Для мобильного 3D — URP, не Built-in. URP Renderer Features заменяют кастомные render pass-ы. URP Asset → Quality → HDR Off для мидл-сегмента, MSAA 2x максимум. Depth Texture и Opaque Texture — отключить если не используются: каждое — дополнительный render pass.
LOD (Level of Detail). Обязателен для любого окружения. LODGroup с тремя LOD-уровнями: полная геометрия до 10 м, упрощённая до 30 м, impostor (billboard) дальше. LODBias в Quality Settings — на мобильных снижаем до 0.7–1.0. Без LOD — 10 000 полигонов на каждый объект в поле зрения = тепловой throttling через 5 минут.
Occlusion Culling. Static Occluder на крупных объектах (здания, скалы), Static Occludee на всём остальном. Bake Occlusion через Window → Rendering → Occlusion Culling. Без окклюзии GPU рендерит объекты за стенами — waste на каждый кадр.
Shaders. URP/Lit — базовый PBR. Для мобильных: снижаем Material Quality через shader keywords. Кастомные шейдеры через ShaderGraph — нода Universal Render Pipeline/Lit. Transparent objects — минимум: каждый transparent object — отдельный render pass. Particle Systems с transparent material — главный источник overdraw.
// Profiler маркер для измерения кастомного кода
using var marker = new ProfilerMarker("EnemyAI.Update");
marker.Begin();
UpdateAI();
marker.End();
Физика и коллизии
Rigidbody с Interpolation = Interpolate для плавного движения. Collision Detection = Continuous только для быстро движущихся объектов (пули, снаряды) — дорого. MeshCollider — только для статичных объектов окружения. Для персонажей и врагов — CapsuleCollider или составные примитивы.
Physics.OverlapSphere для AoE-проверок вместо постоянных триггеров. Частота физического шага — Time.fixedDeltaTime 0.02f (50 Hz) — стандарт. Снижать до 0.033f (30 Hz) для тяжёлых сцен на слабых устройствах.
Персонажи и анимация
Animator Controller с blend trees для передвижения: 1D Blend Tree по скорости (idle → walk → run). Avatar Masks — отдельные слои для верхней и нижней части тела. Rigging пакет для procedural animation (IK для ног по неровной поверхности).
GPU Skinning. Skinned Mesh Renderer → Quality → Auto — Unity переключает на GPU skinning при наличии нескольких экземпляров. Для толп врагов (20+) — Baked Simulation или ECS-подход через Unity.Animations.Rigging.
Анимации хранить в Addressables — не в Resources. Пак 50 анимаций в Resources = всё в память при старте. Addressables загружает по требованию и выгружает.
Мультиплеер (если нужен)
Unity Netcode for GameObjects (NGO) — официальное решение. NetworkObject, NetworkVariable<T>, ServerRpc / ClientRpc. Transport layer: Unity Transport (лучшая производительность на мобильных, UDP). Relay через Unity Relay для NAT traversal без своего сервера.
Mirror (опенсорс) — альтернатива NGO с большей документацией. Photon Fusion — SaaS с готовой инфраструктурой, быстрый старт.
Мобильный мультиплеер требует обработки: потеря соединения, background mode (iOS убивает сокеты через 30 сек в фоне), battery optimization на Android (Doze mode режет сетевые запросы).
Интеграции
Addressables + CDN. Контент (уровни, 3D-ассеты) грузятся постепенно через CDN, не упакованы в APK/IPA. Первый запуск — базовый контент. Остальное — по требованию. Это снижает размер первоначальной загрузки и позволяет обновлять контент без ревью в App Store.
Compute Shaders через ComputeShader.Dispatch — для GPU-particle систем, grass rendering, кастомной LOD-системы. Работают на Metal (iOS A7+) и Vulkan/OpenGL ES 3.1 (Android).
Сроки
| Проект | Команда | Ориентир |
|---|---|---|
| Прототип / vertical slice | 3–4 чел. | 3–5 месяцев |
| Полная игра (10–20 уровней, одиночная) | 5–8 чел. | 10–18 месяцев |
| С мультиплеером | 7–12 чел. | 18+ месяцев |
Стоимость рассчитывается после анализа GDD, целевых платформ и требований к визуальному качеству.







