Inspiration

Iron Man has always been more than a superhero to us. That dream of actually flying over a city, feeling the weight of a suit responding to your hands, seeing real buildings rush past below you, never left us. So we asked ourselves: what would it take to make that real today, with the tools we actually have?

We built a game where you do not press buttons to fly. You wear a glove embedded with an IMU sensor and you move your hand. Palm down, you climb. Palm back, you thrust forward. A sharp punch of your fist and a missile launches and hunts its target across the sky. The world you fly over is not a fictional city. It is the real world map and you can go anywhere in the world.

We built this because the dream of flying like Iron Man should not stay a dream. With an IMU, a browser, and real 3D map data, it is closer than most people think. Iron Glove is our proof.

What it does

Iron Glove is a multiplayer flight game over real places; Johns Hopkins, UMD, the Statue of Liberty, the National Mall, the Golden Gate, the Grand Canyon, Santa Monica Pier, Griffith Observatory; rendered in CesiumJS with Google Photorealistic 3D Tiles. Real rooftops, real bridge cables, real canyon walls, all solid.

Three ways to fly it:

Keyboard: WASD, barrel rolls, boost.

The Glove: an ESP32 + MPU-6050 strapped to your hand. Palm down= climb, palm up = nose dive, palm back = thrust, tilt = turn, clench a fist to fire the water cannon, flick your wrist to launch a missile.

Phone: scan a QR code and your phone acts as a gyroscope for second player flying beside you. No install, no app.

JARVIS is real: hold the mic, talk, and he answers in an ElevenLabs voice conected with GrokAPI for context: status reports, banter, and actual commands ("take me to the Golden Gate," "launch the drones," "stand down").

Three missions: FIRE RESPONSE (diffuse fire), DOWNTOWN RUN (run through checkpoints), and DRONES (fight evil drones).

How we built it

World: CesiumJS + Google Photorealistic 3D Tiles. GPU accelerated through WebGL adapter.

Flight : Custom weighted flight model.

Glove : MPU-6050 → complementary filter at 50 Hz → CSV over USB serial → WebSerial straight into the browser.

Multiplayer : SpacetimeDB module (TypeScript) with authoritative drones ticking at 10 Hz, dead reckoning + lerp on the client so nothing teleports.

JARVIS : Grok for intent + conversation, ElevenLabs for the voice, with a phrase matcher and browser TTS underneath so he never goes mute.

RL : Stable-Baselines3 PPO in a custom Gym chase env, 200k steps, exported to JSON and unrolled with a handful of matvecs in JS.

Challenges we ran into

  • IMU mapping with real physics following model was the toughest. We had to custom map the IMU data and make physics engine around it.

  • Missile flick wouldn't fire. Web Serial hands over several lines at once, all stamped with the same arrival time, so a 30 ms spike looked instantaneous. We had to count samples, not milliseconds.

  • Getting data from phone into SpacetimeDB into local host was a headache.

  • Sending positions through phone was hopeless. So the phone sends only stick inputs and the laptop flies that suit locally at full framerate.

  • Soldered wire of MPU 6050 came off last minute. Had to ask 50+ students and finally got access to JHU's soldering station and quickly soldered it back(Thank God!!).

Accomplishments that we're proud of

  • You strap on a glove and fly a suit over a realistic city. It was genuinely fun personally played 2hr+ exploring cities.

  • A QR code turns a stranger into a co-pilot. We handed a judge a phone and it just worked.

  • Real world physics mechanics applied in a simulator.

  • Three genuinely different input devices driving one shared flight model.

What we learned

  • Seamless capabilities of SpacetimeDB in multiplayer gaming.

  • Always create backup plans, if the MPU didn't work I could still demo with multiple other sources.

  • WebGL can deliver steam/unreal engine type performance.

  • Giving context to Grok from a game and getting real time feedback.

What's next for Iron Glove

  • Two gloves. One per hand, independent repulsors.

  • Adaptive difficulty: a bounded skill profile that tunes drone aggression on the fly.

  • Imitation learning : record human flight demos and train an assist policy that blends into your stick input instead of replacing it (spec'd, flagged off).

  • An RL agent that actually beats the heuristic. Curriculum learning, self-play, and a reward that stops being clever.

  • More cities, haptics in the glove on missile lock, and VR, able to spawn your hometown just by typing city name.

Built With

Share this project:

Updates

Submission history