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
- arduino
- c++
- cesiumjs
- device-orientation-api
- elevenlabs
- esp32
- google-maps-platform
- grok
- gymnasium
- javascript
- mpu-6050
- numpy
- python
- pytorch
- spacetimedb
- stable-baselines3
- three.js
- typescript
- vite
- web-audio-api
- web-serial-api
- web-speech-api
- webgl
- xai

Log in or sign up for Devpost to join the conversation.