Best practices for working in teams

Hello- I was wondering if any one knows a good guide or documentation regarding working on UE4 projects in a team environment. Up until now I’ve only worked on UE4 stuff by myself, but I will soon be working with others as I set up a team at my work. I need to familiarize myself with any standards or folder structures (.etc) that may be advantageous to working in groups. Does UE4 offer any tools specifically designed for collaborating with others, or a system for sharing and updating various assets?

If anyone could point me in the right direction I’d be happy to read up on it myself, I just haven’t seen any such guides. Thanks for your time.

Greetings,

As sharing stuff,UE4 allows you to use different Source Control tools.

Here is a little guide about Git,a fairly popular platform:
https://wiki.unrealengine/Git_source_control_(Tutorial)

Also,a little “newbiesh” suggestion but “Game Design Document” is your friend:

A simple sample for G.D.D:
https://docs.google/document/d/1ct5-qyUZC9cAKn-iLUgtOczDkERmPzNNwPLDfT9Hgjs/preview

source control -> https://docs.unrealengine/latest/INT/Engine/UI/SourceControl/index.html
folder structure -> https://wiki.unrealengine/Assets_Naming_Convention :slight_smile:

Thanks so much, I’ll be digging through those today =)

I have been trying to collaborate with two developers on a UE4.10 project. However, conflicts in binary files cause git to fail during rebasing attempts. Nothing unexpected there, but there’s no way to resolve these conflicts outside of git.

I have tried to organise work across different UE maps so as to prevent developers inadvertently changing the same (binary) files. No luck there either because apparently there are cases where conflicts still arise.

Currently I am considering using the git-lfs add-on to handle large binary files, although I’m not sure which files I should be handling through git-lfs.

Has anyone successfully setup up collaboration on UE4 projects?
Will git-lfs solve my problems with conflicts in binary files?

Before I even consider looking at Perforce as a solution (looks a bit out of reach for my project) I would appreciate any advice on the git path I’m on now.

Thanks!

You must have git ignore binary files. These can be generated by each developer.
Add a .gitignore file at the root of your repo:

# Visual Studio 2015 user specific files
.vs/

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app
*.ipa

# These project files can be generated by the engine
*.xcodeproj
*.sln
*.suo
*.opensdf
*.sdf
*.VC.opendb
*.VC.db

# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga

# Binary Files
Binaries/*
**/Binaries/*

# Builds
Build/*

# Don't ignore icon files in Build
!Build/**/*.ico

# Configuration files generated by the Editor
Saved/*

# Compiled source files for the engine to use
Intermediate/*
**/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*

# Customs
Content/StarterContent
ExternalContent
**/*_BuiltData.uasset
**/*.fbm/*
**/test/**
*.tmpsave
*.spp.painter_lock
*_autosave*.spp

You should put every media file/uasset in git lfs.
Add a .gitattributes file at the root of your repo:

*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.icns filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.pdb filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.pdn filter=lfs diff=lfs merge=lfs -text
*. filter=lfs diff=lfs merge=lfs -text
*.xaf filter=lfs diff=lfs merge=lfs -text
*.spp filter=lfs diff=lfs merge=lfs -text

If you have large projects, you should consider uploading the lfs files in the cloud, Here is a repo explaining this.

1 Like