Saturday, January 14, 2017

After-Thoughts Rant: Game Engines, Choose Wisely

Now I'm going to talk about a subject that I don't talk about as much anymore as I probably should. Namely, the impact your game engine software can have on the final product you make.

I won't be talking too much about ports that are after-thoughts, like the PS3 Bayonetta port, which Hideki Kamiya admitted they just shoveled out the door. Moreover, I'm just going to be taking a look at the different engines you can choose from and see which ones you think will work best for your project.

When the topic of games discussion is researched, I often find the game engine choices of a lot of websites somewhat aggravating. The reason for this is simply that, whenever you go to a site saying you want to make a game, they will almost always give you a 2D engine to work in.

Now, ignoring the fact that there are more free 2D Engines than there are free 3D engines, I always had a problem with these lists because I wanted to make 3D games because I actually have a knack for 3D spacial awareness and game design. My brain naturally thinks in 3 dimensions and things like depth, z-axis, and spacial awareness are things that my brain does automatically and trying to turn those things off, which is necessary for 2D game development, is not only hard for me but also counterproductive.

That said, though, in my time, I've actually learned that whether you want to make 2D or 3D games is only the first step in the battle to choose what game engine you want to use.

In my time, I've done quite a bit of research on game engines and, here, I'm only going to be talking about 3D engines for 2 reasons: first, literally anyone else can tell you about 2D engines all day long much better than I can so I won't waste time doing what others can do better, and secondly because 3D game development is becoming more popular in the indie sphere in particular so I want to give my two cents.

Whenever I see the topic of 3D game engines brought up, there are always three that rise above the rest in terms of popularity of recommendation: Unity 3D, Unreal Engine 3 or 4 (depending on the time frame), and Cry Engine. However, those engines are just the most popular. If you're looking at making exclusively PC games, Blender's 3D game engine is worth a look simply because it comes with everything you need to make a game, other than audio recording features I suppose.

If you are looking to work at Capcom, you'll want to familiarize yourself with MT Framework. If you want to work at Valve, Source Filmmaker is the game engine they made TF2, Portal, and Half-Life in. If you're thinking about making a 3D RPG, practice making mods in the Red Engine for The Witcher 2 because that's the only way they'll allow you to use the engine.

In my time, I've used 3 total game engines, Blender's, Unity 3D Free Version, and Unreal 4. Bearing in mind, the first thing I look up before deciding a game engine is cost, I decided to look up game engines I could use for free. And these just happened to be the only 3 that I got my hands on. And out of all of them, Unreal 4 took the longest to get a grasp on but I would say it's probably the best out of all of them.

Of course, there are some things Blender can do that Unreal can't because it features animation, modeling, and rendering features on top of the game engine. However, Unity is easily the worst. While Unity can be good for prototyping gameplay and getting up an Alpha, it's really hard to get a Unity game past the Alpha stage and you can't really sell prototypes.

Blender is fully functional, if you can stand the logic bricks or figure out how to code a game without them. However, understandably, Blender is Modeling and Animation Software first and a game engine second, so it would make sense that the game engine is a bit lacking.

Unreal 4 has problems with getting a game to run at 60 fps consistently but that's the only real problem I've had. Though it is designed with NVIDIA graphic cards in mind, Unreal 4 is much better as middleware than its predecessor, Unreal 3, which had a crap ton of problems running on anything that didn't remotely resemble a PC. However, Unreal 4 is also very user friendly. It has a similar store and community to Unity's in the vein of, people can make small portions of code, blueprints, or assets that can be used in a game and sell it to make some quick cash. This, in turn, fosters an environment where people can help each other build games of all different genres and types without the need to contribute directly. And because the only Unreal Engine stuff you can use has to be distributed through its marketplace or custom-made, it reduces Piracy a fair bit.

Unity, on the other hand, does sell assets and pieces of code, however, there are two major problems with it: the first, which is less significant if you have a lot of money, is that a large portion of what's available to use can only be used in the Pro version, which costs $1500 upfront plus $65 per update, or a $75 subscription. Again, if you have money, and I don't, then this generally won't be a problem for you since you can just shell out the $75 a month to use it.

The bigger problem is that Unity's asset store has no standards for quality or any real security measures in terms of dealing with piracy or getting assets or code that just doesn't work. This can mean that those who make it lose money on something they were planning on making a living off of, and those who receive it may not get what they were promised.

The upside to Unity, if you care about performance is that Unity can have a completely full scene with highly detailed graphics and end up running at 200 fps on a low-to-mid tier PC. Now, arguably, you cannot sell games with framerate alone, and this is true to an extent. However, if you know how to use Unity to its fullest, the higher framerate is a perk.

Unreal Engine 4 is a lot more user friendly in that regard, and though it does have issues with getting consistent 60 fps, I find that that's not really an issue to me, not because I don't care about performance, but because I'm going to be limiting my game's visual flare to that of a PS2 game, so getting it to run at 60 fps or above may not be as much of an issue for me as it would be for someone who wants a prettier game.

Blender doesn't really have an asset store, which is both a good and bad thing. The bad thing about it is, if you have no means of getting custom assets into Blender without just making them yourself, no amount of searching will do any good. The upside to this is that, because Blender is primarily modeling and animation software, if you know how to use it, any custom models and animations you need you can make yourself, which somewhat mitigates the need for an asset store.

This comes down to how each of the engines are designed. Blender's game engine is housed inside of a modeling and animation software, so anything you make in it can be used in your game. And, because blender itself is Open-Source, getting a hold of all of it is relatively easy.

Unity and Unreal, however, are designed with Autodesk Maya in mind. I can understand why they did that, to be honest. Before these engines became middleware, the teams that were using them were more than likely using Maya because it's the industry standard. At least that's the case with Epic Games.

Because of that, making Unreal Engine 4 compatible with anything other than Maya would require significant retooling on their part or on the part of the user, which is now possible because Unreal 4 now has available and modifiable source code.

And it's not to say that Blender's Modeling and Animation Software are impossible to use with Unity and Unreal, just that in order to get either of these working properly, you have to export what you make in Blender as either two separate .obj files (one for the model, and one for the skeleton) and mix them together in the code or by some other means, or export it as 1 .fbx file, which is the file type used by Maya.

Just as an aside, though, this does make Unreal and Unity a bit disingenuous when they say that these engines are compatible with Blender, because they're not. If anything, Blender is compatible with them. Or, to put it another way, Unreal and Unity cannot use .blend files, Blender simply has an option to export as a Maya file, which these two engines do understand. So, as I said, it's not that these engines are compatible with Blender, it's that Blender is compatible with them. Okay, tangent over.

I have not used the Cry Engine as of yet, though I've heard it's of similar quality to Unreal 4. My reasons for not using it are price tag and focus on graphical fidelity, which are things that are always going to get in the way of my using an Engine. Focus on Graphical Fidelity is fine by me, as long as my PS2 graphics can run at 60 fps or more with all the content I load into the games. However, upfront price is usually the bigger problem because, as of now, I have no money.

That said, what I do find noteworthy about the comparisons between Unity and Unreal 4 is that a lot of people, not just me, who went to Unreal 4 did so after quitting Unity. Everybody has different reasons but, the consensus is that Unreal 4 is better for those who are serious about making a living off of video games.

So, what engine do I recommend? That's a tough question. Primarily because it's going to depend largely on where you want your game to go. By that I mean, is it for a Computer or a Console? If it's for Computer, will it be for PC, Mac, or Linux? If it's for Console, will it be for PS4, XB1, or the Switch which is coming out soon? Will your game be for all the consoles or all the Computers? Will it be for everything in general?

These are questions you have to answer because other questions rely on them. For example, what input device is going to be used or recommended? If you're making it for a Computer, it would be wise to allow Keyboard and Mouse inputs even if you're recommending a controller. If you're putting it on a console, then the console you choose will dictate the controller it has to be designed around.

What features will your game engine need? Are you making a VR game or a standard experience? Will you require large mobility options? A combat system? Weapons or props? What about complicated things like destruction physics or rag dolling?

Finally, what are the specs of the device the engine is working on? And I don't mean where the game is going to go, I mean the PC you're using the engine on. If you're working on Unity, you can get by with 4 GB of RAM. In Unreal 4, the recommended is 8. You can deal with 4-6, though it's not recommended because that will  cause more frequent crashes. Does your device have a dedicated graphics card or integrated graphics? What kind of Processor does it have and how many cores does it have? What's its clock speed and can it overclock?

Finally, how much money can you afford to spend on your project right now? Even factoring out things like Kickstarter, which will fund the entire project, you'll need to see how much money you can spend on a Prototype, Demo, and Trailer for the Crowd Funding Campaign. You'll need to find sources of income, or budget your money properly.

These are all questions you'll have to answer before deciding on an engine. I'm probably going to stick to Unreal Engine 4 for as long as necessary to get my own game engine, which is fine for the time being. However, you may have different needs and goals.

Have a wonderful day.

No comments:

Post a Comment