I came across an interesting issue with the shifting logic in the 'Real Automatic' mode when using an engine whose RPM limit was lower than that of the base game engines, which all use 2200 (except the C15 which uses 2300) — in this case I used
rpm_limit: 1800rpm. Under full-throttle acceleration, the game does not upshift even when the RPM limit is hit; It will only upshift under part throttle when I presume the upshift RPM threshold is lower. It seems as if the upshift threshold RPM is a function of only the throttle axis and does not factor in rpm_limit.
My suggestion for a quick, dirty solution is to either scale the upshift threshold proportional to rpm_limit relative to the calibrated rpm limit
Code: Select all
corrected_value = (rpm_limit/2200) * current_value
or have the upshift threshold return whichever is less of its current output and rpm_limit
Code: Select all
corrected_value = min(rpm_limit, current_value)
Now, for a more robust solution — at the risk of digressing into a feature suggestion — I would suggest parameterizing the upshift threshold calculation based on two new attributes in accessory_engine_data:
Code: Select all
auto_cruise_rpm:
// sets target rpm for automatic shifting algorithm
// algorithm should 'favour' shifts (at low throttle) where the resulting engine rpm is closer to this value, without going under
auto_max_upshift_rpm:
// sets upper limit for upshift threshold