January 24, 2007
For some reason a lot of people seem to think that we used the Torque engine to create Tribal Trouble, and some even ask us for help. I don’t know why they think that, because Torque is mentioned nowhere on our site (except here). It probably has something to do with the fact that Tribal Trouble is also sold in the GarageGames shop, and they have developed Torque. But before Adam Savage and Jamie Hyneman make a show out of this myth, let me bust it once and for all: Tribal Trouble does not use Torque! It isn’t even written in the same language!
“So what engine do you use?”
In terms of commercial game engines, we don’t use any. Most people assume that we went out and bought an engine, and created Tribal Trouble based on that. Actually, Tribal Trouble is written completely from scratch by Oddlabs, engine and everything. Jacob even did his bachelor thesis on terrain generation.
“Aah, you wrote all that C code yourself”
Yeah… except it isn’t C. When we set out to create games back in the old days, we were determined to show that it is possible to write a game in another language than C/C++, thus being able to use a language that works for the developer and not against him. Java was the obvious choice since it provides automatic memory management, a cross platform virtual machine, stack traces for those annoying crash bugs, JIT compiling and a lot of other goodies.
“So you use Java for scripting and wrote the engine in C?”
Again, this seems to be a widely spread assumption, but it is not true. Everything is written in Java. The engine, the GUI, the AI… even the server.
“But isn’t Java way too slow for big games?”
The Mythbusters could do an entire season on Java myths like that one. Many years ago it was true that Java was very slow, and it would have been a horrible choice for game development. Many people just haven’t realized that Java has developed since that dreadful Java 1.1 based virtual machine Microsoft put in Windows 2000 and refused to update so they could kill off Java and release their own language.
“Aah, so you used Java 3D”
No! To create a game like Tribal Trouble, we need direct access to the hardware rendering. This is best done with OpenGL. Since Java doesn’t have direct access to the OpenGL libraries, we use a very thin layer of C to get access to those. To do this we use a library called LWJGL. It was started by our friend Cas from Puppy Games, but we have since joined the project and Elias has written the majority of the code.
“But LWJGL uses C and you said the engine wasn’t C!”
Yes, and it isn’t… LWJGL is just a sort of translator that sends the Java OpenGL calls on to the Graphics drivers. There is no engine code in that.
“Why not just use JOGL?”
First of all, JOGL didn’t exist back when we needed a library. Second, with LWJGL we have a lot more control because Elias is one of the main developers. If something needs to be changed or fixed, we don’t have to wait for others to accept our bug reports. This way, LWJGL has also become very stable, since we have actually created a game using it and thus made the changes/fixes in LWJGL that was necessary.
“So when Java is so easy, then you can release a new game twice a year”
Java does make a lot of the development easier, but it isn’t some magical drag & drop program where you just click “create game”. It takes a long time to design and create a game. It also takes a lot of money, and even though Tribal Trouble sells reasonably good, we haven’t quite filled the big money tank just yet. We use a lot of our time taking care of customers and maintaining/updating Tribal Trouble so we can get more publicity and better conversion rates. We also use a big part of our time doing projects for other companies. We have to do this since the sales of one single game can’t pay for 4 developers and 2-3 freelance artists as well as administrative costs of running a company. We would love to release more games, but right now we are focusing most of our time on big projects for other companies.