My name is Matt Stafford aka Wraiyth, and I'm technical director at a company called Pub Games. Based out of Melbourne, Australia, Pub Games specializes in Unreal Engine development. We released our first game in 2012. Entitled BlastPoints, it's an iOS and Android space shooter. Pub Games has also worked on a variety of other projects as contractors, most notably InFlux and Primal Carnage.
Pub Games is only a small studio, consisting of about six employees and another six regular contractors. We recently received funding to develop Arx, a fantasy action game that plays on the concept of sacrifice and choice.
When I was first asked to write this blog post, I had to give some serious thought to how I was going to approach it. Moving from the Unreal Development Kit (UDK, the free version of UE 3) to UE4 was odd, and there were some vast differences, but the new engine has a strange sense of familiarity, despite significant improvements and changes.
I did a quick run around the office, asking people what they think the biggest improvement over the previous tech is. Everyone seems to have a different opinion, which is a positive reflection on the quality of the improvements Epic has made to all aspects of the engine. But the common thread in every suggestion is that UE4 is giving more power to the non-programmer. I have compiled a short list to better highlight some of the key changes and improvements. Some of them are fairly major, and some are small but useful improvements that even current Unreal Engine 4 developers may not be aware of.
Probably the most well-published and biggest change is the addition of Blueprint visual scripting. There's a lot to be said about the power and versatility of Blueprint - too much to be covered in a single post.
Blueprint replaces Kismet, prefabs, archetypes and adds more power, all in one. Artists can create simple Actors, add a variety of components and build its behavior - all without input from a programmer. These are reusable and very customizable. There's already a wealth of resources available for Blueprint, with many more in the works. But be aware of its existence and how powerful it is.
No More Packages!
One of the nightmares in UE3 is the package system. Split your packages up the wrong way and a small change to a simple asset could mean a big commit to your game's repository. In UE4, that’s all resolved by having assets as individual files, or UAssets. Moving these assets around inside the Content Browser for organization is quite fluid, a simple drag and drop process. Coupled with the editor integration of source control management like Perforce and Subversion, it definitely tidies things up!
Speaking of drag and drop, it's now possible to import groups of assets simply by dragging them from a folder in Windows Explorer straight into the Content Browser. It might seem like a minor improvement, but it’s one that improves usability and efficiency.
Removal of packages also has the positive side-effect of the removal of "group" object types such as Animation Sets. Each animation is now stored as its own asset file, related back to a skeleton. This makes asset sharing much simpler.
In fact, the entire animation system has had an overhaul. UE4 introduces AnimMontages, which puts control of animation sequences right into the hands of the artist. An artist can use AnimMontage for chaining together complex sequences of animations, event-based animation switching and much more.
The replacement for UE3's AnimTrees is a Blueprint-based system called AnimBlueprint. This enhanced system provides a lot of power to artists, allowing them to build entire animation state machines and transition rules right inside the editor.
The end of INI editing?
"Which ini file is that in?" is a common question that I heard at work all the time during the UE3 days. Luckily, Epic has heard our cries of pain and brought editing of INI files straight inside the editor for common tasks.
Edit > Project Settings exposes a whole heap of useful gems of functionality. You can set your own general settings, collision channels, keybindings, physical surfaces, and much more. Explore these menus - they might save you a lot of work!
Auto-Rebuilding for BSP & Navigation
BSP brushes no longer need to be rebuilt when they have been modified. You're free to drag brushes around and manipulate them, and see those changes in real time. This dynamic system extends to things like Navigation, which gets automatically built. If you don't like that feature, or find it destroys your performance, you can also disable it in Project Settings > Navigation System.
If UnrealScript has one strength, it is its state system. It’s a great way to build, well, anything stateful. But with the move to C++, we no longer have native support for state machines. Epic has aimed to address this by building tools that reduce the need for programmatic state machines, including Behavior Trees for AI, and Animation Blueprint States. If you're still one for using programmatic state machines, C++ is a powerful enough language that you can just write your own!
Subscribers can have a look at the Unreal Tournament 4 source code on Github for an example of a C++-based state machine in UE4.
When writing code, you almost always need to reference a variety of art assets - 3D models, particle effects, audio and many other things. Asset Referencing has been vastly improved with the addition of Blueprint, where all of these can simply be added as components inside any given Blueprint.
The natural result of this is that you can end up with a code base with Blueprint references everywhere. Thankfully, there are two systems in place to resolve this: the Asset Registry and Object Library. The Asset Registry allows querying assets that aren't loaded based on things such as tags and path. This enables you to look up assets during gameplay - for instance, if you have a game with player classes, you can store all your player class Blueprints in a folder, look that up at runtime, and populate a user interface with them - all without the need for hardcoded asset references!
Plugins & Extensibility
One of the biggest gripes many people have with UE3 is the lack of extensibility of both the engine and the editor. This has been significantly improved in UE4 with the addition of plugins, which can be used to add both runtime and editor functionality.
The engine ships with a great collection of examples, the most interesting of which can be found in the "Experimental" directory. For instance, Paper2D adds 2D sprite-based support to the engine. Maths Expressions adds support for using mathematical expressions in Blueprint.
These are still in heavy development but they highlight the power of the plugin system - everything from the addition of new Blueprint nodes to full editors and in-editor visualizations, and probably things we haven't thought of yet!
This list barely scratches the surface of UE4’s feature set, but hopefully it provides some insight into some of the changes - big and small - that you can expect to encounter when moving from UE3.