You can’t rely at all on engine physics (chaos).
And even if you could, this and any other newtonian (and some non newtonian) style game (billiards, pool, bowling, Pong, Etc) should not rely at all on a physics engine.
What you do is you create your own physics calculations, and move the pieces around according to what you calculated.
In practice, it becomes somewhat similar to writing your own physics engine.
In reality, you have 0 of the overhead the regular physics engine come bloated with since you are only supporting a miniscule amount of math and objects in comparison.
Calculating impacts, momentum, energy transitions, etc, can happen lightning fast, to the point the engine will know the outcome of a strike the moment you start it.
The rest is just applying what the math figured out to the items in play.
Do a small test with a Pong mockup.
Get a ball to bounce from corner to corner in non-newtonian (constant motion) physics, and update its location accordingly.
Remeber that delta time will affect the object’s movement speed (you may need to look up all those basics anyway being new to the engine, its different than other engines but they all hold the same concept. The fps of the game cannot affect the speed of motion of an object).
Once you figure out how to make the ball move around and deal with corners, you can start working on the same thing using newtonian maths.
The main visual difference will be that the object will eventually come to a full stop.
Either way, you keep on building up from there until you are satisfied with the presentation you get out of the calculations.
While it may feel like you are re-inventing the wheel, you are, but you aren’t.
Your code will likey end up producing the same results for all players anywhere, so it will likely be possible to do networked gameplay with minimal sync adjustments.
None of the “physics” engines usually support that;
Replication is almost always “whatever man, the client does its thing, and we don’t care what that is. The server will decide in the end”.
Needless to say, on something like a game of pool that is networked, having the same identical outcome of a play on all clients becomes imperative?