3
\$\begingroup\$

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.

\$\endgroup\$
4
  • \$\begingroup\$ @AttackingHobo: If you read this, I wasn't asking specifically for C++, just in general. \$\endgroup\$
    – orlp
    Apr 15 '11 at 22:49
  • \$\begingroup\$ I did an answer for a question like this as well, maybe you can get more out of this one: gamedev.stackexchange.com/questions/10802/… \$\endgroup\$
    – Marnix
    Apr 15 '11 at 22:54
  • \$\begingroup\$ -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. \$\endgroup\$
    – Tetrad
    Apr 16 '11 at 19:23
  • \$\begingroup\$ @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 :) \$\endgroup\$
    – orlp
    Apr 16 '11 at 22:29
3
\$\begingroup\$

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.

\$\endgroup\$
2
\$\begingroup\$

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: http://www.pygame.org/news.html

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

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

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

\$\endgroup\$
5
  • \$\begingroup\$ 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. \$\endgroup\$
    – Marco
    Apr 16 '11 at 10:20
  • \$\begingroup\$ 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. \$\endgroup\$
    – jhocking
    Apr 16 '11 at 11:51
  • \$\begingroup\$ 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. \$\endgroup\$
    – Marco
    Apr 16 '11 at 17:00
  • \$\begingroup\$ To be honest, I completely disagree. Python is super slow and if you think minecraft has lag problems, just imagine if it were written in python. \$\endgroup\$
    – user124114
    Aug 18 '19 at 20:44
  • \$\begingroup\$ This is a very old answer. I mean, I said "I have no personal experience with C#", which while true then, well, I've since written the book Unity in Action amazon.com/Unity-Action-Multiplatform-Game-Development/dp/… \$\endgroup\$
    – jhocking
    Aug 19 '19 at 1:37
0
\$\begingroup\$

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:

2D:
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

3D:
jMonkeyEngine - famous 3d engine

\$\endgroup\$
5
  • \$\begingroup\$ 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)? \$\endgroup\$
    – orlp
    Apr 15 '11 at 22:42
  • \$\begingroup\$ @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. ;) \$\endgroup\$
    – Marco
    Apr 15 '11 at 22:49
  • \$\begingroup\$ 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? \$\endgroup\$
    – orlp
    Apr 15 '11 at 22:51
  • \$\begingroup\$ @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. \$\endgroup\$
    – Marco
    Apr 15 '11 at 22:57
  • \$\begingroup\$ 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. \$\endgroup\$
    – orlp
    Apr 15 '11 at 22:59
0
\$\begingroup\$

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 site for free open source libraries.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged .