Hook Swing
An ink drop hangs from a ceiling hook and swings like a pendulum. Tap to let go β it flies through the air and the rope catches the next hook automatically. Time your release well and keep grappling right. Thread a hook dead-centre for a perfect. Miss, and you fall. How far can you swing?
How to play
Your ink drop hangs from a hook and swings back and forth on a rope. Tap the canvas, press Space, or hit Release to let go β the drop launches like a stone from a sling. As it flies, the rope automatically grabs the nearest hook ahead within reach, so you only ever control when to let go. Release just after the bottom of a swing for a strong forward-and-up throw. Slip through a hook dead-centre for a perfect and bank bonus points. The hooks spread further apart the further you go. Fall past the bottom and it's over.
The release angle is the whole throw
Underneath the ink drop is an honest pendulum, stepped 120 times a second. Gravity pulls at 1800 pixels per second squared, angular acceleration is the usual β(g/L)Β·sin ΞΈ, and a small damping term bleeds off a little swing on every pass. When you let go, the game hands the drop the velocity it already had along the arc β which points perpendicular to the rope. That one detail decides everything: the angle you launch at is exactly the angle the rope was pointing at, one for one.
Release at the bottom of the swing and you leave dead flat: maximum speed, no lift, falling from the first instant. Release a third of the way up the far side and you leave on that same slope, climbing. And the speed you leave with is not yours to choose β it was settled before you touched the button, by how much height the previous swing gave back and by the damping that took a slice of it. You cannot add energy to the rope. The tap picks a direction, nothing else. Long flat throw or slow high lob, same budget.
Reading the arc before you let go
The rope is not a fixed length. It becomes whatever the distance to the hook was at the moment you caught it, with a 50-pixel floor. Catch a hook from far below and you are on a long, lazy rope with a wide slow arc; catch one close and the rope is short and whips you round. Two consecutive hooks at the same height can therefore feel completely different depending on where you passed them.
The catch itself keeps only the part of your speed that runs across the rope. Whatever was pointing straight at the hook is thrown away. Fly directly into a hook and you arrive almost stopped, hanging there with nothing to swing on; skim past it and you keep nearly all of it. The auto-grab reaches 280 pixels and fires at your closest approach rather than on first contact β the code waits until the distance to the hook starts increasing again, then attaches. Come within 40 pixels of the centre at that moment and it counts as a perfect, worth 50 points on top of the one point you earn per 10 pixels of forward progress. Sail clean past a hook and the game quietly gives up on it and starts tracking the next one; drop 170 pixels below the floor of the stage and the run is over.
How the course is built
The map is procedural but not random. A mulberry32 generator is started from one fixed constant and asked for 4,000 hooks the moment the page loads, so the layout is identical on every restart and identical in every player's browser. The first hook sits 150 pixels in.
Spacing starts at 170 pixels plus up to 90 pixels of jitter and grows by 2.2 pixels per hook until it hits a hard ceiling of 360. Depending on how the jitter falls, gaps are pinned at that maximum somewhere between the 46th and 86th hook. Height works the same way: each hook is placed within a band around the mid-ceiling line, and the band opens from 25 pixels to 92 at 2.4 pixels per hook, reaching full width at hook 28 and clamped so no hook ever sits outside the 80-to-260 range. The practical shape of that: the first two dozen hooks are a nearly level ceiling that teaches you the rhythm, and from hook 28 on you are playing the finished game β maximum vertical scatter, maximum spacing, and no further escalation. A long run is stamina, not survival against an endless ramp.
A fixed course is also what makes this a game you repeat rather than one you finish. Crate Stack and Paper Pilot are the other two one-button games in the arcade and work the same way β tap, die, tap again, with no menu in between. If you would rather play something that ends, Ink Cannon and Putt Parlor are twelve hand-built stages each, served in a fixed order.
Controls
- Release
- Tap or click the canvas, press Space or Enter, or hit the Release button. Pointer input fires on press, not on release, so there is no click delay.
- Restart
- Press R, or use the Restart button. The course is the same every time.
- Sound
- Press M or use the speaker button. All of it is generated on the fly by the browser; the on/off choice is remembered locally.
- Help
- Press ? to open and close the how-to panel.
- Leaderboard
- The trophy button opens the casual top ten. Posting is optional: only if you type a name and press Post does anything leave the page β one record with the game id, that name, your score and a server timestamp. The name is kept in your browser so you do not retype it. If the leaderboard service fails to load, the game is completely unaffected and only the online board goes quiet.
Frequently asked questions
How do you play Hook Swing?
An ink drop swings from a hook on a rope. Tap the screen, press Space, or hit Release to let go β it flies through the air and the rope grabs the next hook automatically. Release just after the bottom of a swing to throw forward and up. Keep grappling right as far as you can before you fall.
How is the score calculated?
You earn one point for every 10 pixels of forward distance, plus 50 bonus points each time you thread a hook dead-centre for a perfect release. Swinging further and nailing more perfects scores higher. You can post your score to a casual global leaderboard, just for fun.
Is every game the same course?
Yes. The hook layout is generated from a fixed seed, so everyone swings the identical course every time β restarting gives you the same map. That keeps the leaderboard a fair test of timing rather than luck.