How Hand Flight works
Your hand is the jet. The camera reads it, a real flight model flies it.
Setting up
Lay your phone flat on a table with the screen up, turned on its side so the front camera is at the end nearest your flying hand. Hold that hand flat about a forearm's length above the camera, palm down, fingers pointing away from you. That's the jet. On a laptop, pick "Webcam facing me" and hold your hand flat in front of the camera instead.
Calibration takes two seconds: hold the hand still and flat (that becomes "level flight"), then tilt it to the right like a banking wing (that tells the game which way is right, since some cameras mirror their picture). After that a small jet on screen copies your hand, so you can see what the camera sees before you take off. If it goes the wrong way, the Swap left/right and Swap up/down buttons fix it, and the sensitivity slider sets how far the jet tilts for a given tilt of your hand.
Flying
| Do this with your hand | The jet does this |
|---|---|
| Tilt it left or right | Banks to the same angle |
| Raise or lower your fingertips | Climbs or dives at that angle |
| Twist it toward one side | Points the nose that way and keeps turning |
| Curl your index finger | Fires the guns |
| Tuck your thumb under your palm | Lights the afterburner |
| Spread your fingers wide | Opens the air brake |
| Make a fist | Launches a missile (once the seeker growl turns into a steady tone) |
| Flick your wrist | Drops flares |
| Take your hand away | The jet rolls level and holds its height |
No camera? Keyboard works (arrows or WASD to bank and climb, Space guns, Shift afterburner, B air brake, M missile, F flares, V to swap the chase and cockpit views), and so does a touch stick.
The flight model
Arcade, on purpose. The jet holds exactly the angles your hand holds: bank, nose up or down, and twist. Banking or twisting also swings its heading around, so you can keep turning past where a wrist can go. Then it flies like a rocket: thrust pushes along the nose, momentum carries the jet, and its path swings round toward where the nose points at a set rate, so a hard turn drifts before it bites. The HUD's SLIP number shows how far the nose is off your actual path. Drag is just a top speed. Point straight up and you lose speed, point straight down and you gain it. Below about 45 m/s the jet can't hold itself up and starts to fall.
| Jet | Character |
|---|---|
| Viper | All-rounder: grips well in a turn and follows your hand closely. |
| Raptor | Most thrust and top speed, but it drifts wide in a turn. |
| Delta | Snaps around the tightest; less thrust, so it lives on its turn. |
Modes
- Dogfight: everyone against everyone, up to ten pilots, four minutes or first to ten. Guns, two heat-seeking missiles that guide by proportional navigation (they reload), and six flares that each decoy a chasing missile most of the time.
- Canyon race: 57 rings around a 30 km loop of red-rock canyon. Fly through them in order; a missed ring costs three seconds and you carry on.
- Free flight: nobody shooting. Learn how your hand flies.
Bots fill the sky when there are only a few of you, flying the same flight model through the same controls. Make a room and share the code or link: everyone joins from their own phone or laptop.
Privacy
The camera never leaves your device. Hand tracking runs in your browser (Google's MediaPipe Hand Landmarker), and only your jet's position goes to the game server. There are no accounts and nothing is stored.
Credits
- "F-16 jet" by RickSlash, Sketchfab, CC BY 4.0 (modified).
- "Eurofighter Typhoon Game Prop" by Rob Newman, Sketchfab, CC BY 4.0 (modified: markings removed).
- "F22 Raptor" by Jan Esch, Sketchfab, CC BY 4.0 (modified).
- Hand tracking: MediaPipe Hand Landmarker, Apache 2.0.
- Built by Will Loughlin as part of 30 sites in 30 days.