Створення системи контролю версій проекту ігр
Бінарні файли — головна особливість геймдев-репозиторію, яка робить звичайний git-workflow нерабочим. Текстури в PNG/PSD, 3D-моделі в FBX, аудіо в WAV/OGG, відео — все це не діффується, займає гігабайти та моментально робить git clone неможливим без спеціальних інструментів.
Git LFS (Large File Storage) — базове рішення, але його настройка в геймдев-проекті вимагає точного визначення: що в LFS, що ні. Якщо туди попадуть скрипти чи JSON-конфіґи — втрачаємо нормальний diff у code review. Якщо не туди попадуть великі текстури — репозиторій розростається до кількох ГБ за місяць.
Настройка Git LFS для Unity/Unreal
.gitattributes для Unity-проекту повинен включати:
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.asset filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
При цьому .cs, .json, .yaml, .asmdef — без LFS: це текстові, їх важливо діффувати.
Критична настройка Unity: Force Text serialization. Edit → Project Settings → Editor → Asset Serialization Mode = Force Text. Це переводить .asset, .prefab, .unity з бінарного формату в YAML-текст. Тепер на них можна робити diff та merge. Без цієї настройки слияние сцен неможливе — кожен конфлікт вимагає ручного вибору «моя версія чи чужа».
Альтернатива для великих студій — Perforce (Helix Core). P4 нативно працює з бінарними файлами, підтримує exclusive checkout (запобігає конфліктам на бінарних файлах), масштабується до великих репозиторіїв (терабайти). Порог входу вищий, але для команди 10+ з великим обсягом ассетів — виправданий вибір. Unreal Engine сам активно використовує Perforce.
Branching strategy для ігрового проекту
Ігровий проект має специфіку в порівнянні з веб-додатком: частих ассет-оновлень від художників, паралельна робота над рівнями, необхідність підтримувати грабельну версію в будь-який момент.
GitFlow адаптований для геймдева:
-
main— стабільна версія, завжди запускається без критичних баґів -
develop— інтеграційна гілка, сюди вливаються фічі -
feature/назва-фічі— короткоживучі гілки для конкретних систем -
art/назва-ресурсу— гілки для великих ассет-оновлень (новий рівень, пак персонажів) -
hotfix/опис— срочні фікси поверх main
Гілки art/ живуть довше feature/ та мержаться крупними пачками — це зменшує кількість конфліктів при роботі художників.
Trunk-based development — альтернатива для малих команд (2–4 чоловіка). Всі працюють в main, короткі гілки живуть не більше 2 днів. Вимагає хорошого CI та feature flags для незавершених фіч.
Управління сценами та перевагами
Сцени в Unity — головний джерело merge-конфліктів. Стандартний підхід: кожен розробник не трогає чужу сцену без домовленості. Краще: розбити рівні на Subscenes (через Multi-Scene Editing або Addressables Scene Loading). Художник працює над Art-підсценою рівня, програміст — над Logic-підсценою. Конфліктів немає, тому що це різні файли.
В Unreal — World Partition з Level Streaming. Кожен стример-регіон може редагуватися незалежно.
Інструменти для команди
Крім власне VCS — налаштовуємо інтеграції:
- GitHub / GitLab / Bitbucket — hosting + code review workflow (Pull Requests, branch protection rules)
- Unity Version Control (Plastic SCM) — альтернатива Git LFS від Unity, з нативним GUI в редакторі. Зручніше для нетехнічних учасників команди (художники, дизайнери рівнів)
-
Conventional Commits — стандарт повідомлень коммітів:
feat(combat): add parry mechanic,fix(ui): inventory count overflow on 3-digit numbers
Реальна ситуація, яку вирішуємо: стартап, 5 чоловік, git без LFS, сцена в бінарному форматі. Репозиторій виріс до 14 ГБ за 3 місяці, clone займає 40 хвилин, merge сцен — ручний вибір один з двох варіантів. Міграція заняла 4 дні: git-lfs migrate import для всіх бінарних файлів, включення Force Text serialization, настройка .gitattributes, навчання команди. Результат: репозиторій 1.2 ГБ (без LFS-об'єктів), clone за 5 хвилин.
| Масштаб завдання | Орієнтовні строки |
|---|---|
| Настройка Git LFS + .gitattributes + Force Text | 1–2 дні |
| Повний VCS setup (git + branching strategy + CI hooks) | 3–5 днів |
| Міграція існуючого репозиторію на LFS | 2–4 дні |
| Настройка Perforce для великої студії | 1–2 тижні |
Вартість розраховується після аналізу поточного стану репозиторію та команди.





