I've been working on a pool game this month, and in doing so I've found a bunch of useful stuff we could have in s&box.
To start with, balls were clinging to the side of the table a lot, instead of bouncing away as you might expect them to. What I found was, in the engine, the bounce threshold was being hardcoded to a velocity of 40, meaning if balls were travelling any slower than that, they would not bounce at all. So we've now bound that value so it can be changed per surface, so now the balls all have this value set to 0.1.
Another problem was detecting whether balls have stopped, so the next player can take their turn, but now Garry has added a way to speed up the physics simulation so after a certain amount of time the game can fast-forward.
Here's a video demonstrating Pool, and how to play it really poorly:
attribute 'class' not allowedattribute 'contenteditable' not allowedattribute 'blocktype' not allowed