Well, most common game engines have multiple ways to deal with “events”; I’ll use the Unity example as it’s the easiest to understand. You have two methods “Update” and “FixedUpdate”. Update runs EVERY frame, so if the game runs at 60FPS you have 60 update triggers per second.
So let’s say you have an object that needs to move 15km/h (4.16667 meters per second) using a “fixed” rate of 60 updates per second basically boils down to a simple calculation of increasing a value (and I’m oversimplifying) by 0.069445 every time the update triggers.
With “FixedUpdate” it runs a calculation in-step with the physics engine; So now the calculation is (oversimplified again) “the result of the movement I need to make based on the forces applied to me since the last update”
I’ve oversimplified quite a bit, so please excuse any mistakes I’ve made as this is for clarity.