Керування бібліотекою асетів та версійність графіки в іграх

Арт-директор просить повернути версію персонажа «як було три тижні тому, до того як художник переробив броню». 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
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    142

Арт-директор просить повернути версію персонажа «як було три тижні тому, до того як художник переробив броню». 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 тижні

Вартість розраховується після аудиту поточного стану репозиторію та об'єму асетів. Отримайте консультацію — обговоримо деталі.