Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have started a few game projects in the past, but have never finished anything. I decided that it was probably because I was writing everything thing from scratch, and just ended up dropping the project once development started taking too long.

I've decided that I want to finish my first game now, and needed some opinions on what sort of middleware would be good to use. I was hoping that with an engine provided for me, I'd be able to finish the game.

I am most familiar with C++, but do know quite a few other languages as well.

share|improve this question

closed as off topic by Tetrad Feb 27 '12 at 16:40

Questions on Game Development Stack Exchange are expected to relate to game development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

You're asking about premade engines, but they're pretty specific things. What kind of game are you thinking of building? – Mason Wheeler Sep 3 '10 at 2:49
Really needs more information about type of game being built, otherwise this is just going to turn into another list of game engines. – MrCranky Sep 3 '10 at 9:42
up vote 3 down vote accepted

Depends on what you want to achieve and your current skillset. I'm taking this from the point of 'I want to learn gamedev' rather than 'I want to learn language X and gamedev'. Since you're comfortable with C++, I advise using that. The other major advice here is start 2D. It's more complex than it looks, so starting as small as possible is good. (Nobody wants a 1D game.)

Then it comes down to what you want to do. The two routes are going to be using a lower-level graphics library, such as SDL or SFML, against a higher level graphics engine such as OGRE3D or its 2D cousin, TROLL2D. I would again advise the former. You gain a lot more from making your own little rendering routines (I'm not meaning rendering routines as shaders and the like, but more how sprites work) rather than using what people have done.

Start small. Tetris may seem small, even Mario might. But these are still pretty big. I advise something like Tic-Tac-Toe if you aren't sure - no real time involved. But you would still need graphics, some AI, winning, a game loop, etc.

If you want to aim a little higher, Pong is good. It is real time, so you would need real-time input, as well as collision detection (bounding boxes), better AI, maybe a simple menu. All this will teach you important skills.

Then try Tetris: you've got timers, random generation, more collision detection. Then PacMan or something. After you've made a few, you can go more wild.

All it comes down to is practice. It's quite possible to learn gamedev by coding a 3D RPG in C++ (let's say you can, for example's sake) when the closest you've done to any programming is Excel macros. You would get there, but it would take an awfully long time from all the stuff you have to learn. Not to mention the fact you'll probably give up from finding it too difficult.

share|improve this answer
+1 for starting with remakes of old games. Learning how to make a game is a challenge wholly apart from designing a game, it's overwhelming to tackle both at once. So the easy solution is to make a game that's already been designed. – Ipsquiggle Sep 3 '10 at 17:31

I'm surprised XNA hasn't been mentioned yet!

  • The tools are free.
  • The language (C#) is like C++ but so much nicer.
  • There's a huge library of well coded samples.
  • You can easily port your game to Xbox 360 and Windows Phone 7.
  • Suitable for 2D and 3D games.

I found, when I moved from C++, that XNA and C# cover much of the boilerplate code that tends to bog down a C++ game project.

share|improve this answer

I would recommend Flash and probably the Flixel engine. The engine abstracts a lot of Flash-isms from you and takes care of many common game components. Things like collision detection, tilemaps, spritesheets, and animations are all taken care of for you. As for tools you can use Flash Develop on Windows, it's free and one of the best editors for Flash. On Linux and OS X your options are slightly more limited I might recommend using the command line compiler and Vim, or Flash Builder at least while it's available on trail.

The reasons I recommend Flash are as follows:

  • Very high level language keeps you focused on game specific stuff instead of memory leaks, etc
  • Large, mature community has likely solved any problem you run into, code and examples is easy to find with your favorite search engine
  • Established market has simple ways to distribute your game to customers, you can self host, go through a sponsor, post to a portal, use Facebook, etc
  • Mostly everyone can play a Flash game, getting a million plays isn't considered a big deal, so if you want to get your game out there it's a good choice.
  • Likewise it's very easy to share with a friend or tester. Just send a link, no need to worry about run-times, installations, etc.
  • Flash CS IDE is a world class editor for layout and asset management. Plus if you later want to hire an artist he will likely be an expert working with it.
  • Great libraries such as Tweenlite make it really easy to polish your game
  • Multiple ways to monetize your game -- though don't expect it to be easy -- through sponsorships, advertisements, direct sales, etc
  • Adobe AIR makes it pretty easy to make your game available as a "native" application, in my experience the process is better than, say, Java
share|improve this answer
Does this library support HaXe? – RCIX Sep 7 '10 at 1:19
@RCIX I really can't say having not used HaXe. My understanding is that it should be possible to create an interface to a native library for HaXe. Depending on the library that could be a lot of work, though. – Alex Schearer Sep 7 '10 at 17:35

Your question is pretty broad as you haven't said what type of game you're making. I'm using 'pygame' as I like to make simple 2D games with sprites.

share|improve this answer

Unity3d is a good way to start. They have good documentation and its a complete development package. The languages for scripting are C#,Boo, and Javascript. I had a simple first person "shoot the bouncing balls" game going in about a month and a half using only provided assets and default shapes. The documentation is great and the whole system is easy to understand and manipulate. The community for Unity is also of a nice size. If you want you can program custom shaders in C++ for Unity as well.

The only thing that would be an issue is that Unity is 3d and making assets can be a big stopping point. I use Google Sketch Up to make most of my models and then export them as collada files which can be pulled into Unity. Sketch Up is incredibly simple and easy to use. The only time it becomes difficult is when you start trying to work with spheres or rounded surfaces so for the most part I stay away from those.

share|improve this answer

HGE - Haaf's Game Engine is a C++ 2D engine. A very well established and very stable engine based off of DirectX.

I would definitely recommend making clones of very simple 2D games to stop yourself from getting too ambitious. Tetris, mine sweeper, pacman, etc.

share|improve this answer

You don't mention whether you're looking at building a 2D or 3D game, but as you say youy're most familiar with C++ there's also the Angel Engine, which is an open source 2D game prototyping engine available here:

It's cross-platform (Windows, MacOS X and Linux) and is very much geared towards rapid development.

share|improve this answer

Start simple. I prefer Flash due to its easy-to-connect graphics and code nature. Flash is also the choice of thousands of people. The coding can be done in Actionscript, the latest being AS 3.0. And as you asked using an engine would be good. I prefer Box2d as it has a good way of applying physics into our games.

I'd also like to tell you that, DO NOT EXPECT to make a gorgeously amazing physics bike race in a week! The first thing you have to learn from Game programming is that , This is programming taken to a whole new level of creativity. You can say a Game programmer is worth 3 Application Programmers. And I mean it. There is a lot of hard work and most importantly "patience" and will power to try again and again till you succeed.

share|improve this answer
Get hubris much, mr "a Game programmer is worth 3 Application Programmers"? – drxzcl Sep 3 '10 at 12:38
Not that there's any difference... – Rushyo Sep 3 '10 at 14:51
@ranieri :what do you mean by "get hubris much". – Vishnu Sep 4 '10 at 5:10
@Raineri: it's true, making games is incredibly hard. I wouldn't say you could have a direct translation between 3 application programmers and 1 game programmer, but he makes a good point. – RCIX Sep 7 '10 at 1:21

Not the answer you're looking for? Browse other questions tagged or ask your own question.