Lavoro di squadra in unità


30

Ho un progetto Unity senza alcun controllo di versione e ho bisogno di condividerlo con un altro sviluppatore in modo che entrambi possiamo lavorare al progetto.

Quali strategie dovrebbero essere utilizzate per giocare bene con Unity Assets?


Penso che questo articolo ti darà alcuni consigli: va.lent.in/blog/2011/12/13/…
Den

2
DropBox supporta il controllo della versione, la funzione si chiama "Pack-Rat" ma non è gratuita. Per consigli per gli sviluppatori indie principianti, in precedenza sono state poste numerose domande. Ti suggerirei di camminare un po 'in giro. Finalmente benvenuto in GameDev SE!
Quazi Irfan,

Senza l'asset server potrebbero esserci dei problemi quando si spostano avanti e indietro prefabbricati e scene
Sidar,

Risposte:


17

Unity ha una struttura integrata per supportare correttamente il controllo della versione.

Basta andare in File-> Impostazioni progetto-> Editor e abilitare il controllo della versione esterna.


4
Questa è una funzione solo Pro? Non vedo quella voce di menu nella versione gratuita / indipendente di Unity 2.6 per Windows.
James,

A partire dal 30/01/2011, è solo Pro. Vedi il secondo paragrafo di: unity3d.com/support/documentation/Manual/…
ojrac

11
L'ultima anteprima per sviluppatori di Unity (3.5 RC1) ha apportato una modifica per supportare il controllo della versione nella versione gratuita. dal log delle modifiche ( unity3d.com/unity/preview/notes ): Licenza: il controllo generico della versione esterna (file .meta) è ora disponibile nella versione gratuita.
Programmatore di giochi cronici,

2
solo per i futuri visitatori, annota la data su questa risposta; ormai è fuori moda. Ora non è necessario attivare alcuna impostazione; solo la versione delle cartelle "Risorse" (assicurati che il controllo della versione rilevi i file .meta nascosti) e "Impostazioni progetto" e ignora tutto il resto.
jhocking

10

Consiglio di usare Git, è gratuito e il migliore in circolazione.

Qualche tempo fa ho scritto sul controllo delle versioni (usando Git) sul mio blog

Per farla breve:

Abilita il controllo della versione esterna File-> Impostazioni progetto-> Editor e crea il file .gitignore per evitare cose inutili sul repository (questo non è davvero necessario, ma sarà impagabile durante lo sviluppo).

Ecco come dovrebbe apparire il file:

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

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs

Questo è quasi la stessa della .gitingoreuso io per i progetti di Unity, ma con un paio di omissioni: [Bb]uild/,*.booproj , sysinfo.txt. Sono abbastanza sicuro che ciò che utilizzo sia basato sui modelli di repository GitHub per Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) qualsiasi Objective-C (quando si utilizza iOS).
Slipp D. Thompson,

Errore interno del server sul tuo blog.
Santosh Kumar,

4

Unity 3.0 è configurato per giocare bene con sovversione. (Almeno più bello di prima) Non so se questo è solo nella versione pro o no, dovrò controllare.

In generale, tuttavia, il sistema di controllo versione più consigliato è Unity Asset Server.


4

Unità specifica: lavora su scene diverse e file di codice diversi in ogni momento e unisci manualmente le modifiche dell'altra persona. Se entrambi dovete lavorare sulla stessa scena, duplicatelo e utilizzate la copia come test. Altrimenti, se entrambi modificate la stessa scena, le modifiche di una persona sovrascriveranno l'altra. Puoi ancora utilizzare il controllo del codice sorgente per i tuoi file sorgente, semplicemente non spostarli affatto, nel file system o tramite Unity, una volta creati.

Consigli per i principianti: procuratevi uno strumento discreto diff / merge (mi piace WinMerge ) e abituatevi a usarlo per vedere quali modifiche hanno apportato l'altra persona e per unire manualmente le modifiche in file in conflitto. Impostare uno spazio di documentazione centrale, ad es. un documento di scrittura di Google o una wiki e mantieni la tua documentazione lì - la documentazione dovrebbe contenere almeno un elenco di funzionalità di base in modo da sapere a cosa stai mirando e idealmente un elenco di attività derivato dall'elenco di funzionalità, insieme a una chiara indicazione di chi sta lavorando all'attività. Parlate tra loro per avere un'idea approssimativa di chi ha bisogno di lavorare su quale compito e cancellarli dall'elenco mentre vengono eseguiti. Continua a rivedere e rivalutare l'elenco per vedere se tutto è ancora valido e se devi rielaborare le priorità.


Grazie! Mi hai dato ottimi consigli su entrambi i miei problemi.
nosferat,

4

Lavoro con una squadra che si chiama Defective Studios. Abbiamo lottato con lo stesso problema per anni e solo di recente ho finalmente ceduto e ho iniziato a scrivere un'estensione per aiutarmi a unire gli oggetti di gioco.

Fondamentalmente l'approccio è quello di creare un'interfaccia simile a un ispettore in una finestra che allinea ogni oggetto di gioco, componente e proprietà fianco a fianco per il confronto e fornisce pulsanti per copiare valori (o interi oggetti) da un lato all'altro. Se hai familiarità conSerializedProperty classe, ecco cosa sta facendo la maggior parte del lavoro qui. Fondamentalmente creiamo una GUI che sincronizza lo stato pieghevole tra il lato destro e sinistro e crea spazio verticale ovunque un GameObjectoComponentesiste solo sul lato destro o sinistro. Una funzione di confronto controlla l'uguaglianza ad ogni livello e trasforma lo sfondo di ogni linea in rosso o verde a seconda dello stato dell'uguaglianza. Qualsiasi linea i cui figli contengono una differenza diventerà rossa, e abbiamo anche incluso un pulsante elegante per cercare ricorsivamente l'albero ed espandere tutti gli oggetti che sono diversi o hanno differenze nei loro figli.

Inoltre, esiste una serie di campi maschera che consentono di filtrare determinati tipi di componenti dal confronto. Vengono confrontati anche gli attributi GameObject come nome, layer e tag. Usiamo SerializedObjecte SerializedPropertyripetiamo ciclicamente le gameObjectproprietà e le disegniamo come se fossero state disegnate nell'ispettore. Ciò garantisce coerenza ed è molto più facile da programmare!

inserisci qui la descrizione dell'immagine

Un ultimo dettaglio elegante è che il processo di confronto (attivato quando gli oggetti vengono caricati e ogni volta che viene apportata una modifica) viene eseguito in un programma ad hoc che viene aggiornato dal EditorWindow.Update funzione, in modo che nel caso si stia confrontando un oggetto estremamente complicato, la finestra non blocca l'editor. Questo era un must quando si confrontavano oggetti con centinaia (o migliaia!) Di bambini. Tutto sommato, è stato un po 'un "progetto lego" come piace dire al mio amico, ma sicuramente uno strumento prezioso che è diventato immediatamente parte del nostro flusso di lavoro di collaborazione.

Lo strumento Unity Merge è documentato nella wiki di Unify, che include una roadmap e un indirizzo e-mail per feedback e segnalazione di problemi. Se stai davvero lottando con una fusione complicata, provaci e facci sapere cosa ne pensi! Inoltre, non mi sono preso la briga di crearlo in una DLL, quindi sentiti libero di dare un'occhiata alla fonte. L'implementazione coroutine ad hoc e le SerializedPropertymanipolazioni, nonché alcuni trucchi della GUI di cui ho finito per aver bisogno sono una grande parte del tuo toolkit di estensione dell'editor. Sono molto interessato ai cambiamenti / miglioramenti che gli utenti potrebbero avere, quindi per favore contattaci!


1
Sembra uno strumento utile, grazie per aver migliorato la tua precedente risposta "solo link".
MichaelHouse

1

Se hai i fondi per questo, il server Asset con la versione pro di Unity è abbastanza decente. L'ho usato su un grande progetto multi-persona in passato e ha fatto il lavoro. Per il controllo della versione vaniglia, ha fatto quello che ci aspettavamo.

Ho provato a usare un repository SVN con un progetto Unity ed è stato un po 'una seccatura. Alla fine, però, abbiamo finito per eliminare l'idea prima di farla funzionare. Unity conserva molti file di backup che non volevo prendere il tempo per scoprire cosa sarebbe successo se non fossero stati sincronizzati con il server. Penso che, con un po 'di finezza, potrebbe essere fattibile ma non ho avuto esperienza nel farlo funzionare bene.

Ho realizzato un piccolo progetto usando le funzionalità gratuite di DropBox. Mi ha reso nervoso ma non abbiamo mai avuto problemi. E non credo che alla fine avessimo bisogno di alcun materiale di controllo della versione reale per quel progetto, quindi non posso parlare molto di come sarebbe andato il ripristino o l'unione dei file.


1

Dropbox supporta il controllo delle versioni per file (anziché per commit) e funziona bene con Unity. È inizialmente gratuito (2 gigabyte) e in seguito abbastanza economico (circa $ 10 per 50 gig). È necessario il componente aggiuntivo PackRat per accedere alla cronologia delle versioni.

Proprio come con SVN, CVS, GIT ecc., Dovrai assicurarti di creare cartelle di tag quando arrivi a ogni fase chiave dello sviluppo (ad es. Fine settimana, fine del traguardo). A differenza di quanto sopra, sarà molto più difficile tornare a un tale stadio se non lo fai, perché dovresti ripristinare ogni singolo file singolarmente. Tienilo a mente durante lo sviluppo e ti divertirai senza pagare per l'Asset Server.


Questo è tremendamente doloroso però. Unity deve ricostruire la scena ogni volta che la apri su un altro computer. Questo cambia la cartella della libreria in molti punti per ogni commit. Ignorare la cartella della libreria sarebbe bello, ma non avresti i file di scena controllati dalla versione. Il mio team ha rinunciato e ha acquistato un sacco di licenze professionali e ha utilizzato asset server.
Brandon,

@brandon Indovina dipende dalle dimensioni del progetto.
Ingegnere

1
Sicuramente, se si tratta di un paio di sviluppatori con budget limitato, suggerirei il tuo approccio in quanto è davvero l'unico
brandon

Ma hai mai lavorato su un progetto che rimane sotto i 2 GB? per quanto riguarda i modelli e le trame che includerai. Dai un'occhiata a bitbucket.com e inizia a imparare git!
XandruCea,

Assolutamente. I progetti Android / iOS rimangono decisamente al di sotto di questa dimensione nella mia esperienza (durante l'anno in cui ho scritto questa risposta). Inoltre, puoi guadagnare più spazio su Dropbox invitando gli amici.
Ingegnere
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.