Interview with id Software's Timothee Besset
22 August 2004 by Dustin Reyes
When did you start programming?
In the early 1990's.
Any particular projects or just school?
In school; toying around with any computer I could get my hands on, mostly on friends' computers making tron-like games. There are no grade equivalents between French schools and the US, but I must have been 12 or 13 when I really started doing stuff.
When did you decide you wanted to go into game development?
I never really decided...
It just kind of happened?
Yeah, it kind of happens, it's something that seems to pick you up. I followed very regular, general engineering lessons. My major is computer science; I did chemisty, mechanics, fluid mechanics, but I was usually more interested in computer science.
What was your first game development project? Radiant or?
I had done a few other things; my first really serious one was QERadiant, and that was writing content-generation plugins, because we were at that transition from software to hardware renderers where we started to realize we could be putting a lot more triangles in the games, so suddenly people were looking at creating new shapes that have more triangles: a plugin that can make some stairs, or make a sphere, cones, and all kinds of shapes that just looked nice and had a lot of triangles. So I started with that, just basic geometry algorithms to generate shapes and manipulate them. And that's how I got to know Robert Duffy, until he finally got hired (because he was a contractor for Quake 3 development on the editor) and needed someone to take over on the public tools release and support the community. At that time I was still either in school or I had spent a year and a half in a software-engineering company. So I was doing that on my free time; it never got really serious until I started as an official contractor in 2000, when I took over after Loki's demise on Quake 3. That's where the transition really happened, where I decided that may be what I really want to do.
So how did the transition from Duffy's original Radiant to GtkRadiant occur?
The impulse for that came from Loki, because Bernd Kreimeier had decided that Loki needed to have the tools available on Linux. So he had committed the resources to have a port of the editor. They were starting it as their own project; since I had some time to spend on the editor anyway, we decided that the best solution was to try and go completely cross-platform. At the time it was really fairly new, because even now there aren't that many applications that are completely cross-platform; I can think of Blender obviously, but there's not that much stuff, especially editor tools that are very interactive.
Yeah like UnrealEngine3, all the previous Unreal engines all of the UnrealEds were all Windows-only, but sometime in the future...
They're supposed to get the tools cross-platform; I think that's a great move.
When did you get started using Linux?
I played around with it in school; mostly from friends of mine who were more on the system administration-side and networking; they would setup the student network, and we were hanging cables in between the student buildings and stuff like that, so that's when I got interested in it. I probably started running a Linux distribution and making it my main system in 1998 or 1999.
How did becoming id Software's official Linux port maintainer come about?
That's from Loki; it was Zoid, then Loki, and then I got the job. For a long time, actually, I was initially just doing editor stuff; then when Loki had to shut its doors, I had to take over the Linux stuff.
Now with regards to game development on Linux, where do you see its strengths and weaknesses, areas it needs to improve on, areas where it could be more useful that people tend to overlook?
Development environments are still an issue; I took the extra time to learn Emacs lately, and I think I'm really happy with it now, so I'm probably going to stick to that. I tried a lot of IDE's out there, and I've always been disappointed; for instance, Eclipse. I've seen IBM throw lots of money at Eclipse, but it's still Java and really slow, and it's probably very good to do Java work, but to do C++ I was really not convinced at all. There's the GNOME Development Environment, but it's completely oriented to people writing GNOME applications; they think about their own window environment instead of thinking general application development. Emacs is a bit more, "we don't care what you do or even if you're doing daemon and console applications, we just provide a good environment." It's really a great tool - you understand afterwards why it's so successful, why so many people talk about it, once you get the time to learn it. It's a really cool editor.
What about the compiler?
Well, I'm still only using gcc. I want to try the Intel compiler obviously; I also want to try, for the Mac, IBM's compiler. Right now I'm only running binaries compiled with O2, because the O3 binaries tend to explode, and the compiler craps out on code-generation, or generates bad code. When you have compiler bugs it really takes a lot of time to investigate, so you just trim down the settings to something that works. If I have some time I try to figure out why gcc is crapping out, but gcc is never a very easy compiler, especially the 3.4 transition. It looks like they made it more strict on language checks, which is a good thing and a bad thing, because it starts to crap out on things that are legal according to at least the Stroustrup C++ books. It has some major annoyances, and I would love to see some big names throw real money at gcc to make it go further to keep it up to par with other solutions. But on the other hand, it's not likely to happen because Intel has ICC, and on PowerPC IBM has its own compiler. Apple might be one of the best chances of seeing gcc continue to evolve, unless Apple can stomach ending up having to buy an IBM PowerPC compiler license.
What about the state of OpenGL drivers?
I only have NVIDIA cards. DOOM on the Mac, with an ATI card, is running fine; I haven't seen any visual glitches. I will obviously need to get an ATI card into one of my Linux boxes and check that. We tend to use the ARB2 path now; we used to have NV20 vs. R200/R300 paths during development, so we really had to check both cards, because they weren't doing the same thing. We do ARB2 systematically now, which makes things easier, so you can actually say "Hey the NVIDIA renders this fine, and it's the ARB2 path, so it should render the same [on ATI cards]." Things are looking pretty good on the driver-side now; I haven't heard much about ATI's new drivers; I know they have a closed-source driver release, but I've been an NVIDIA guy. On the PC and Windows in general I think we had a period where ATI had better performance, but that was mostly a hardware thing rather than a driver thing, and it looks like NVIDIA has picked back up, especially with the new card series. That's not all that makes up game performance anyway though.
What distributions do you run?
Debian, I love it.
Are there any UI annoyances or room for improvement?
Well, Debian is really for Linux nerds, because the configuration is really minimal; your GNOME and KDE all come with default settings, and you have to really set it all up yourself, but for a programmer it's really cool. I wouldn't recommend it to new users, but once you know how you want your system to run, it's really a good choice. I'll need to check out Gentoo. I setup Mandrake 10 for a friend and was really impressed: it recognized everything out of the box, and the NVIDIA drivers installed just like that. I think current distributions are starting to be a really good alternative, I think what we are lacking is user information. With Linux, the main issue seems to be learning it and finding answers. If someone who's pretty much computer literate decides to install a Linux box instead of Windows, he would still have to learn a few things. I think you can only do that if you have a friend who knows Linux; someone who sets up a distribution and helps him out, because he's going to ask, "Where's my MSN Messenger, where's my ICQ?" You still have to point things out to people, because the software line is completely different. You have to re-learn your complete application set, which is fine.
Does id have any percentages on how many dedicated servers are running on Linux?
We don't have exact statistics, but for Enemy Territory the number of Linux servers versus Windows is about 50/50; by Linux, I mean Linux and BSD, as they use the same binaries.
Why does id commit development time to a Linux client when so few others do?
id is both a technology and an art company, so we try to push the art and the technology to its edge on each game, and when you're into high-tech you want to make sure your game can run on several platforms, and you have some room to experiment with several architectures. We don't want to have a basic product, get it out the door, sell as many copies as we can, and then just do the next one. Everyone's putting a lot of soul into the games, and id has got enough money overhead to decide that they can afford to have game portsto show that technology is good on Linux and on Apple hardware. There's that and there's the general technical quality of your software: if you're forced into writing something that's portable out of the box, that forces you to make clean implementation decisions. gcc is pretty good with C++ as long as you do real standard C++, if you don't try to do weird C++ things that are pretty much extensions that Microsoft brought. It forces you to stay in a good C++ class of language. You don't catch the same bugs on one platform or the other, each works a bit differently, so it also gives you a better view. There are some things that the .NET compiler doesn't warn you about that gcc does. Also, I'm not very big on console development, but I think the Sony PlayStation series have a lot of gcc-based development environments, so that's also something we need to be aware of.
I remember that there were RTCW and Q3 PS2 ports...
We need to be ready for it, there's the PS3 coming.
GtkRadiant 1.5.0 just entered public beta with DOOM 3 support...
Yeah, William Joseph has taken over maintenance. Ever since I started crunching on DOOM I didn't have any time to spend on GtkRadiant, so he took over, and we wanted to provide a level editing solution that could work for DOOM 3. 1.5 is a pretty different version from 1.4; I don't think I've run any 1.5 builds yet, but the built-in editor of the Windows version evolved from Q3Radiant, not GtkRadiant, so its heavily non-portable. I would never have time to go through and make it portable *again*, so we decided to keep developing GtkRadiant, which we have already cleaned up and made fairly portable. Obviously there are some features that the built-in editor has that we don't have in GtkRadiant, dynamic preview of the lighting being one of them, but we might be able to find some solutions. I don't know what we might come up with, but there are some things to investigate.
What's the status of the DOOM 3 dedicated server and the client?
I think there's a very good chance we can get the dedicated server out with the next patch, because it's been running very smoothly in the DOOM 3 tournaments. We still need to polish it a bit, but it will get released pretty soon. I know that the server admins are waiting, and Linux gamers don't really care about it, but we have to follow our priorities. Since gold, the Mac port was definitely the big thing; it benefits both the Linux and the Mac version, but Mac had to come first. The Linux client is running pretty good, I'm getting surprisingly good performance compared to the Windows version, but I absolutely don't want to release something that's half-done or half-finished. I want to polish it; it should come together within a few weeks.