Услуги по созданию 2D-графики и Spine-анимации

Наша компания по разработке видеоигр ведет независимые проекты, совместно с клиентом создает игры и оказывает дополнительные операционные услуги. Опыт нашей команды позволяет нам охватить все игровые платформы и разработать потрясающий продукт, соответствующий видению клиента и предпочтениям игроков.

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 5 из 5 услугВсе 242 услуг
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

2D-арт и анимация

Мобильная игра с 200 анимациями персонажей занимает 800 МБ только на текстурах. APK отклоняет Google Play из-за размера. При этом половина анимаций — вариации одного и того же движения с незначительными отличиями. Это классическая проблема команд, которые выбирали frame-by-frame анимацию там, где скелетная даёт лучший результат с долей размера.

Что входит в услугу

  • Концепт-арт и иллюстрации — персонажи, окружение, UI-элементы
  • Спрайт-анимация — frame-by-frame, в том числе Aseprite-пайплайн
  • Скелетная анимация — Spine, DragonBones
  • 2D-эффекты — particle-based, shader-based, анимированные текстуры
  • Оптимизация атласов — TexturePacker, Unity Sprite Atlas, упаковка для конкретных платформ

Spine: скелетная анимация в деталях

Spine (Esoteric Software) — де-факто стандарт скелетной анимации для 2D игр. Альтернатива — DragonBones (бесплатный, меньший набор функций) и нативный 2D Animation package в Unity (удобная интеграция, но слабее Spine по набору инструментов).

Скелетная vs Frame-by-frame: когда что выбирать

Критерий Скелетная (Spine) Frame-by-frame (Aseprite)
Размер данных Малый (кости + веса) Большой (кадры как изображения)
Гибкость блендинга Высокая Отсутствует
Выразительность Зависит от риггера Полная художественная свобода
Время производства Долгий ригинг, быстрые итерации Каждая анимация с нуля
Подходит для Персонажи, UI, существа Пиксель-арт, особый стиль

Правило, которое работает на практике: если у персонажа более 15 уникальных анимаций — Spine экономичнее по размеру и времени итераций. Если проект стилистически требует frame-by-frame (пиксель-арт, ротоскопирование, мультипликационный стиль с умышленными артефактами) — Aseprite.

Mesh Deformation в Spine

Это одна из ключевых возможностей, отличающих Spine от простого «палочного» скелета. Mesh deformation позволяет деформировать полигональную сетку поверх спрайта через веса вершин — персонаж гнётся органично, одежда складывается, щёки надуваются.

Workflow:

  1. В Spine создаём mesh на спрайте (Tools > Mesh > Edit Mesh)
  2. Назначаем веса вершин к костям (Weights mode)
  3. Устанавливаем количество вершин исходя из нужной детализации деформации — больше вершин = лавнее деформация, но выше вычислительная стоимость

Path Constraints — ещё один мощный инструмент: кость следует по кривой. Используется для хвостов, волос, щупалец, верёвок — любых элементов, которые должны изгибаться органично.

IK Constraints в Spine работают через двух- или трёхкостную цепочку. Для конечностей это обязательно: аниматор двигает IK target (позицию ладони), а цепочка плечо-предплечье-кисть выстраивается автоматически. Без IK анимировать конечности в FK — значит тратить вдвое больше времени.

Интеграция Spine в Unity

Официальный Spine-Unity runtime — платный (входит в лицензию Spine), активно поддерживается. Компоненты:

  • SkeletonAnimation — основной компонент для анимации
  • SkeletonMecanim — интеграция с Animator Controller Unity (удобно для переиспользования Mecanim-логики)
  • SkeletonGraphic — для Canvas/UI (рендерится через CanvasRenderer, не через MeshRenderer)

Важный момент производительности: SkeletonAnimation создаёт отдельный Mesh per instance. При 50+ персонажах на экране это 50 draw calls минимум (без батчинга). Решение — SkeletonAnimation Batching через SubmeshSeparator + GPU instancing, либо ограничение количества одновременно видимых Spine-объектов.

Spine Events — механизм синхронизации: событие в анимации (footstep, attack_hit, spawn_particle) диспатчится в Unity-код через AnimationState.Event. Правильная архитектура: Spine Event → UnityEvent → звук/партикл/логика. Не хардкодить синхронизацию по времени — анимация может замедляться через timeScale.

Sprite Atlas и оптимизация текстур

Каждый отдельный спрайт в Unity создаёт отдельный draw call. 100 UI-иконок без атласа = 100 draw calls только на UI. Sprite Atlas упаковывает спрайты в единую текстуру, позволяя батчить draw calls для объектов, использующих один атлас.

TexturePacker vs Unity Sprite Atlas

TexturePacker (CodeAndWeb) — внешний инструмент, более гибкий в настройке упаковки. Поддерживает множество алгоритмов упаковки, trim прозрачных пикселей, extrude краёв для предотвращения bleeding, экспорт в специфичные форматы платформ (PVRTC для iOS, ETC2 для Android).

Unity Sprite Atlas (встроенный) — удобен для Addressables и динамической загрузки. Два режима: Master Atlas (полный контроль) и Variant Atlas (уменьшенная версия для low-end устройств через Scale Factor).

Практические правила упаковки:

  • Группировать по сцене/экрану: всё, что видно одновременно — в одном атласе. Иначе atlas не помогает с батчингом
  • Максимальный размер атласа: 2048x2048 для мобильных, 4096x4096 для PC. Больше — риск проблем на старых GPU
  • Trim прозрачных пикселей: обязательно. Спрайт с большими прозрачными полями впустую занимает место в атласе
  • Padding: 2-4 пикселя между спрайтами предотвращает texture bleeding при mipmapping и UV filtering

Форматы сжатия текстур

Платформа Рекомендуемый формат Примечание
Android ETC2 (RGB) / ETC2 RGBA8 Аппаратное ускорение на всех современных Android
iOS ASTC 4x4 / 6x6 ASTC универсален: качество + размер
PC/Console DXT5 (BC3) Или BC7 для высокого качества
WebGL DXT5 + fallback Проверить поддержку через SystemInfo

Для атласов с большим количеством мелких спрайтов и sharp краями — ASTC 4x4 предпочтительнее ASTC 6x6 (меньше артефактов на мелких деталях).

2D-эффекты

Particle System (Shuriken) — для большинства 2D-эффектов достаточно встроенного. Для 2D важно: Renderer Mode = Billboard или Horizontal Billboard, Simulation Space = World для эффектов, которые не должны двигаться с персонажем.

Visual Effect Graph (VFX Graph) в URP — GPU-based particles, подходит для сложных эффектов с тысячами частиц. Для мобильных — осторожно, требует Compute Shaders (не все устройства поддерживают).

Shader Graph для 2D: dissolve-эффекты, outline через SDF, distortion (water, heat shimmer), анимированные UV (лава, вода). Sprite Lit Shader + кастомные ноды в Shader Graph — стандартный путь для 2D в URP.

2D Animation Package (нативный Unity): PSDImporter для импорта слоёв из Photoshop как отдельных спрайтов, Sprite Skin для скелетной анимации внутри Unity без Spine. Подходит для простых персонажей с ограниченным количеством анимаций — если команда не хочет покупать лицензию Spine.