CHANGELOG v1.3
Server authorative replication(no client prediction yet)
Motocycle sample with BikeHelper assist(ArcadeAssists)
New DragRace map for the sample project
Substep tick event available for blueprints
Ability to drive on moving rigidbodies
Improvements and bug fixes
Additional Notes:
-“Allow Wheel Rotation Against Engine” option had a problem that prevented vehicles from stopping on flat surfaces, this is fixed now.
-Torque splitter assist could be problematic with low frame rates, this is fixed now.
-Sphere casting could fail to generate a contact in some cases, this is fixed now.
-There was a bug that effected 4wd vehicles that have different radius for each axle(like a tractor), this is fixed now.
-Instant suspension contacts could generate huge forces, resulting forces are clamped now.
-Antirollbars in arcade assists were buggy, they are adapted to the current suspension implementation.
-There exists some self steering issues, one of them is caused by the “(Mx)Overturn Moment Scale” parameter and it happens at high speeds like 300+ kmh. Another issue can occur because of the “Combined Lateral” options of a tire model. Setting some parameters(RVY1-6) to zero can solve the issue.
-We used to enable/disable standard input component when the vehicle is possesed/unpossesed. This is removed now so the user has to do that manually. The sandbox maps level blueprint is adapted to this change.
-In some rare cases the standard input component could cause a random crash. We suspected of a garbage collection issue and updated the UInputComponent as an UPROPERTY. The problems seems to be resolved now.
-Skidmark normals were based on vehicle up direction, replaced with surface normal now.
-You can inject inputs to the StandardInput component now, for ex. in MobileInput.map inputs are not directly applied to the vehicle but injected to the StandardInput now. This way you can benefit from its filters and steering assist.
-DragRace map showcases the use of “SetStartGridMode” function in StandardInput component.
-Each assist in ArcadeAssists component has enable/disable option now, they are all off by default.
-4.22 support is droppped, epic do not allow more then 3 versions to be uploaded.
Replication Notes:
-Replication component implements input and state synchronization, client prediction is not working correctly yet(you will feel the lag) so it is delayed for the next release.
-Bandwidth optimization was also not the focus of this release, the result of client prediction will show us if we can compress inputs and/or state data.
-Projective velocity blending is preferred over interpolation for state synchronization, it shows the vehicles closer to their real locations but it can suffer from spikes in frame or ping rates.
-Replication does not work properly with 32 bit windows builds, the reason is unknown but somehow rotations(FQuat) are not replicated.
-When testing replication(listen server) with separate windows(different processes with multiple displays) the window that loses focus becomes erratic in framerate so it seems like it does not work smooth but this does not happen with 4.22 or with a dedicated server.
-Stable framerate is important so the best is to have a fixed framerate or at least limited to some value like 60fps.
-When using a dedicated server make sure you limit the tick rates or you will experience huge delays, you can add the following lines to the DefaultEngine.ini file:
should be fine(only tested for a simple scenario) but make a backup in any case.
the only thing you may need to check is the arcade assists, each assist has on/off option now and they are off by default.
no there is no change in suspension model, this clamps the force when an instant contact generates more then %100 compression, fixes a specific case.
currently enabling “hard contact option” can cause bounces or the rigidbody can hit the ground hard and bounce.
i could not recreate the issue but sticky tires is an experimental feature and it can behave problematic in certain cases.
also hard contact will be updated in the minor release, it will apply an impulse instead of forces which behaves much better but it has its own drawback that the vehicle can slow down unrealistically when landing.
I am currently nearing the end of my vehicle selection methods and will be digging deeper into the vehicles in general but… so far all tests continue to perform well.
CHANGELOG v1.3.1
Better hard contact implementation
Ability to look back with OrbitCamera
Fixed the low fps suspension bug
Additional Notes:
-Previous hard contact implementation generated larger forces when the suspension is fully compressed which could cause bouncy behaviour. Now the vehicle is translated to a non-penetrating position and the vertical velocity is eliminated.
-Press the middle mouse button to look back in the sandbox map.
-Using the auto drive component with an empty brake curve could crash the engine, it is fixed now.
-The suspensions started to break when the frame rate falls below a certain value, it is fixed now.
-“Detect Ground Velocity” option is added to the serializer.
clutch is auto managed when “auto change” option is enabled in transmission component so make sure it is disabled.
also set “shifter type” to manual in standard input component if you want to manually set gears.
I just got around to updating to the latest version and it looks like the ‘Set Throttle’ node is missing now. Set Steering and Set Braking are still there. Wasn’t sure if this was intentional or not, but I’m not running the standard input and need the node. I’m running 4.24. Thanks.
g-force calculation is basically calculation of acceleration, so you need to do some basic physics math:
1-get the velocity vector from rigidbody
2-tranform into local space to get local velocity
3-find the difference between last frames local velocity (dv)
4-find the acceleration (a = dv / dt)
additional steps to get g-units.
5-convert units to m/s^2 since 1 unreal unit is 1cm, so scale the a with 1/100
6-divide a by g (gval = a / 9.8)
when you get the gval vector you can visualize it via some UI element.
What’s the best way to stop the wheel slipping instantly when taking off? I assume I have to change some of the values in the MF6 tire model blueprint. The slip seems a bit too ridiculous, even for MF or Pacejka curves. Even if I make a car leave with 10% throttle, the slip ratio is still sitting around 0.5 - 0.8 on telemetry. That seems way to excessive to be slipping at such a low speed with low throttle. I’d understand 100% throttle, but 10-15% throttle and it slips like I am flooring it. It will slip before the car even starts moving. What do you think would cause this? Here’s a video because I’m not good at explaining this stuff
there are some parameters that can effect this and tuning tire models is the most difficult one.
pacejka curves behave poorly at speeds close to zero so some initial large slips need to happen regardless.
the easiest way to is to to use the ASR assist. you can also tweak the wheel mass value but this value needs to stay in a consistent range or rpm matching between engine and wheels can fail in certain cases. additionally lowering engine inertia, increasing tire friction values and lowering throttle sensivity can help.
we can not share this project because some of the assets are not free.
this demo contains some extra UI elements like minimap and rankings other then that most of things are similar to the sample project.
those extra UI elements will be included in the next version but i can provide them beforehand if you need, just drop me a mail.
Thanks for replying.
Actually, I just wonder why the replication movement work so excellent in your demo, but so poor in mine…The vehicle had some abnormal twitch in client.
I have also tested replication in “Multiplayer” level, which is in sandbox project, but got the same result.(ping is 35)
May I get some advice? Any help would be appreciated.