5/20/2011

Creating a game

Creating a video game is no easy task.

My interest towards videogames began when I was a little child and I've always been curious about how I could move around a 3D character, how that magic "virtual world" was actually built.

And this interest soon lead me to game programming and game design. Now that I have experience with different frameworks and tools that can be of help in creating a game, I would like to focus on an important part of a video game: the "game engine".

This term is actually a bit too general, because a game engine is made of multiple parts (or even multiple softwares) which do different tasks. There's a software for rendering 3D scenes, one for input (keyboard/joystick) control, one for physics to move things around, one for audio and many other could be added.

There are sometimes softwares that handle all or part of this tasks and are thus referred as "game engines", but many other do only one or two specific tasks and a programmer would have to choose which one to use and build a personal "toolset". (This way usually gives a better range of choices amoung different options, but is a bit harder to implement)

Here's a list of some of the software I used with their cons and pros in my opinion. :)



Panda3D is a software which takes care of 3D rendering, physics and audio and requires an avarage programming knowledge with Python.

Python is one of my favourite programing languages so I gave this software a try as soon as I found it. And it was a really good experience!

Pros:
  *It uses python :)
  *It handles physics, audio and rendering out of the box
  *Very high flexibility and fast development times
  *Very good for rapid prototyping

Cons:
  *Little choice on which library to use for GUI, Physics and audio.
  *May not be as fast as other rendering engines.
  *DirectX is poorly supported compared to OpenGL



Ogre3D is another top quality open source library for C++ which, however, handles only 3D rendering. This is not necessarily a bad thing because it gives you the chance to freely choose other libraries for the other tasks required by a videogame.

The programmer will have to write "glue code" to integrate Ogre with other libraries, which may require a bit of work in C++, which maybe isn't the friendliest language for beginners. :)

Pros:
  *Extremely fast and reliable
  *Well structured and very nice to program with
  *Support of a wide range of shader languages
  *Seamless support for DirectX and OpenGL

Cons:
  *A bit steep learning curve (May be confusing at first)
  *Slower development times compared to Panda3d (Because of C++)
  *Not suitable for rapid prototyping

Blender is an open source software for 3D editing and animations. It's a great alternative to expensive and commercial products like Maya3D.
 
But it's more than this. It also has its own "game engine" which requires no programming experience at all.
All the game logic is handled by "logic bricks" which are extremely easy to use. For more difficult tasks, there's a python api available.

Pros:
  *Easy to use (No programming experience required)
  *Excellent for rapid prototyping
  *Very good for beginners.
  *Handles everything out of the box

Cons:
  *It uses a quite slow and outdated engine for rendering
  *Definitely not a good choice for big projects
  *Logic bricks can get messy and slow for larger games



Similiarly to Ogre3D, Irrlicht is a rendering engine programmed in C++, but it can do some basic collisions and GUI.


I've not worked much with this engine so I can't really state its pros and cons but here's how this engine looked like:

Pros:
  *Easy to use (Compared to other C++ libraries)
  *Reliable rendering engine
  *Support for GUI and physics out of the box

Cons:
  *Does not support important shader languages out of the box (Cg)
  *Slower rendering compared to other engines
  *Its structure can become troublesome for bigger projects

Nessun commento:

Posta un commento