I read here that the /Intermediate/ folder should not be part of my SVN.
But when I build for the editor in Visual Studio, a lot of stuff gets written to that folder.
And if I want other team members to see and use those changes in the editor, Do they need to have access to it.
It is a huge folder and will slow things down if we keep needing to send it back and forth.
Anybody have any suggestions on dealing with this?
Binaries, Intermediate and DerivedDataCache should all be on ignore. Those alone will save you 95% of changes in terms of file size (and stop your version control system from exploding). There are still other files in various places that will change often though. It’s easiest to just take the .gitignore that already exists in the engine folder and use that as a starting point for your ignore list.
If you want to distribute your editor changes to other team members, you should set up a shared network folder that you can deploy the binaries to in an automated fashion.
Thank you. Can you please tell me what you mean by shared network folder?
Also if I create a custom C++ Class/Method/variable and then build it in visual studio will this be included somewhere in the content directory or one of the other directories that is not on the exclude list?
It’s just a directory on a server somewhere that you and your team members have access to (you upload binaries, your team members download them). You should only use it as a conveniece to distribute your compiled binaries though! For game assets and source code you should use a version control system. There’s good tutorials on setting up Perforce or SVN (whichever you prefer) here and here. You can also use Git for source code, but I wouldn’t recommend storing binary files with it, it’s not one of its strengths.
For deploying your builds to the network share I recommend using UnrealFrontend, it makes it super simple to do a full deploy with one click.
Where the binary for a class ends up really depends on the module that contains it and the build configuration.
If it’s an engine module, it will go to Engine/Binaries/<platform>
If it’s an engine plugin, it will go to Engine/Plugins/<path to plugin>/Binaries/<platform>
If it’s an game module, it will go to <project name>/Binaries/<platform>
If it’s an game plugin, it will go to <project name>/Plugins/<path to plugin>/Binaries/<platform>
This is for a non-monolithic build (e.g. Development Editor, which is probably what you want your team members to use). If you do a cooked client build it will be monolithic by default, making the rules a bit different since everything goes into a single binary.
Thank you. So much. This is really helping me wrap my head around working on unreal with Perforce.
I think I understand the part about keeping the binaries outside of Perforce, and they can be updated manually as needed.
But I am a little confused as to which binaries from which folders I must send.
I am not sure which type of files I am building. I am guessing it is game module non-monolithic.
And I am not sure if I am doing things the right in visual studio.
Here is what I did:
I created some new methods for classes that were in the shooter game.
I have my settings set to Development Editor in the Visual Studio Toolbar.
I built the project on June 06th using Build Solution. [CTRL]-[SHIFT]-**
It wrote a bunch of files in the Intermediate directory. And here is what my Binaries Directory looks like:
(The changes I made were built on June 06th)
I have quite a few build options and I must confess that I don’t really know which one is the best to use to achieve what I want.
And I am not sure what files the other team members will need to get my changes.
What I want for now I would just like to be able to make changes to the source code and have the other team members be able to work with
my changes in their editors.
How should I build, and which files/folder would the other team members need to have to be able to access the latest changes I have made.
The simple answer to which binaries you should upload: all of them
Compilation and linking are very complicated processes, and it is easy to unintentionally break binary interface compatibility between two modules. This can lead to all kinds of problems, from crashes (if you’re lucky), to malfunctions or data corruption. So basically, never mix and match binaries if you can help it.
There are however some binary files that get generated as part of the build process, like .obj files and precompiled headers. They are in the Intermediate folder. You don’t need those to run or even debug the editor, they are only there so that compilation will be faster next time. .pdb files (debug symbols) on the other hand are required if you want good info from crash reports. You should read the Directory Structure page in the docs, it will clarify what to include and what not better than I can. There are no set rules though, for example there are pros and cons to sharing config files.
Your Visual Studio settings are correct, except you probably want to change your game to be the startup project (right click ShooterGame -> set as startup project). If you do a clean and then compile only the UE4 project, you’ll have binaries for the editor but not your game.
Thank you.
I Think I will just leave the Binaries folder on Perforce but not intermediate.
According to unreal docs it is optional.
The folder isn’t that big.
It was intermediate that was really making all of the problems.
I took that one out.