feat(physics): allow gamepieces to sleep & adding simulation debt into timestep#1421
feat(physics): allow gamepieces to sleep & adding simulation debt into timestep#1421Dhruv-0-Arora wants to merge 10 commits into
Conversation
timestepping: adding simulation timedebt for when FPS dropping Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
ab6c1dd to
3eb1cd4
Compare
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
3eb1cd4 to
1b0a76d
Compare
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
9788651 to
5c391f6
Compare
There was a problem hiding this comment.
Drag Mode is broken
Fission._.Synthesis.-.Google.Chrome.2026-07-17.09-08-48.mp4
It appears that you can't use drag mode for objects that are asleep, but the force is still applied once they wake up.
In addition, jittering is a bit worse on my MacBooks 120hz monitor, but still happens on my home desktop (weaker computer and 60hz monitor).
| // driver stiffness independent of construction-time frame rate. | ||
| export function getLastDeltaT(): number { | ||
| return lastDeltaT | ||
| return STANDARD_SIMULATION_PERIOD |
There was a problem hiding this comment.
this should probably be removed. This name implies it is the last delta t and that it changes, when it is actually a constant (that can be referenced directly where this is used)
| export function getLastDeltaT(): number { | ||
| return lastDeltaT | ||
| return STANDARD_SIMULATION_PERIOD | ||
| } |
There was a problem hiding this comment.
We were doing this before? I thought lastDeltaT was supposed to be calculated
| body.GetID(), | ||
| rn.isGamePiece ? JOLT.EActivation_DontActivate : JOLT.EActivation_Activate | ||
| ) | ||
| if (!rn.isGamePiece) body.SetAllowSleeping(false) |
There was a problem hiding this comment.
This means that 2024 field performance will still be terrible? Why should only game pieces be allowed to sleep?
There was a problem hiding this comment.
How do you mean? In addition, the 2024 field performance went from 10 fps for me to 110 fps.
There was a problem hiding this comment.
@azaleacolburn, I think the majority of 2024 fields performance loss is a result of us having notes in the loading station and simulating them.
This also explains the performance increase from putting the game objects to sleep.
Co-authored-by: Azalea Colburn <62953415+azaleacolburn@users.noreply.github.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
For me, this really only happens on the 2026 field after I go in and push some balls around (once the fps recovers the jittering starts to slow down and eventually goes away). If you are struggling to reproduce it try throttling your CPU (it makes the jittering a lot worse for me). |
Signed-off-by: Dhruv Arora <dhruv.arora1@autodesk.com>
f80dac9 to
785f09b
Compare
Important
The way that gamepieces go to sleep when the field first spawns is something we should look into:
Currently, they are set to sleep (in this PR) however the MirabufSceneObject instantly wakes them up to move them to their desired location. This will tank performance for the first ~5 seconds while the gamepieces wait to go back to sleep.
SYNTH-257
Before merging, ensure the following criteria are met: