For a while, the Sunburst 1.8 CVT was pretty problematic in BeamNG. It did not behave anything like an economy CVT at all (i.e. it would never drop RPMs fast enough with low throttle, S mode didn't work, and fuel economy wasn't where it should be either). I tested it again after some updates and now the Sunburst's CVT behaves VERY similarly to how the CVT in my real life car does (a 2014 Honda Civic). The S mode even engine brakes just like it does in my Civic, and at similar RPMs. Anyone who thinks Beam isn't making progress needs to look a little closer, because it really is.
If you were to floor it in a car with a CVT IRL, and said car had its peak power output close to redline, then the car revs to near redline (I have a car like this, where peak power is at 6500 rpm, redline is 6700). However, I do agree that the CVT may need more adjusting but it has been improved significantly.
The problem with this CVT(and other "smart" transmission) is that the aggression is always 0.75 when stopped. This makes the Sunburst(DCT&CVT) want to rev up to 3000+ RPM before upshift when pulling away, even with low throttle.
I wonder if that could be because of what Capt. Kirk mentioned that at idle thorttle is 15% that gives 90% of torque or then it just is hardcoded to be 0.75 at idle, haven't checked. Either way, it probably is for easier get go as people tend to drive bit hard compared to IRL driving, not really sure about that either, but usually there is a reason behind every choice devs have made, but that reason is not always obvious when not knowing all the variables involved. What I know is that CVT indeed has improved really a lot, with current tune CVT is quite enjoyable to use for normal sensible driving.
This is, of course coded, because the shiftlogic is using the accelerator padal, not engine power to adjust aggression value. You can test this by shutting down the engine while cruising, then floor it, then the gearbox will still downshift
Hard coded means that something has set value, for example variable1 = 0.75 instead of having variable1 = electrics.values.throttle which again would be affect by if idle throttle is set to be 0.15 in jbeam, but as value can be changed it is not hard coded. From lua folder one can probably find how it is set to be.
The issue is that some cars require more throttle to get their torque than others.. but the agression factor transmissions are constant, eg. half throttle will produce quite a high agression factor.. The setup at the moment uses less torque than is necessary, so that when it shifts up a gear, the next gear can then use full torque of the engine, and thus the power is relatively constant despite the large drop in engine revs (and available power).. In a CVT this is not necessary since you don't need to account for the next gear, hence you might aswell use full torque (most of it, not fuel enriched torque) to propel the car, instead of leaving some in reserve for the next gear.. That means that at all rev ranges full torque is used, say 4000rpm you feather the throttle to get to 4000RPM now in the CVT, it uses like 50% of engine torque, ridiculous really.. If we could use the old 'hydraulic' simulation (not agression factor) and instead use the agression value to not be (throttle position)^3 but rather say (tp)^2 or some other index value (that is obviously greater than 1) then that would be brilliant..
The modern aggression value is too high, there's two problems about it. 1. Rapidly adjusting throttle increase aggression, if the throttle is stationary the aggression is throttle. Therefore, the aggression is always no less than throttle value. Both "aggressionSmoothingUp/Down" and "gearboxDecisionSmoothingUp/Down" only adjust how fast the changing speed aggression value and they don't matter the final aggression value. For example the RPM is 3000 if you apply 50% throttle constantly, if you don't move the throttle, it'll upshift at 3000RPM regardless of the "aggressionSmoothing" and the "gearboxDecisionSmoothing" values. There's no shift map graph adjustment. So you cannot do this (the picture below) in BeamNG 2. The non-aggressive shiftlogic effectively only a kickdown. If you set false to "useSmartAggressionCalculation" Then the "lowShiftUp/DownRPM" works in 0-90% throttle. Even if you apply the same throttle constantly, the non-aggressive shiftlogic is still always upshift earlier than the aggressive shiftlogic Therefore the CVT still rev higher than real life even if you decrease/increase the "aggressionSmoothingUp/Down" and "gearboxDecisionSmoothingUp/Down" You can make the CVT to low RPM by setting the "useSmartAggressionCalculation" to false, however the S mode won't work if you do this(see attachment)
Towards the end of the "vehicleController" LUA, the initial (and possibly "resting") drivingAggression value is set to 0.75. This was the first thing I changed as it also affected the smart automatics. 00's CVTs (and even today's CVTs tbh) don't have particularly adaptive logic in D. They would always "shift up" to keep RPM as low as possible on throttle lift. The Gavrils should too, but I digress. A minor contributor to high RPM behaviour in the Sunburst CVT is the ratio spread and diff ratio not matching up to the IRL mechanical inspiration (regardless of compensating for the variance in driven tire diameter between the 2). The lockup clutch behaviour is not ideal either. Anecdote time! The only adaptive program in a CVT's D mode that I've experienced recently was ratio holding logic on a long, steep downhill, Speed and RPM linearly and slowly increased a while after releasing all pedals. This was largely inadequate because RPM had already dropped on initial lifting. So I switched to manual mode because avoiding the faintest whiff of brakes was a personal goal. DFCO meant that no fuel was used and it's a rental so... And the concern that brake failure = massive crash. Tiny brakes for a narrow body but otherwise heavy North American-size MPV.
I didn't drive a CVT vehicle IRL so I can only guess the behavior. The torque converter lockup right before starting to change the gear ratio(upshift), not at a constant RPM but depends on speed/throttle The transmission only downshift if the engine is more than 80% loaded, low-mid throttle the RPM stays low, mid-high throttle the engine always loaded and the RPM increase incrementally. The S or L mode increase(or maximize if there's more than one) engine breaking and keeping the RPM in the power band Driver uses the M mode to control the target RPM via a lever/knob/switch. He/she can maintain a steady speed downhill by increase/decrease the RPM when the hill steepen/shallowen.
The shiftlogic is depends on the aggressionCoef, which is aggression^2. Thus with smart aggression the shift is (throttle*1.333)^2, the non-aggression is (throttle^3)^2 The aggression value is wheelspeed <1 then 0.75 Manual mode is a bit hard to implement, something about setting a target RPM regardless of throttle? I made this, hope to solve the RPM too high problem. Also the torque converter lockup at a fairly low speed.