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.
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.
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:
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.
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:
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.
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!