So you're starting out making a new Unreal Engine project, congrats! Whether you're a developer or designer, hopefully this post will help you get started with your Unreal project - along with some tips and tricks I've learned along my journey of working in Unreal.
Step 1: Source Control
Before you even go about opening Unreal and creating your new project, you should first set up your source control solution. Even if you're a solo creator it's incredibly important that you have some type of robust version control system in place. Not only does it provide a way of backing up and storing your project, but source control also provides the ability to roll back to a previous version of your project whenever needed. I can't tell you how many times that feature alone was worth it!
Unreal supports a few different source control providers out-of-the-box, but I'm mainly going to focus on two of them (and ones you've probably heard of or used before): Git and Perforce.
Git vs Perforce
Git and Perforce are two sides of the same coin: They both provide an excellent way of keeping version history and allowing for easy collaboration of your project. There's a few pros and cons though with each that I'll list out below.
Git Pros and Cons
Git is an excellent version control tool that's open-source, and it's the most popular source control tool around. It's easy to learn (though hard to master) and services like GitHub and Gitlab offer free tiers that fit most needs right away. Configuration is a breeze and you'll be setup in no time at all! However, Git has one major drawback against Unreal projects: It doesn't play well with large binary files such as blueprint assets. There's a feature called Git LFS (Large File Support) that helps to alleviate these issues, but Git-as-a-service sites (such as GitHub or Gitlab) have limits on the size that your LFS set can get to (at the time of writing, GitHub limits your LFS storage to 2GB for both free and pro accounts). A way around this limit is to host your own Git server, such as setting up a Forgejo docker instance - but that requires maintenance and support on your part.
Perforce Pros and Cons
Perforce is another well-known solution, and widely used in the games industry as the leading tool for source control and versioning - and for good reason. The client is very easy to use, and Unreal's support for Perforce is excellent (as Epic uses it internally for engine and game development). Permissions and accounts are easy to manage, it's super easy to setup exclusive asset locking, UnrealGameSync is built off of Perforce, and the provided tools for merging and conflict resolution is top notch. The catch? Perforce's free license is (at the time of writing) limited to five users and 20 workspaces if you host it yourself. There's other services that offer Perforce hosting and management though, such as Assembla.
Which one should I choose?
This question can really only be answered by you/your team and your project requirements. If you don't mind managing your own server, want the best of the best, and have a small team - I'd recommend going with Perforce. There's an excellent guide about how to set it up for Unreal project development here. If you want something out of your hands and in the cloud, Git is still a completely valid option!
Step 2: Project Requirements
Have your source control solution set? Great! Lets get into talking about project requirements. What type of project do you want to make? Ideally at this stage you'll have a game design document at the ready detailing everything you want to make. If not - make one! It's always a helpful document to have that is a single point of reference for your team and project.
Opening up Unreal Engine will present you with the Unreal Project Browser. Here you can specify what type of project you want to make.
Select the options that best fit your project - feel free to select one of the project templates or just start from scratch with the blank template type! You can always add in the other template content later on :)
The biggest thing I want to focus on here is the first option under Project Details: Blueprint or C++?
Blueprints vs C++
If you're looking at Unreal then you probably already know what Blueprints are, but I'll give a quick intro just in case:
Blueprints are a visual node-based editor alternative to creating and scripting games in Unreal Engine. Traditionally games would be developed strictly with code (C++ or C#, for example) but Epic introduced this alternative back in the early days of Unreal Engine 4 as a way to provide the ability to create experiences without needing knowledge of low-level programming concepts and experience! So what's the difference between this toggle setting? Do you lose the ability to make blueprints if you choose C++? Not at all!
If you select the Blueprint option here, your project will be just that - blueprints. All of the assets and code will be strictly limited to using the blueprint graph editor. If you select the C++ option though, you'll get to use both C++ and blueprints. Even if you aren't a programmer yourself, it's recommended to select the C++ option in case you do have a programmer on the team (now or in the future). One drawback though is that you'll need a C++ compiler installed to build the project, which there's a few setup guides available on the Unreal documentation site detailing how to get that going.
Next just name your project, set the directory location, and add your project to your source control solution!
Step 3: Source Code Structure (optional)
By default, Unreal will structure your project source code by storing the header and source files in the same directory, instead of splitting them into Private
and Public
folders. I'm not really sure why it has this as standard behavior, especially given the fact that all of Epic's sample projects (not the templates) and plugins use the hierarchical system of Private and Public folders, but ¯\_(ツ)_/¯
Before starting anything, I'd recommend moving the source code into the Private/Public folder structure to keep things organized. To do so, just navigate to your project's Source
directory, then your project name's directory, and create the Private
and Public
folders. Move all of the header (.h
) files to the Public
folder (except for your project module! This is usually the file called <MyProjectName>.h
) and the source (.cpp
) files to the Private
folder (also exempting the project module file!) Your source folder structure should look something like this at the end:
Next Steps
You should have a new Unreal project all set and ready to go at this point! I'd recommend checking out Epic's documentation on Unreal Engine if you're just starting out, or some of my other tutorials and posts on Unreal if you want to learn about some cool things you can do! Either way, have fun developing!