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 some pretty decent general programming skills and elementary C/C++ skills. I am a complete noob in game/graphics programming and I would like to start.

I want to gradually learn, starting off by something like Pong, and gradually making more difficult stuff for learning. My ultimate goal is to make some COD:BO zombies clone (I love this game).

So what libraries/engines can you guys recommend, first to even start drawing stuff on the screen, and later more sophisticated stuff for getting a FPS going.

share|improve this question

closed as off-topic by Byte56 Nov 7 '13 at 23:33

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions that are about "which tech to use" are outside the scope of the site. For more information, see this meta post" – Byte56
If this question can be reworded to fit the rules in the help center, please edit the question.

@AttackingHobo: If you read this, I wasn't asking specifically for C++, just in general. – orlp Apr 15 '11 at 22:49
-1, this isn't really an answerable question. All 3rd party frameworks have their plusses and minuses, and it's up to you to do the research on 1) what you want to accomplish and 2) how quickly you want to get it done. The tools to quickly get a grip on programming to make pong are not going to be the same tools to make a 3D action game. Also, there are a lot of "getting started" questions. – Tetrad Apr 16 '11 at 19:23
@Tetrad: True dat, but usually when I ask something on stackexchange is because the rest of the internet didn't answer my question. I'm sorry for this (ab)use of the system, but I don't doubt it will happen a few times more :) – orlp Apr 16 '11 at 22:29
up vote 3 down vote accepted

Try to keep your first attempts as simple as possible. Pong is a good start. You can use a 2D library such as SDL or (better) SFML to bring your graphics onto the screen.

For 3D, there's for example OGRE, which is pretty powerful. But keep in mind that making 3D games is much more time-consuming and difficult than 2D, so you should definitely practice with the former.

Alternative: You may want to have a look at Unity3D or Unreal Development Kit (UDK) if you want to get as quick as possible to a playable prototype. Albeit those are rather 'game makers' than low-level libraries and don't require you to code in C++ or Java, you still have to code respectively script your game logic.

share|improve this answer

I wouldn't recommend either Java or C++ unless you are already very familiar with those languages. The language I would recommend is Python, and the most obvious game library for that language is PyGame:

Another game development tool I am thinking of starting to use is Love2D, mostly because I have started programming in Lua:

That's for 2D games; if you want to develop 3D games then going with Unity is a great place to learn:

And then while I have no personal experience with C# a lot of people say good things about learning game development using XNA.

share|improve this answer
Hm, I don't think lua or phyton are good for game development. Both are interpreted languages and performance simply sucks IMO. These languages are good for scripting, but not for continuous performance critical tasks as physics, collision or even rendering. – Marco Apr 16 '11 at 10:20
I agree that you shouldn't use an interpreted language for low-level stuff, but that's what the game engine's for. You wouldn't be writing rendering code because the engine already does that. You say those languages are good for scripting; well that's precisely what you're doing when working with a game engine. – jhocking Apr 16 '11 at 11:51
It depends. My game engine (libGDX) let´s me do low level stuff. A famous example is collision detection. But also this depends on the genre of the game. A 2D shooter would need more collision detection than a 2D rpg. Tasks like pathfinding with A* might also get slow with an interpreted language. – Marco Apr 16 '11 at 17:00

I did an answer for a question like this as well, maybe you can get more out of this one:

What good 3D graphic rendering engines are out there?

share|improve this answer

First you should choose your programming language.

I can recommend Java, not only because of it's ease, or C++. You should choose the language, which is most familiar for you. Don't worry about performance. Java and C++ are extremely performant, if you keep some performance rules.
I like java more so I use it. I can't recommend engines in C++, because I have no experience there.

For learning drawing and other basics I would start with java2D or the equivalent C++ engine. This way you understand the basics of game development such as the main loop, rendering and input. These tasks are normally taken by the game engine.

Open Source Game Engines in Java:

libGDX - nice and fast library for developing games simultaneously for PC and android
Slick - Also good and easy to learn
Java2D - built in java 2d graphics engine

jMonkeyEngine - famous 3d engine

share|improve this answer
I have no java experience, but I'm getting more and more interested in it. It seems to be a bit like a compiled Python (my favourite language) with fixed types. I like the batteries-included mentality of Python, and the same seems to go for Java too. Can java be compiled to native machine code (I don't like to force my end users to install a interpreter or VM, that's what I dislike about Python too)? – orlp Apr 15 '11 at 22:42
@nightcracker: Java runs in the vm. You can't run something without environment. Did you ever start a .exe on Linux? But I think it is worth the installation. Keep in mind: You can develop simultaneously for PC, mac and Linux. It isn't possible with c++ without code changes, I think. Minecraft is written in java and it has nearly 2 million users, so don't mind about the vm installation thing. ;) – Marco Apr 15 '11 at 22:49
I know. Yet it still bugs me :) The Java code is compiled to machine code for the VM, can't be it compiled to native code, basicly moving the VM to compile time? – orlp Apr 15 '11 at 22:51
@nightcracker: There are some programs who compile java into native code, but they compile also the vm which results in very very big files. In addition these 'compact' vms are unstable and so on. Compiling java into c is imo not possible, because of the different structures of the environments. – Marco Apr 15 '11 at 22:57
Thanks, that answers my little OT question. So it's the same as with Python, you can make a frozen binary which includes the interpreter, but compiling to native machine code is impossible. – orlp Apr 15 '11 at 22:59

Check this site for a long list of libraries. The best thing is that these libraries are categorized under Physcis, AI, GUI, Networking ....

He provides descriptions and sometimes examples or at least from where you can get the library.

Also, you can check this for free open source libraries

share|improve this answer

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