Контроль версій для розробки ігор - проблеми та рішення? [зачинено]


106

Доступно багато систем управління версіями, включаючи такі з відкритим кодом, як Subversion , Git та Mercurial , а також комерційні, такі як Perforce .

Наскільки добре вони підтримують процес розвитку гри? Які проблеми з використанням VCS щодо нетекстових файлів (бінарних файлів), великих проектів тощо? Які рішення цих проблем, якщо такі є?

Для організації відповідей давайте спробуємо на основі пакета. Оновіть кожен пакунок / відповідь своїми результатами.

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

Оновлення : Знайдено приємну статтю, де порівнюються два VCS нижче - мабуть, Git - це MacGyver, а Mercurial - Bond . Ну, я радий, що це врегульовано ... А в автора є приємна цитата наприкінці:

Це нормально прозелітизувати тих, хто ще не перейшов на розподілений VCS, але намагатися перетворити користувача Git в Mercurial (або навпаки) - це марна трата часу та енергії кожного.

Тим більше , що справжнім ворогом Гіта та Меркуріала є Субверсія . Данг, це світ з кодовим набором кодів , там, у FOSS-землі ...


Примітка - це призначено замінити Питання gamedev.stackexchange.com/questions/245/… . Через 72 години я збираюсь видалити це запитання - залишаю його зараз, щоб дати людям час для копіювання своїх відповідей / коментарів до цього питання. :)
Циклоп

Це, мабуть, стане одним із моїх улюблених питань, якщо люди дотримуються інструкцій редагування. Зараз працюю над конкретним рішенням Game Dev: D
Джессі Дорсі

@Noctrine, вам довелося додати відмову, якщо не так? :) З курсу люди будуть слідувати інструкціям ...
Циклоп

Не видаляйте інше запитання. Якщо це дійсно поза темою (я не думаю, що це так), його можна закрити та архівувати. Його також можна закрити як дублікат цього.
Фірас Ассаад

@Firas, вона була закрита - і знову відкритий :) В будь-якому випадку , я думаю , що цей препарат краще (і так, це вікі) - і якщо люди копіювати їх відповіді, це один повинен охоплювати всю інформацію в іншому питанні.
Циклоп

Відповіді:


71

Git

Останнім часом я був на стрічці Git (я використовував SVN та Mercurial). Поки мені дуже подобається те, що я отримую з Git. Це далеко не біль для налаштування, і все більше інструментів розвитку починають застосовувати його.

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

За допомогою SVN вам потрібен доступ до репортажу, щоб здійснити фіксацію. Що робити, якщо ви в дорозі чи в кафе, де немає інтернету? Не добре.

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

Мені також подобається, що вона розумніша щодо злиття.

Основним недоліком GIT є те, що він зберігає всю історію на місцях. (Так, ви можете виконати операцію, щоб зменшити це, але це поведінка за замовчуванням). Це взагалі не проблема для вихідних файлів, але якщо у вас великий проект з гігабайтами даних про об’єкти, це швидко стає проблемою. У моєму теперішньому досвіді я рекомендую GIT лише для менших репостів або лише для джерела.

Якщо вам все ще цікаво про GIT, перегляньте http://thkoch2001.github.io/whygitisbetter/, щоб отримати добру інформацію / показники. Також перевірте див. Https://git.wiki.kernel.org/index.php/GitSvnComparsion


1
Мені подобається ідея ієрархії гілок, яка дозволяє QA перевірити зміни, перш ніж вони перетворять їх на основну лінію, або просте створення та перевірку демонстрацій.
tenpn

@tenpn, це особливість розподіленого VCS взагалі чи просто Git?
Циклоп

1
Я чув, що і Git, і Mercurial страждають, коли забивають у них дуже великі файли. Якась правда до цієї чутки від людей, які мають більший досвід, ніж я?
drhayes

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

3
Чому б не використовувати підмодулі Git для управління бінарними файлами? Таким чином, ви могли створити окремі сховища за потребою, а потім зв'язати їх за допомогою підмодулів. Будь-які майбутні зміни в основному сховищі не повинні впливати на підмодулі.
Alex Alex Schearer

62

Меркуріал

Ключові риси:

  • Розподілений VCS
  • Безкоштовно, з відкритим кодом
  • Сценарії плагінів легко писати --- можуть бути написані в Python або як сценарії оболонки
  • Є безліч скриптів плагінів, які вже є у вільному доступі
  • Багато доступної документації, включаючи цю книгу (настійно рекомендується)

Що стосується використання нетекстових файлів, останні версії Mercurial (> = 2.0) надають розширення для великих файлів за замовчуванням :

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

Є й інші розширення, що пропонують подібні рішення, такі як розширення bigfiles, що дозволяє зберігати свої активи в тому ж Mercurial repo, але лише вибирати потрібні бінарні файли, коли вони вам потрібні.

Я не знаю жодних питань стосовно великих проектів, крім тих, що стосуються наявності великих бінарних файлів. Проект Python - це великий проект, який використовує Mercurial .

Джоел Спольський написав міні-підручник з використання Mercurial at Subversion Re-Education


4
Цікава примітка про розширення Bigfiles - що стосується однієї з проблем, про яку повідомляється в початковій темі, що розподілений VCS не буде добре поєднуватися з ігровими виробництвами, що мали велику кількість бінарних файлових активів.
Циклопи

1
+1 для Mercurial. Він швидкий, простий у використанні та на диво потужний. :) Я використовую це для всього: веб-розробки, розробки ігор, приватних проектів для однієї людини та командних проектів. Дякуємо за представлення розширення BigFiles!
jacmoe

Що стосується великих проектів - TortoiseHg виглядає набагато повільніше у великому сховищі з 8-річним переглядом, ніж у малому сховищі з меншими 20 переглядами. Я ще не знаю, чи це щось специфічне для Черепахи чи для Меркуріалу загалом.
Кілотан

4
Здається, не існує варіанту, який можна порівняти svn:needs-lock, і оскільки також немає способу сказати, хто працює над локальними файлами на локальному рівні , ви повертаєтесь до передачі чаші навколо команди, буквально (вам заборонено редагувати без чаша на вашому столі). Розширення BigFiles чи ні, цей VCS марний для двійкових файлів без практичного рішення цього.
Сем Харвелл

3
Незалежно від підтримки bigfile, якщо двоє людей редагують, скажімо, файл Maya одразу, один зареєструється, а інший повинен буде переробити роботу. Принаймні, за допомогою Perforce ви можете знати, що хтось інший редагує файл (а також автоматично заблокує цей файл).
Даш-Том-Банг

39

Перфорс

Виконання сили (комерційний / закритий, централізований) - галузевий стандарт з ряду причин.

  1. Це комерційний продукт, а це означає, що він постачається з комерційною підтримкою. Проекти з відкритим кодом можуть мати право на безкоштовну ліцензію (за вирахуванням технічної підтримки).
  2. Він дуже добре підтримує робочі простори , що дозволяє дуже гнучкі макети джерел та ресурсів.
  3. Він дуже добре підтримує списки змін .
  4. Ви можете бачити, хто над чим працює. Ігри мають аномально велику кількість швидко змінюються бінарних файлів (активів) порівняно з іншими проектами розвитку. Більшу частину часу вони не підлягають зливанню, тому слідкуйте за тим, хто має що / де / коли є критичним. Клієнти Subversion і DSCC навмисно уникають цієї методики, але це досить вигідно в певних додатках.
  5. Він підтримує гігантські коди / бази активів. Він не зберігає дублікати даних на клієнтських машинах, що важливо, коли ваш підвид дерева - це кілька десятків концертів.

При цьому, майже щодня очевидно, що Perforce не відчуває, що їх позиція в цій галузі загрожує. Їх візуальні інструменти, включаючи P4V та P4SCC (інтегруються з Visual Studio), є повільними та гнучкими, останні відомі, що заморожують Visual Studio для повного задоволення від цього. AnkhSVN знаходиться на відстані миль від Перфорса.

Коментар xan: Однак варто відзначити, що їх інструмент злиття, P4Merge (використовується для розмежування та злиття), є чудовим та набагато перевершує аналогічні Tortoise Merge. Дивно, але цей компонент доступний безкоштовно в рамках пакету P4 Visual Tools.

Коментар slicedlime: Ще одним недоліком Perforce є те, що розгалуження в ньому, як правило, є величезним болем, особливо якщо у вас великі дерева. Практично кожен інший ПК краще розгалужувати та зливати. Зазвичай це невелика ціна, щоб оплатити вищеперелічені переваги.

Коментар roe: Perforce надзвичайно балакучий. Без залучення сервера не багато чого. Найголовніше, що вам потрібен сервер для того, щоб зробити відкритий для редагування, а це означає, що вам потрібно перейти через кілька обручів, якщо ви збираєтесь перервати з'єднання з сервером.

Коментар jrista: Як щоденний користувач Perforce вже понад два роки, з розширеною розробкою та якісною інженерною командою понад 100 людей, я ознайомився з ним. Хоча це гідна система управління джерелами, але вона має свої недоліки, про які слід знати, хто оцінює системи SCC:

  • Як зазначають інші, розгалуження / інтегрування особливо громіздко і важко зробити. У вас є безбожний контроль, але це відбувається за рахунок надмірної складності. З іншого боку, інструмент візуального злиття є єдиним у своєму роді і представляє прекрасний трифайловий "заснований" вид злиття вашої роботи. Perforce забезпечує деякі графічні візуалізації шляхів відгалуження (званих графіком перегляду), проте спосіб його візуалізації часто робить цей інструмент марним. Якщо вам потрібно побачити дуже невеликий відрізок часу для одного або дуже мало файлів, це може бути корисним ... будь-чим іншим, і орієнтуватися на графік перегляду майже неможливо.
  • Perforce також не дуже ефективний інструмент, оскільки майже будь-яка операція з файлом вимагає дублювання файлів і даних: розгалуження, маркування, зміни списків і т.д. Якщо ви не боїтеся використовувати величезну кількість дискового простору для відстеження змін, perforce, ймовірно, послужить вам добре. Якщо ні, то я би звернувся до іншого інструменту.
  • Perforce використовує робочі простори, однак це може бути часом неприємно, оскільки perforce кешує весь стан у вашій робочій області, а не використовує фактичні файли на диску для визначення певного стану. Це часто призводить до того, що файли не синхронізуються, оскільки робоча область говорить про їх оновлення, коли з будь-якої причини фізичні файли на диску дійсно НЕ актуальні.
  • Останній роздратування, Perforce є досить жорстоким у вашій мережі. Це надзвичайно балакуча програма, яка споживає значну кількість пропускної здатності. Будь-яка втрата підключення до мережі та ви ризикуєте не мати можливості виконувати будь-яку роботу з файлами, керованими джерелами, доки не буде відновлено з’єднання. Поки що я не виявив діяльності, яку можна виконувати в Інтернеті в Інтернеті.

2
Ще одна перевага Perforce полягає в тому, що він безкоштовний для перших двох користувачів, що чудово підходить для невеликих хобі-проектів, або два оцінюють його придатність для більшого проекту.

З мого досвіду, точка 5 з вашої відповіді дуже правдива. Це надзвичайно масштабовано. Помилки рідкісні, підтримка швидка. Не впевнений у вартості, Yacine зазначає, що для двох перших користувачів це безкоштовно. Для менших студій з меншими іграми варто було б оцінити інші варіанти. Інтеграція Visual Studio трохи не вдається; але нам пощастило, щоб повний ентузіаст Perforce в нашій студії написав відмінного постачальника джерел для VS з нуля.
paulecoyote

Перфорс є приголомшливим, якщо ви можете собі це дозволити. Я не використовував усіх систем управління версіями там, але за 10 років розробки комерційних ігор та декількох систем управління версіями це найкраще, що я використовував з певним запасом. Він обробляє великі файли даних швидко та надійно, а при правильному налаштуванні працює добре під час налаштування на декількох сайтах при порівняно повільних підключеннях до Інтернету. Інтеграція Visual Studio може бути не ідеальною, але вона досить солідна.
bluescrn

1
Якби мені довелося вибрати один VCS для (масштабної) розробки ігор, це був би Perforce. Якби я міг вибрати декілька, я додав би DVCS для текстових ресурсів (код, сценарії та інші файли різних даних), але збережу Perforce для двійкових активів.
Даш-Том-Банг

2
Я працював над великим ігровим проектом, який використовував Perforce, і був зовсім здивований тим, що хтось заплатить за це. Необхідність синхронізуватися з сервером викликає жахливу силу навіть у локальній мережі. Я розумію функцію "примирити роботу в режимі офлайн", але на практиці робочий процес настільки настирливий, що коли є мережева іконка, ви просто не працюєте. Якщо ви не використовуєте IDE, у якому є плагін P4, або ви просто хочете відредагувати файл тут і там з командного рядка чи іншого інструменту, вам доведеться повернутися до клієнта P4 і зробити деякий облік. Жоден інший VCS не ставить стільки бар'єрів для роботи.
Субоптимус

27

Підрив

  • Відкритий, централізований

  • Файли блендерів - я не зовсім впевнений, чи .blend файли є двійковими (вони виглядають так), але у мене не було проблем з їх додаванням до Subversion. Зробивши кілька експериментів, збільшення розміру файлу для змінених файлів здається номінальним, тому копіювати його не потрібно у весь файл.

  • Великі проекти - Це працює, хоча може отримати химерний характер. Це безумовно вміє обробляти сховища принаймні 5,5 ГБ (загальний розмір dir-сховища на сервері; в основному двійкові активи).

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

  • Список ігнорування - це властивість каталогу (простий з gui, дратує в командному рядку).

  • Subversion дозволяє блокувати файли / об’єкти - що дуже корисно, якщо над одними і тими ж файлами працюють кілька виконавців та дизайнерів.

  • Зовнішні фахівці - це чудовий спосіб керувати спільним (наприклад, бібліотекою чи базовим) кодом між проектами.


Великі проекти - KDE, GNOME.
Matias Valdenegro

* FSFS може бути дуже крихким для відновлення - тому слід бути обережним із резервними копіями. * Легко зрозуміти, TortoiseSvn - чудовий клієнт. * Відслідковники помилок з відкритим кодом, системи безперервної інтеграції тощо часто мають підтримку Subversion "з коробки". * Існує кілька хороших книг про використання Subversion.
paulecoyote

1
@paulecoyote, це публікація у вікі, сміливо редагуйте її новою інформацією, а не лише коментарями.
Циклоп

1
SVN чудово використовувати з Tortoise SVN ( tortoisesvn.net ), клієнтом, який чудово інтегрується в контекстне меню і надає рекомендації для всіх дій. На жаль, у черепахи немає портів Linux / Mac OS (принаймні, про це). Підказка: якщо ви працюєте з декількома людьми, завжди оновлюйте (і об'єднуйте / вирішуйте конфлікти) перед тим, як зробити це.
Exilyth

7

AlienBrain

Від Avid :

Alienbrain - це система управління цифровими активами для художників індустрії розваг

  • Комерційний (дорожчий за Perforce), централізований
  • Призначений для інтеграції з іншими професійними інструментами робочого процесу 2D та 3D, такими як Photoshop, Maya, 3ds Max, Microsoft Visual Studio тощо.

Я не маю досвіду роботи з AlienBrain, і про це чув лише з книги « Кодування гри, завершеної Майком МакШафрі». Однак, здається, він дуже думає про це:

Художники та інші учасники фактично використовуватимуть цей продукт, на відміну від інших, які в основному розроблені для того, щоб добре інтегруватися з Visual Studio, а не творчими програмами, такими як Photoshop та 3D Studio Max. Одним із великих недоліків інших продуктів є їх досить наївне поводження з нетекстовими файлами. AlienBrain був написаний з урахуванням цих файлів.

Звичайно, він також описує це як:

Для тих, хто має справді серйозні проблеми з відстеженням активів і не менш серйозними бюджетами ...


ТАК! Нарешті тому, хто його отримує: активи та код потребують різних інструментів! +1
jacmoe

3
Мій досвід роботи з AlienBrain полягає в тому, що автори не отримують ігрового розвитку. Це не надійне рішення управління джерелами. Деякі функції приємні для команди, але деякі найкрутіші рекламовані функції не реалізуються таким чином, щоб бути корисними (наприклад, інтерфейс інсценування, де хтось може перевірити свої активи "для перегляду". На жаль немає способу дізнатися, що таке огляд, а що ні, і коли ви синхронізуєте, ви все одно отримаєте це). Плюс він нічого не кешує, тому для синхронізації потрібно протестувати кожен файл. Це відбувається повільно з багатьма концертами активів. :)
dash-tom-bang

Єдине корисне в AlienBrain - це вікно попереднього перегляду, яке працює з файлами Max. Все інше - це сміття.
tenpn

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

3

Team Foundation Server

від Microsoft

  • Комерційний
  • Централізований
  • Дуже добре інтегрується з Visual Studio
  • Гарна інтеграція Windows Explorer для користувачів, які не VS (тобто художників)
  • Підтримує набори змін "Shelved", що є дещо аналогічним "схованню" в git, але це підходить до сервера; ви також можете оприлюднити ці полиці, щоб дозволити іншим користувачам інтегрувати їх для вас.
  • Починаючи з 2012 року, він має дуже хороші робочі процеси з перегляду коду, вбудовані безпосередньо у Visual Studio
  • Остання версія інструменту злиття дуже приємна. Авто злиття працює досить добре.
  • Підтримує великі та обов'язкові файли просто добре (очевидно, ви не можете їх об'єднати)
  • Дуже хороший сервер побудови
  • Підтримує закриті реєстраційні реєстрації, які дозволяють оцінювати якість набору полиць (за допомогою автоматизованих збірок, тестів одиниць, аналізу коду) до того, як вона буде передана в сховище.
  • Дуже хороші інструменти управління проектами (не суворо функції керування джерелами, але дуже корисні), що дають можливість простежувати від вимог високого рівня аж до коду.

Я широко використовував TFS для проектів симуляторів MILSPEC, і це досить добре. Напевно, не найбільше, якщо ти на Mac, хоча плагін затемнення в ці дні є. Версія, розміщена у хмарі, підтримує сховища git для бек-енд-файлу управління.

Він безкоштовний для до п'яти користувачів на Visual Studio Online (дозволяє закрити джерело; без обмежень розміру сховища), де він розміщений у хмарі. Якщо ви хочете розмістити його на місцях, це може бути дорого.

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


1
Нова Visual Studio Online безкоштовна для 5 користувачів та розміщена у хмарі (добре створено резервну копію тощо) Може робити TFS або Git з нею. Чудово підходить для розробки гри в Інді.
Роберт Фрейзер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.