Unreal Engine 4 is introducing many new developers & students into the industry, I’d like to help you out by providing an introduction into Unreal 4, useful developer resources, tutorials and essential tools whether you are starting out alone or with a group. Use this guide to get you kick started and familiar with some of the great resources the community has developed for new and veteran developers alike.
- 1 Getting Started
- 2 For Unity Developers
- 3 Tutorials for Unreal 4
- 4 Unreal Engine Game Framework
- 5 Blueprint vs. C++
- 6 Naming Convention for Code & Content
- 7 Populating your game world
- 8 Physically Based Rendering
- 9 Essential Third-party Tools
- 10 Game Developer Websites
- 11 Closing
Getting started with a game project without any prior experience can be very daunting at first. Play around with the editor a bit, prototype some of your smaller ideas and go from there. Unreal’s documentation pages are of superb quality and provide a great place for beginner tutorials, guides on content creation & importing, and level creation to name a few. I definitely recommend checking out Epic’s Getting Started page as it links to many interesting resources on the engine and game framework & editor basics. It definitely helps if you have prior Unreal Engine (UDK) experience as much of the game framework structure is the same between both engines. The engine contains several templates and examples that will help you get started with a variety of game types including vehicle, dual-stick shooter & side-scroller templates.
For Unity Developers
In case you are transitioning from Unity to Unreal 4 then check out the official Unreal Engine 4 For Unity Developers page for a great side-by-side comparison of terminology, tools, conventions and features.
Tutorials for Unreal 4
Epic released a ton of great tutorials on numerous topics and are definitely recommend when starting out! They are still developing new videos every month, so subscribe to their channel and keep learning!
The Unreal Marketplace includes a couple of great sample projects by Epic Games. I recommend walking through the Content Examples projects to discover the many cool features available in Unreal 4. If you’re into Architectural Visualization check out Koola’s “LightRoom” available in the Unreal Marketplace for free.
Unreal Engine Game Framework
Unreal Engine 4 shares much of its Game Framework naming and structure with UDK / Unreal Engine 3. If you’re familiar with the previous engine you should have little trouble transitioning into the new (C++) framework. If you are not familiar, I strongly urge to read the documentation and get a feel for Unreal’s structure, it absolutely essential to feel comfortable with some of the most commonly used base classes (Actor, GameMode, Character/Pawn, PlayerController, HUD) even if it’s only their basic function and usage. A lot of your code will be built on top of these few classes, knowing how to use them effectively is essential (this will grow over time, don’t be afraid to experiment)
If your game includes a multiplayer component and you’re comfortable with the game framework then the official documentation on replication is a good place to start learning the basics of networking your game. This is an advanced topic and you may need to come back to the docs a few times to truly understand the concept and implementation of networking principles in Unreal. The official YouTube channel has an Introduction to Blueprint Networking and covers most of the principles you’ll need to get started. The FPS Shooter Game example (available in the Unreal Launcher) is a good reference for replication in C++.
Blueprint vs. C++
So, what is Blueprint? Blueprint is Unreal Engine’s visual scripting language. It is layered on top of C++ and any code you write can be exposed to and used by Blueprint. It’s a very powerful tool to quickly setup content and pieces of logic, especially when prototyping. That does not mean it’s only a prototyping language. An entire game can be build using Blueprint, never touching C++.
There are frequent discussions about “which language is better” and I believe there is no straight answer to this. It depends entirely on the scope of the project, the team and proficiency with either. Taking a door as example, one might implement the abstract interaction logic in C++ (User presses a key, perform a trace against the world and call a function on the hit object) and build the definition of a door (animate on the function call, assign model, sliding sound etc.) in Blueprint.
Lionhead Studios is building Fable Legends using Unreal Engine 4 and prototype using Blueprint to rapidly get a feature up and running, if the prototype is promoted to a real feature it will be reviewed and considered to re-do it entirely in C++ or simply perform a cleanup pass on the Blueprint instead. While some may opt to do their entire game in Blueprint which is entirely possible, others may do the bulk of it in C++. There has been no reason yet to not build your entire game in Blueprint if you wish and it’s currently extremely popular with many tutorials created daily on how to make just about anything in Unreal Engine without the use of C++.
If you’ve never coded in C++ before it may very well be quite intimidating at first. I would recommend to start learning the editor environment, game framework and basic Blueprint first – it will make the transition into C++ easier since you’ll be more familiar with class names and conventions that apply to both Blueprint and C++.
Don’t worry about run-time performance between C++ and Blueprint until you see it’s a problem and bottleneck for your game. For pretty much all of your gameplay logic Blueprint will be fast enough, if you’re doing a lot of heavy operations in a tight loop, you *may* run into performance issues, again – don’t optimize until you know it’s a real problem by measuring.
Naming Convention for Code & Content
This stuff sounds boring, but is so important to nail down early. Others (and your future self) will need to immediately understand what you meant by AmazingHighRezTexture_Final.DDS two months down the line. It’s not very search friendly, and does not tell you anything about its contents except that it’s a texture and “HighRez”? So agree on a naming convention for both code and content with your team.
I’ve published our internal naming convention for everyone. You can use it as a starting point and of course change whatever you like. For code we stick to Epic’s coding standards. It may take some time for you and your team to get used to new conventions and may require check-in reviews (it’s a good habit to do code reviews anyway) but stick with it, it’s going to be worth it in the end!
Populating your game world
The engine samples are a great source for assets and should last you well beyond the first prototypes of your game. Unreal Marketplace has a growing number of high quality content available, or check out Unity’s Asset Store since it has a lot of cross compatible assets.
Use basic primitives and the BSP tools to blockout the basic environment for your game. It’s easy to get distracted by spending too much time on that fancy looking M16 rifle you’ve always wanted in your game or have button press animation look truly next-gen…but remind yourself that none of that matters if the core game isn’t solid or even exists.
Automatically aligns texture in world-space, 1 uv-tile = 1 editor unit (default is set to 50 units) colors based on surface normal to differentiate between walls and floors.
Physically Based Rendering
Unreal Engine 4 uses a PBR shading model. This breaks some of the texturing conventions you may be familiar with. If you’re new to PBR, check out Marmoset’s introduction to PBR in Theory and Practice, they’re both really good reads. The official documentation has some additional information on PBR specific to Unreal Engine 4, including a couple of really interesting references at the bottom if you’re technically inclined.
Essential Third-party Tools
“Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. It allows for easy collaboration on a project and serves as a backup when you mess up a code or content change and helps debugging by doing “diffs” on difference changelist to see what changed when a bug first appeared.” – Wikipedia.
Using Version Control is essential for your own sanity, even when working as a solo developer. Don’t trust your hard drive and don’t trust your late-night code changes, use Version Control instead! Looking back at how I started development in a small team back in university (not knowing about this “Version Control”-thing that is now commonplace in my life) we used manual sharing of code and content changes between machines, we lost many textures and code features in the process…Use Subversion or Git (or even Perforce, it has great feature I find missing in Subversion but doesn’t have as many cheap hosting offers I find) to safely store and manage your game source. Using concise messages when committing your changes helps others in the team know what’s going on.
- BitBucket or GitHub for Git (starts free for small teams)
- Unfuddle for SVN (huge repository space for a good price)
- Assembla for Perforce (my experience with this service is a few years old, their business model has changed since)
Now that you have an idea of what version control is…you need an application that can perform the submits and updates for you. Here is a brief list of tools available for each of the version control options.
- TortoiseSVN – Windows Explorer integration, I find this the best tool when dealing with Subversion.
- TortoiseGit – Same as above, but for Git – I find this works well and it’s easy to see changed files when exploring your files.
- GitHub App (or Mac-version) – The official GitHub application, does the trick and is pretty straight forward.
- SourceTree – very popular Git tool.
- P4V – Visual client for Perforce, works really well and is the default when dealing with Perforce in my experience.
And finally, Epic has several version control plugins available that ship with the engine. Now I must admit that I have not tried any of these plugins since the beta of the engine so I cannot make any recommendations on them.
Most version control hosts provide a set of project management tools such as tickets, milestones, wiki’s etc. I found that in most projects these ticket systems quickly got out-dated and went unused, instead I can recommend using Trello to keep track of your tasks & milestones. It’s a single board for your project that allows drag and drop of digital post-it’s with a lot of additional features like checklists that can be added to a single post-it.
Unreal Engine 4 requires Visual Studio 2013 (or XCode on Mac), the community edition is free for students and teams of 5 or smaller. A highly recommended extension for Visual Studio is Visual Assist X, it greatly improves navigation, syntax highlighting and refactoring. It’s an industry standard plugin you will see at pretty much any large game studio using C++.
Visual Studio Plugins
- Visual Assist X – If you use Visual Studio, then get this! You won’t regret it.
Modeling (Maya LT, Blender)
Texturing (Substance, Photoshop, Gimp)
Photoshop is available through a per month subscription of between 10-20 dollars depending on your payment plan. Students get some benefit, but it’s unfortunately still not free. Gimp is a popular and free alternative to Photoshop.
Substance is an amazing tool to paint your 3d models in a more procedural and natural way. It’s highly recommended and has full Unreal 4 support with a Substance Plugin for UE4 to allow quick iterations on your textures right in Unreal 4. There is an Indie Pack for sale with both Designer and Painter on Steam.
- Expresso Exporter – Quickly export texture maps out of PSDs.
Writing your own tools & scripts
If you have one or more programmers on your team, take some time off and review your pipeline to see where improvements can be made. It’s best to do this early on in production and have multiple reviews along the way. Be open to feedback from your artists and actively ask if you can help them out. Writing small Photoshop scripts to simplify exporting or writing a tiny launcher to make multiplayer testing and setting up playtests easier for your entire team (and possible testers you have get involved) We spend some time during the development of our game Grim to write a launcher that included support for local multiplayer, playtest session hosting/joining, subversion access and easy access to common folders etc. It had some initial cost on my programming time, but made the pipeline a lot smoother especially during playtest-hours which was of great help and much appreciated by the team and testers.
Game Developer Websites
This section is non-specific to Unreal 4, there are tons of great articles, videos & blogs on the internet – If you still feel like reading after all this, then check out any of the following links, otherwise you can sit back and watch a few videos by Extra Credits on YouTube!
- Game Design Deep Dives – Section on Gamasutra discussing a single mechanic in-depth.
The Game Developer Conference is a yearly held conference for game developers. The GDC Vault contains many of the presentations on design, business, programming & art. Not all are available for free, but there you can browse a already huge selection without any subscription. Check out their free content gallery.
Extra Credits (YouTube)
Epic’s Weekly Twitch
Don’t forget about Epic’s weekly Twitch streams! Stay up-to-date on upcoming features & events and ask your questions directly to the developers of the engine!
More Interesting Reads & Websites
A few assorted links to blogs, articles.
- No Twinkie Database (Game Design)
- The Ten Commandments Of Video Game Menus
- Skyrim’s Modular Level Design – See how they built an enormous world with a small team.
- unconventional Design Tips – (Frictional Games)
- Bret Victor – Inventing on Principle (Great video presentation that applies to tools design and UI concepts)
Although I have never had so many URLs in one article before, it only skims the surface of the enormous amount of resources available for game development & programming specific and non-specific to Unreal Engine 4. Take it as a starting point and go from there. Feel free to leave any questions in the comment section and please, if you have an article, tool or other link that you feel should be included in this guide – let me know!