Sunday, November 18, 2007

Choosing the tools

A game consists of 2 parts: the code and the data.

The code is how the game runs and the data is the artwork of the game.

Since I've been working with Blender for a few years now, I'm going to use Blender as my main artwork tool. Therefore, I need to do decide which game engine to use before I can start throwing my time away.

I already know 2 game engines: Crystal Space (CS) and Ogre3D. From the reviews I've read, CS seems to be better suited for my game because it's more tailored towards games, whereas Ogre3D is more general.

I also really like that fact that CS has extensive Python plugins. This means that I can write my entire game using just Python. Being able to use Python is crucial to me because I hate the complicated template classes of C++, not to mention the need to recompile your code every time you make a change.

Since no game is complete without some GUI elements, I was also pleased that CS provides a plugin for Crazy Eddies's GUI system, this means that I won't have to write my own GUI system just for my game -- thank God!

Furthermore, there is also the problem of map editing, i.e. how am I going to create the maps for the players. Since this is a monopoly game, I think 2D representation of the maps should suffice. This just means that I need a drawing tool for this task, a tool that can create data structures that can be directly used to create a 3D representation of the Monopoly world. There are quite a few open source drawing programs available, e.g. xfig and dia. However, I'd have to write a parser for their data files to be able to use it, and that's probably a non-trivial task by itself. So I think I will have to write my own map editor. The thing that immediately comes to my mind is Jython. Jython is a Java implementation of the Python interpreter, and it can access all the standard Java libraries. Since I'm a huge fan of the Java Swing library, I will be writing Python code that uses the Swing library to do my map editor, and save the map data structure in Python pickled format so that my real Python code can use it.

So, here is the summary of my main tools and how I intend to use them:
  • Blender: Creating 3D models
  • Crystal Space: Game engine
  • Python: Main programming language
  • Jython and Java Swing: Map editor
There will be other libraries that I will need to use for other things and I will talk about them as they come up.

Stay tuned!

No comments: