Pedal Mania

Pedal Mania is a pixel-art cycling game for your smart trainer. Your legs move the rider, and every climb and descent comes up through the pedals. The roads are real ones, drawn as little isometric dioramas: villages, lakes with sailing boats, mountains and the odd stag by the road.

It runs on iPhone, iPad, Mac, Windows and Linux, with Apple TV and Android on the way. You can download it at pedalmania.cc.

Where you ride

There are 36 race routes after the classics and the grand tours, 33 famous roads from around the world, and the circuits of the last twelve road World Championships, Richmond 2015 to Montréal 2026. Thirty cyclocross courses are ridden on grass, sand, mud and snow, with stairs, planks and flyovers taken on foot or on the bike.

Pedalonia is the game's own island, at Point Nemo. It has seventeen short circuits of 10 to 15 minutes a lap and three gently rolling cantonal roads between them, and four cups of four races against eleven robots with a trophy at the end. Then there is Mars, the Moon and Venus, built from real elevation data. Olympus Mons at its true size is 345 km of climbing.

Racing

Eight real city-centre crits have primes and corners you have to brake for. Nine velodromes run twelve track events: the flying 200, the kilo, the pursuit, points races, eliminations and the keirin behind the derny.

The robots race the way people do. They sit on your wheel, take turns, attack, go for the sprints and blow up when they have overdone it, which means there is always a race on, even when nobody else is riding.

None of the races is named after the real one. The routes keep their real roads and their country, but a race's name is its organiser's mark, and the World Championships circuits go without the governing body's name or its rainbow bands.

Riding with other people

Group rides and race rooms take up to ten riders. You can run a league with a general classification, race a Track Cup for medals, join a club, and chase a ghost of your own best ride or a route's leader. Rider ratings come from your power profile, and a points ranking runs over a rolling twelve months.

Rides go to Strava with their laps and map. An MCP server at mcp.pedalmania.cc lets an AI assistant such as Claude or ChatGPT read your rides and records and manage your leagues and cups, behind OAuth and a consent screen.

Training

Twenty-two workouts ship with the game, and you can upload your own in .zwo, .erg or .mrc. A workout is ridden on any course with the trainer in ERG, behind a coach on a pacing scooter who calls what is coming up. The Lab runs a ramp test, a 20-minute test and an hour test to find your FTP.

Honest watts

Speed comes only from the power the trainer measures, through a power-balance model integrated at a fixed 60 Hz. The trainer only shapes how a course feels: it receives the road's grade scaled by a difficulty setting, with descents halved first, then smoothed, rate-limited and clamped to what the device can do. Turning the difficulty down makes a climb gentler on the legs. It never makes you faster.

All of the trainer-protocol logic lives in one pure, tested layer inside the game. It speaks FTMS, Wahoo's KICKR control characteristic, Tacx FE-C over Bluetooth, and the cycling power, cadence and heart-rate profiles, and it finds trainers on the network over Wahoo Direct Connect. Each platform supplies only a thin native transport that moves raw bytes. The simulated trainer speaks real FTMS bytes behind a mock transport, so the code paths a real trainer uses are the ones the tests and a demo ride use.

Roads from GPX

A Python pipeline turns a GPX file into a level: a JSON manifest and chunks of one to two kilometres, keyed by true distance along the route. The true grade drives the trainer, and a stylised layout snapped to the isometric axes drives the view, so a road can be readable on screen without lying to your legs. Towns, lakes, rivers and coast come from OpenStreetMap.

The world is drawn on classic 2:1 tiles of 32×16 pixels in a 46-colour palette, on a 640×360 canvas scaled up by whole pixels. The rider is a generated sprite whose legs follow your real cadence, and every place has its own chiptune.

Status

Active. Built in Godot from a single codebase, with the API, the website and the MCP server on Cloudflare. Free to download: 20 km a month on a trainer is free, the simulated trainer is free without limit, and Pro makes trainer riding unlimited for US$2.99 a month or US$29.99 a year. iPhone and iPad are in public beta on TestFlight, and a companion app, Computer, is on its way: a bike computer and remote on your phone that also takes photos of the ride and sends emotes over your rider.


← Back to all projects