Поддержка библиотеки ассетов и версионности графики в играх

Арт-директор просит вернуть версию персонажа «как было три недели назад, до того как художник переделал броню». Git хранит только `.unity` и `.prefab` файлы, а исходники в Photoshop и Substance Painter лежат в общей папке на NAS — без истории версий. Это не редкий сценарий. Мы сталкивались с этим де

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1005
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    95

Арт-директор просит вернуть версию персонажа «как было три недели назад, до того как художник переделал броню». Git хранит только .unity и .prefab файлы, а исходники в Photoshop и Substance Painter лежат в общей папке на NAS — без истории версий. Это не редкий сценарий. Мы сталкивались с этим десятки раз в студиях разного размера. Опыт показывает: без выстроенного управления ассетами с первого дня такие проблемы гарантированы. Давайте разберём, как это исправить системно.

Почему Git не решает проблему ассетов

Git работает с текстом. Бинарный FBX на 80 МБ или PSD на 200 МБ — это diff, который не читается, и дельта, которая не сжимается. Репозиторий с арт-ассетами без LFS разрастается до нескольких гигабайт за несколько месяцев и становится непригодным для клонирования. В проекте с 5000+ ассетами поиск нужного файла занимает до 15 минут.

Git LFS решает проблему хранения, но не версионности с точки зрения художника. Треккинг *.psd *.fbx *.png через .gitattributes — это минимум. Проблема: LFS не показывает превью ревизий без git lfs fetch, художники не привыкли к git checkout для просмотра предыдущих версий текстуры.

Профессиональная альтернатива — Perforce Helix Core или Plastic SCM (теперь Unity DevOps Version Control). Plastic SCM интегрирован в Unity Editor нативно, умеет показывать визуальный diff для .unity и .prefab файлов, поддерживает lock-файлов для бинарных ассетов (художник «захватывает» файл, исключая параллельные правки). Perforce, в свою очередь, обеспечивает централизованное хранение с производительностью, превосходящей Git LFS в задачах с тысячами ассетов.

Как выбрать VCS для графики?

Система Версионность бинарных Lock-файлы Интеграция с Unity Сложность внедрения
Git + LFS Частичная (только хранение) Нет Средняя Низкая
Plastic SCM Полная + визуальный diff Есть Нативная Средняя
Perforce Helix Core Полная Есть Через плагин Высокая

Perforce в 5 раз быстрее обрабатывает коммиты с большими файлами по сравнению с Git LFS. Для малых команд до 10 человек Git LFS с дисциплиной может быть достаточен. Но для проектов с 50+ художниками Perforce — стандарт индустрии, используемый AAA-студиями.

Как организовать библиотеку ассетов?

Хаотичная структура папок в Assets/ убивает время команды. Найти нужную текстуру в проекте с 3000+ файлами без нормальной иерархии — это 10-15 минут поиска. Правильная структура зависит от типа игры, но базовый принцип: по фичам, не по типам.

Плохо:

Assets/Textures/characters/hero_diffuse.png Assets/Models/characters/hero.fbx Assets/Materials/hero_material.mat 

Хорошо:

Assets/Characters/Hero/Textures/hero_diffuse.png Assets/Characters/Hero/Models/hero.fbx Assets/Characters/Hero/Materials/hero_material.mat 

При удалении фичи — удаляется одна папка целиком. При поиске — всё в одном месте.

Для текстурных атласов: чёткая система именования с суффиксами _D (diffuse/albedo), _N (normal), _M (metallic), _R (roughness), _AO (ambient occlusion) — критично для правильного импорта в Unity. TextureImporter автоматически определяет тип по суффиксу при правильной настройке.

Где хранить исходники ассетов?

Исходники (.psd, .spp Substance, .blend, .ma) не входят в Unity-проект. Их хранение — отдельная задача. Варианты:

  • Artefactory/Nexus как бинарное хранилище с метаданными — подходит для крупных студий. Каждый исходник имеет версию, тег релиза, связку с задачей в Jira.
  • Google Drive / SharePoint с строгими соглашениями об именовании — hero_armor_v003.psd — работает для малых команд. Дёшево, но требует дисциплины.
  • Git LFS с отдельным репозиторием под исходники — средний вариант. Разделение репозитория движка и арт-репозитория уменьшает проблемы с производительностью.

Для любого варианта нужен процесс: художник завершил итерацию → экспортирует финальный ассет в нужном формате (PNG/TGA для текстур, FBX для мешей) → помещает в Unity-проект → фиксирует версию исходника с тегом. Разрыв между исходником и экспортированным ассетом — главная причина вопроса «а откуда взялась эта текстура?» через год.

Что входит в аудит и внедрение?

  • Аудит текущей библиотеки: инвентаризация, поиск дублей (типичная ситуация — 10–15% дубликатов), оценка объёма.
  • Выбор и настройка VCS (Plastic SCM/Perforce/Git LFS) с правилами структуры.
  • Миграция ассетов в новую систему с сохранением истории (где возможно).
  • Настройка CI-пайплайна для проверки битых ассетов и неиспользуемых файлов.
  • Обучение команды: lock-файлы, commit-сообщения, работа с превью.
  • Документация по процессу управления ассетами.
  • Пост-релизная поддержка 1 месяц.

Как проходит аудит?

Начинаем с инвентаризации: сколько ассетов, каков текущий объём, есть ли дубли (одна и та же текстура в трёх местах с разными именами — типичная ситуация). Инструмент: Find References в Unity + кастомный Editor-скрипт для поиска неиспользуемых ассетов через AssetDatabase.FindAssets. Затем — миграция на выбранную VCS, настройка .gitattributes или Plastic SCM правил, обучение команды работе с lock-файлами. Весь процесс занимает от 1 до 3 недель в зависимости от объёма. Свяжитесь с нами для аудита — мы предложим оптимальный план.

Сколько времени занимает внедрение?

Работа Срок
Аудит и реструктуризация библиотеки ассетов 3–7 дней
Настройка Git LFS + правила + CI-интеграция 2–5 дней
Внедрение Plastic SCM / Unity DevOps 1–2 недели

Стоимость рассчитывается после аудита текущего состояния репозитория и объёма ассетов. Получите консультацию — обсудим детали.