As the days are getting longer and warmer, the Sim Formula event last January seems like a long time ago. A good memory. The positive feedback there has led to quite a few people getting in touch. Some expressed an interest in somehow using or licensing the engine, others just to learn about its progress. From those discussions, the idea arose to provide a quarterly update to keep everybody who is interested in the loop on the current developments.
Vertical slice
What was shown at Sim Formula is what, in software development, is often called a “vertical slice”. It’s a technique to develop software where you build the essential and minimal parts of all the subsystems to end up with something you can run and evaluate.
The primary aim was to get feedback on the “driving feeling” as ultimately every racing simulation is as good as the feeling you get when behind the wheel. Given the positive and constructive feedback we got, we can definitely conclude it was a success.
For the continued development that meant that the next phase is to look at all these different subsystems and “finish them”. That’s still a lot of work, and not every part of it is as visible or exciting as that first time when you can start driving the simulation, but it is crucial and a modular physics engine consists of many small building blocks that give you an almost infinite amount of elements you can add and refine over time.
So what have we been up to?
One area where a lot of progress was made was in the modeling of vehicles and how those different physics elements can be linked to various parts of the 3D model. Due to the modular nature of the physics, it is possible to model all kinds of non-standard vehicles, such as a historic F1 car with six wheels that works and steers exactly like in real life.
Taking that car as an example, you end up with a vehicle that is difficult to model as you suddenly need to handle non-standard steering and suspension setups and that is something that trickles through to all different areas of the simulation.
For example, your telemetry now needs to be able to handle a vehicle with six wheels, and in multiplayer you need to position all of them. Same goes for sounds, any data overlays you might show on a broadcast, and many more things you would not even think about initially.
Starting from scratch means there is an opportunity to properly deal with such variations and this is one of the things that has been worked on over the last few months. The development is not done yet, but there is a framework in place that allows us to deal with the variations per vehicle.
To test this system, we are modeling a couple of completely different types of vehicles to push different aspects of the engine. From high-downforce modern prototypes to karts to classic cars.
Physics modules
Another area where things moved ahead is the different available physics modules. As mentioned before, this is a huge topic as there are a lot of different things you can and need to model.
Since the first demo, the whole drivetrain has been significantly upgraded. The manual gearbox received some updates, improving amongst other things the clutch handling. The engine itself gained a couple of features that make it behave more like an internal combustion engine. It can now stall and you can start it using either a starter motor or by simply letting the vehicle roll and engaging the clutch. It will also correctly run idle.
The vehicle brakes also gained a few new features as they can now heat up and cool down. Their stopping power is now dependent on their temperature, a relationship that can be specified as a bespoke graph based on available real-world data. Brake cooling ducts are modeled and even affected by wind direction and strength, so if you park your car with its nose in a strong headwind, those brakes will cool down quicker.
We’ve also added different steering mechanisms, supporting either a rack and pinion setup or a pitman arm, both with force feedback that is calculated by measuring the torque response on the steering column as calculated by the physics engine. The steering angle can be configured to match the real car, using software based end stops, provided of course your wheelbase can actually turn that far. If not, we’ll just use whatever maximum is available.
Suspension kinematics
A substantial part of vehicle simulation is the correct recreation of suspension kinematics. This directly influences the rotation and translation of the wheels relative to the chassis and therefore also the road surface while driving. As the suspension is “working” values for camber and toe are constantly changing. So, to simulate a vehicle correctly it is necessary to simulate the kinematic correlations as correctly as possible.
In recent months we spent a lot of time creating different types of suspensions to make sure that we can simulate all of them.
Those who’ve been at Sim Formula Europe 2024 or watched the videos from that event have probably already seen the two cars there. The classic red “tintop” was using a solid leaf spring rear axle, while the 70’s F1 car used a traditional double wishbone suspension.
For pre-war grand prix cars, we’ve modeled the De Dion, Swing Axle and Parallel Trailing Arm suspensions. On the other side of the spectrum, for modern prototype, formula and GT cars, we have both Push and Pull Rod suspensions, optionally including a third spring.
The McPerson suspension was added to be used in compact cars, and for the modern road and sports cars we have Multi-Link suspensions.
Besides all those, we have modeled a typical Solid suspension as seen on karts and finally a Solid Three Link Axle suspension as seen on off-road race cars.
Of course this list does not cover everything, so fundamentally we have the ability to assemble any suspension from individual parts using linear or torsional springs and dampers and connecting them to different types of joints and arms! We also added the ability to optionally hook up and configure anti-roll bars.
Wrapping it up
Some of the physics features described above have been donated back to Chrono::Vehicle and a few days ago a new major release of the whole Chrono project, version 9, was published with an impressive set of changes ranging from adding new visualizations to updated tire models, a generic template allowing you to freely model arbitrary suspensions and various other smaller physics improvements.
Similarly, a few of the graphics features and bug fixes were donated back to Godot. From a simracing point of view Godot is a great engine as it uses a Forward+ renderer which is well suited for “fast moving” games. It uses Vulkan as a graphics API, which makes it platform independent, keeping the door open for builds that run on Linux, the Steam Deck or Mac OS X. An upcoming new feature in the next Godot release will be support for DirectX 12, which will open the door to deployments on the XBox console platform.
That wraps up the blog for now, but not before answering a question we get asked a lot: What simulation will you be building? What features will be in it, and what content? The honest answer right now is “We have not decided yet”. There are many ideas floating around and we’re definitely looking to provide some unique experiences, but for now the focus is on the core technology. We’ll provide another update near the end of summer, and by then we hope to also have news about Sim Formula.
From our little garage, we wish you all a great summer and we hope to meet you again soon!