Imagine if talented Assetto Corsa modders like Ilja Jusapov and Peter Boese (creators of Content Manager and Custom Shaders Patch, and Sol, respectively) could see and modify the full internals of the game's core code. Imagine if geeks in the community could have helped Reiza to extend the ISI engine (for Automobilista 1) or could help tame the Madness engine (for Automobilista 2). Intoxicating thoughts, aren't they?

Over the last while, there have been several threads about the possibility of using "open source" philosophy for a sim racing project. I've started two threads here and here and Stefano Casillo (a co-founder of Kunos Simulationi) also got people talking about it. But what does it mean? What has been done in the past, and realistically, what would be possible today and into the future? That's the subject of this thought piece. Below, I lay out a five-part typology I devised to lay out some of the different ways in which a sim racing project could be completely or partially open source in nature or philosophy.

A couple definitions, before we continue. The term "open source" refers to when the source code for a software project is made available to the public – nowadays, on online repositories like GitHub or GitLab. Most often, the software is also "free" or "libre". The details vary based on the software's license, but the gist of these terms is that anyone can study the code, copy and distribute the source code as desired, submit bug reports, directly participate in development (usually by submitting patches), or use the code to make their own derivative project.

And now, let's get into it.

Way #1: Free and libre open source game engine, open source content

This is what most people think of when "open source" is brought up. All the code for the game is open source, free to be modified. And the cars and tracks for the content are similarly freely available and modifiable with permission.

Arguably the most well-known project that exists in this category is The Open Racing Car Simulator (TORCS), a project dating back to the late 1990s. It is still actively worked on, and has become well-known for its highly modular architecture allowing academic researchers to easily swap in and study custom-coded AI car controller programs. However, its physics capabilities are limited compared to modern sims, and its graphics are highly outdated. TORCS itself built upon code in Robot Auto Racing Simulator (RARS), an earlier project. Another project, Speed Dreams, has taken the TORCS code and is attempting to build more of a legit 'video game' from it. There is also VDrift, a somewhat actively developed but relatively poorly known open source project with a unique codebase originally based on the Vamos vehicle physics engine.

There are also two sim projects that started as fully free and open source, then (at least partially) turned closed source later on. First, there is Ruud van Gaal's Dolphinity Racer, a moddable workhorse of sim racing of yesteryear. After its creation in 2000, it wasn't open source for very long before Ruud chose to take the project closed source, and the sim is now dead. Second, there is Rigs of Rods, a highly-moddable sim built upon a sophisticated soft-body physics system of beams and nodes allowing cars, trucks, boats, and airplanes. The sim still exists today, is actively worked on, remains free and open source, and has a dedicated community – for instance, I hear that a well-loved part of RoR is the monster trucks – but in 2011, a group of devs decided the potential of their soft-body physics modelling was too great to not form the basis of a commercial project, taking their knowledge to build a new system from scratch and create BeamNG.drive. The BeamNG team still publishes certain components and tools as open source, but the game code and physics engine itself is (to my knowledge) proprietary and closed-source.

The challenge to a fully open source sim racing project is obvious: who would devote the amount of time required to put this together without direct monetary compensation? It is unlikely that anyone would. Especially given the fact that fundamental components such as a vehicle physics system and AI system would have to built from scratch, given that sufficiently detailed and high-quality open source projects for these (to my knowledge) don't exist at the moment. And all because of the niche status of sim racing in the broader gaming ecosystem. Realistically, there are three routes I can see to finance this sort of project.
  1. Crowdsource funding (e.g. by Kickstarter), manage the money through a company or a community foundation, and then hire professional developers along with passionate community members to put the game together.
  2. Distribute the game as a precompiled EXE through existing mechanisms (e.g. Steam), and charge money for these precompiled copies of the game. The source code would still be available online, and anyone who wanted to compile the game themselves would be welcome to do so. But the compiled software could not itself be freely distributed. To make this work, you would need to have community cooperation (e.g. of sites like RaceDepartment) to prevent piracy. By the way, this distribution and pricing model has been used by open source music software Ardour for years.
  3. Build a free and open-source research project aimed less at 'gamers' than at auto manufacturers and real-life racing teams and companies to build a free and libre competitor to rFactor Pro, Cruden Panthera, or Assetto Corsa Pro intended for use as a basis for real-time "driver-in-the-loop" commercial simulators. The idea here would be to get a number of manufacturers and real-life racing sim engineers to come together and contribute to a project allowing them to no longer pay expensive license fees for software. Besides, the sim engine could help with marketing by serving as a basis for trackside sims for spectators to have fun with at real-life racing events: for example, I believe this was the origin of KW Automotive's involvement with SimBin, RACE 07, and the World Touring Car Championship. And who knows, the engine might also 'spill over' into sims aimed at consumers like you and I.
Way #2: Open source game or game engine, proprietary content

2a. Open source engine

Imagine if Image Space Incorporated had made the rFactor 1 engine source code freely available to all to modify and redistribute (even if the game itself was not). Or imagine if Ian Bell and co. had open-sourced the Madness Engine. The derivative games themselves – including their code and content (cars and tracks) – would be sold for profit and closed source, but the underlying simulation software would be open source. It would be best for the community if the engine were free and open source under a permissive license such as the MIT license, allowing it to be used in future commercial and closed-source projects.

This is essentially what Stefano Casillo proposed and discussed in his thread from a while ago. Stereo had some interesting ideas of how this could work in practice and be profitable:

To me the financial model that makes most sense is selling DLC that runs on the stable version of the game. Use a plugin model where specific content can require/bundle plugins without affecting other content. It's not like 2 cars need to be running the same tire model to have competitive laptimes against each other. Basically make it so something like Game Stockcar Extreme could exist as a car/track/ui pack, and "just work" for users who buy it (minus the usual 'my motherboard stutters' issues).

Regardless of the particulars, why I think this way of leveraging open source is especially cool is that it could bring in numerous new developers and curious minds into the world of sim racing development. After all, both Slightly Mad Studios and Reiza Studios originated as teams of modders working on modded content for ISI-based sims, and numerous other now-employees of sim racing developers began as modders. If the game engine itself was worked on by the community and could be utilized as the base of derivative racing simulations without restriction, who knows who else might decide to make their own game out of it? Not only might we, the community, get new games from fresh developers, but sim racing devs would have a greater crop of experienced and engaged potential employees to hire. Such an 'open' game engine also could be a basis for academic research.

Meanwhile, the company who created the engine would (as they largely would anyway) earn their revenue from sales of the games they create and the content in them (including game sales, car and track DLC sales, sponsorship, and advertisement). They don't lose the basis of their competitive advantage. Indeed, they get to free-ride off contributions from community members and academic researchers. A win-win situation!

The best result would be something akin to how the ISI engine served as a basis to umpteen last-gen sims over the past 20 years (EA Sports F1 games, the original rFactor, GTR1 and GTR2, Game Stock Car, Automobilista 1). In the case of ISI, developers had to pay ISI for licenses to use the engine or get the source code. But open sourced under an appropriate license, the game engine would just be available to use as desired – ideally under a sufficiently permissive license to allow use within commercial projects as well as open source projects.

2b. Open source game

You could even go as far as having the entire game EXE open-sourced, but the pre-compiled software – as well as high-quality cars and tracks DLC – available through existing mechanisms like Steam. This approach would rely even more on the quality of the cars and tracks included to drive sales!

The advantages are numerous, and would be much like those listed in section a. above. This approach would most directly encourage and facilitate community contributions like those we've seen from Ilja Jusapov and company with AC. It is not without downsides, though. In particular, it would rely on community vigilance and enforcement of norms around piracy of EXE files. RaceDepartment has a fantastic track record with this, but the community as a whole does not – consider for example the recent rips of ACC tracks in AC, AC tracks in BeamNG, or rF2 Sebring in AC.

Way #3: Proprietary game engine, open documentation, modded community content

This is the model we are used to in sim racing with rFactor (and thus by extension its derivatives), rFactor 2, and Assetto Corsa. Indeed, this is the model which has driven the need for community hubs like RaceDepartment to exist! Under such a model, the core game remains closed source but is well-documented, and the community is encouraged to create 'mod' cars and tracks for the game. It, in a way, lets the developer focus on the core elements of the sim and "free-ride" on the passion of the community for additional content.

To be clear, this isn't really open source software. So, in a way, it shouldn't be on the list at all. But I decided to include it because interestingly, among non payware modders, there are norms not dissimilar to those of open source-loving programmers. Modification, reuse, conversion, and distribution is the norm in the sim racing community and free software alike! The main difference I can see: in sim racing, the norm is to insist on having permission from the original modder to use their work, whereas this is not required in the free software world.

Way #4: Proprietary game engine and content, open documentation, ability to modify certain features through open source plugins

Another way a developer could use open source philosophy and community involvement to aid their game's feature set and longevity is having certain components of the game be entirely modular, and exist in a transparently documented plugin ecosystem. Think of AC Python Apps or rFactor 2's plugins... but with much deeper functionality. These plugins could manage features the developer doesn't have time to develop to their fullest potential, then the community could further develop these features over time as they see fit. Think AI path switching for individual cars for behaviour like blocking or blue flags, AI pit strategy, race start procedures, photo mode, UI elements, flag and pitstop rules, championship scoring, or career mode functionality.

Basically, the developer could concentrate on what they do now, the core of the sim: graphics, physics, force feedback, net code, multiplayer ranking, triple screens, VR, and high-quality first-party content. Meanwhile, the immersion "special sauce" (that makes games like Geoff Crammond's Grand Prix series, NASCAR Racing 2003 Season, NASCAR Dirt to Daytona, and Codemasters F1 special) could be modded in by the community later on. Notably, it would allow most of the game's more sensitive code – especially the raw physics engine – to remain 100% hidden and thus preserve the developers' competitive advantage, and reveal minimal secrets.

This seems like a highly feasible option, and is something I would love to see a developer take seriously in the future. All they would have to do is create their software such that variables related to particular bits of functionality could be exposed with the intention of letting modders control them via an app.

A shining example revealing what is possible in this space is Crew Chief. Indeed, the highly popular crew chief and spotter software is a free and open source application (whose source code is currently hosted on GitLab). Through mechanisms like "shared memory" plugins, the Crew Chief software takes information provided by each of the numerous sims it supports about the race and the player's car, then relays messages to the player. It can even respond to voice commands by the user. In the case of GTR2, Crew Chief plugin also injects additional functionality previously not thought possible, including VR and user-controllable windscreen wipers.

Way #5: Open source once a game is old

Once a game is old and outdated, the developer could open source the code behind the EXE to allow modders who love the game to take it even further. If there's good stock content in the game, people will still buy it – they'll just replace the EXE they get from Steam (or wherever) with a new one.

There are no examples of any developers open sourcing their old game(s) in sim racing to my knowledge. But... replacing and modifying EXEs of old games is commonplace with older sim racing titles e.g. No CD EXEs for NR2003 and GTR2. In effect, the developer could enjoy all the same advantages of Way #4 late in the sim's life, but use an entirely conventional business strategy earlier in the sim's life.

The case of Assetto Corsa

The dream case of Way #5 would be if Kunos decided to open source the original Assetto Corsa. Given the amazing amount of incredibly good community content for the sim, it's a shame many of the best features (24h cycle, dynamic weather, graphical FX) are forced to be added externally in a somewhat 'hacky' way that can be buggy and is intimidating to new users. Kunos could even follow Way #2a and only open source the original Kunos engine behind the original Assetto Corsa, thus allowing modders like Ilja and Peter to integrate features like CSP or Sol/Pure directly into the game. This might even offer a path forward in improving the moderately capable but highly limited AI behaviour, arguably the main limitation that prevents AC from becoming the undisputed ultimate sim racing title.

What's in it for Kunos? It would only further cement their product as the foremost sim racing game to buy, it would build lots of community goodwill, and further sales would earn them greater revenue from a years-old title they aren't even developing anymore. After all, just like today, you would need to purchase AC through Steam to gain access to the high-quality cars and tracks that come with the game to begin with! You would just replace the Assetto Corsa EXE that is shipped via Steam with a new one created by modders after they 'fork' the code and modify the core game.

Conclusion: many challenges, many opportunities

Perhaps the biggest issue standing in the way of open source being a part of sim racing development is the reality of who can meaningfully contribute. Especially for an open source game engine or individual game, you need one or more immensely skilled individuals who know the codebase inside out. After all, you can't crowdsource the entire codebase, and can only really rely on the 'bazaar' for specific features, bug reports, or bug fixes. But sadly there is little incentive for talented people to devote themselves to a project like this. Stefano Casillo cogently describes the common result of projects like this, if taken open source, as follows:

In my experience, most of these attempts gather a group of passionate "ideas" people full of hopes and dreams that spend months talking about what the project will do and feature with nobody actually putting the hours and the work to actually make it happen... the talk goes on until everybody silently realizes game dev is hard and things aren't going to magically appear out simply talking about it.

Between this and the harsh reality of the lack of financial incentives for community contributions I mentioned under Way #1, there are a lot of reasons to think that there is little hope for open source sim racing software in the future.

But I hope that the various options I've laid out above also provide hope that some types of open source sim racing projects could potentially be financial viable and would certainly offer interesting features and opportunities that current simulators do not. There's a lot to be curious and excited about! I sincerely hope that the role of open source philosophy and practices only grows in the sim racing space – in my opinion, the possibilities are too great to be ignored.

I hope you've enjoyed this thought piece. I've invested a great deal of effort into it and have very much enjoyed having the excuse to think more deeply about this subject. Thank you very much to the amazing Bram Hengeveld for suggesting that I put this piece together after my previous threads on the subject, and to all the RaceDepartment staff for curating such a wonderful space for the sim racing community. Thank you for reading, and I hope you enjoy the rest of your day!