Bonjour! Today’s Inside the Vault is with Jean-Sylvere Simonet, our resident French programmer. I took four years of French in high school, so to make him feel more at home, I often converse with Jean in his native tongue.
Ashley: Je m’apelle Alain! (Alain was my “french” name in Madame Boucher’s class)
Jean: <French stuff>
What’s your job at Bethesda?.
I am one of the AI Programmers and I am responsible for Pathfinding, that is, figuring out how NPCs navigate around the world. Considering how organic our environments are and the huge variance in scales of our NPCs, pathfinding has turned out to be quite a challenge. Add to that huge explosions that move/destroy everything around, and you get the idea of how complicated it becomes. As a consequence, my work involves a lot of 2d/3d math, writing search algorithms and dealing with multithreaded optimizations.
What other games have you worked on?
My first shipped game was BloodRayne 2 (Terminal Reality, Dallas, TX). That was a lot of fun. I worked on a number of special effects, but mostly, I made blood: gushing blood, dripping blood and staining blood, blood pools, blood sprays and blood storms. That’s right, a tornado of blood that filled the entire screen and turns enemies into, you guessed it, more blood…
The next game I worked on was Aeon Flux (based on the 2005 movie with Charlize Theron). Again I was doing special effects, but this time I was much more focused on explosions: Small explosions, Large explosions, and Nuclear explosions, red explosions, green explosions and, yes, blue explosions. Explosions with mini explosions inside and explosions with stuff shooting off, explosions with… you get the idea.
That’s when I came on board with Bethesda. Oblivion was nearing completion already, so my involvement was fairly minimal. I think my biggest contribution was to give NPCs shifty eyes.
What is the best part about working as a programmer? The worst part?
The best part about being a programmer has got to be the ability to patronize every other discipline in the company. Since no one else can possibly understand the complexity of what you’re working on, it means you can get away with not doing your job and then blame others, telling them they are just not using your system properly. It’s great!
No, seriously, that’s actually the one thing you have to be very careful of: your ego. The fact is, it IS harder for other disciplines to understand the intricacies of your work, and so it becomes very easy to just dismiss them, assume they don’t get it, and have an air of superiority. And let me tell you, it is even harder for me, being French and all.
People are often surprised when I say that, but the best part of my job is the creativity that it requires. I might not create monsters or environments, but I can create entire systems or behaviors. I can’t use modeling software, but I *could* make one. I can’t usually think of a really original story, but I can make a system that will let others create their own. And then every problem is different, every problem requires ingenuity, and there is always something new to be implemented and sometimes even, something to be invented. It is a great feeling when you finally figure out how to make such or such feature happen. And the best part is that the sky is the limit, really, as a programmer, you an incredible freedom. Of course, you have to deal with a number of things, like time and space complexity (CPU time and Memory space that is), or risk vs. reward and silly things like deadlines, but the fact is, you get to create the cool features, and you get to make the technology that the rest of the team uses…
…Which brings me to the worst part of being a programmer: No down-time. As a programmer, you have to work extra hard at the beginning of a new project, to get the tech up and running, and then at the end of the project, to fix all the bugs. It comes with the territory, obviously: the reason that you enjoy so much freedom is the exact same reason your systems are going to be abused, but the constant rushing does tend to wear you down.
How did you get into the industry? Do you have any tips for breaking in?
It took me about a year between my first applications and actually getting a job, so I guess the first tip I’ll give is not to give up. What also really helped me was having something to show, and so that’s definitely what I’d recommend the most. If you’re looking to get into game programming, try to make a game of some sort. Avoid just making a graphical demo if possible. Unless you have a specific feature to show off (like maybe something you wrote a thesis on), you’ll just end up with something mediocre compared to what companies are using. Instead, pick a simple game idea, and see it through to the end.
It’s unbelievable the amount of stuff you’ll learn by just trying to write a complete game. Most game programming courses now involve some sort of semester long game project. Take advantage of it! If you’re lucky, you’ll find game art or game design students that can contribute and make your project look good. And if you can’t find any, spend a little extra time generating assets for your game. Nobody likes programmer art and the fact that you went out of your comfort zone, maybe learned Photoshop or even Max to help make your game look good will show your commitment and dedication to potential employers.
What would you say is your personal favorite game of all time?
The first Dune game, not the RTS, the other one, where you played Paul Atreides. I had just gotten my first PC with a sound card and VGA graphics, so it was quite a shock. From the world map, where you could see your influence to wandering in the desert with Chani to using an Ornithopter for the first time — those were awesome experiences. And the music, really, the music was like the most amazing thing.
I remember this silly feature, where you could walk into your mother’s bedroom and look at yourself in the mirror. There was no real point to it, except that after a while, you could see your eyes getting bluer and bluer. How cool was that?
What games are you looking forward to?
Spore: Whether or not it turns out to be an actual ‘game’, I can’t wait to mess around with the creature and vehicle builder. I remember when 4k and 64k demos were all the craze, and somehow the fact that most everything in this game is procedurally generated blows my mind.
Half-Life 2: Episode 3: I can’t wait to use that portal gun in a Half Life environment. I mean, come on, you know that’s what’s they’re going to do, right?
Force Unleashed: Let alone the fact that I’m a sucker for Star Wars, I’d like to see Euphoria (AI-driven animation) and DMM (Breakable/Soft body simulation) in action. The tech demos look incredible and so I really want to see them in a game. I am anxious to see if they make the game more fun or if they end up being just eye candy.
What makes you get out of bed in the morning?
The sweet smell of coffee that my wife makes every morning! Not just any coffee, either, imported coffee. Yeah, I try not to, but deep down I’m still an uptight Frenchman with high-brow taste, especially when it comes to coffee. I of course prefer French coffee (and no!, that doesn’t mean French roast), but I’ll settle for Italian, or more generally, for anything Arabica — preferably espresso.
Any other hobbies and interests? What do you enjoy doing in your spare time?
I love robots, and electronics in general, so that’s what I mess around with. There is something very satisfying in building something tangible like a robot. And even programming those is a different beast. For starters, if your code crashes, your robot doesn’t just not work, but rather, you can end up breaking parts or blowing up components. Then even putting smarts into those things is a completely different paradigm. Everything is so much more analog that you can’t just write things like:
if (Distance(Target) > 100)
Because that distance you measure, for instance, is imprecise, your sensor data noisy and the environment could be playing trick on you. Everything has to be a lot more organic. It’s really fascinating…