It's been nearly three weeks since I last updated with anything on this dev blog and it's quite about time that I lay down some law.
The main reason, perhaps the only reason, that we haven't updated is because we decided to change our development engine. Originally we were using Unity 3D. But it was revealed by both Epic Games and Crytek at GDC '14 in San Francisco that their respective game engines (Unreal Engine 4 and CryEngine) were going to be massively overhauled and massively cheaper, making them both more accessible to the Independent development scene.
This was a pretty big deal to a few of us when it was announced, and we quickly set to work reviewing the changes of both UE4 and CryEngine. In the end, Epic won our hearts, mainly with tremendously beautiful introductory and tutorial videos which they clearly polished well before their GDC announcement/debut in order to have them ready for release. Probably the one major tipping point for choosing UE4 was the ability for our programmers to code in C++, as well as to use Blueprinting (which is incredibly intuitive). CryEngine lost important points in this regard but is STILL very powerful. We chose UE4 for these reasons perhaps also because we were already a month into development on Xeno and wanted to make the transition as painless as possible
So anyway, we made the transition which took about two weeks of full-time dedication from Nicholas, Dan (our second-in-command coder to Nicholas), and myself in order to get a handle on just what it is that Unreal Engine 4 can do. And we still definitely have several months of learning ahead of us, because there's a lot that it can do.
We were lucky enough to have gotten our hands on Unity Technology's "Unity" engine over the past year, but decided to wave goodbye to it over the 1500$ price-point per developer. At least 3 of us were required to purchase it (if we chose to go Pro), and the Pro version contains all the bells and whistles that one expects to find in a moderately-high-fidelity visual experience, along with some streamlined tools to incorporate and enhance gameplay mechanics that, frankly, I was expecting to be possible right off-the-bat with Unity. They weren't, and that was disappointing.
On the flipside, Unreal Engine 4 lowered their price to 20$/month per developer (if you pay the initial 20$ and then cancel your subscription, you still get to use the software), and 5% of earned revenue generated by any finished product that you sell when you're finished. Granted, this could very well be tens of thousands of dollars more than we would have given to Unity Tech. by simply purchasing their product outright, but that's the big problem with the communication/reality between big business and Independent developers, now isn't it? Epic may be big business, but they know exactly how to speak to their relatively "new" audience of Independent developers. They know that the vast majority of us are strapped for cash and they can make even more money (and more loyal users) by catering to our needs. This price point was the huge disappointment with Unity to many of us, and both Epic and CryTek managed to raise the bar by economically lowering it. Now if only major software IPs did the same with other good software like Maya, 3DsMax, Photoshop, ZBrush, etc., then we could actually APPRECIATE the "standard" of decent quality software which is imposed upon us. But for now I'll keep using GIMP, Blender 2.70, and Sculptris.
Anyways, /rant off.
We chose to make the switch, and its proved remarkably positive and powerful. But the learning curve is still a steep one, if only because we've been working within the confines of Unity for so long, and also due to the sheer breadth of Unreal Engine's capabilities. A few problems that I initially ran into were major ones, mainly the difficulty of importing separate FBX files from Blender, resizing them, and attaching them to the same general animation and skeletal rig within UE4. This was unnecessary in Unity, for comparison, because Unity had built-in support for Blender wherein I could merely drag-n-drop a .blend file into the content browser, and VOILA, the animation/rig/mesh was ready for splicing. Unreal Engine has built-in support for Maya (hence the native FBX requirement). Transporting .FBX files is a bit different from transporting .OBJ files, as far as the difference between Unity and UE4 are concerned, and so that took a few days of my time to work out all of the kinks in the process and bring myself up-to-speed, which was time wherein 0% new content was being created for Xeno. So this was the difficulty with the initial transition. But it's beginning to pay off quickly.
A powerful part of Unreal Engine 4, from an artist's perspective, is the intuitive and visual Materials editing. You basically have a board of output nodes on a material that you're crafting, and you have complete control over what variables and textures, and combinations thereof, are going to influence those outputs. Things like "roughness" and "emissive" properties, Normal maps (which can be combined and in differing degrees), and moving textures on a mesh, can all be influenced in countless ways. This gives the artist A LOT of power, and this was the first immediate thing that I realized upon coming in from Unity. But with this complexity of output came, of course, the learning curve. While it is intuitive, it brings into full view my vast ignorance with many of these parameters. I'm still getting a handle on the majority of them, but I had to spend quite a large amount of time bringing myself up-to-speed with them, and there's still such a long way to go. It's so deep and powerful that I'm quite positive I will have only touched the surface of the Material editor's capabilities in the next year, and will have an entirely new take on texturing and visualization by the time Xeno is finished.
Everything in the Content Browser and Scene Outliner are fairly normal and expected, pretty straightforward and very similar to Unity 3D, while quite honestly being even more intuitive than Unity. A really helpful part of UE4 is the "Modes" box in the top-left, which allows us to drag-n-drop very important and oft-used scene props into our level, like lights, mesh geometry, collider boxes, foliage, post-process boxes, trigger blocks, and a whole lot more.
Coding can be done via traditional C++ compiling (I have no idea what I'm talking about), or via visual Blueprinting in exactly the same way as Material editing is handled, with call-boxes containing functions and variables that string together logically. It's a brilliant and welcome addition to "mainstream" independent development, and something even I can do with a little prodding and some extra time!
Particle animations are absolutely gorgeous in Unreal Engine 4, and the engine comes with a few of them right off-the-bat to both WOW you, and to help kickstart you into level ambiance. I still have yet to really learn how they work, as I'm currently knee-deep in playing catch-up with my Xeno character development and level design.
The Engine also allows you to put customizable "text blocks" on assets that are displayable in real-time, and this would be especially useful for things like narrative expression or HUD elements in an FPS (which is precisely what we'd use it for). All of this and more are very easy to implement.
As you can see in the above photos, the real-time reflections are spot-on, smooth as silk, and beautifully rendered. My computer is not as powerful as it definitely should be (especially as a 3D graphics artist), but even with multiple programs like Blender, Sculptris, GIMP, and UE4 running simultaneously, it's amazing that the in-game test-play ability of UE4 can run as smooth as it does in-situ. It has been well worth the 20$ subscription for us so far, and we anticipate it will only get better from here.
Well that's all I have to give this week. Hopefully next week we can get Nicholas to fill you in a little more on his take on our transition to UE4, or even just Verus Games' process in general. Who knows? Or we may just post a bunch of cat pics.
Until then, thank you for skimming through with us! We hope you've enjoyed! Be sure to drop us a line on our Contact page, and follow us on Twitter for near-constant updates on our Xeno progress!