Розробка системи управління версіями для асетів графіки

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Розробка системи управління версіями для асетів графіки
Середня
~3-5 робочих днів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Розробка системи управління версіями для ассетів графіки

Коли в проекті три художники одночасно редагують один FBX-файл персонажа, а система контролю версій — це папка assets_FINAL_v2_NEW_fixed, проблема не в дисципліні команди. Проблема в відсутності інфраструктури. Бінарні файли — меші, текстури, аудіо — це не код: їх не можна змішати через diff, та звичайний Git без розширень справляється з ними погано.

Чому стандартний Git не підходить для графічних ассетів

Git зберігає кожну версію файлу цілком. Текстура 4K у форматі PSD важить 80–120 МБ. Після 50 ітерацій один файл займає 4–6 ГБ в історії репозиторію. Клонування проекту через рік займає годину. git checkout на гілку художника — 20 хвилин.

Git LFS (Large File Storage) розв'язує проблему зберігання: бінарники зберігаються на окремому сервері, в репозиторії тільки покажчики. Але Git LFS не розв'язує проблему lock'ів: якщо художник A та художник B одночасно відкрили один FBX — один з них втратить зміни при спробі commit. Git LFS File Locking (через git lfs lock) додає механізм еклюзивних блокувань, але він не інтегрований в DCC-інструменти (Maya, Blender, Substance Painter) — художник повинен пам'ятати про lock через CLI, що на практиці не працює.

Саме тому для графічних ассетів у крупних проектах використовують спеціалізовані рішення.

Perforce Helix Core для графіки

Perforce — стандарт де-факто у AAA-розробці. Його preemptive locking (checkout before edit) ідеально підходить для бінарників: художник «бере» файл на редагування, система блокує його для інших. Це не заважає потоку роботи — навпаки, всі знають, хто що редагує саме зараз.

Інтеграція з DCC: Perforce plugin для Maya, плагін для Houdini, P4V (візуальний клієнт) працює з будь-яким приложением через filesystem. Substance Painter підтримує Perforce через P4 plugin. Для Unity — P4Unity або вбудована підтримка Version Control у Unity Editor (з'явилась у Unity 2021.2+).

Для проектів на 3–15 художників Perforce Helix Core можна розгорнути самостійно на Linux-сервері (безплатна ліцензія до 5 користувачів та 20 workspace'ів) або використовувати Helix TeamHub (хмарний варіант).

Обмеження: Perforce — це не Git. Розробники, звикші до git workflow, адаптуються близько тижня. Та це хороше вкладення: втрата роботи художника через merge conflict у бінарнику коштує дорожче.

Git LFS + DVC для змішаних команд

Якщо команда не готова до повного переходу на Perforce, робоча альтернатива — Git LFS для ассетів + DVC (Data Version Control) для великих датасетів та наборів ассетів.

DVC зберігає ассети у S3/GCS/Azure Blob/локальному NAS, а в Git-репозиторії зберігаються тільки .dvc-файли-покажчики. dvc pull скачує потрібні версії ассетів. Це дає можливість працювати з ассетами як з кодом (гілки, теги, історія) без раздування Git-репозиторію.

Для управління lock'ами поверх Git LFS — Anchorpoint (десктопний клієнт з visual locking), або кастомний сервер блокувань через Git LFS Locking API.

Структура системи для ігрового проекту

Типова архітектура для Unity/Unreal проекту з командою 5–20 чоловік:

Source repository (код): Git + GitHub/GitLab. Все, крім бінарників. .gitignore агресивно виключає PSDs, FBXs, WAVs, великі PNGs.

Asset repository: Perforce або Git LFS + DVC. Структура: assets/characters/, assets/environments/, assets/audio/, assets/vfx/. Версіонуються і вихідники (PSD, FBX, MA), та фінальні експорти (PNG, glTF, OGG).

Asset pipeline: скрипти автоматичної конвертації та оптимізації при commit. Maya → FBX export через Mayapy, PSD → compressed PNG через ImageMagick, аудіо → platform-specific формати. Запускається через CI hook.

Naming convention: суворий, задокументований. CH_Goblin_Body_Diffuse_D.png (CH = character, Body = mesh part, Diffuse = map type, D = diffuse). Без цього через пів року ніхто не знає, що означає texture_v3_USE_THIS_ONE.png.

На одному проекті перехід з «папки на мережевому диску» на Perforce зайняв два тижня (встановлення, конвертація історії з NAS в Perforce depot, навчання команди). Перший місяць — запитання та непривичка. Через два місяці — «чому ми не зробили це раніше», тому що зникла проблема «хто останній зберіг файл» та з'явилась повна історія змін кожного ассета з авторством.

Терміни впровадження

Масштаб Ориентировочні терміни
Git LFS настройка для існуючого проекту 3–5 днів
Git LFS + DVC + pipeline для команди 5–10 чел. 1–2 тижня
Perforce Helix Core + DCC інтеграції 2–3 тижня
Повна asset pipeline з CI автоконвертацією 3–5 тижнів

Вартість розраховується після аналізу поточної інфраструктури та розміру команди.