The short and sweet question

I'm new to game programming in general, so how do I go about making GOOD QUALITY opensource games?

What I have come across

There are a multitude of games that I have played on Linux that are just downright shameful. The graphics are terrible, the AI is lacking, and the replayability is little to none. Don't get me wrong; I have played some good opensource games such as World of Goo, Gish, and Aquaria; but I'm really missing out on good games over here in my Linux hut.

What I have found

So, I did a little research on how the games mentioned were made. Thus, I have started learning OpenGL and SDL using my C++ programming experience (which is about a year of programming, not much). I also picked up the following books, which were recommended from programmers on stack overflow:

  • Focus on SDL (The only let me post one link for now...)
  • The OpenGL Super bible
  • GEB and CODE

What I have been recommended

I have also talked to someone who is a fairly experienced programmer who recommends that I take the C++ route to gaming, and that OpenGL and SDL would be a good way to go. He also recommended that I start using versioning control with my programs (Git particularly). What are your opinions on that?

Hope that was clear, guys.

Let me know,

  • \$\begingroup\$ possible duplicate of Open Source game projects \$\endgroup\$ – Tetrad Jul 21 '10 at 19:57
  • \$\begingroup\$ I read this as wanting to make his games Open Source rather than joining an existing project. \$\endgroup\$ – ChrisF Jul 21 '10 at 20:04
  • \$\begingroup\$ This question is a bit too nebulous to be useful. \$\endgroup\$ – munificent Jul 27 '10 at 20:48
  • \$\begingroup\$ I would disagree, I found the answers useful for pointing me in the right direction. \$\endgroup\$ – Immanu'el Smith Jul 30 '10 at 19:06

Plain and simple, the best way to get into opensource gaming is to do it.

Git is a fine choice for version control and you should start using it immediately. It'll be something you use constantly throughout development and so the sooner you're familiar with it the better. As an added bonus you can host your source on a site like GitHub so other people can clone, work on and check code into your repository.

The c++/sdl route is a good one and one that's been relatively well traveled. You should be able to find a good amount of resources on most topics.

When aiming to get an open source project going, keep in mind that there could be any number of contributors from all different cultures, backgrounds, etc. Their ideas may not necessarily mesh with what you have in mind for the project. You need to keep a balance between maintaining contributors and steering the project towards that final goal.

I believe the above is why we see relatively low quality open sources games. You have so many cooks contributing while anyone with a strong drive towards a particular idea (which is something I feel a game needs) may become alienated at some point during development.

I may be wrong here but Gish and Aquaria were only recently open-sourced and were developed by a closed team. I'm also pretty sure that World of Goo source is still closed.

It may be preferential to not let your first foray into gaming be your first foray into open-sourcing a game as well. It won't hurt to throw it on a public repository, but I've found, much like baking, the first one gets 'thrown away'. It's a learning experience - getting the processes, techniques and math needed to get something usable out. Don't expect your first game to trump the likes of 0 A.D., Battle for Wesnoth or FreeCiv.

You may want to look intro contributing towards one of the above games, that would be invaluable experience if you want to run a similar project at some point.

| improve this answer | |

If you are doing any sort of software development then version control is essential. You have to be able to track changes and if necessary roll-back to previous, known stable, versions.

This is doubly true (if that's possible) with open source development as you are effectively in a distributed team, possibly in different countries, time zones or continents.

| improve this answer | |
  • \$\begingroup\$ Should I worry about version control before or after I learn the basics of opensource game development? \$\endgroup\$ – Immanu'el Smith Jul 21 '10 at 21:07
  • \$\begingroup\$ @Emmanuel - use source control from the beginning. I didn't on a couple of personal projects and regretted it as I didn't have a record of the changed I'd made. \$\endgroup\$ – ChrisF Jul 21 '10 at 21:23

The best way to make quality indie (opensource or not) games is to make a lot of really bad ones first. Don't remake the same game over and over, but just make lots of little games and learn something new each time.

| improve this answer | |
  • \$\begingroup\$ I really dont like the words "bad ones first", you get experience from your work good or bad. \$\endgroup\$ – Robin Feb 2 '12 at 7:38
  • \$\begingroup\$ The key is that many people expect their first game to be good. It won't be. Just make something complete and move on, even if it isn't amazing. \$\endgroup\$ – coderanger Mar 6 '12 at 22:30

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