January 24, 2007
Mythbusting Tribal Trouble
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.
January 25th, 2007 at 6:20 am
[...] There’s a great post over on the Oddlabs Game Development Blog. There are a few persistent rumors floating around about their game, Tribal Trouble. [...]
January 25th, 2007 at 10:44 pm
[...] Java and 3d not impossible Oddlabs busts the myths about their game Tribal Trouble (which uses GL and Java). [...]
January 29th, 2007 at 1:04 pm
Maybe the reason for the rumour is the box at the bottom of the Torque Engine wikipedia article which lists Tribal Trouble. While I think the box is meant to just list games published by GarageGames it could lead to people thinking its a list of Torque using games due to being on a page about Torque.
June 6th, 2007 at 4:08 pm
I didnt really think a lot of people said that, but maybe i am wrong, perhaps a lot more people think that OL used torque. Garage games rocks by the way!
August 9th, 2007 at 9:46 am
Well, I don’t like Java language too much, but I agree with you that it’s a good choice. Anyway, I really think that using C++ in the right way, it isn’t against the programmer at all, and probabily it gives the same means java gives you… Of course, not a jvm, which is really nice for game’s distribution.
But, hey! Tribal Trouble is the proof that java for videogames works well!