It’s live! In the last couple of roadmap updates, we’ve made it no secret that we have been working hard on a set of performance upgrades. We’ve taken our time to get it right and took advantage of the DirectX 11 API as much as possible. Our focus was on performance, while keeping the actual look of the game the same. All of this centers around a concept called “frame time”, which is the time it takes to completely render a single frame to your screen(s). Obviously we want that time to be as low as possible, but we also want it to be as constant as possible as only the combination of both leads to a smooth display. In general there are three things that influence this: your video card (GPU), the processor you have (CPU) and the bus between them and their memory. Optimizing performance means looking at all three, and we’ll go into more detail on how we did that below.
To update your install to this latest version you only need to make sure that you’re opted-out of any beta versions you might have been using before. This build also has a new multiplayer version (1.1110) which means we updated the dedicated server. Depending on how you installed that one, you might have to explicitly update it.
Graphics Performance Improvements
Thanks to DX11, we are now able to take advantage of multiple graphics threads and leverage the modern CPUs to render the scene faster. Internally we had to make quite a lot of changes to the code to make this possible and really take advantage. One area where we got a significant improvement is in our shadow rendering. Using multiple threads speeds that up, and another thing we did was to no longer render the shadows separately for each screen, which means in multiview (three screens) and VR (two screens) we are doing less work. There are also a couple of high-level optimizations we have done to very specific systems. This includes our handling of spotlights and brake disk glow, but also the way real road updates. All these systems were re-written to be more efficient from a CPU and GPU point of view. On top of that, we addressed the traffic on the bus between the CPU and GPU, minimizing and optimizing it to have a more consistent frame time, which leads to significantly less stuttering, especially on systems where this was the bottleneck in the whole pipeline. Our final optimization was of our most used and time critical shaders. We’ve optimized those to be less expensive to the GPU.
As you can probably see by now, there are quite a lot of things that changed, and one question we have not answered is how much all of these changes combined influence performance? The answer is, it depends, which is why we’re not making any claims in terms of numbers, but invite you to give it a try on your own system. We are confident that you will see an improvement, both in terms of consistency in the framerate, meaning less stutters and in terms of an overall improvement.
Change Log
On top of these, we took the opportunity to add a few other improvements and bugfixes in several areas of the simulation. We are listing those here.
New HUD
- Released the newly designed HUD, optimized for Full HD screens and anything else with that aspect ratio, and made it the default. We have removed our old HUD designs from the install.
- The “deltabest” indication gets reset at the start of a session only, instead of every time you get in the car. We also make sure to only show it when you’re on a valid lap.
- Ensured that the Low Speed Indicator (LSI) is still transparent.
AI
- Fixed an issue with the AI throttle and brake application, which would cause poor accelleration at very low AI strengths.
Sound
- Changed the way opponent volume works. If you set them to 100% in the past, they were way too loud. If you turned them down, they would not be as loud as the player car in external cameras. We introduced a damping factor now for the cockpit that can be configured per car and defaults to 0.3 that solves this issue.
- The number of engine samples was increased to 12 and the number of transmission samples to 6 to allow much richer sounds for both.
Inputs
- Changed the way in which we combine primary and alternate inputs for the throttle, brake and steering to end up with more consistent behaviour for both.
- When using keyboard rates for analog, typically used with game controllers, we apply a lot of smoothing which initially results in a fast response, but eventually responds very slowly, making a car hard to control. We’ve designed a new algorithm that works a lot better and is more linear.
Development Corner
- We have added some new 64 bit compatible 3D Studio Max 2012 plugins. They are still in “beta” but have been used at Studio 397 for some time now. These should help anyone working on larger scenes. Please note that, in order to improve stability, we strongly recommend updating Max to Service Pack 2.
- As we no longer support Max 2010 and 2011, those plugins have now been removed.
- We have removed gJED, as we feel the tool in its current state did not meet our quality standards.
- The plugin API has been enhanced and bumped to version 8, with improved application life cycle support. This brings back some of the data we had to remove because it was mixed with DirectX 9 information that we could no longer support. We also added the deltabest time for all cars. The new package and documentation for it will be released on our site soon after this release.
Bugfixes
- Fixed the join/leave/join messages and unnecessary reloading of a car when you joined a server with car upgrades selected.
- Fixed a bug in our SteamPlugin which accidentally returned the wrong API version, causing the game to try to invoke it wrongly and crash.
- Fixed viewer crash on startup.
- Fixed the very dark areas on the car in the showroom, which was caused by us not correctly setting up ambient light.
- Fixed black screen that some people got when starting the physics (ptool) and tyre (ttool) tools.
- Removed a redundant log file from the Steam distribution as it would cause a verify ever on every check.
- Fixed two issues with the 32 bits version that crashed in specific circumstances.
- Displaying the performance info now works on VR as well.
Wrapping it up
We obviously hope you will enjoy this new build, and before we wrap up this article, there are a few closing words we would like to add. In the introduction we already stated that our focus now was on performance and with that out of the way we still have a few other areas to look at. In the graphics department we are looking at some improvements on how our rain effects look on external cameras, as well as fixing an issue that specifically affects VR in rainy conditions. We’ll elaborate a bit more on this in our monthly roadmaps. In the mean time, have a great weekend!