Just as promised we managed to get an interview with none other than Lee ‘eihrul’ Salzman, the main programmer of our beloved Cube 2 Sauerbraten! No point in protracting any longer, here it is:
However, would you still introduce yourself in a few sentences?
I am Lee Salzman (a.k.a. eihrul), a 32 year old software developer from the USA. I have been involved with various offshoots of the Cube project for about 12 years now, in both as the lead developer and in supporting roles.
The first Sauerbraten release came out in 2004/2005 (according to sourceforge).
That’s 9 years ago and not many people from the first days are still around.
Can you recall how everything started out, how you got involved in the making of Sauerbraten?
To answer that, I need to start back at the Cube project itself, and even a bit before. Wouter (a.k.a. aardappel – and no, he’s not German, he’s Dutch) and I had known each other since about 2000. Both of us were really interested in programming language design, and he being the grizzled programming languages veteran, I sent him an email one day asking about one of his designs, and we’ve been friends ever since. Wouter was also, importantly, a big fan of Doom and QuakeWorld, but he was always underwhelmed by the mapping tools.
So one day in 2001, Wouter shows me this tiny little engine/map editor he was working on, Cube, which itself was a successor to other little engines he had been working on before. The details are a bit hazy even for me at this point, but the basics like cooperative map editing and Quake-y gameplay grew from there rather quickly, and it wasn’t long before we had a cozy community of Cubers hanging out in our Cube IRC channel by late 2001. The fact that it had a built-in map editor with coop-editing was the main selling point then, but the fact that it was open-source also helped it gain some notoriety very quickly.
At the time, though, it only ran on Windows, as I was a die-hard Linux user, my first involvement was to rather quickly get it ported to Linux. And once I could finally run it, horror of horrors, I discovered it was using TCP networking, which caused the game to be laggy enough to seriously detract from multiplayer and coop-editing. Being initiated in the dark voodoo of socket programming, and finding no other good networking libraries that were compatible with Cube’s license, I decided to just write my own UDP networking library for Cube. A few days later, the ENet UDP networking library was born and Cube and other games have been running on that networking code ever since.
From there my responsibilities just gradually grew till by about 2005, Wouter and I were equally sharing development of the code, and there were a couple other developers involved, like Mike Dysart (a.k.a. gilt) who sadly have faded away by now. Around this time, Wouter has this cute idea for map-editing using almost exclusively the scroll-wheel of the mouse and also getting around the room-over-room limitations of the Cube engine. This was the basic idea of the octree, that you have a tree full of cubes where you could squish the edges of them to deform them into various new shapes. The eating of sauerbraten may have even been involved at the time he was thinking this up.
He had been working on a prototype of this idea for a while, based off the Cube code-base. Because the world representation was a bit more flexible, many of the things we did in Cube wouldn’t work any more. There were still some hard problems like how to do collision detection or how to actually light the world that I was called in to work on, and I got my hands quite dirty with it quite soon. Not too much later we had coop-editing and multiplayer back in, and we were ready to jettison Cube off into history to make way for Sauerbraten, what Wouter and I both saw as a much cooler replacement.
Has Sauerbraten become the game you always envisioned it to be? What did you expect from it when you started out?
As far as gameplay is concerned, the gameplay has remained fairly similar all the way back to Cube. Wouter had always meant Cube to be sort of a QuakeWorld-redux, and whether or not he succeeded, we just got stuck in the momentum of preserving the gameplay we had. Over the years we made some course corrections to the layout of the guns and the physics, especially when we transitioned from Cube to Sauerbraten, but the gameplay remains quite true to the basic run-and-gun it was even in the age of Cube. My role in that has always been more of a steward than as a designer, as Wouter is responsible for the basic design, though I have been involved with tweaking it over the years.
As far as the technology, I fondly regard Sauerbraten as one of the coolest technology projects I’ve been involved in. Starting from the humble little idea of a tree of deformed cubes, it has grown into this mapping behemoth with so many interesting corners to it. What can seem to many as a limitation, the octree, had actually allowed Sauerbraten to take some interesting approaches to physics, lightmapping, occlusion, and other various rendering technologies that wouldn’t have been easily possible with a more Quake-like BSP or mesh engine. I don’t want to bore people too much with programmer wonkery, but suffice to say that by now Sauerbraten’s engine has exceeded in many ways where Wouter and I had ever imagined it progressing to.
Do you have any plans for the future of Sauer? Will there be more releases?
If so, will they only contain new maps or will there still be changes to the core of the game?
As long as people are playing and mapping for Sauerbraten, there will be new releases. However, the gameplay of Sauerbraten is, in a sense, done. The core gameplay can’t be changed without angering a large part of the competitive community. Most attempts I have made to add new and interesting multiplayer modes have also failed to make a dent in the popularity of CTF. So, I don’t anticipate Sauerbraten’s gameplay to change much in the future.
However, a code-base doesn’t just maintain itself, on its own, and as the computer ecosystem changes around Sauerbraten, I plan on keeping Sauerbraten up-to-date and running on that changing ecosystem, which will necessitate new releases for that alone.
There are, however, some still big changes I want to make, not so much to the gameplay, but for mapping. Before the next release, I want to have a viable system of map-downloading in place to get rid of one of Sauerbraten’s biggest limitations so far. Even though you can create custom maps in Sauerbraten, that being one of its biggest selling points, actually playing those maps has always been a bit of a pain. A map-download system will make Sauerbraten a bit less dependent on official maps, even though Sauerbraten by this point has far more official maps than people are even interested in playing.
The rendering engine will likely remain rather stable at this point, as well, because there is not much more that can be done without destroying the wealth of already made Sauerbraten maps and without destroying the high framerates that make Sauerbraten especially good for competitive play.
Many people have fallen in love with this game, have invested hundreds and thousands of hours into creating content, practicing, competing and offering various services like servers and leagues and many more things for this game.
Does it fill your heart with joy observing this?
I am always happy to see people enjoying the game, and ultimately seeing people play and talk about the game is what has kept me going and involved with the project for so long. I have made a lot of close friends through the project over the years, and it has been a very major part of life, taking up well over a decade by now.
In all these years, what was the craziest person/request/issue you ever had to deal with?
I don’t think I could really pick out any individual or thing that is specifically crazy, since any given crazy thing is usually redundantly requested or represented by more than one person more than one time. But, overall, most of the things that happened to the project and to me, in context, made sense and I could at least understand where these various people were coming from. Or maybe I’ve just developed a really high tolerance for craziness over the lifetime of the project.
There have been various tournaments over the past couple of years.
Have you followed any of them? If so, did the level of competition surprise you sometimes?
I used to be more involved with the competitive aspects of Sauerbraten in its early days, but just the level of drama involved with it gradually pushed me away, as just running the project had become quite dramatic enough. That said, I still do try to keep a rough idea of what is going on in the competitive community and listen to their concerns.
As far as the level of competition, yeah, the first few times I tried to play against competitive players has always been a rude awakening. It is easy to become complacent playing on public servers thinking you are a rifle-god because you are shooting all of these guys like they are fish in a barrel, but that’s more a reflection of how bad they are than how good you are. And then, well, playing against some of these competitive guys I felt like I was playing against an aimbot. That’s to say nothing of FFA modes, as I have almost no map-domination skills whatsoever…
I’m sure many people are very grateful for the game you have created for us.
Is there any way for us players to show our support?
Be it financially or just something else you need help with or could use some contribution?
As I have always maintained, Sauerbraten is a community project with far more contributors than just me, especially content, so the best way to think about giving back is ultimately to think of how to help the community. Recommend the project to friends, write reviews, make fan or informational sites, or most importantly… make maps. We always need new maps, as they are the lifeblood of Sauerbraten.
These days you seem rather preoccupied with the Sauerbraten fork TESSERACT that you are creating.
What is Tesseract, how is it different from Sauerbraten and what are your plans for this game?
Over the years, Sauerbraten has accumulated far too many sacred cows, in terms of its gameplay, its mapping system, and its core technology. Those sacred cows are simultaneously what endears it to the community, but also it is a lot of responsibility for a programmer and project manager to labor under. I wanted a chance to just dispense with all of these and pretty much just do what I wanted with no worries, then see what happened.
This all came about because I had an idea for a cool dynamic lighting engine, but it would break all existing Sauerbraten maps. From there I decided there were a lot of other things I would change about the gameplay and technology if I didn’t care about compatibility with all that content or what players would think about the changes. Beyond the technical, I just decided to ditch all the gameplay aspects I didn’t like, and start anew with the ones I was personally fond of.
So, Tesseract is not a Sauerbraten replacement like Sauerbraten was for Cube. Tesseract is more a “what if” parallel development of Sauerbraten, and perhaps a more future-ready version of it. It’s probably not going to impress many people, but for me, it’s a much needed opportunity to try out some core changes without disturbing all the good things Sauerbraten already has going.
Where it is going in years to come is tough to say, but we’re steadily working on getting the game presentable and there may be something of a public release in the not-too-unsoon-ish future.