When designing a game, you might start with a type of game you enjoy and work from there. Or you might choose an engine you already know and build a game around it. But what about when the game idea comes first? Do you pigeonhole it into what you already know how to use? Or do you let the game dictate how it will be made? Most of the projects I work on start from a narrative. I have a theme or concept that I want to get across, and the world, characters, mechanics, and features follow from there. So when possible, I try to choose the engine and platform after we have a good idea of what we want this product to be. At the moment, we're in a development position where three radically different games need to be attached to engines soon, so I thought this might be a nice time to talk about how we make this decision.
What is your game about?
Ever heard of an elevator pitch? If someone asked you, right now, could you describe your game in the time it takes to ride an elevator? Even if you're heading from ground to penthouse, this can be a tough challenge. But if you can't describe how awesome your game is in one sentence, you should re-evaluate. Try not to think just of the type of gameplay, but the mood or experience you want to get across. Every element of the game should support your concept, and having one you feel good about will keep you on track. Figuring out the soul of your game takes time, but it's time worth taking in order to shape its development.
What are your features?
Once you've found the heart of your game experience, you can start building a features list. Ideally, this will be as complete as possible before you start coding up a prototype, but you can learn a lot from playing around with working code so don't stress out if you're still working on some details. At the very least, you should think about these key decisions:
- 2D or 3D? Will you be navigating a 3D environment, or using animations and illustrations? Will there be a mix of the two?
- What kind of art style? What colors will you use? Will you need shaders, particle effects, or other special graphical features?
- What's the control scheme? Mouse and keyboard or touch? Are you using special inputs like virtual ink, voice or video?
- What about audio? Will you need music and/or sound effects? Will you need to blend them together? Will you need to attach them to certain objects or areas of the map?
- What is the core gameplay? Is it a common genre that might already have free example code in a popular engine?
- What's the business plan? Are you giving this game away for free? Are you selling it, or relying on ad revenue or micro-transactions? Every engine has its own policies on licensing fees, and you should choose the product that matches your budget.
What platforms do I want to support?
Now that you're armed with your list of features, there's one more thing to consider: what devices are you going to support? This is a very difficult question to answer, especially if you're a very small operation! But many game engines port to more than one platform, so you should take this into account if you know there are multiple places you want your game to shine. It's twice the work if you build it all for one device only and discover you'd rather have it on many. I recommend first choosing a device that you personally use, so you can do testing yourself and bring it with you to show others while in development. And if possible, choose the device with the control scheme ideal for your game.
What are my options?
There are so many game engines to choose from! Doing a quick online search will pull up lots of choices, which you can then check against your requirements. You can also look up some of your favorite games and see what engine was used to make them. I couldn't possibly list all of the game engines out there, but here are a few that I've worked with personally:
- JS-VINE This surprisingly powerful tool can be used to make visual novel style cut scenes with branching paths, all within your browser. I used it extensively in a user study and highly recommend it for web tutorials or story-based web games.
- Inform7 I love this tool, which uses a programming language based in English to make interactive fiction. If you've got a strong idea but no code or art yet, it makes a great living design doc to walk people through and explain your idea.
- Unity One of the best engines to use for 3D game development. It's fairly easy and exports to many platforms.
- Unreal Development Kit Personally, I've fallen in love with UDK. I'm still learning it myself, but the visual coding style of Kismet clicks well with my brain, and while it was a bit of a learning curve, I like the way you can add and subtract shapes in the world. A very powerful 3D engine, with a reasonable license for those just starting out.
- Construct2 This is what has caught our attention most recently. It's fun to play with, has lots of great, easy tutorials and you can make simple arcade style games within minutes. And it publishes to many platforms, including web and Windows 8.
Can't I just write my own engine?
Admit it, some of you are thinking that there is no reason not to write your own game from scratch. I know lots of programmers that were incredibly excited about making everything themselves. And I have seen many of those projects wither away almost from the start. I strongly advise you not to reinvent the wheel. By starting with a pre-existing base, you can usually still go into the code and modify whatever you want! Isn't it going to be more fun to write brand new features that no one has ever seen before? Having said that, there are cases where it's okay. Our first two games were built ground up without an outside game engine. Especially if it's your first project, it's more important to get something done and feel good about it. But don't go at it without a plan! If you're going to do this, start small. Like, really small! Our first Android app was literally a list of information. But it went in the store, got some good reviews for what it was, and we had a base to build off of in the future.
What happens next?
Once you made a decision, start playing with your new toy! Do tutorials, make prototypes, break other people's example code. No matter what choice you made, you should constantly be re-evaluating your progress against your concept. Trust your instincts, and don't be afraid to change things if you're off-track. In our case, we've decided to take a smaller, easier game to test out Construct2 all the way to a finished product. I think it's going to work out great, and give us lots of good information about using this engine for our other projects.
Best of luck to you, whatever you decide!