Circles in a box, and a handful of laws you can rewrite while they run: gravity, every body pulling on every other; a steady pull down, like standing on a planet; like charges pushing apart; wind; drag; and how much a collision gives back.
Written in Dart, compiled to JavaScript, baked into this page. Circles only, no spin or friction. Energy and momentum in the readout drift only when drag, wind, walls or sticky collisions say they should.