Building a game is hard work, we all know that. On this tough process you are going to need any help you can get, and for this reason you have to do yourself a favour and use the right tools for the job.
By tools I mean, of course, a proper game engine or framework that suits your needs.
Yeah, yeah, I know what you are thinking: “but I’m a pro!, I don’t need nobody’s help on this!, I will build my own game engine from scratch, and it will completely rock the competition!”. Ok, that may be the case for you, Mr genius programmer, but for the rest of us mortals we can do fine by getting along using some of the best frameworks and game engines the great minds in the industry have developed and refined for us to use. You can keep your custom-made-and-slow-as-@$#* engine for yourself. Good luck with it.
Hey, I’m sorry, I didn’t want to be that rough with you. Come along, we are going to review a few things you may want to have in mind when choosing the engine that will make your dream game come true. Let’s roll.
First of all, before deciding on any engine or framework that looks good out there (which, believe me there are and on huge amounts) you are going to make a list. A list of requirements for your game. You may want to do a 2D platformer or a 3D first person shooter. Maybe you have some specific audio needs because your game is based on rhythm and you need really precise input timing. Or maybe what you want is stunning performance because you want to display hundreds of characters on screen.
Be thorough when making this list, and think deeply on what your game is going to be needing to do, because this will make the next step a lot easier.
Once you get the list done you can start by looking for a engine that suits your needs. Check out thoroughly every engine’s or framework’s capabilities. You can do this by checking the API reference or the examples section that it’s creators use to have on their webpages.
It may seem obvious, but by doing this you will know exactly what you need and more importantly, what you don’t. It is really easy to get blinded by all the flashy lights and impressive graphics but you have to be honest and think if you really need them, or if they will be able to properly do what you have in mind.
No, you don’t need UE4 to build your revolutionary Pong clone.
What an engine is supposed to do for you
A game engine is supposed to take care of “boring” things, like handling input, displaying graphics on screen efficiently, allowing you to play audio in an easy and streamlined way and on top of that, allowing you to make your game a reality without making you lose time while trying to get everything to work.
You need to spend most of your time working on your game, not trying to understand the engine you are working with or fighting it’s inner workings. That’s a recipe for development hell, and believe me, it’s really easy to get trapped into it by choosing your tools poorly. You have been warned.
Your game’s scope
Another important -and in fact decisive- aspect you have to keep in mind when choosing your tools will have to be where you want your game to be able to be played. Are you targeting for a PC only release?, then you will have a lot of options available. You want to publish for mobile markets?, then you will have to be a lot more strict with your requirements and will have to keep performance in mind a lot more than with other platforms.
For this, make sure the engine you decide to use supports the platform you want to publish on (well, DUH).
No, really, I mean it. Stay away from engines that support your platform in a “experimental way”, or in a theorical way. You wan’t something that works, so look for some published games made with that framework to be sure you are dealing with the real thing.
Also, think as well on future platform deployments apart from the launch platforms you have in mind at the moment. If your game turns out incredibly successful you don’t want to be stuck with a bunch of code that can’t be ported to any other machine without a complete rewrite. Don’t get yourself trapped on a platform if you can avoid it (luckily for us this is more and more difficult everyday but who knows).
Don’t let your dream project sink because of a crappy engine!
Don’t underestimate the learning curve
It is easy to get excited with all the cool tutorials and FAQs your are going to be reading concerning your target engine/framework. This is nice, but remember that even though it may look super easy and nice to work with it when the real thing comes by you are going to spend a bit of time learning your way around the new tools. This is normal and even though it can be a bit frustrating it does not have to be more than it should. Build your schedule around this fact and don’t get discouraged if you spend more time than you hoped trying to get your first prototype to work.
Also, you are going to face some problems during development. And for this reason you are going to need help. What I’m going to say here it’s really important, and I hoped someone had told me before I discovered it by myself:
Don’t work with poorly documented tools. Never.
This must be the golden rule for everything computer-related but it stays powerfully true with video game development. Stay away from engines that have bad API documentation, or frameworks without usage examples. Hell, don’t even bother if they don’t have an active community of experienced developers behind that can lend you a hand during moments of peril.
Also, if you manage to become an expert on the tools stop by and contribute to the community by helping others. Return the favor anytime you can and everybody will win (yeah, you too).
I hope these few tips have helped you clear your mind a bit about what you should be looking for when choosing a game engine. There are lots of great tools out there and it seems like they grow in numbers everyday, which is of course great news for us developers but it can also mean that the task of choosing properly can become a bit daunting. Don’t fear, and invest some time looking for the right framework for you. You’ll see how every minute spent was absolutely worth it.
That’s all for now, stay tuned and thanks for reading!
2 thoughts on “Choosing the right tools for the job”
Hi there, I’m randomly going through your blog posts and I enjoy reading every one of them! Not sure if this post is still relevant but I was wondering if you have any thoughts on the part “Don’t work with poorly documented tools. Never.” — you seem to love HaxeFlixel a lot (I love it too!), but I think the community is rather small and the documentations/tutorials are limited. 🙂
Hi, thanks a lot for reading 🙂
Well, I agree with you. HaxeFlixel is still young and the community is not that big (even though it is quite active) but in my opinion the API reference is well structured and well explained. Even more, there are lots of tutorials and sample games with their full source code available for us to go for reference.
What I meant with poorly documented tools are engines like enchant.js, for example. Where there a ton of different versions, very scarce documentation that is actually up to date and not that many places to actually turn to when you are in need. Another example of this would be AndEngine. I struggled with it for a few months before getting fed up with it and turning back to libGdx (which is amazingly good <3) because whenever I hit a problem with the API it would always end up taking at least a few hours of googling until I finally got the answer I was looking for.
So basically, my advice could be reduced to "choose an engine that allows you to spend most of the time making your game instead of trying to get the engine to work".