What you think about perforce in ue4?

Hello everyone,

What are you thinking guys about perforce in ue4?
Is it the best way to work with another people at one project?
Are you using it in your companies?

Perforce has been THE solution for Unreal Engine for many years and it has the best integration even today. I personally don’t like it that much as its quite complex. I prefer Git or SVN.
I would suggest using it only when your team is quite large. If your team is just 2-5 people then SVN or Git are the way to go.

Git is still bad at handling binary files so I would only use Git for the source code. The requirement for locked file notifications is important and Git doesn’t really have this feature so you can easily end up losing work because it can’t be merged.

Perforce works great in UE4 (also for source code) for any size of team but the free version has some strict limitations and it is not cheap.

So if you don’t want to use Perforce then at least pick an SVN solution like TortoiseSVN, and optionally use Git for the source code.

The Git Plugin: GitHub - SRombauts/UE4GitPlugin: Unreal Engine 4 Git LFS 2 Source Control Plugin (beta) has Git LFS File Locking support.
But last time I worked with Git LFS was an absolute nightmare… Maybe this has changed now.

I had the same bad experience. Maybe eventually Git will be able to handle locks without problems but on the other hand why try to force a feature into Git that is already handled by SVN. Git has always been about decentralizing while SVN is the opposite and they both have pros and cons.

If your team is less than 5 Perforce is free… But you still have to set it up.
There are a few good tutorials on this - Allar made one I think a while back…

Epic uses P4 internally so it works great once set up.
It is rather complex and the ui isnt the best, but it is very capable and has tons of useful features.

It is your best choice for UE4 dev

I don’t know what kind of info you are looking for so instead of giving you a blueprint to work from I’ll instead tell you a story of my experience with an Internet based project…

Just before UE4.0 was released we as a team decided to update our game on the idtech3 platform over to Unreal 4 which required a complete restructuring of ways and means of sharing assets. Over time we have found the best solution to be a combination of SVN and GIT based on the needs of the group but that’s another story.

Now some basic theories. It’s assumed that most solutions required some form of source control but the fact of the matter only the code base need source and version control as it is a need based on the extension of the process. This is based on what is being worked on today has to work in hand with on going commits made using a means of control that prevents work already committed being over written. It’s just something you can trust the coding team to manage as it’s just a thing built into the process.

Art or content is a different animal as progression is made via the iteration process where the completed object can take months to complete as the nature of art is you have to see it to fix it so controlling the art via source control is a non-issue as compared to a solid source chain For that matter source control + art content = bad. Art also need a group or team contributing to the same elements from modellers, texture artists, animators and even environment artists and I’ve yet to see a software solution designed to managed the CMS requirements of a fair size team or group.

Why is this?

Most file management solutions are biased towards code based projects and there really is no piratical ways and means to manage art resources due to the dynamic nature even of a box as an art asset.

With a very basic understanding of what we were facing here is where things crash and burn.

So your an Internet based project and you think “Hay I’ll use the built in source control features in Unreal 4 and my file management requirements are done”

Ah well yes and no. As I mentioned code is easier as in most cases it’s worked on in block and not in it’s entire project form but either way as I mentioned the “software” is designed to work around theses issues.

Here is where content gets messy. Art has dependencies that connects the object to a lot of different assets and when you check out that asset anything connected to that object will by association will in most cases also be locked out until checked back in.


Along the way strange things stared to happen that was unexpected in the content group.

Some had discovered if they checked out content they could hold the key for as long as they wanted so some of the environment artiest were not checking back in their work even if they went to bed or even when they went away for the weekend.

The of course there was the on going shader compiles :wink:

Lot’s more to the story but after 2 weeks of stealing key back we gave up on the idea of built in source control and instead focused on better communication and owner based projects

Bottom line any kind of built in software source control solution over the Internet is not worth the hassle just considering LFS is a real issue. :wink:

Thank you very much for your answers. I was just curious how it works for you. Frankie wow, appreciate your reply a lot.

Shame is that two persons can’t work on one level, and second when I want to get updates from the server I must to shutdown the project to do it.

You can use composite levels using the levels window and members can work independently on a sub-level.

Certain things can be hot-swapped but you may have to open an empty level while syncing to free the reference. If the thing that you are syncing has a tangled web of references chances are the sync will crash the editor though (another reason why objects should be decoupled as much as possible).

Yea, thats some solution thanks : )

I acquired Perforce License back in the UDK days which allowed upto 20 Users. I’m still running the old server in fear of losing 15 licenses. I would have preferred SVN, but Epic chose P4 for UDK, so I adopted.

Perforce takes some getting use to its permissions, workspaces, changelist, but its really powerful once you learn how to use it. Once you have the server set up, onboarding new users not familiar with Perforce can be hassle, but you can solve this by creating a decent a Job Aid Document.

Integration in UnrealEditor makes it seamless to work with, but when connected it can significantly extend completion times when saving, moving assets from directory to directory, deleting large groups of assets files as its updates P4. Long completion times can be unbearable and some team members and they will try to avoid this inconvenience by disconnecting P4. This defeats the purpose, which can fragment versioning and break workflow.

Every file type is not converted to a uasset and visible from within UnrealEditor, so your Team has to get familiar with the P4 Client to add,rename,delete and submit files to P4 Server. Your team can run into trouble with this, if they forget to use the P4 client to add,rename,delete these sort of files. I recently discovered the Helix P4EXP (Windows) which can make life a little more convenient allowing Team members to manage the project from explorer desktop client.

I’ve had to rollback changes after corruption. so I’ve come to appreciate source control even when developing solo.In conclusion, I think P4 is great versioning software, if you take time to learn to use it.