Створення системи контролю версій проєкту ігор

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

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

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Створення системи контролю версій проєкту ігор
Проста
від 4 годин до 2 робочих днів
Часті питання

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

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

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

  • 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

Створення системи контролю версій проекту ігр

Бінарні файли — головна особливість геймдев-репозиторію, яка робить звичайний 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 тижні

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