In last months Motorsport magazine (October, 2021) there was an article profiling sim racing developer David Kaemmer of Papyrus and iRacing. I’m quoted in the article, giving my opinion on how important Dave was to the genre, but after reading it also made me think about many of the names that don’t get a mention.
I’ve worked for a few different developers and it’s a team effort in every way, so while the bigger names are important, it’s also vital to recognize there are many people behind the scenes that make those genre-defining moments possible.
Shawn Nash currently works for iRacing but may be known to many in the sim racing community as the ‘main man’ at Software Allies, a group that collaborated with Papyrus in 1997 to make SODA: Off Road Racing. He was also responsible for a lot of Papyrus’ advancements in graphics, including the Rendition support in IndyCar Racing II (something he’d forgotten doing until I told him he was in the Rendition credits). He has kindly granted me an interview so the community can get to know him a little more…
Shawn, thanks for doing this. I guess it’s a good idea to start off talking about where it all started. Were you interested in computing at home? Where was home?
Well, I was born in East Detroit, in 1968. I grew up with a younger brother, and two younger sisters, and I’ve always wanted to know how everything works. Playing with model Lionel trains and Cox slot cars, I learned about AC and DC current, and wiring to motors, switches, lightbulbs, electromagnets, transformers, and speakers. When our toys would break, and I’d try to fix them. Even when they were new I’d take them apart to learn what was inside, and my little sister’s toys too, and sometimes even put them back together.
So, I grew interested in electronics and started building kits from Radio Shack. I had volt-ohm meters and soldering irons. My older cousin had an old oscilloscope. By middle school I had learned quite a bit about electronics, and by the time I entered high school I was building my own digital circuits and later interfacing digital circuitry to the bus of my TRS-80 PC.
But our home family life was growing problematic, and around 1981, when I was entering public high school, the State of Michigan stepped in and rescued me to a college prep boarding school in northern Michigan.
They had a computer lab with four Model 1 TRS-80’s. I spent nearly all my free time in that lab. I first taught myself MS-BASIC. I wanted to write my own games, but soon discovered that BASIC was way too slow for real time graphics.
An older student who knew some Z-80 assembly language showed me about the block move instruction which could scroll graphics on the screen any direction blindingly fast! Well, that was the end of BASIC for me. I taught myself Z-80 assembly language over the next summer from a book I found at Radio Shack and proceeded to create knock offs of Break Out, Pac-Man, Defender, Lunar Lander, Turbo, and other arcade games over the next several years, entirely in Z-80 assembly.
I might be half a generation or so behind you, but there was a huge cloned game scene in the UK as well. Over in Europe it always seemed like Commodore, Atari or Sinclair had a greater hold on home pre-built computer market, while the BBC Micro led the way in schools. It sounds like you’d made your first steps away from a problematic home life, but what was next? College?
Yes, when I was a senior in high school my guidance counselor asked me where I was going to college. Well, that never even crossed my mind as a possibility until that moment. I told her I’m not going to college! And she said yes you are! I replied, I am? I still didn’t really believe it, but I applied anyways to University of Michigan in subatomic physics, mainly because they had a nuclear reactor there that I had seen on a field trip, and I was interested in quantum theory due to my high school physics teacher. But I also applied to Michigan Tech in applied physics. My parents never mentioned college to me ever, I’m sure they were shocked to get the bill.
In the end I was only accepted to Michigan Tech (in the Upper Peninsula of Michigan). My roommate and I both had TRS-80’s and we spent more time competing to make the coolest thing on them, much more so than we spent going to classes or studying. After that year, I had to take a year off to establish legal financial independence from my parents in order to qualify for the financial aid I needed to go back to school.
I lived on my own with some roommates and worked at various low paying jobs. About then a high-school girlfriend let me know that she could help me get into her school. So, I transferred to Principia College, which is close to St. Louis, MO., and on the Mississippi River, to now major in Computer Science and Physics.
I arrived a few months early to Principia College, in 1987, painted houses and accessed the school’s computer lab over the summer. They had a Unix mainframe running BSD Unix. I taught myself Unix and C, and wrote a chess program in C. I tried using sockets and TCP\IP networking, the mainstream of the modern internet, but every time I ran my program the mainframe would crash. The head of the CS department told me that TCP\IP sockets were a hack, quit crashing the computer lab!
I studied there for 2 years, but then dropped out to go work in Boston. I was just six months shy of a triple major in Physics, Computer Science, and Mathematics. I had taken all sorts of classes such as quantum mechanics, advance applied calculus, vector analysis/boundary value problems, compilers, operating systems, computer graphics, etc.
It sounds like you’d given yourself a huge amount of experience that was probably more important to employers than anything else, found yourself close to the Papyrus base at the right time, but you didn’t work with them right away?
Correct, I did not start off working in video games. Far from it. I would have loved to, but it never really crossed my mind as a possibility, and it took 6 more years until it happened.
I started in 1989 at Prime Computer in Natick, MA. I worked in the translator department, on various compilers, and was finally tasked with porting AT&T Bell Lab’s CFront, an open-source C++ to C translator to Primos, so Prime could offer a C++ compiler. That got me onto the newly forming C++ ANSI committee. During one ANSI meeting I was privileged to sneak off to a small bar in Seattle with Bjarne Stroustrup, along with just 2 others. He’s the creator and developer of C++. Unfortunately, Prime Computer went out of business shortly thereafter.
Then I went to work for a consulting company in Lexington, MA. We performed in house fixed-priced consulting around Boston. Companies would out-source projects to us. I mainly worked on parallel Unix kernels, compilers, and networking, but all sorts of other areas as well such as biotech process control.
I then became an independent contractor and developed biotech lab instrument software and worked on a few other contracts.
But, during this time, truer to my deeper desires, at home I had been teaching myself how to rasterize triangles to a VESA graphics adapter in MS-DOS (on an Intel 25 MHz i386). I created a real-time simulation of docking a spaceship to a spinning space station. I had also implemented texture mapping, and I’d even bought a VictorMaxx VR headset and successfully wrote some demos for it (1993/1994).
Then a friend showed me a job ad from Papyrus Design Group. I applied, and went into Somerville MA, and met Dave Kaemmer, Omar Khudari, and a few others at Papyrus. I showed them my demos and VR headset, passed my interview and landed a contract to port NASCAR 2. It was already finished and shipping on MS-DOS 5.0 in extended mode DOS. The contract was to port the graphics and sound to the first nVidia GPU, the NV1 (in 1995). They forgot to mention to me that it also meant porting the entire code base from MS-DOS to Windows 95 until after I signed the contract!
The GPU turned out to work poorly with NASCAR 2’s source art. But I did help Papyrus get their code base onto MS-Windows.
Once that was done it can’t have been long before you began work on SODA?
Immediately after that contract finished nVidia offered to hire me as an employee. I let Papyrus know, and Papyrus made several counteroffers. The best offer was a developer/publisher deal with Papyrus for me to develop S.O.D.A. Off-Road Racing. I jumped at that, and we worked out a contract. In the long run that contract ended up being passed on to Sierra Sports when they took over as the publisher and distributor for SODA, they bought Papyrus. When SODA shipped, I felt like I was done with programming for the foreseeable future, but Dave Kaemmer talked me into coming back to Papyrus to help finish Grand Prix Legends. I ended up staying on, even after GPL, and I developed their OpenGL and DirectX graphics engines for NASCAR 4, along with Doug Muir.
The sim racing community believed for a long time that SODA was the testbed for Grand Prix Legends. Was any of that true?
Absolutely not. When I was working on SODA, I would go in for milestone reviews and meetings at Papyrus, and Dave Kaemmer would show me what he was working on. GPL in its infancy was far more advanced than SODA. He would talk to me about it, and I seriously had no clue what he was even talking about. And it’s still like that today when we talk. But the early versions of SODA were awesome, I think far better than the version that shipped. I went in one day for a meeting, and a bunch of the core GPL engineers at Papyrus had stayed all up all night taking turns racing a very early SODA version in a racing pod in Dave’s office!
However, I really didn’t know what I was doing and made several key mistakes. Papyrus kept offering to help with SODA, and I should have let them. They could see the art could use some help. But we were foolishly concerned about legal ownership issues and pretty much did it all alone without any experience or art knowledge. A big mistake. The sound is embarrassingly bad in SODA.
And I bit off more than I could chew, due to a mishap. After the initial contract, Sierra/Papyrus wanted us to add several more features to SODA. Replay, networking, world-wide ranking, etc. To do all that I needed another engineer. I signed up a very talented friend to do that work, and he signed a letter of intent to join us. With that in hand, I signed the contract with Sierra to add those extra features into SODA in good faith. But right after I signed that agreement, he got cold feet and backed out, leaving me stuck with all the work. I couldn’t find anyone qualified and didn’t have time to search. I worked 7 days a week for almost 2 years. Every day, all day, it was too much. I don’t know what I was thinking when I proposed letting customers build their own tracks, and creating AI that would learn those tracks, and allowing customers to trade the tracks and race them on-line.
By the end of that project, I felt like I never wanted to write another line of code. And after Sierra took over mid-stream, I felt that they largely taken away my creative control over project and that ruined it for me. I liked working with Papyrus more so than the managers at Sierra at that time.
I can imagine that to be quite draining and can understand how that put you off. Did you leave the industry after N4?
It was draining, just overworked really. And after SODA I went back to Papyrus to help with GPL and N4, and by the time we finished N4, Papyrus, Sierra, and Universal were now all owned by a French utility company. From what I recall, we really couldn’t get any projects approved due to the bureaucracy. We were just sitting around, and it went on like that for several months. I ported N4 to an XBOX dev kit just for something to do. After that it just seemed over. Dave, Randy Cassidy, and I made loose plans to work together again on something in the future sometime.
I moved to Orlando and worked at Electronic Arts (Tiburon) for about 3 years (2001). I replaced the console vehicle physics in NASCAR Thunder 2002 and 2003. Then I was promoted to the R&D group, where I worked on cloth dynamics (Madden and NCAA), a rigid body physics engine (NFL Street). And finally, I invented a system to playback motion capture animation on characters via inverse dynamics, and that ended up patented (Madden). These were all on PS2, XBOX, and NGC.
That’s when Dave Kaemmer contacted me about starting up iRacing, and I jumped at the opportunity to work with Dave and Randy again (2004).
Was that the physics seen in NASCAR SimRacing?
Honestly, I really don’t know, because I left EA to join iRacing before then, but I seriously doubt it. As the titles I worked on at EA were console based and I think the PC versions of their NASCAR titles were developed using a separate independent code base by a completely different teams of developers. And they were not even working in house at the time when I was at EA. I never had any interactions with them at all.
Those were groundbreaking technologies though! From my time at iRacing I remember in the early stages the laser scan was being used to just trace basic geometry, but recall you being involved in it being used for the bumps and track surface detail as well?
I did work on the laser scan support, and it was challenging. The first track we did was Lime Rock Park, and the surface kept coming out with a terrible bump on the inside of the downhill. I was sure something was wrong. But it turns out, that bump was real, we talked to some of the Skip Barber instructors at LRP, and they confirmed it. When I saw the video of “iRacing vs. real” at Lime Rock Park from about 15 years ago, with the Skip Barber RT/2000, I was truly astonished by what we had accomplished. The suspensions bounced together on the same bumps all the way around the track!
However, I didn’t do it by myself. Dave Kaemmer suggested several of the algorithms, and we developed that system together. When unexpected problems cropped up, we’d discuss them and possible solutions.
It’s getting to the point now where laser scanned tracks are the norm. It must feel good to be the first one to have figured that out in a commercial product. Are there any other major features you worked on that you think were important?
As far as other features, I think the next most major one for us must be the dynamic sky. Historically we’ve used several pre-rendered static sky domes, and the sim would pick one based on the weather setting. Then the sky and weather were static for the entire event, even if 24 hours long. We needed a dynamic sky system, and iRacing assigned that task to me.
The addition of the dynamic sky made possible other features such as cloud shadows, day/night transitions, HDR rendering, linear frame buffers, dynamic weather, and improved the dynamic track. And we’re still working on new features such as a much-improved dynamic weather system and rain. So, I feel like the sky was the most important feature that I’ve worked on recently, it really pulled the sim forward and opened all these other areas to us.
As part of that project, I also worked on the dynamic weather system and the dynamic track, along with Dan “Dr. Dirt” Garrison on the physics, and Dave Gosselin on the shaders. The dynamic track and dynamic sky go great together.
Another major feature I worked on is the VR support. I first added support for the Oculus Rift, and then OpenVR. The sim is a perfect match for VR, and we were able to partner up with companies to demo it, so it was great for marketing too.
Finally, I created our DirectX 9 graphics engine, and Dave Gosselin and I later created our DirectX 11 engine. The single pass stereo feature for VR, and the multi-view projection feature for triple monitors are very cool, if you have a GPU that supports them, and they are both features that I was privileged to add.
I think that almost brings us up-to-date as far as work is concerned. Let’s take a tangent to finish off… What is your favorite simulation and what are your thoughts on the current state of yours?
My favorite sim of all time is Microsoft Flight Simulator. It really inspired me to create computer simulations. You can learn to fly an airplane. It’s a flight school disguised as a game. As a close second, I love Falcon 4.0. That’s an old F-16 simulation. The manual was a 200+ page book!
But as far as products I’ve worked on, iRacing is clearly the most incredible. I’m still blown away by the realism, it’s mind boggling how far we’ve come from the mid 90’s. The racing aspect is equally amazing, the simulation of races, and our iRating and safety rating systems. It’s also stunning in VR. I love to look around inside of the vehicle cockpits. The detail the artists are putting into the cars is clinically insane, but VR really show cases it. My favorite car/track combo must be the Lotus 49 at Nürburgring in VR.
As far as racing, I’m not the best driver. I prefer the game of creating the simulators themselves. When I do play other games/sims, I end up performing competitive analysis, or trying to figure out how they did something so I can rip it off. And that really takes all the fun out of it. Even when driving in our sim I’m critiquing it the entire time and finding bugs. To have fun and relax I’m more likely to play arcade games (on M.A.M.E.) such as Asteroids or Donkey Kong Jr, or Pinball Arcade on my old PS3.
I understand all of that so much. I really miss the days when you got a fully-fledged manual that you could basically use to learn how to drive or fly the real thing. They were always so detailed. Part of the reason I have a ridiculous collection of old big box games and sims is to make sure those things are never lost.
Shawn, thanks for coming back to us after SODA! We’ve really appreciated your contributions to the genre and wish you the best for the future…