Kontrola wersji dla rozwoju gier - problemy i rozwiązania? [Zamknięte]


106

Dostępnych jest wiele systemów kontroli wersji , w tym systemy typu open source, takie jak Subversion , Git i Mercurial , a także systemy komercyjne, takie jak Perforce .

Jak dobrze wspierają proces tworzenia gier? Jakie są problemy z użyciem VCS w odniesieniu do plików nietekstowych (plików binarnych), dużych projektów itp.? Jakie są rozwiązania tych problemów, jeśli takie istnieją?

Aby uporządkować odpowiedzi, spróbujmy dla poszczególnych pakietów. Zaktualizuj każdy pakiet / odpowiedź o swoje wyniki.

Proszę również podać w odpowiedzi kilka krótkich szczegółów na temat tego, czy VCS jest darmowy czy komercyjny, dystrybuowany czy scentralizowany itp.

Aktualizacja : Znaleziono fajny artykuł porównujący dwa VCS poniżej - najwyraźniej Git to MacGyver, a Mercurial to Bond . Cóż, cieszę się, że to ustalone ... A autor ma na końcu fajny cytat:

Prozelityzm dla tych, którzy nie przeszli jeszcze na rozproszony VCS, jest w porządku, ale próba konwersji użytkownika Gita na Mercurial (lub odwrotnie) jest stratą czasu i energii każdego.

Zwłaszcza, że prawdziwym wrogiem Gita i Mercuriala jest Subversion . Dang, to świat kod-jedz-kod tam w FOSS-land ...


Uwaga - ma to na celu zastąpienie pytania gamedev.stackexchange.com/questions/245/… . Za 72 godziny usunę to pytanie - na razie pozostawiam to, aby dać ludziom czas na skopiowanie odpowiedzi / komentarzy na to pytanie. :)
Cyclops,

To prawdopodobnie stanie się jednym z moich ulubionych pytań, jeśli ludzie będą postępować zgodnie z instrukcjami edycji. Pracuję teraz nad rozwiązaniem dla Game Dev: D
Jesse Dorsey

@Noctrine, musiałeś dodać zastrzeżenie, jeśli nie? :) Z oczywiście ludzie będą postępować zgodnie z instrukcjami ...
Cyclops

Nie usuwaj drugiego pytania. Jeśli to naprawdę nie na temat (nie sądzę, że tak jest), można je zamknąć i zarchiwizować. Można go również zamknąć jako duplikat tego.
Firas Assaad,

@Firas, zostało zamknięte - i ponownie otwarte :) Niezależnie od tego, myślę, że ta formuła jest lepsza (i tak, to wiki) - i jeśli ludzie kopiują swoje odpowiedzi, ta powinna obejmować wszystkie informacje z drugiego pytania.
Cyklop,

Odpowiedzi:


71

Git

Ostatnio byłem na modowym gitarze (korzystałem z SVN i Mercurial). Jak dotąd bardzo podoba mi się to, co dostaję z Git. Konfiguracja nie jest trudna, a kolejne narzędzia programistyczne zaczynają ją wykorzystywać.

To rozproszony system kontroli wersji. Dzięki temu mamy własny, niezależny obszar podobny do pnia. Mogę pracować we własnym obszarze i zapraszać do bardzo łatwego przeglądania zestawów zmian. Mogę wycofać się w swoim własnym miejscu, nie psując centralnego repozytorium. Mogę zatwierdzać, rozgałęziać i robić wszystko, co możesz zrobić z SVN lokalnie. Naprawdę lubię mieć tę kontrolę.

Dzięki SVN potrzebujesz dostępu do swojego repozytorium, aby dokonać zatwierdzenia. Co jeśli jesteś w drodze lub w kawiarni bez internetu? Niedobrze.

Oczywiście, SVN jest znacznie prostszy do nauczenia się, ale myślę, że zalety rozproszonej kontroli źródła w dużej mierze przeważają nad tym, że ma małą krzywą uczenia się.

Podoba mi się również, że lepiej jest łączyć się.

Główną wadą GIT jest to, że przechowuje on całą historię lokalnie. (Tak, możesz to zrobić, aby to zmniejszyć, ale jest to zachowanie domyślne). W przypadku plików źródłowych nie stanowi to żadnego problemu, ale jeśli masz duży projekt z gigabajtami danych zasobów, szybko staje się to problemem. Z mojego obecnego doświadczenia polecam GIT tylko w przypadku repozytoriów mniejszych lub tylko źródłowych.

Jeśli nadal jesteś ciekawy GIT, sprawdź http://thkoch2001.github.io/whygitisbetter/, aby uzyskać dobre informacje / dane. Sprawdź także patrz https://git.wiki.kernel.org/index.php/GitSvnComparsion


1
Uwielbiam ideę hierarchii oddziałów, która pozwala QA testować zmiany, zanim dotrą one do głównej linii, lub łatwe tworzenie i sprawdzanie wersji demo.
tenpn

@tenpn, czy jest to cecha rozproszonego VCS w ogóle, czy tylko Git?
Cyklop,

1
Słyszałem, że Git i Mercurial cierpią, gdy wrzucają do nich bardzo duże pliki. Czy jest jakaś prawda do tej plotki od ludzi z większym doświadczeniem niż ja?
drhayes

6
Git jest dobry, ale jeśli chodzi o obsługę dużych zasobów graficznych lub muzycznych, takich jak ponad 100 MB, staje się zauważalnie wolny przy zatwierdzaniu i wymeldowywaniu. W tej chwili Mercurial, pretendent do Git, ma rozszerzenie „dużych plików”, które rozwiązuje ten konkretny problem. Jeśli masz projekt gry, który nie ma wielu zasobów, możesz wypróbować Git.
Spoike

3
Dlaczego nie użyć podmodułów Git do zarządzania plikami binarnymi? W ten sposób możesz utworzyć osobne repozytoria według potrzeb, a następnie powiązać je ze sobą za pomocą submodułów. Wszelkie przyszłe zmiany w głównym repozytorium nie powinny wpływać na podmoduły.
Alex Schearer

62

Bystry

Kluczowe cechy:

  • Rozproszony VCS
  • Darmowe, open source
  • Skrypty wtyczek są łatwe do napisania --- mogą być napisane w Pythonie lub jako skrypty powłoki
  • Istnieje wiele darmowych skryptów wtyczek
  • Wiele dostępnych dokumentów, w tym ta książka (wysoce zalecane)

Jeśli chodzi o użycie plików nietekstowych, ostatnie wersje Mercurial (> = 2.0) domyślnie zapewniają rozszerzenie dużego pliku :

largefiles rozwiązuje ten problem, dodając scentralizowaną warstwę klient-serwer na Mercurial: duże pliki znajdują się gdzieś w centralnym sklepie w sieci, a te, które są potrzebne, są pobierane tylko wtedy, gdy są potrzebne.

Istnieją inne rozszerzenia zapewniające podobne rozwiązania, takie jak rozszerzenie bigfiles, które pozwala przechowywać twoje zasoby w tym samym repozytorium Mercurial, ale pobiera tylko potrzebne pliki binarne, gdy ich potrzebujesz.

Nie znam żadnych problemów dotyczących dużych projektów poza tymi związanymi z posiadaniem dużych plików binarnych. Projekt Python jest dużym projektem i wykorzystuje Mercurial .

Joel Spolsky napisał mini-poradnik na temat używania Mercurial w Subversion Re-education


4
Interesująca uwaga na temat rozszerzenia Bigfiles - które rozwiązuje jeden z problemów zgłoszonych w oryginalnym wątku, że Distributed VCS nie pasuje dobrze do produkcji gier, które mają dużą liczbę zasobów plików binarnych.
Cyklop

1
+1 dla Mercurial. Jest szybki, łatwy w użyciu i zaskakująco wydajny. :) Używam go do wszystkiego: tworzenia stron internetowych, tworzenia gier, prywatnych jednoosobowych projektów i projektów zespołowych. Dziękujemy za wprowadzenie rozszerzenia BigFiles!
jacmoe,

W odniesieniu do dużych projektów - TortoiseHg wydaje się działać znacznie wolniej w dużym repozytorium z 8-letnimi wersjami niż w małym repozytorium z mniej niż 20 wersjami. Nie wiem jeszcze, czy jest to coś specyficznego dla Żółwia, czy bardziej ogólnie dla Mercurial.
Kylotan,

4
Wydaje się, że nie ma opcji porównywalnej z tym svn:needs-lock, a ponieważ nie ma też sposobu, aby powiedzieć, kto lokalnie pracuje nad tym , jakie pliki , wróciłeś do przekazywania miski wokół zespołu, dosłownie (nie możesz edytować bez miska na biurku). Rozszerzenie BigFiles, czy nie, ten VCS jest bezużyteczny dla plików binarnych bez praktycznego rozwiązania tego.
Sam Harwell,

3
Niezależnie od obsługi bigfile, jeśli dwie osoby edytują, powiedzmy, plik Maya naraz, jedna się zamelduje, a druga będzie musiała powtórzyć pracę. Przy pomocy Perforce możesz przynajmniej wiedzieć, że ktoś edytuje plik (a także automatycznie blokować ten plik).
dash-tom-bang

39

Z konieczności

Perforce (komercyjny / zamknięty, scentralizowany) jest standardem branżowym z wielu powodów.

  1. Jest to produkt komercyjny, co oznacza, że ​​ma wsparcie komercyjne. Projekty typu open source mogą kwalifikować się do bezpłatnej licencji (bez wsparcia technicznego).
  2. Bardzo dobrze obsługuje obszary robocze , co pozwala na bardzo elastyczne układy katalogów źródłowych i zasobów.
  3. Bardzo dobrze obsługuje listy zmian .
  4. Możesz zobaczyć, kto nad czym pracuje. Gry mają wyjątkowo wysoką liczbę szybko zmieniających się plików binarnych (zasobów) w porównaniu do innych projektów programistycznych. Przez większość czasu nie można ich łączyć, więc śledzenie, kto ma to, co / gdzie / kiedy ma krytyczne znaczenie. Klienci Subversion i DSCC celowo unikają tej techniki, ale jest ona dość korzystna w niektórych aplikacjach.
  5. Obsługuje gigantyczne bazy kodu / zasobów. To ma nie przechowywać zduplikowane dane na komputerach klienckich, co jest ważne, gdy sub-widok drzewa jest kilkadziesiąt koncertów.

To powiedziawszy, boleśnie oczywiste jest prawie codziennie, że Perforce nie uważa, że ​​ich pozycja w branży jest zagrożona. Ich narzędzia wizualne, w tym P4V i P4SCC (zintegrowane z Visual Studio) są powolne i zawierają błędy, przy czym ten ostatni znany jest z tego, że zamraża Visual Studio, aby z niego korzystać. AnkhSVN wyprzedza Perforce o mile.

Komentarz Xana: Warto jednak zauważyć, że ich narzędzie do scalania, P4Merge (używane do różnicowania i łączenia), jest doskonałe i znacznie lepsze niż narzędzia Tortoise Merge. Zaskakujące jest to, że ten komponent jest dostępny bezpłatnie jako część pakietu narzędzi wizualnych P4.

Komentarz by slicedlime: Kolejną wadą Perforce jest to, że rozgałęzienie w nim może być ogromnym bólem, szczególnie jeśli masz duże drzewa. Prawie każdy inny vcs jest lepszy w rozgałęzianiu i scalaniu. Jest to zwykle niewielka cena za powyższe korzyści.

Komentarz roe: Perforce jest bardzo rozmowny. Bez zaangażowanego serwera niewiele się dzieje. Przede wszystkim potrzebujesz serwera, aby móc otwierać pliki do edycji, co oznacza, że ​​musisz przeskoczyć kilka obręczy, jeśli zamierzasz przerwać połączenie z serwerem.

Komentarz jrista: Jako codzienny użytkownik Perforce od ponad dwóch lat, z rozbudowanym zespołem ds. Rozwoju i inżynierii jakości, liczącym ponad 100 osób, dobrze się z tym zapoznałem. Chociaż jest to przyzwoity system kontroli źródła, ma jednak swoje wady, które osoby oceniające systemy SCC powinny mieć świadomość:

  • Jak wspomnieli inni, rozgałęzianie / integracja jest szczególnie uciążliwa i trudna do wykonania. Masz bezbożną kontrolę, ale wiąże się to z nadmierną złożonością. Z drugiej strony wizualne narzędzie scalania jest jedyne w swoim rodzaju i prezentuje piękny, oparty na trzech plikach widok scalania twojej pracy. Perforce zapewnia pewne graficzne wizualizacje ścieżek rozgałęzień (zwane Grafem rewizji), jednak sposób, w jaki jest wizualizowany, często sprawia, że ​​narzędzie jest raczej bezużyteczne. Jeśli potrzebujesz tylko bardzo krótkiego odcinka czasu dla jednego lub bardzo niewielu plików, może to być przydatne ... cokolwiek więcej, a nawigacja na wykresie zmian jest prawie niemożliwa.
  • Perforce nie jest również bardzo wydajnym narzędziem, ponieważ prawie każda operacja na pliku wymaga duplikowania plików i danych: rozgałęzianie, etykietowanie, listy zmian itp. Nie ma tu rzadkich lub lekkich znaczników ani rozgałęzień. Jeśli nie boisz się użyć ogromnej ilości miejsca na dysku do śledzenia twoich zmian, perforce prawdopodobnie będzie ci dobrze służyć. Jeśli nie, szukałbym innego narzędzia.
  • Perforce korzysta z obszarów roboczych, jednak czasami może to być frustrujące, ponieważ perforce buforuje wszystkie stany w obszarze roboczym, zamiast używać rzeczywistych plików na dysku w celu ustalenia pewnego stanu. Często powoduje to, że pliki nie są synchronizowane, ponieważ obszar roboczy twierdzi, że są one aktualne, a z jakiegokolwiek powodu fizyczne pliki na dysku NIE są aktualne.
  • Ostatnia irytacja, Perforce jest dość brutalny w twojej sieci. Jest to wyjątkowo gadatliwy program, który pochłania znaczną część przepustowości. Każda utrata łączności sieciowej, a Ty ryzykujesz, że nie będziesz w stanie wykonać żadnej pracy z plikami kontrolowanymi przez źródło, dopóki połączenie nie zostanie przywrócone. Do tej pory nie odkryłem działalności, którą można wykonać offline w Perforce.

2
Kolejną zaletą Perforce jest to, że jest darmowy dla pierwszych dwóch użytkowników, co jest świetne dla małych projektów hobbystycznych lub dwóch ocenia jego przydatność do większych projektów.

Z mojego doświadczenia wynika, że ​​punkt 5 z twojej odpowiedzi jest bardzo prawdziwy. Jest niezwykle skalowalny. Błędy są rzadkie, obsługa jest szybka. Nie ma pewności co do kosztów, Yacine zauważa, że ​​jest bezpłatny dla pierwszych dwóch użytkowników. W przypadku mniejszych studiów z mniejszymi grami warto byłoby rozważyć inne opcje. Integracja z Visual Studio jest trochę od razu gotowa; ale mamy szczęście, że nasz entuzjasta Perforce jest w stanie napisać od podstaw doskonałego dostawcę rozwiązań VS.
paulecoyote

Perforce jest niesamowity, jeśli możesz sobie na to pozwolić. Nie korzystałem ze wszystkich systemów kontroli wersji, ale w ciągu 10 lat komercyjnego tworzenia gier i kilku systemów kontroli wersji, to jest najlepsze, z czego korzystałem całkiem sporo. Obsługuje duże pliki danych szybko i niezawodnie, a przy prawidłowej konfiguracji działa dobrze w konfiguracji z wieloma witrynami przy stosunkowo wolnych połączeniach internetowych. Integracja Visual Studio może nie być idealna, ale jest dość solidna.
bluescrn

1
Gdybym musiał wybrać jeden VCS do rozwoju gier (na dużą skalę), byłby to Perforce. Gdybym mógł wybrać wiele, dodałbym DVCS dla zasobów tekstowych (kod, skrypty i inne różne pliki danych), ale zachowuję Perforce dla zasobów binarnych.
dash-tom-bang

2
Pracowałem nad dużym projektem gry wykorzystującym Perforce i byłem całkowicie zdezorientowany, że ktoś za to zapłaci. Konieczność synchronizacji z serwerem jest nieznośna, nawet w sieci LAN. Rozumiem funkcję „uzgadniania pracy offline”, ale w praktyce przepływ pracy jest tak uciążliwy, że gdy występują czkawki sieciowe, po prostu nie działa. Jeśli nie używasz IDE z wtyczką P4, lub po prostu chcesz edytować plik tu i tam z wiersza poleceń lub innego narzędzia, musisz wrócić do klienta P4 i zrobić księgowość. Żaden inny VCS nie stawia tak wielu barier w wykonywaniu pracy.
Suboptimus

27

Obalenie

  • Open-source, scentralizowane

  • Pliki Blendera - nie jestem do końca pewien, czy pliki .blend są binarne (wyglądają tak), ale nie miałem problemów z dodaniem ich do Subversion. Po przeprowadzeniu kilku eksperymentów zwiększenie rozmiaru zmienionych plików wydaje się nominalne, więc nie jest to po prostu kopiowanie w całym pliku.

  • Duże projekty - Działa, choć może być dziwaczny. Zdecydowanie jest w stanie obsłużyć repozytoria o wielkości co najmniej 5,5 GB (całkowity rozmiar katalogu repozytorium na serwerze; głównie zasoby binarne).

  • Zduplikowane dane na kliencie - Subversion przechowuje kopię każdego pliku w przestrzeni roboczej użytkownika jako nieskazitelną kopię. Zaletą tego jest to, że możesz zrobić różnicę lub przywrócić bez powrotu do serwera. Wadą jest to, że 10 gigabajtów plików roboczych zajmuje 20 gigabajtów miejsca na dysku.

  • Lista ignorowanych jest właściwością katalogu (prosta z GUI, denerwująca w wierszu poleceń).

  • Subversion pozwala blokować pliki / zasoby - co jest naprawdę pomocne, jeśli wielu artystów i projektantów pracuje nad tymi samymi plikami.

  • Zewnętrzne to świetny sposób na obsługę kodu współdzielonego (np. Biblioteki lub bazy) między projektami.


Duże projekty - KDE, GNOME.
Matias Valdenegro,

* FSFS może być bardzo kruchy podczas odzyskiwania - dlatego należy zachować szczególną ostrożność podczas tworzenia kopii zapasowych. * Łatwy do zrozumienia, TortoiseSvn to świetny klient. * Śledzące błędy open source, systemy ciągłej integracji itp. Często mają wsparcie dla Subversion „od razu po wyjęciu z pudełka”. * Dostępnych jest kilka dobrych książek na temat korzystania z Subversion.
paulecoyote

1
@paulecoyote, jest to post na wiki, możesz go edytować z nowymi informacjami, a nie tylko komentarzami.
Cyclops,

1
SVN jest świetny do użycia z Tortoise SVN ( tortoisesvn.net ), klientem, który ładnie integruje się z menu kontekstowym i zapewnia GUI dla wszystkich działań. Bez wątpienia żółw nie ma portów Linux / Mac OS (przynajmniej tego pisząc). Protip: jeśli pracujesz z wieloma osobami, zawsze aktualizuj (i scalaj / rozwiązuj konflikty) PRZED zatwierdzeniem.
Exilyth

7

AlienBrain

Od Avid :

Alienbrain to cyfrowy system zarządzania aktywami dla artystów z branży rozrywkowej

  • Komercyjne (droższe niż Perforce), scentralizowane
  • Zaprojektowany do integracji z innymi profesjonalnymi narzędziami przepływu pracy 2D i 3D, takimi jak Photoshop, Maya, 3ds Max, Microsoft Visual Studio itp.

Mam żadnego doświadczenia z AlienBrain i tylko słyszałem o nim z książki Gra Coding Kompletna Mike McShaffry. Wydaje się jednak, że wysoko o tym myśli:

Artyści i inni współautorzy będą faktycznie korzystać z tego produktu, w przeciwieństwie do innych, które zostały zaprojektowane głównie w celu dobrej integracji z Visual Studio, a nie kreatywnych aplikacji, takich jak Photoshop i 3D Studio Max. Jedną z głównych wad innych produktów jest dość naiwne traktowanie plików nietekstowych. AlienBrain został napisany z myślą o tych plikach.

Oczywiście opisuje to również jako:

Dla tych z was, którzy mają naprawdę poważne problemy ze śledzeniem zasobów i równie poważne budżety ...


TAK! Wreszcie ten, kto go dostanie: zasoby i kod potrzebują różnych narzędzi! +1
jacmoe

3
Moje doświadczenie z AlienBrain polega na tym, że autorzy nie dostają tworzenia gier. To nie jest solidne rozwiązanie kontroli źródła. Niektóre funkcje są dobre dla niektórych członków zespołu, ale niektóre z najfajniejszych reklamowanych funkcji nie zostały zaimplementowane w taki sposób, aby były przydatne (np. Interfejs przejściowy, w którym ktoś może sprawdzić swoje zasoby „do sprawdzenia”. Niestety nie ma sposobu, aby dowiedzieć się, co jest do sprawdzenia, a co nie, a po synchronizacji i tak otrzymasz. Ponadto nic nie buforuje, więc synchronizacja wymaga przetestowania każdego pliku. Jest to powolne w przypadku wielu koncertów aktywów. :)
dash-tom-bang

Jedyną przydatną rzeczą w AlienBrain jest okno podglądu, które działa z plikami Max. Cała reszta to kompletne śmieci.
tenpn

1
Nie jestem pewien, czy jest to konstruktywne, ponieważ nie jest to doświadczenie z pierwszej ręki, ale pracowałem nad kilkoma projektami, które korzystały z AlienBrain, zanim pracowałem nad tym projektem, i nie korzystałem już z niego, i nikt nie miał nic miłego do powiedzenia na temat to. Pamiętam, że czytałem o tym i mówiłem ustnie, że wybuchło to na scenie, brzmiało naprawdę fajnie, a niektórzy ludzie, którzy mogli sobie na to pozwolić, spróbowali i ostatecznie zdali sobie sprawę, że to pomyłka.
Suboptimus,

3

Team Foundation Server

od Microsoft

  • Reklama w telewizji
  • Scentralizowane
  • Bardzo dobrze integruje się z Visual Studio
  • Dobra integracja z Windows Explorerem dla użytkowników spoza VS (tj. Artystów)
  • Obsługuje zestawy zmian „Półki”, co jest nieco analogiczne do „ukrywania” w git, ale przechodzi na serwer; możesz także upublicznić te zestawy półek, aby umożliwić innym użytkownikom ich integrację.
  • Od 2012 roku ma kilka bardzo dobrych przepływów pracy związanych z przeglądaniem kodu wbudowanych bezpośrednio w Visual Studio
  • Najnowsza wersja narzędzia scalania jest bardzo ładna. Automatyczne scalanie działa całkiem dobrze.
  • Obsługuje duże i wiążące pliki w porządku (oczywiście nie można ich scalić)
  • Bardzo dobry serwer kompilacji
  • Obsługuje bramkowane zameldowania, które umożliwiają ocenę jakości zestawu półek (za pomocą automatycznych kompilacji, testów jednostkowych, analizy kodu), zanim zostanie on przypisany do repozytorium.
  • Bardzo dobre narzędzia do zarządzania projektami (nie tylko funkcje kontroli źródła, ale naprawdę przydatne), dające możliwość śledzenia od wymagań wysokiego poziomu po kod.

Użyłem TFS intensywnie w projektach symulatorów MILSPEC i jest całkiem niezły. Prawdopodobnie nie jest najlepszy, jeśli korzystasz z komputera Mac, chociaż w dzisiejszych czasach istnieje wtyczka Eclipse. Wersja hostowana w chmurze obsługuje repozytoria git dla zaplecza kontroli źródła.

Jest bezpłatny dla maksymalnie pięciu użytkowników w Visual Studio Online (pozwala na zamknięte źródło; brak ograniczeń wielkości repozytorium), gdzie jest przechowywany w chmurze. Jeśli chcesz go hostować lokalnie, może być drogo.

Najbardziej podoba mi się funkcja zarządzania inżynierią oprogramowania oraz fakt, że całkiem dobrze radzi sobie z dużymi plikami i plikami binarnymi.


1
Nowe Visual Studio Online jest bezpłatne dla maksymalnie 5 użytkowników i hostowane w chmurze (ładnie zarchiwizowane, itp.) Może obsługiwać TFS lub Git. Idealne do tworzenia gier niezależnych.
Robert Fraser,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.