How teams work on large games in UE4

Hey,

At first, I know about version control systems, my question is slightly different. I’ve found some topics here, but they don’t have much info and mostly about suggestions to use VCS, without any use-cases.

When working on a non-game code, it’s obvious – multiple developers can work even on single file at the same time since text files could be merged line-by-line.
But UE4 files all are binary files, so VCS can’t merge it (unless all game is written in pure C++ code…)

It’s not a problem also when working on a single asset (model, material, etc…) – since it’s anyway better when just a single developer work with it in the same time.

But how work happens with large levels/maps? Should it be separated to multiple small pieces from the scratch (each in different file)?
Or should be some “merge developer” who’s just collecting all assets into a single game level and manage it over time?
Should the whole game be in a single UE4 project, or it should be multiple projects (to make sharing with team members easier)?
And so on…

Probably, there are some known flows, could you please share own experience about this?

Am I asking anything wrong or just no teams here? %)

Would like to know answer too

One way that I’ve done it in the past is we assign a level to a specific person who works on that level until completion. The artists would make the common models (crates, barrels, etc) and placeholders first so that everyone could start building the level and then replace things later once the final models were completed. We used github for our project management and it worked pretty smoothly since we had assigned the tasks ahead of time. We used HacknPlan to track who had what so we weren’t duplicating work and had weekly (sort of) video chats to keep everything flowing.

edit:
We only had 10 or so levels for that game which was meant for mobile devices so we could have one person work on a entire level by themselves.

C++ & Perforce.
Large project usually will have separate temas of programmers… The core coders will provide base systems made in C++ and higher level system designers will work on derivative blueprints based on these core elements created with C++.
If lead organized pipeline well, then whenever a merge is needed it will happen in the C++ level, rarely in blueprint code.

Pure blueprint projects aren’t suitable for big teams, merging doesn’t always work…

Well C++ is not exactly part of UE4, it could be coded even in Notepad, technically :slight_smile: And it’s ok to use any VCS… I’m interesting exactly in UE4 projects – assets, blueprints, levels and so on.
As I understand for now, the only way is not to have large maps, to allow work on each map for single person. So, probably, some assets/blueprints could be made in separate projects and then, when needed, imported by level developers in their levels.

You can build maps and load assets into the level entirely with C++ code.
Also, for assets and large maps, you’ll need to use streaming anyways so there’s no problem many people working on the same map; just give each one a separate level stream block to work on.

https://docs.unrealengine.com/latest/INT/Engine/LevelStreaming/WorldBrowser/
In the article, it says “One of the goals is to avoid using a persistent level to store streaming information as it becomes a bottleneck when a team of level designers want to work on levels simultaneously”

@norlin

The reason people keep saying perforce is because it has a lock feature. When someone checks out a file then other people can’t check it out. Git and SVN don’t do that. That is the main feature you want for game development.

I havn’t done a large team project on UE4, several on UE3. Layered levels was the main map technique used.

Often raw art assets are stored in a different repository, like SVN, it makes it easier for artists because they can edit files without checking them out. Then the final version is the only one kept in the Perforce directory.

With large teams, quite a lot of effort is put into the pipeline including custom tools written so it’s not a simple answer on how. Perforce is the standard though.

SVN can do that - lock files but the properties need to be set.

And using SVN within Unreal Editor automatically lock the file so others cannot use it until it is commited or discarded.

Does svn actually work inside the engine now? I tried using svn back in 4.10, and it was so buggy we had to turn it off just to be able to work at all. We were in the same room with a svn repository on a local server, and we tested it out and we couldn’t go 15 minutes without running into some showstopper bug. I really wanted it to work…

TBH, I dont really like to work using SVN inside the editor - I feel so detached using it. I mean if I am using Tortoise SVN out side of the editor, I get to see easily which files have changes, which are not etc.
Therefore, I am not aware of those bugs…

We use perforce. It integrates into both the editor and visual studio quite well.

What do you mean by “layered levels”?

That was referring to UE3, there would be many separate map files that were layers in a master map file. Different artists would work on their different layers, the result was that more than one could work on a map at the same time. I’m not sure what the equivalent in UE4 is as I’ve only done small team projects in it and we haven’t needed it.

In UE4 they’re just called levels.