rFactor: Full Steam Ahead!


When Image Space Incorporated (ISI) contacted me to ask me to bring rFactor to Steam a few months ago, I did not have to think long about the opportunity and kindly accepted the challenge. Almost 10 years ago, the first version of rFactor had been released. Even before that I had been a beta tester, joining a group of enthusiastic simracers and even a few real-life racers like for example Tommy Milner (now a full-time factory driver for Corvette Racing in the C7.R).

Ever since this initial release, rFactor has enjoyed a loyal fanbase and thriving community. It was the first racing simulation that was built from the ground up to be modable and it now has a huge database of literally thousands of add-on tracks and cars.

Early 2012 ISI released rFactor 2, an evolution of the original version. It contained a lot of code that had been developed as part of rFactor Pro, a version of the simulation that is sold to professional racing and formula one teams, backported into the new “consumer” version. It enhanced the original with a more sophisticated tire and physics model and features like variable weather and a “real road” track surface that changes over the course of a race and really takes into account where cars drive instead of relying on some pre-defined “ideal line”.

ISI has always published rFactor itself, selling it on-line, but nowadays the Steam platform is gaining so much traction amongst gamers in general that you would be stupid to not consider it as a way to sell your software. Not only that, but Steam comes with many community features that really enhance your game. Like every new publisher, we had to go through the Greenlight process and within a couple of weeks rFactor got accepted with an impressive number of votes.

This presented me, as a software developer, with a unique opportunity to learn about two things that interested me for a long time: the racing simulation itself and the various APIs of Steam. It was also a personal challenge for me after developing software written in Java for about 20 years. A long time ago I developed software for the Amiga in C, and over the years I did write a few small pieces of C and C++ code, mostly for low-level drivers. However, I always preach that a good software developer should be able to learn any language quickly, so that set the bar for me as well!

The first step in the conversion process was to create a new binary that exchanged the extensive DRM system that ISI had in place for Steam’s DRM solution. For obvious reasons I won’t explain too much about that process.

The next step was to integrate with the Steam APIs so I could start leveraging some of the features that the platform provides. Statistics were a logical place to start and due to the modular way that rFactor is structured, it was quite easy to get data from the engine and feed it to Steam. That opened the door to achievements, as those can be built on top of statistics. Whenever you unlock an achievement, you automatically get notified by Steam. Achievements show up on your profile, and you can compare them with your friends.

On the community side, Steam comes with a friends system, and naturally rFactor integrates with that. You can see when a friend playing rFactor, and if he or she is in a multiplayer race, you can even directly join the same event. Chat and voice chat features allow you to easily get in touch and the new broadcast features even allow you to watch your friends drive. Screenshots and videos, as well as guides explaining certain aspects of the game can also be shared on the community hub.

The rFactor multiplayer server was extended to also connect to the Steam matchmaker, so directly within your Steam client you can see a list of all dedicated and non-dedicated servers and join them. The servers also show up in the traditional rFactor matchmaker, so even your friends who have not switched to Steam yet can join. They will even be listed in Steam but obviously you cannot use some of the other features to interact with them.

To make it easier for people to setup a dedicated server, we also provide a Stream distribution that can be downloaded quickly and installed without having to install and log in to a Steam client. That makes it very easy to get started as all you need to do is download a small ZIP file with an executable that bootstraps the further installation. That same executable can also be used to install updates.


Screenshot taken from Outrun by Sega.

Another fun feature is the Steam Music Player. It allows you to not only play the in-game music, but also hooks up to your personal music collection and play those songs while driving. A lot of people who drive rFactor spent lots of time building realistic cockpits, complete with a wheel, pedals, shifters and button boxes. Therefore it made sense to also include support for mapping various buttons to the music player, so you can emulate a car stereo!

Now apart from all those Steam-related features, doing an update to rFactor also allowed me to address some other issues.

Over the years, as computers and 3D graphics cards became more powerful and on-line leagues bigger, some mods have managed to break the 2GB memory limit that rFactor as a 32 bit application has. The Steam version of rFactor now supports 4GB out of the box.


I’ve mentioned cockpits before, and another area where rFactor could use an update is in its support for multiple controllers. Up til now, rFactor supported up to 3 controllers, with up to 32 buttons per controller. Some current cockpits, including mine, had more, so I updated the code to support up to 6 controllers and 64 buttons per controller. Also we included more controller profiles for common hardware, to get you started quickly.

The last aspect is better support for cockpits that feature triple screen setups. In such setups, you can run realistic Field Of View settings (with a single screen you usually end up compromising the FOV to get better visibility) and rFactor now supports both setting lower vertical FOV angles, down to 10 degrees, and mapping controls to buttons to change the FOV in-car.

Finally, two small issues were addressed. One is that the number of pitstops are now counted correctly. The original code in rFactor was a bit too optimistic and added a pitstop whenever you left the pits, including when you simply drove out of your garage. That has now been corrected and this fix was also implemented in rFactor 2. The other is that by default the server now does not pause while zero players are connected to it. While paused, plugins do not get called, which means it is hard for them to update certain statistics. An improvement for this in both rFactor and rFactor 2 is being discussed internally, but for now not pausing the server is the best option.

In summary, the release of rFactor on Steam contains some interesting new features for the seasoned simracers, and it also gives a wide audience the opportunity to get introduced to simracing. Finally, the experience that ISI gains will no doubt be used in their future roadmap.

You can check out the Steam version of rFactor here: The full version, available with a 15% launch discount in the first week. There is also a demo version available through the same link.

Posted in Article, Report Tagged with: , , ,