I shouldn’t be spending time writing more blog posts, but this was a big week for game developers big and small. GDC (Game Developer’s Conference) had some great announcements.
Oculus Rift still doesn’t have a set release date, although most sites state it will formally release before the end of 2015. And it better… plenty of competitors from Sony, HTC, and others are racing to beat it, and will release early 2016. I’m still excited for the opportunities of VR.
NVIDIA announced the greatest thing ever: an Android TV. Like the ones we’ve had for the last five years. Except it’s slightly higher quality, and they are using a high-powered mobile chip to encourage developers to port their last-gen games to Android with the new box. More importantly, they’ve announced a sort-of Netflix for films, which again kind of existed but still has opportunity for improvement. Imagine streaming games at high-quality purely based on your Internet connection rather than your computer’s own graphics card. The thing is, my mid-range-graphics card is much better than any Internet connection in my town. Regardless, I hope it works.
More importantly, Unreal Engine 4 is now outright free. It was already cheap at $19 a month (with an easy-to-quit subscription, so it was basically $19 for the whole engine), but now there’s no excuse to not give it a try. The only barrier is that standard percentage after you make more than $3000 profit. Also, a few weeks ago they announced a new grant program to give money to small developers to use their engine. At a time when Unity 5 and Source 2 are also released, it’s hard to say that Unreal isn’t worth at least looking at.
So I looked at it. As a experienced Unity developer, did I like Unreal? Well…
The general interface and tools available are similar to Unity, but certainly more advanced. The example lighting, particle and materials in default projects look like they came from a AAA game. You can drag and drop objects into the levels the same as Unity. Unlike Unity (although a cheap third-party plugin can help you do it), Unreal lets you do basic Boolean (through masking) operations and edit vertices, edges and faces to create cool shapes. There’s still no built-in animation keyframe system (you still need Maya, 3DS Max, or Blender for that), but if there was, Unreal would be a complete workflow system in one package. While Unity gives one default project, Unreal gives several templates, so if you want a first-person shooter, a third-person platformer, or a racing game, you can click to open a template and basically have an example game ready to play.
Overall, the interface is just similar enough and just advanced enough to look like a much better version of Unity. But then I tried to program something…
Unreal 4 uses C++. I prefer C# like Unity has, but I’ve used C++ before and was willing to try it. After a few days, I’m convinced that programming in Unreal is completely useless. Unity lets you attach program classes (like scripts) to objects to run, and easily accesses different properties. Unreal seems to require you to create the class BEFORE the object, using the class to instantiate the object in code, with absolutely no way to simply attach or reference an existing object in the 3D viewport. Basically, if you plan to do any custom programming at all for your game, it’s identical to writing a game from scratch in Visual Studio with access to Unity libraries, but requiring you to instantiate everything. And no matter how many tutorials I watched, I couldn’t find a way to tell me otherwise. Even though Unreal’s own website tries to convince you that the engine and programming is similar to Unity, the programming aspects in relation to the engine itself could not be more different.
Unreal 4 does have another method, a scripting interface called “Blueprints.” This is a visual flowchart-like system, but still lets you create variables and basic functions. So, it’s like a lot of introduction programming systems high schools use that I’ve seen. But it makes sense, and works a bit better. But even then, there’s a weird learning curve.
Of course, you can still make simple but complete games with little-to-no programming, and they would look great thanks to the visual tools available. So would I use Unreal or Unity? If you have absolutely no programming experience (and don’t think you’ll be doing anything weird for your game), Unreal 4’s interface might be a learning curve but is still the best choice. If you are a hardcore programmer who might even consider looking at Unreal’s source code to tinker with it, then use Unreal 4. If you want impressive visual 3D games with little work, use Unreal 4. But if you care about functionality, understanding what you are doing, having flexibility of a full programming language that doubles as a scripting language, then use Unity 5. Overall, I could make a complete game from scratch in Unity the first day I tried it while it takes me several days with Unreal 4. I’m still convinced that by using the right assets you can make Unity projects that look just as good visually as Unreal, even if it takes more work, and while I might play with Unreal a bit more, I’m certain I’ll still use and promote Unity.
(As an aside, Unity 5 when installed looks nearly identical to Unity 4, despite all the advertised improvements. And being unable to find where to actually DOWNLOAD Valve’s Source 2 engine, I’ll pass on that. If any of you has experience with these engines, please comment below to let me know of your experience.)