I grew up on flash physics games, the kind where you drag back, let go and watch something arc across the screen. They were never really physics. They were physics-shaped, tuned until they felt right.
This one is the real thing, or at least a real thing: our own engine, powered by rainshower, flying a ball under Newton's inverse-square gravity from every planet on the board. Drag back anywhere on the board and let go. The ball flies the way you pulled from.
What makes it a game and not a toy
The step is fixed. The ball is moved forward by velocity Verlet, the method the physics playground showed holding a moon's energy to a ten-billionth, in steps of exactly 1/240 of a game second. Your screen's frame rate only decides how many steps get taken before the next picture is drawn. It never changes how big a step is. So the same aim flies the same flight on a phone and on a desk, which is the only way a shot can mean anything.
Every level is proven winnable. Each level stores one winning shot, an angle and a power. The engine's test suite flies every one and requires each to go in, and the site's own build check flies them again against the copy of the module the game runs. I also had a headless browser play all eight through the sliders on this page. Each one went in with the same flight time and the same energy drift the engine reports, down to the printed digit.
The meter stays on. The planets never move, so the ball's energy cannot change. Any change is the arithmetic's, and the readout under the board prints it for every flight. Across every shot the game allows on the first eight levels, the worst drift is 9.5 parts in ten thousand, on the weakest shot there is, which falls into the moon on level 3. The worst on a shot that goes in is 1.2 parts in ten thousand. The paths on screen are the physics, not the step.
Every shot on every level
The sliders allow 360 whole degrees of aim and 95 settings of power, from 6 to 100 percent. That is 34,200 shots per level, 273,600 in all, and the engine flies every one of them in about a minute and a quarter. So I did.
Each map is one level. Pale gold went in, orange hit a planet, blue was still flying when the game called it at 24 seconds, and near-black left the board. The ring is the stored shot. Drawn from every shot the game's own module flew.
Level 1 has no planets, and its map is what aiming alone looks like: two thin columns at the edges, which are one band. The hole is 740 units away with a radius of 26, and only aims from 358 to 2 degrees go in, at all but the two weakest powers. Everything else on this map is gravity turning that one column into strands. Needle is the hardest level, with 281 shots in 34,200 going in (0.8 percent). The long way has the most, 870 (2.5 percent), and nearly all of them are strands one or two cells wide. A degree off is a different flight.
I have not measured whether those strand edges are fractal, and I am not going to call them that. The two black holes post earned that word for light by measuring a dimension. This map has not.
The map caught two of my hints lying
Every level has a one-line hint, and I wrote them the way you write game copy: to sound right. Then I drew the map, and two of them were not.
Slingshot said "Too far to throw. Borrow a turn from the giant." Its map says otherwise. The tall gold column just left of 90 degrees is a hard, nearly straight throw, and it goes in. The stored shot I had found by search did not go round the giant either; it just bent up the side of the board. Of the 681 shots that go in, 78 actually pass beyond the giant's far edge. So the stored shot is now one of those, aimed away from the hole at 295 degrees and brought home round the giant in 20.9 seconds, and the hint says both routes exist. The engine's tests check both halves of that sentence.
Figure eight said "Round one, round the other, home." The ball started above the hole with two moons either side and a wide gap between them. Aimed straight down, it dropped through the gap and went in at every one of the 95 powers. That straight drop made it the easiest level in the game, and the hint described nothing any sensible player would do. It now has a small moon in the middle, no shot within two degrees of straight down goes in at any power, and the engine's tests say so. The stored shot is a real figure eight: it goes 250 degrees round one moon and 604 degrees the other way round the other before dropping in. It is one of only four figure eights in the 866 shots that go in. Two moons, the level before it, has 49.
This is the same failure this blog keeps finding: a well formed answer that is not true. A hint is a small claim, it reads perfectly well, and nothing about reading it tells you whether it is right. The map is the check. The tests now hold every hint that says a straight shot fails to exactly that, on every build.
Update, 30 September: eight more holes
The course is now sixteen holes long. The new eight start gentle and end with a Grand tour past five planets. Each one was checked the way the first eight were: its stored shot goes in, in the engine's tests and again in this site's build check, and the engine flew all 34,200 shots on each.
| Hole | Name | Shots that go in | Share |
|---|---|---|---|
| 9 | Gentle curve | 375 | 1.1% |
| 10 | Four moons | 969 | 2.8% |
| 11 | Double star | 1,002 | 2.9% |
| 12 | Around the back | 730 | 2.1% |
| 13 | Over the top | 343 | 1.0% |
| 14 | Stepping stones | 360 | 1.1% |
| 15 | Big and small | 319 | 0.9% |
| 16 | Grand tour | 350 | 1.0% |
Needle is still the hardest hole on the course. Double star is now the most forgiving, and its hint offers two routes because both are real: 256 of the shots that go in run straight up the gap between the two giants, and 746 go all the way round the outside of the pair. The tests fly one of each. Around the back and Over the top join the hints that say a straight shot fails, and the tests hold them to it. The worst energy drift anywhere on the course is now 9.6 parts in ten thousand, a weak shot on Gentle curve that never goes in, and the worst on any shot that goes in is still the 1.2 above.
What is and is not modelled
The ball is a point, and the planets are fixed points with a surface to crash into. Gravity is Newton's, with no relativity and no drag, in units made up for the board: 1,000 across and 600 up. The game runs at two game seconds per real second, and a flight is called after 24 game seconds, which is why some shots end blue. The stars are three for a hole in one, two for two shots and one for more, kept in your browser and nowhere else.
The whole game is one small module of our engine, copied into this site unchanged and held to the engine's numbers by the site's build check, like every other widget here. Nothing on this page computes physics that the tests have not flown first.