Looking back at the month of June, you’re probably asking yourself, what could the crew at Studio 397 announce after a month with so many highlights? It’s exactly what we asked ourselves as well. We started the month building up towards what would become the biggest sim racing esports event ever, with millions of people watching the 24 hours of Le Mans Virtual on televisions and streams worldwide. You’ve likely also already heard about Portland, the new and free track for rFactor 2. You may have noticed, if you own our Endurance pack, the new shiny liveries from the 24 Hours of Le Mans Virtual event that are now integrated. And that wasn’t even all in the last update. We gave Silverstone a fresh new look and released the first step of the new GTE BoP, based on improved physics for all of those cars.
So what’s next? Even after last month’s events, there is so much happening at the Studio we want to tell you about. We may have downshifted a gear to make the next corner, but on the apex we are already full throttle again to bring you lots of new updates. The first will be another small BoP tweak to the GTE cars as well as a brand new set of default setups that are a better starting point for you to customize. Once that is done, the knowledge we gained from upgrading the GTE cars will be applied to our extensive set of GT3 cars, giving them a much needed update while we add two brand new ones. One we already announced, the Ferrari 488 GT3 in the latest 2020 evolution. The other we have not announced yet, but it’s already in beta so like the Ferrari it won’t be too long!
Three Seasons of The Race All-Star Series
Ironically, unlike most of real-world motorsports, we in the simracing world – and especially developers – have been on hyper drive since the start of the pandemic and for most of the confinement period – even thereafter. In a time when everything we know and love in motorsport was being canceled, simracing suddenly had a job to do – we saw our rF2 shaped bat-signal in the sky 😉 and our mission quickly became “make things happen” so that motorsports will have a place to go.
The first big opportunity came knocking when the Australian Grand Prix was suddenly canceled, leaving fans all over the world without the beloved F1 inaugural race in Melbourne. That very week, Ideas+Cars, led by Darren Cox, founder of GT Academy, contacted us with the wild idea to collaborate and essentially become the stand-in event for that inaugural weekend. Ideas+Cars would be inviting a colorful cast of real drivers, past and present, from all over the world, many former world champions, to mix it up with professional and aspiring simracers. A pop-up race series of sorts. Creating a new format that worked for everyone was not easy, and we dug deep to make sure our new overlay and our broadcasting capabilities were up to snuff to showcase these events as they should be.
To everyone’s surprise the first event was a run-away success. It went above and beyond what we thought it might achieve. Thousands upon thousands watched that weekend, as many big names tore it up on Nurburgring GP, fighting it out while being broadcast in their rigs on Zoom… surreal and somehow so real. And the result: the viewers wanted more! So for the next 15 weeks we put on a show every single Saturday evening, with a hotlap competition during the week to find the best and fastest aspiring simracers to take part and get their chance to be on the podium. There was a long list of drivers, some with almost mythical status, competing in the Legends part of the show. Together they battled it out on the virtual track, some of them for the very first time in a sim rig. The Legends spanned multiple generations of champions across many different series and disciplines, Rally, F1, BTCC, Le Mans, Indycar – Jenson Button, Juan Pablo Montoya, Fernando Alonso, David Brabham, Petter Solberg, Jason Plato, Dario Franchitti, Helio Castroneves, Rubens Barrichello, Emanuele Pirro, Max Papis, Emerson Fittipaldi, the list goes on and on! Even Mario Andretti himself took part in the event at Indianapolis, putting on a massive show for the whole world. Not to forget Sebastian Vettel showed up for a race!
For rFactor 2, it was a once-in-a-lifetime opportunity to see these legends experience simracing all at once, and so wholeheartedly. Aside from being streamed on Youtube, these events ended up reaching far and wide, even into people’s living rooms on Dutch Ziggo TV, ESPN and Eurosport. We would like to thank Ideas+Cars and their team for such close teamwork and know-how, and all the drivers, simracers and pros who took part!
With all the recent updates to the game visuals, we are now preparing to release documentation to help modders take full advantage of these updates. For now this will focus on track content, with car updates coming at a later date. We have been working hard to upgrade our tools and documentation to help make that possible. Tools will be made available including 3ds Max 2021 plugins and an independent Material Editor, and full documentation will be released for the shaders, as well as some guides and tips for getting setup. This will represent a significant step forward in the way content can be created and the options available to modders, with all the latest features, including improving night-time effects, tree shading and road and terrain blending options. To support this, we will release an updated Loch Drummond that will be included in ModDev by default. This track is a small fantasy circuit that has been updated to make full use of the various options from our work on recent tracks.
In recent updates, we made adjustments to old content to help it be compatible with lighting updates. We will add a few options here to help modders, including the ability to disable these changes on a per-material basis if required. Also with this update, we will allow modders to customize the atmospherics in tracks again. This will now be in the form of scalars to adjust the density of haze in different conditions and also to set the amount of air pollution. This should result in an easier to use system and help us keep effects consistent across the game.
This information will all be made available on our Developers Guide: https://docs.studio-397.com/developers-guide/
Tracking Down Endurance Issues
A few weeks ago, after the 24 hour race, we promised to give you regular updates of our efforts to track down and fix the issues that occurred during that race, and a few races before that. In fact, this effort is not something we started two weeks ago, it is an ongoing process. But before we look at the specific issues, let us first explain a bit more about software development and fixing bugs.
For starters, let’s give you a bit of background on how we develop code, the processes we have in place to ensure that our code is correct as well as a brief introduction on what kind of bugs there are in code and how to fix them.
Every change we make to the codebase, either to fix a bug or to implement a new feature, is developed in isolation. As soon as the developer working on it is confident the change is correct, he or she will do two things. The first is to ask at least two colleagues to review the changes. By getting others to look at the code, we typically catch mistakes that the original author would miss. I’m sure you have had cases where you are blind to your own spelling mistakes when writing some text. For code it’s typically no different. The second is to create a build on Steam that can be tested by others. If the change passes both checks, it gets integrated into the next update. That goes to our group of beta testers who again test the change to ensure it works as designed. If that passes, you will find the change in the next public update.
So that’s how we deal with changes. What about the extensive codebase we already have? Here the process starts by identifying a bug and being able to find a series of steps to reproduce it. If we can reproduce it, we typically have no problem fixing the underlying issue.
There are two types of bugs in code. Bugs that come from mistakes in the logic of the code. Once identified they are typically easy to reproduce and fix. The second type is timing and threading related, also known as concurrency bugs, and in recent years these tend to happen more often as processors get more and more cores and a lot of things happen simultaneously. Reproducing this type of bug is usually a lot more tricky as the slightest change in the execution timing might cause it to appear or disappear. Finding them requires a combination of luck, lots of testing and in some cases rigorous code reviews. Given that the rFactor 2 codebase consists of millions of lines of code (to compare, a typical novel will be around 15.000 lines) you can probably figure out that going over it front to back is going to be a very time consuming process. And you might still glance over the actual issue (do you still remember what the name of the street was that the main protagonist was crossing on page 34?).
Now that we’ve explained the process, let’s go back to the 24 hour event. Directly after the race we started analyzing and categorizing all the different reports we got and pretty soon we were convinced that we were looking at one or more concurrency issues. Reproducing these was going to be tricky. We have a framework that we can use to setup fully automated tests, so our first step was to try and reproduce the exact conditions of this 24 hour race. Specifically we started designing test scenarios that resembled the reports. Two weeks later, we are now seeing the first results of those tests, with a reproducible scenario that we are investigating further. I expect us to be able to explain more in the next roadmap, but the good news is that we found something.
As a result of finding something, we also have some preliminary advice for those running endurance races. Contrary to what most series have been doing, making sure that the replacement driver joins shortly before the intended driver swap and then having the original driver disconnect soon after, it for now is probably better for all drivers to join the server before the race starts and stay on the server throughout the whole event. Our code in theory can handle up to 104 drivers and another 104 spectators, so if your races have less than that, try out this advice while we continue to track down these issues.
Wrapping it up
That’s it for another month. There are a few topics we did not discuss this time round. The UI, improvements to our overlays, what’s happening with the competition system and a few other things we will not doubt revisit in the remaining summer months. While real racing slowly returns, sim racing is taking a short summer break, to come back even stronger after. We started democratizing racing, and that’s a path we will certainly continue to follow! Enjoy the rest of the summer sale and stay safe! In closing there is one topic we want to quickly address. In the sale we changed the bundles we have on sale. We thought it was time to do that. In that process we might have taken away the opportunity for some to “complete their collection”. We did listen to your feedback and will come with a one-time solution for that soon.