Praca zespołowa w jedności

30

Mam projekt Unity bez kontroli wersji i muszę go udostępnić innemu deweloperowi, abyśmy mogli pracować nad tym projektem.

Jakie strategie powinny być przydatne, aby grać w Unity Assets?

Matias Valdenegro
źródło
Myślę, że ten artykuł daje pewne wskazówki: va.lent.in/blog/2011/12/13/...
Den
2
DropBox obsługuje kontrolę wersji, funkcja nazywa się „Pack-Rat”, ale nie jest darmowa. Aby uzyskać porady dla początkujących twórców niezależnych, wcześniej zadano wiele pytań. Sugerowałbym, żebyś trochę spacerował. Wreszcie Witamy w GameDev SE!
Quazi Irfan
Bez serwera zasobów mogą występować pewne problemy przy przenoszeniu prefabrykatów i scen tam i z powrotem
Sidar

Odpowiedzi:

17

Unity ma wbudowane narzędzie do prawidłowego wspierania kontroli wersji.

Wystarczy przejść do Plik-> Ustawienia projektu-> Edytor i włączyć zewnętrzną kontrolę wersji.

Kevin Laity
źródło
4
Czy to funkcja dostępna tylko w wersji Pro? Nie widzę tego elementu menu w darmowej / niezależnej wersji Windows Unity 2.6.
James
Od 30.01.2011 jest tylko wersja Pro. Zobacz drugi akapit: unity3d.com/support/documentation/Manual/...
ojrac
11
Najnowsza wersja deweloperska Unity (3.5 RC1) wprowadziła zmianę w celu obsługi kontroli wersji w wersji darmowej. z dziennika zmian ( unity3d.com/unity/preview/notes ): Licencja: Ogólna zewnętrzna kontrola wersji (pliki .meta) są teraz dostępne w wersji darmowej.
Chroniczny programista gier
2
tylko dla przyszłych gości, zanotuj datę w tej odpowiedzi; jest już nieaktualny. Teraz nie trzeba włączać żadnego ustawienia; po prostu zmień wersję folderów „Zasoby” (upewnij się, że kontrola wersji pobiera ukryte pliki .meta) i „Ustawienia projektu” i zignoruj ​​wszystko inne.
jhocking
10

Polecam korzystanie z Git, jest darmowy i najlepszy w okolicy.

Jakiś czas temu pisałem o kontroli wersji (za pomocą Git) na moim blogu

Krótko mówiąc:

Włącz zewnętrzną kontrolę wersji Plik-> Ustawienia projektu-> Edytor i utwórz plik .gitignore, aby uniknąć niepotrzebnych rzeczy na repozytorium (nie jest to tak naprawdę konieczne, ale będzie bezcenne podczas programowania).

Oto jak powinien wyglądać plik:

[Oo]bj/
[Tt]emp/
[Ll]ibrary

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs
Cchomiak
źródło
To jest prawie taki sam jak .gitingoreużytku I na projekty Unity, ale z kilku ommissions: [Bb]uild/, *.booproj, sysinfo.txt. Jestem pewien, że to, czego używam, opiera się na nowych szablonach repozytorium GitHub dla Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) dowolnego Objective-C (podczas atakowania na iOS).
Slipp D. Thompson,
Błąd wewnętrznego serwera na Twoim blogu.
Santosh Kumar,
4

Unity 3.0 jest skonfigurowany do gry z subversion. (Przynajmniej ładniejszy niż wcześniej) Nie wiem, czy to tylko w wersji pro, czy nie, muszę sprawdzić.

Ogólnie jednak najbardziej zalecanym systemem kontroli wersji jest Unity Asset Server.

Jesse Dorsey
źródło
4

Specyficzne dla jedności - cały czas pracuj nad różnymi scenami i różnymi plikami kodu i ręcznie scalaj zmiany drugiej osoby. Jeśli oboje musisz pracować nad tą samą sceną, powiel ją i użyj kopii jako testu. W przeciwnym razie, jeśli oboje zmodyfikujecie tę samą scenę, zmiany jednej osoby zastąpią drugą. Nadal możesz używać kontroli źródła dla swoich plików źródłowych, po prostu nie przenoś ich wcale, w systemie plików lub przez Unity, gdy zostaną utworzone.

Porady dla początkujących - zdobądź przyzwoite narzędzie porównywania / scalania (lubię WinMerge ) i przyzwyczaj się do korzystania z niego, aby zobaczyć, jakie zmiany wprowadziła inna osoba, i do ręcznego scalania zmian w plikach będących w konflikcie. Skonfiguruj centralną przestrzeń dokumentacji, np. dokument Google do pisania lub wiki i przechowuj tam dokumentację - dokumentacja powinna zawierać minimalną listę podstawowych funkcji, abyś wiedział, do czego dążysz, a najlepiej listę zadań wyprowadzoną z listy funkcji, wraz z wyraźnym wskazaniem kto pracuje nad zadaniem. Porozmawiajcie ze sobą, aby z grubsza zorientować się, kto musi pracować nad danym zadaniem, i wykreślajcie je z listy, gdy będą gotowe. Kontynuuj przeglądanie i ponowną ocenę listy, aby sprawdzić, czy wszystko jest nadal aktualne i czy musisz przerobić jakieś priorytety.

Kylotan
źródło
Dziękuję Ci! Dałeś mi świetne porady na temat obu moich problemów.
nosferat
4

Współpracuję z zespołem, który nazywa się Defective Studios. Od lat zmagamy się z tym samym problemem, a ostatnio w końcu poddałem się i zacząłem pisać rozszerzenie, które pomoże mi połączyć obiekty z grą.

Zasadniczo podejście polega na stworzeniu interfejsu przypominającego inspektora w oknie, które ustawia w rzędzie każdy obiekt gry, komponent i właściwość obok siebie w celu porównania i zapewnia przyciski do kopiowania wartości (lub całych obiektów) z jednej strony na drugą. Jeśli znasz SerializedPropertyklasę, to właśnie tutaj wykonuje większość pracy. Zasadniczo tworzymy GUI, który synchronizuje stan rozkładania między prawą i lewą stroną i tworzy pionową przestrzeń, gdziekolwiek GameObjectlubComponentistnieje tylko po prawej lub lewej stronie. Funkcja porównania sprawdza równość na każdym poziomie i zmienia tło każdej linii na czerwoną lub zieloną w zależności od stanu równości. Każda linia, której dzieci zawierają różnice, również stanie się czerwona, a także umieściliśmy sprytny przycisk, aby rekurencyjnie przeszukiwać drzewo i rozszerzać wszystkie obiekty, które są różne lub mają różnice w swoich dzieciach.

Ponadto istnieje zestaw pól maski, które pozwalają odfiltrować niektóre typy komponentów z porównania. Porównywane są również atrybuty GameObject, takie jak nazwa, warstwa i znacznik. Używamy SerializedObjecti SerializedPropertydo przeglądania gameObjectwłaściwości i rysujemy je tak, jak są rysowane w inspektorze. Zapewnia to spójność i jest o wiele łatwiejsze do kodowania!

wprowadź opis zdjęcia tutaj

Ostatnim sprytnym szczegółem jest to, że proces porównywania (uruchamiany, gdy obiekty są ładowane i za każdym razem, gdy dokonywana jest zmiana), jest uruchamiany w ad-hoc coroutine, która jest aktualizowana przez EditorWindow.Updatefunkcję, tak aby w przypadku porównywania bardzo skomplikowanego obiektu, okno nie blokuje edytora. Było to konieczne przy porównywaniu obiektów z setkami (lub tysiącami!) Dzieci. Podsumowując, był to rodzaj „projektu Lego”, jak lubi to mówić mój przyjaciel, ale zdecydowanie bezcenne narzędzie, które natychmiast stało się częścią naszej współpracy.

Narzędzie Unity Merge jest udokumentowane na wiki Unify, która zawiera mapę drogową i adres e-mail do przesyłania opinii i zgłaszania problemów. Jeśli naprawdę zmagasz się ze skomplikowanym połączeniem, daj mu szansę i daj nam znać, co myślisz! Ponadto nie zadałem sobie trudu, aby wbudować go w bibliotekę DLL, więc nie krępuj się przeszukiwać źródła. Ad-hocowa implementacja i SerializedPropertymanipulowanie coroutine , a także kilka sztuczek GUI, których potrzebowałem, stanowią dużą część zestawu narzędzi do edytora. Jestem bardzo zainteresowany zmianami / ulepszeniami, które mogą mieć użytkownicy, więc proszę o kontakt!

rożek
źródło
1
Brzmi jak przydatne narzędzie, dzięki za ulepszenie twojej poprzedniej odpowiedzi „tylko link”.
MichaelHouse
1

Jeśli masz na to środki, serwer Asset z pro wersją Unity jest całkiem przyzwoity. W przeszłości korzystałem z niego przy dużym, wieloosobowym projekcie i to zadziałało. W przypadku kontroli wersji waniliowej zrobił to, czego się spodziewaliśmy.

Próbowałem używać repozytorium SVN z projektem Unity i było to trochę kłopotliwe. Ostatecznie jednak skazaliśmy pomysł, zanim zaczął działać. Unity przechowuje wiele plików kopii zapasowych, których nie chciałem tracić czasu, aby dowiedzieć się, co by się stało, gdyby nie zostały zsynchronizowane z serwerem. Myślę, że przy odrobinie finezji może to być wykonalne, ale nie miałem doświadczenia z tym, żeby dobrze działał.

Zrobiłem mały projekt, korzystając z bezpłatnych funkcji DropBox. Denerwowało mnie to, ale nigdy nie mieliśmy żadnych problemów. I nie sądzę, że potrzebowaliśmy żadnych rzeczy do kontroli wersji dla tego projektu, więc nie mogę wiele powiedzieć o tym, jak wyglądałoby przywracanie lub scalanie plików.

chaosTechnician
źródło
1

Dropbox obsługuje wersjonowanie poszczególnych plików (zamiast zatwierdzeń) i ładnie gra z Unity. Początkowo jest bezpłatny (2 gigabajty), a następnie dość tani (około 10 USD za 50 gig). Potrzebujesz dodatku PackRat, aby mieć dostęp do historii wersji.

Podobnie jak w przypadku SVN, CVS, GIT itp., Musisz upewnić się, że tworzysz foldery znaczników, gdy dojdziesz do każdego kluczowego etapu rozwoju (np. Koniec tygodnia, koniec kamienia milowego). W przeciwieństwie do wyżej wymienionych, znacznie trudniej będzie powrócić do takiego etapu, jeśli nie zrobisz tego, ponieważ będziesz musiał przywrócić każdy pojedynczy plik osobno. Pamiętaj o tym podczas programowania, a będziesz mieć łatwy czas bez płacenia za serwer zasobów.

Inżynier
źródło
To jest bardzo bolesne. Unity musi odbudowywać scenę za każdym razem, gdy otwierasz ją na innym komputerze. To zmienia folder biblioteki w wielu miejscach dla każdego zatwierdzenia. Zignorowanie folderu biblioteki byłoby fajne, ale wtedy nie byłoby plików scen kontrolowanych wersjami. Mój zespół zrezygnował i kupił kilka profesjonalnych licencji i używał serwera zasobów.
brandon
@brandon Zgadnij, że zależy to od wielkości projektu.
Inżynier
1
Zdecydowanie, jeśli jest to kilka deweloperów o ograniczonym budżecie, proponuję twoje podejście, ponieważ to naprawdę jedyne
brandon
Ale czy kiedykolwiek pracowałeś nad projektem, który nie przekracza 2 GB? co z modelami i teksturami, w których będziesz. Zajrzyj na bitbucket.com i rozpocznij naukę git!
XandruCea
Absolutnie. Z mojego doświadczenia zdecydowanie wynika, że ​​projekty na Androida / iOS są znacznie poniżej tego rozmiaru (w ciągu roku napisałem tę odpowiedź). Możesz także zyskać więcej miejsca w Dropbox, zapraszając znajomych.
Inżynier