How can I get into opensource game development?

Immanu'el Smith
  • How can I get into opensource game development? Immanu'el Smith

    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,

  • 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.

  • 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.

  • 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.

c++ opengl open-source
Related questions and answers
  • , that will let me import 3d meshes into my game, ready to use? The solution/middleware should be: easy to use easy to port efficient not consuming too much memory with unnecessary things containing all the above mentioned features plus things I haven't considered yet Programming language is: C++. Currently, I'm developing under Windows 7, Visual Studio 2010, and OpenGL ES 2.0 emulator. Later...Say I develop a game for mobile platform running OpenGL ES 2.0. I have done 2D part, and now I wish to import some 3D objects. The imported 3D objects must contain the following: Vertices

  • don't really need 3D. The editor usability is a little worse than Unity3D in my opinion and it wasn't clear to me how to start programming. I think it requires C++ for coding, so that's a negative too. I want to have fun, and c# is fun ;) SDL. Quite frankly, I'd still need to port to all those different SDL implementations. And I don't like OpenGL style programming, it's just plain ugly. And it needs... of small games but I'm doubtful of the performance. I would like to make a fairly large strategy game, with several hundred units fighting simultaneously, explosions and animations included. Also

  • not seem to have joystick input support, which would require that SDL or some other library also be used. So my question can be summed up as this: What is the best way to get SVG and joystick...I'm looking into building a cross-platform opensource 2D RPG style game engine for ChaiScript. I want to be able to do all of the graphics with SVG and need joystick input. I also need the libraries I use to be opensource and compatible with the BSD license. I'm familiar with allegro, ClanLib, and SDL. As far as I can tell, none of these libraries have built in or obvious integration for SVG

  • I've been using SDL 1.2.14 for awhile without using many of the features from newer OpenGL versions. I'm now interested working only with the 3.3 API (not using the deprecated functions, etc... that's the latest my graphics card supports), but I'm having trouble getting set up. Here's some information about my development environment: Windows 7 64 bit Eclipse Helios CDT Mingw Toolchain C++ I've tried building SDL 1.3 and following this tutorial. This ended up being a pretty big pain and I gave up amid a stream of compile errors - I'd prefer to not go this route if possible. I know also

  • but forced myself to wait on, as there are only so many hours in the day to devote to projects. I am an experienced web developer (12 years) with most of my experience programming in C# and .Net (8 years). I am also a capable graphic designer. I have a surface knowledge of C++, though it's been 10 years since I wrote any C++ code. I also played with the DirectX 5 API back then as well. I am happy to outsource graphics and sound, leaving me with coding, game design, level design and so forth. Do I need to learn C++ properly, or can I rely on my C# and .Net knowledge? If I'm going to leave C

  • I'm going to write browser online game, not MMO, but something like a lot of Flash game. But with OpenGL rendering, because Flash is using CPU for rendering. What are advantages of pure Java or c++ with Java that only create window. My requirements are: good performance - low overhead when calling OpenGL functions short code( if possible ) - so, Java is fully object oriented language, which can require usage of object for each called OpenGL function basic portability - Linux, Mac, Windows - multiple builds for each platform aren't problem little communication with server for saves, top

  • I am trying to create a 2D platformer (Mario-type) game and I am some having some issues with handling collisions properly. I am writing this game in C++, using SDL for input, image loading, font loading, etcetera. I am also using OpenGL via the FreeGLUT library in conjunction with SDL to display graphics. My method of collision detection is AABB (Axis-Aligned Bounding Box), which is really all I need to start with. What I need is an easy way to both detect which side the collision occurred on and handle the collisions properly. So, basically, if the player collides with the top

  • intelligence, aggressivity, etc..) ..another assets.. Can I kindly ask for a hint, how to construct my custom file format. How to organize data within my files, please? Does anoybody have a good adivce... of wasting it on incorrect approaches. I use Softimage as my 3D authoring tool. Target platform is OpenGL ES 2.0 running on mobile devices (iOS, Android). Programming language: C++. ...After careful consideration to use middleware, I have decided on creating my own 3d file format format to export meshes from 3D authoring application (Softimage) into my game. I will need to export

  • I have a simple question. For people that know and built ogre3D from source as a Static library, what is the order of which the libraries should be linked? The libraries I need to be organized are: Ogre Plugins 'libOgreMain.a' Ogre RenderSystems Boost(version 1.47)link Ogre's Dependencies The reason I'm asking is because in the Ogre forums, I have asked about this and didn't get a good reply... yet. The other reason is because even though I link to the boost library, I get this error: undefined reference to '_imp___ZN5boost6thread20hardware_concurrencyEv' My compiler is MinGW

Data information