Today I got the pleasure of interviewing a couple of the guys over at Oddlabs, covering their IGF finalist entry Tribal Trouble. Tribal Trouble is a colorful 3D RTS title that allows you to play as either a group of land bound natives or stranded Viking raiders as they clash for control of a group of tropical islands. This title was nominated for Technical Excellence.
[size="3"]How about introducing the team to all of the readers out there.
Sune: My name is Sune Nielsen and I'm one of the 4 founders of Oddlabs. I am a coder and have primarily worked on GUI, AI and gameplay coding for TT, although the past 6 months have been spent on PR and administration.
There is Elias Naur, which is one of the main developers on LWJGL, and does much of the core engine work as well as network code and Mikkel Jensen, who has sort of the same coding jobs as I do.
And then there is Jacob Olsen, who has done the terrain generation code and also takes care of our website as well as a lot of administration. Jacob has done the GUI artwork and the website, but all modeling and animation is done by Chazeem Willets, which is a British freelancer we use. The music is also freelance (Mike Huang)
[size="3"]Congrats on making the IGF finals. How's it feel?
Sune: It feels great. We are really proud.
(Mikkel Jensen joins us)
[size="3"]How long has Oddlabs been actively developing games?
Sune: That's the difficult question... We have been together as a group for about 5 years, but not all spent on developing games, at least not TT. We started kind of slow, toying with demos and stuff like that and then about 4 years ago we started planning a game, which turned out to be way to big a project. 2-3 years ago we finally settled on doing TT.
Mikkel: 5 years ago we started with more people, I think the number topped off about 3 years ago. There were a lot of people doing almost nothing.
Sune: Back then it was only a hobby.
Mikkel: Then we cut the group down to us 4, and created Oddlabs
Sune: The company itself is only about 1 1/2 years old.
[size="3"]What is behind the name Oddlabs?
Sune: We wanted a name that wasn't to serious about itself, just like the games we like to do. So we picked one that said we are crazy guys running around in lab coats and creating silly games.
[size="3"]What's the basic idea behind Tribal Trouble?
Sune: Basically we wanted to bring the RTS genre down to the more casual type gamers, cutting down on the micromanagement and focusing more on simple strategy without making it void of strategic choices. Kind of like a game that can be used to introduce people to RTS games, and still be fun even though you master the genre. One could also say that we wanted to make games for casual gamers, but didn't want to do another puzzle.
Trying to bring casual gaming a bit closer to AAA games or the other way around, however one likes to see it. I guess that's about it
[size="3"]How did the original idea come about? How long ago?
Sune: I think it was about 2 1/2 years ago. We finally boiled our original huge ideas down to something we could manage, and thought sounded interesting, which also fitted into our business idea of hitting in between casual and hardcore. I can't really remember much about what exactly triggered the idea I played a lot of mega-lo-mania, because I loved the idea of the unit as a resource, and wanted to see if we could do something like that.
Mikkel: And we already had the island code from another game that we wanted to reuse. And what's the first thing you think about when you have a tropical island?? Vikings of course
Sune: Ah yeah, plus the game fit perfectly to our problem of not having a lot of artists.
Nathaniel: How so?
Sune: It has been possible to generate a lot of the content procedurally. All islands and their textures, the sky, the water... nothing but math. That would not have been easy to do in a city environment.
(Jacob Olsen joins us)
[size="3"]Were you guys ever pushed to finish the game or achieve a certain milestone? Or were you able to keep things evenly paced?
Sune: We have always put independence very high on our priority list, so we actually said no to venture capital, because we didn't want anyone setting milestones for us. We did set our own milestones to keep ourselves motivated though.
Nathaniel: You were offered venture capital for TT?
Sune: We actually got 3rd place for a competition for writing business plans here in Denmark . And a government funded venture capitalist offered to fund us, but we didn't like the price. Not for what they had to offer anyway
Jacob: Problem is, a fresh startup involves a lot of risk, so venture capital comes at a high price. Mostly giving away most of your company and committee majority.
Sune: And that for less than $200,000
Jacob: So generally our plan is to wait as long as possible (hopefully indefinitely) in order to become more "stable" before selling any parts of the company.
[size="3"]What development tools were used in order to make Tribal Trouble? (both in-house and externally produced tools)
Sune: Well, most of the game has actually been done with VIM and zshell
Jacob: Yeah, no kidding
Sune: Yep, we all run Linux. Well, actually Mikkel is coding on a Mac now, but there he also uses VIM.
Mikkel: For test reasons... We also coded our own tools for importing graphics.
Sune: And our artist uses 3ds max.
Nathaniel: So java allows you guys to worry less about porting and testing on other platforms?
Sune: Yeah, the real porting problems have been when perfecting LWJGL, because it wasn't really done when we joined the project. Elias did all the Linux and Mac coding. We expect it to pay off big time in the next game.
Nathaniel: Are you guys (except for Mikkel) all totally running Linux, no windows at all?
Sune: Well we have windows, but only for testing purposes and when there is a stupid program that has to use windows. I don't even have windows on this computer.
Mikkel: We all use Linux at home.
[size="3"]What do you guys think of java/lwjgl? Why did you choose it? If given the chance to go back in time would have you chosen something else for TT?
Sune: There is no way I would have chosen a language like C or C++ instead. Java is so much more easy/safe to code in. I'm sure it has saved us countless of hours.
Jacob: We settled with lwjgl after trying out a couple of other java opengl/openal bindings.
Sune: I think we have proven that the myth about java being too slow has become invalid and now that it runs fast enough, why not take advantage of the improved development advantages.
Jacob: Whenever there's a flamewar about java being slow in developer forums, there's a pretty good chance someone will mention Tribal Trouble We have seen this countless times by looking at referrers to oddlabs.com
Nathaniel: Haha, awesome.
[size="3"]What were some of the major design issues? How were they solved?
Sune: Is everything a valid answer? I could mention the pathfinder. I think we completely redid that 3 or 4 times. Having 900 units on a map that size is very expensive. We tried several techniques, but ended up with doing a sort of region pathfinding. But there were a lot of problems with getting it to work without weird stuff happening.
Jacob: http://oddlabs.com/technology.php?id=1 (pathfinder debug screenshot)
Sune: The network code was also hell. Especially when having to find players behind a NAT. Our server tries to match direct lines between the players. When a player can't talk to everybody, we have to tunnel it.
Jacob: Auto-generating terrains that were guaranteed to be playable also proved a bit tricky, had to invent a few tricks. http://oddlabs.com/d..._generation.pdf for some technical reading.
Mikkel: And our replay function...
Nathaniel: How did you implement your replay function?
Mikkel: Every input to the game is logged. Input could be mouse movement, network, display modes and so on...
Sune: Yeah, I think that is absolutely one of the coolest features in TT, from a developer standpoint.
Jacob: Makes debugging a whole lot easier.
Sune: Logging all input allows us to exactly replay a game so our bug reporter just sends the last log and we replay it to see what happened
[size="3"]What are your favorite parts of the game?
Sune: I just love the models and the animation, especially the chicken, chaz did an awesome job. Just the kind of humor we wanted.
Mikkel: Being able to play against other human players
[size="3"]Have you guys looked beyond Tribal Trouble yet? What's next?
Sune: Hehe, we are toying with a few ideas, doing a bit of prototyping.
Jacob: Trying to come up with some uses for Elias' new brilliant physics engine.
Sune: We have been working a lot with physics.
Nathaniel: Hah sounds good, you guys have any demos?
Sune: No, we are not that far yet. Most of our time since the launch has been spent on PR, trying to actually sell something. Not a usual job for 4 coders.
Mikkel: We didn't do much prototyping for TT, we will try that for our next game.
[size="3"]And lastly, is there anything else you would like to add?
Sune: I can always encourage coders out there to try joining the indie scene and make fun games for the people. We are always happy to help out fellow indies. We have received a lot of help, so we really want to support the community and hope others do as well.
Mikkel: And use java