May 16, 2019

My Departure from SuperTuxKart

The original TuxKart
After 13 years of working on SuperTuxKart I have decided to step away from the project, and make space for a new team of leaders. As this is my last post, and I assume that we have many new readers who might not be aware of the history of SuperTuxKart, I'll use this opportunity to give a brief summary of what happened to SuperTuxKart in these 13 years, that resulted in the 1.0 version that you are playing now.
I discovered TuxKart in 2006 after installing the latest SUSE distribution. Never having played Mario Kart, I was quite fascinated by the game. By sheer coincidence I then heard of SuperTuxKart, a project trying to improve TuxKart.

An early SuperTuxKart screenshot
Being intrigued by the promised improvement in graphics, I tried to look for the community developing SuperTuxKart, only to learn that the project had been basically dead and the game in an unplayable state for over one year. I decided to see if I could fix this. Soon some other contributors joined and a 0.2 version was released in September 2006, making the graphical improvements of SuperTuxKart available in a playable form for the first time.


SuperTuxKart 0.4
With the 0.4 release in 2008 the physics were newly implemented: the open source physics engine bullet was integrated, and the physics were tweaked to give it a fun-racer feeling. Did you know that previously a kart would just stop if it hit any other kart? The initial port took around 9 months, though of course other work was done for the 0.4 release as well during that time. But tweaking the physics was a long ongoing process, in between we suffered from karts sometimes hovering, sticking to a wall, or being shot rocket-like into the air. Anyone thinking of 'just using a physics engine' - do not underestimate the tweaking effort necessary to make a game behave the way you want it to behave :)

SuperTuxKart 0.7
The 0.6 release in 2009 saw the introduction of OpenAL, allowing for positional audio effects, and the introduction of the skidding and nitro speed boosts. It also included the 3-strike battle mode. In 2010 SuperTuxKart 0.7 was released: we finished the migration of the rendering from PLIB to irrlicht. This allowed us to animate karts, and started a series of graphical improvements that is still ongoing. We also implemented a new GUI engine, and allowed short-cuts in tracks.


Beginning of 2013 we were in the race to become the Sourceforge Project of the month, and we unleashed the ultimate weapon: cuteness showing off our new wiimote support:


In 2013 and 2014 SuperTuxKart participated in the Google Summer of Code, a program where Google pays students to work full time on open source projects for three months. Of course we had very many students interested (each year we got over 70 applications, which made it very difficult to select a small number of students that we could accept) - how cool it is to work implementing a game and getting paid for it :) The SuperTuxKart team mentored all in all 8 students during that time, who contributed important code to improve the graphics, game play, and to add online features. We somewhat underestimated the effort it would take to merge the code developed by students back into our main trunk, in some cases it took over one year before the code was finally merged into our development trunk. While this was a somewhat stressful period, it was also extremely rewarding – not only in terms of new benefits for SuperTuxKart, but also seeing the development of the students: In at least one case that I know of a student got a job in the gaming industry because of his work with SuperTuxKart, and only recently I received an email from a previous contributor stating: "I basically owe my career to SuperTuxKart".

SuperTuxKart 0.9
2015 saw the 0.9 release, in which a completely new, shader-based renderer was introduced. It also opened the door for many many woes with graphic driver bugs. We actually had to add a configuration file that would activate features depending on graphics hardware and driver version used.


End of 2017 I started to implement the networking mode. If anyone is interested in details, I would strongly recommend Glenn Fiedler's excellent article collection. This is probably some of the most complex code I have added to SuperTuxKart, since we are not just sending the input from clients to the server, which would lead to a lagging and unplayable experience. Read Glen's article about networked physics and look for client-side prediction if you want to learn why SuperTuxKart plays rather smooth even with a ping over 100ms. And you will also appreciate why your computer has to work much harder in a networked game. It was an extremely frustrating time - often what would work just fine in my local environment, would fail horrendously when trying it in a wide-area network. The first big milestone was reached around March 2018 when we were able to play a first race reasonably well without too much shaking and teleporting of karts. It still took a long time to iron out all the bugs, and make the whole experience smoother. On the 20th of April 2019 we finally released version 1.0, the first release of SuperTuxKart that allows online races.

Another highlight of the history of SuperTuxKart was seeing the code being used in other projects: Microsoft used it to develop and showcase their 'Future of the Living Room' concept IllumiRoom, and Daimler used it as a demo of an entertainment unit in one of their cars. Research was also done with SuperTuxKart ("Comparison of Supervised Learning and SMILe for Imitation Learning in SuperTuxKart", "Real Time Drunkenness Analysis Through Games Using Artificial Neural Networks"), and it was used by schools and Universities to teach programming, internationalisation and other subjects. Various special versions for people with certain impairments were created, e.g.: Gaze and accessibility in gaming. I consider those outcomes a shining example of the benefits of open source code development.

To the supporters of SuperTuxKart throughout the years: I feel I owe you a big “Thank You”, and an explanation of my exit. To be completely honest, the main reason for my departure was not that my goal of online races was reached. It is a matter or principle and professionalism. From my point of view a big change has gone through the development team, when new members were added and older members left. Let’s just say that the newer team members preferred to pursue a faster-paced development style with fewer reviews, less documentation, less oversight and a reduced need for consensus, and that our differences in approach could not be reconciled.

We would also like to announce that Auria, who has been the co-project leader for around 10 years, has decided to step down from a management position in STK, but she will stay around and help out where required. Arthur, our pun master and social media manager, has also decided to quit the project. The team (excluding Auria and myself) has decided with 3 to 2 votes (and one abstention) that Benau and Alayan will be the new leaders of SuperTuxKart.

My profound gratitude to all the SuperTuxKart supporters who have witnessed and supported the game in the last 13 years! Let’s welcome the new age of SuperTuxKart and look forward to it achieving even greater goals.

 Hiker, out