views:

662

answers:

8

This question is directed to anyone out there that is just starting in hobby game development. The first thing that comes to ones mind is:

Which language/framework should I use?


List of solutions:

  1. Adobe Flash
  2. Microsoft Silverlight
  3. Blitz3D
  4. Blender Game Engine
  5. Devkit Pro
  6. Unity 3D
  7. Torque 3D
  8. Allegro
  9. Game Maker
  10. IndieLib
  11. Apocalyx
  12. SFML
  13. Multimedia Fusion / Games Factory
  14. MOGRE
  15. Microsoft XNA -> done
  16. OGRE -> done
  17. pygame -> done
  18. pyglet -> done
  19. jMonkey Engine -> done
  20. Custom -> done

Answer template:

Framework Name (Linked)

Pros:

  • Pro1
  • Pro2
  • ...

Cons:

  • Con1
  • Con2
  • ...
A: 

Pro's for XNA in my opinion are that XNA apps can run on Xbox360 in addition to PC, and you can pick your favorite language from anything supported by the .NET Framework - which is quite many.

Jani Hartikainen
I know (from my experience) that to run a game in XBOX360 you must buy a creators club card. Not that this is a big deal, just a side note. ;)
pek
Yeah, it about $99 for a years subscription, which is not that much. If you make your game for windows then you don't really have to change anything to make it work on xbox which is really good.
Spidey
$99 each year to be able to install something on my own hardware? hmm, not interested for hobby developments.
BerggreenDK
+1  A: 

The pros of any framework (gaming, web, etc.) is that they remove the unnecessary boilerplate code you'd have to normally write.

The cons often come up later on, once you want to go beyond the capabilities of the framework it can become very difficult. With many of the more complex frameworks, extending their functionality to make it do something it wasn't designed to will results in you having to write a lot of your own boilerplate code.

Soviut
+6  A: 

If you have the time, do it all yourself. It's worth the experience and you'll learn a lot, instead of how to work with framework X . ;^)

Pros

  • Full Control
  • Strong Learning Experience
  • Consistent code between game engine and program
  • Tends to be well-suited towards the application it is applied towards.
  • Supports any language/environment

Cons

  • High difficulty
  • No online documentation
  • Generally, less generic. Harder to apply to other games.
  • Harder for other people to use.
  • Probably buggier than more popular frameworks.
  • Not well-tested.
  • Harder to get help.
Toad
+1; Nothing beats writing a framework from scratch when you're starting out with game programming; it really teaches you the fundamentals.
Chaoz
Nothing beats writing a framework from scratch when you're starting out with game programming. It greatly ups the chance that you'll never complete an actual game and will give up in the middle of building a framework that doesn't really fit the game all that well anyway (after all, if your first game, you don't exactly know how to build it do you).
John Munsch
thats typical for programmers who aim too high. "Yes I want to make the next 3d fps hit etc etc". If someone starts off writing an arkanoid style 2d game and indeed starts at the bottom (instead of relying on a prefab framework) they might actually learn how the cogs turn instead of how framework x does something
Toad
@Chaoz : Absolutely! All that matters is, YOU made it work! Its YOUR code. A simple game is running on YOUR engine! There is nothing like that! :)
Senthil
@John and reinier : Of course. If someone who has never written a 2D/3D game, and aims to develop the next commercial version of Doom or Crysis or something else, its a different matter. But it is not the same for getting your own simple 3D maze or sprite-based racing or some other technically simpler game. The important thing is, you wrote it and it works!
Senthil
+4  A: 

OGRE (Object-Oriented Graphics Engine)

Pros:

  • Tons of 3D features
  • Cross-platform, uses DirectX or OpenGL
  • Plugin architecture for even more features
  • Does not try to be an everything-engine, only a graphics engine (doesn't even try to handle input, as many graphics libraries tend to do)

Cons:

  • Uses the Singleton pattern
  • Very hard to do 2D or primitive rendering (individual polygons, lines, etc)
  • Tons of code makes the learning curve quite steep
Ricket
Thank you! These are the type of answers I was looking for!
pek
"Many config files and such are XML based" this point is wrong for a fact thus removed. Ogre has no mandatory config files (though two optional kinds are recognized) and no config file is XML based.
haffax
+6  A: 

Microsoft XNA Game Studio

Pros:

  • Uses .NET languages; managed memory, ease of the Visual Studio environment, etc.
  • Good mix of high-level and low-level
  • Supports both 2D and 3D very well
  • Is proven; look at the Xbox Live Arcade, all of those games are made with XNA
  • Games can be easily run on a networked Xbox

Cons:

  • Uses .NET languages; can't use Java, C++, etc.
  • Not too many resources (i.e. books) out yet, though it is easy to learn and use so that may not be an issue
  • Windows-only. Mono (on Linux) doesn't support XNA at all.
  • XNA 3.0 was released less than a year after 2.0, and now we're at 3.1; frequent changes like these can hinder documentation, i.e. books get outdated quickly and many things break when upgrading a 2.0 game to a 3.0 game.
Ricket
Just for the sake of completeness, could you add a link for every framework? Thank you very much.
pek
C++ is very possible, not sure if mixed assemblies can be made/used. And there are XNA port efforts, some with succes.
Dykam
DirectX Redux....
Chris Kaminski
@darthcoder well, yes and no... it's MUCH simpler than DirectX ever was, though maybe only a step up from managed DirectX (I never used it); and of course, the xbox 360 support is a highlight.
Ricket
@Dykam are you sure c++ is possible? I would definitely debate it, and I can't find anything on Google to suggest it is possible...
Ricket
+4  A: 

pygame

Pros:

  • Easy to get started and create something visible.
  • Cross-platform.
  • Lots of open source games available to inspect the source.
  • Python language's pros (flexibility, dynamic typing, strings/arrays/tuples, etc.).

Cons:

  • Performance-wise does not scale to very large games (which hobby game development rarely is).
  • Mostly suited for 2D, although 3D is possible.
  • Difficult to distribute as closed source.

Also SDL could be inserted as pros and/or cons.

joukokar
Could you please provide more details about *"difficult to distribute as closed source"*?
Cristian Ciupitu
I guess I meant it more like "stand alone executable". Although there are py2exe and such, I haven't had good experience with them. Distributing without the source should be easily doable using just the .pyc files and distribute it with python (still bit more work than native apps).
joukokar
+3  A: 

pyglet

Pros:

  • Low difficulty
  • Cross-platform
  • OpenGL accelerated graphics by default
  • Further OpenGL graphical enhancements easy to add
  • Python language

Cons:

  • Less well-known than pygame
  • Game 'loop' is a bit unconventional
  • OpenGL knowledge required for advanced graphics and to maximise performance
Kylotan
+3  A: 

jMonkeyEngine

Pros

  • Uses Java; managed memory, highly supported in many mature IDE's (Eclipse, NetBeans, etc.), highly portable
  • Good mix and high-level and low-level
  • Modern 3D scenegraph
  • Built atop LWJGL, a very mature and well-working game library
  • Very lightweight; doesn't add very much overhead
  • Built in 3D model loading in a variety of formats.
  • Built in modern node-based 3D scenegraph.
  • Easy to use.
  • Open source; constantly evolving and improving.
  • Includes culling, collision checking, etc.
  • Has the option to save and read its own ultra-compact, ultra-fast binary model format.
  • Full list.

Cons

  • Uses Java, so compiles JIT and can therefore be a bit slower than C++ and other options.
  • Hasn't been used in many commercial apps (and therefore not as "proven").
  • Has no attached editor of any kind, everything must be done in pure code.
  • Difficult to do 2D games (for that you could try Slick).
Eli