A look at tire development in BeamNG (Part 1)


Hello everybody, welcome to my first blog post for BeamNG! My aim with this post is to introduce a project I am undertaking, applying a unique approach to testing and tuning the tire models in the game. I’m a mechanical engineer by education, and I’m being encouraged to get as technical as I want for these posts, so get ready for heavy reading!

One of the things that gives BeamNG so much potential as a vehicle simulator is that it takes a bottom-up approach to simulation. Instead of defining a car body or tire as a basic object in the game and applying some physics equations, it creates these complicated structures from networks of nodes and beams. This bottom-up approach to simulation is incredibly versatile, but it means that the subtle nature of vehicle handling is dependent on not just the core physics but also the physical tire and vehicle models created within it. To date the dev team has made improvements to the vehicle handling through a test and tune method, where improvements to physics and models are made based on driving tests. However, to truly validate the handing and find new areas to improve, one needs the ability to test individual aspects of the physics and vehicles more objectively, and compare tests to real life data. This is what I have been working towards.

My first project has been to create a tire testing machine within the game. This machine takes the tire and wheel from any of the vehicles and drives it along the ground at controlled speeds, loads, and angles. The design parallels those that tire researchers use to test real tires. In operation, the tire tester can continuously log force data from the wheel axle. One can also modify any tire or friction model parameter and see the change in tire behavior graphed in real time, independent of factors like the vehicle’s suspension geometry or chassis rigidity. With this data logged, I can then create plots that compare empirical results; in-game vs. real life, or, old tire model vs. new tire model.

My first use of this machine was to characterize the hubWheel, which is the now deprecated tire model that has been replaced in version I spent many hours logging data, coming up with plotted curves to show some of the most important tire behaviors. I am now using it to perform tests on the new pressureWheel, using the old hubWheel data as a benchmark. Here is a short video showing the testing machine in motion:

Thank you CarlosAir for sharing your lua skills, creating more advanced controls and data logging abilities for the Tire Tester.

Tire Terms

** Before we go any further, I’d like to do a basic definition of some terms used to describe tires. If you are already familiar you can skip this part.

Slip Angle - The angle between the direction the tire faces and the direction it travels. As a tire rolls forward, elements of the tread in the contact patch can be imagined to flex and “walk” over each other, allowing the tire to also move sideways, without actually sliding. This happens when the wheel is steered in an attempt to turn. Turn hard enough, and the slip angle will increase as the tire contact patch starts to slide.

Slip Ratio – Similar to slip angle, this is a relation between the speed of the tire compared to the ground. A locked up tire skidding on the ground is a slip ratio of -1, whereas a tire spinning twice as fast as the ground has a slip ratio of +1. Parts of the tire tread can compress and expand as they touch and leave the ground, allowing the tire to travel a bit faster or slower than the ground without sliding. Apply too much power or brake and the slip ratio grows as the tire begins to slide.

Normal Force – The gravitational force holding the tire against the ground.

Lateral Force – Defined as the force developed along the wheel axis. Essentially, this is the cornering force developed when turning.

Longitudinal Force – Defined as the force developed parallel to the tire tread, perpendicular to the axle. Essentially, this is the acceleration or deceleration force caused by throttle or brake.

Cornering Stiffness – A tire’s size, construction, and air pressure determine how much slip angle is developed for a given amount of lateral force. A stiffer, wider tire, with more pressure, tends to have a greater cornering stiffness, causing less lateral movement and a more direct feeling to the steering.

Slip Stiffness – Similar to cornering stiffness, but acting longitudinally. More slip stiffness means more direct response to power or brake.

Ok, those were not very rigorous definitions, mainly just meant to give an intuitive sense. There are plenty of great resources on the internet if these were too brief. On to the tests!

**Lateral (Cornering) Force Vs. Slip Angle


** With these tests I have formed a decent picture of what needs to improve in BeamNG’s tire model. In the next blog I will be using the tests and terms explained here to compare the hubWheel with the new and improved pressureWheel! For now, here is a surface plot of the old Ibishu Covet hubWheel to show as an example. I leave it as an exercise for you to infer what you can!


BeamNG Major Updates

BeamNG.drive v0.25 - Spark Your Passion
BeamNG.drive v0.25 release highlights
Festive Update v0.24.1 Released
BeamNG.drive v0.24.1 release highlights
The 2021 Winter Release – BeamNG.drive v0.24
BeamNG.drive v0.24 release highlights
The 2021 Summer Release – BeamNG.drive v0.23
BeamNG.drive v0.23 release highlights
The 2021 Spring Release – BeamNG.drive v0.22
BeamNG.drive v0.22 release notes
The 2020 Winter Release – BeamNG v0.21
BeamNG.drive v0.21 release notes
The 2020 Summer Release – BeamNG v0.20
BeamNG.drive v0.20 release notes
“La Vie à Toute Vitesse” – BeamNG.drive v0.19
BeamNG.drive v0.19 release notes
The 2019 Winter Release – BeamNG.drive v0.18
BeamNG.drive v0.18 release notes
Buckle up, heavy traffic ahead: Update 0.17 released
BeamNG.drive v0.17 release notes
Electrifying 0.16
BeamNG.drive v0.16 release notes
A Small Car on a Big Map – Version 0.15 released
BeamNG.drive v0.15 release notes
Light Runner – Version 0.14 Released
BeamNG.drive v0.14 release notes
The Automation Collaboration – Version 0.13 Released
BeamNG.drive v0.13 release notes
Get Busy – version 0.12 released
BeamNG.drive v0.12 release notes
Alpha version 0.11 – The Coast is Clear
BeamNG.drive v0.11 release notes
Sounds like version 0.10 is out!
BeamNG.drive v0.10 release notes
Hopping into 0.9
BeamNG.drive v0.9 release notes
Version 0.8 rolling in …
BeamNG.drive v0.8 release notes
Alpha version 0.7 released :)
BeamNG.drive v0.7 release notes