Inspiration
I like making games. I also like riding my indoor bike. There are a lot of indoor biking apps out there. Most of them are either bad or expensive. I wanted to build my own worlds to ride my bike through and share the source code with the world, so that people can fork it and make their own worlds. I used a previous version of Codex to make a set of 2D games for my bike: https://github.com/seanrjohnson/flybike https://seanrjohnson.github.io/flybike/ The highlight of the previous project was a flappy-bird clone where altitude is controlled by pedaling speed.
When GPT 5.6 came out, I was excited to use it to make a 3D environment as my next project.
What it does
Infinibike is an infinite open world to bike through on your indoor bike trainer. It supports Bluetooth FTMS trainers, as well as a demo mode that can be played without a bike.
Infinibike features two settings, countryside and city. Listen to soothing procedurally generated pentatonic music as you bike along through rich, endless random landscapes populated by a variety of objects and creatures, like cars, people, farmhouses, apartment buildings, power lines, birds, cows, and even a Tyrannosaurus rex! You can set the biking difficulty according to your preference, and ride in various modes, such as Timed Endurance, Hill Challenge, Intervals, or infinite free ride. You can set Infinibike to increase resistance on your bike based on the gradient of the landscape.
Infinibike has very simple hosting, as a static website on GitHub pages. It keeps records locally in your browser, so there are no privacy concerns. It's also very simple to run locally using npm run dev.
How I built it
I started by using the Codex "Plan" tool from a simple prompt where I pointed it to my previous work as a reference for interfacing with the bike, and pointed it to some example open source Three.js projects for reference on how to use that library. I mostly developed using GPT 5.6 Sol with medium and high reasoning effort, with one foray into Ultra mode. Using Playwright, Codex could run the application in a browser, inspect renderer diagnostics, and capture its own screenshots, allowing it to go for longer autonomously without needing me to check on it.
A key insight was connecting Codex to the Blender 3D MCP in order to build high-quality 3D models (see below for more information).
Challenges I ran into
I struggled to get Codex to improve the graphics quality and fix graphical glitches. It was helpful that Codex could understand screenshots. As I was manually testing, I would take screenshots of various glitches and Codex would fix them efficiently.
Another key to overcoming graphics challenges was to instruct Codex to use its own built-in image generation tool, which produces excellent quality images, to produce reference images, and then use the reference images as templates for 3D modeling using the Blender MCP. The result of this workflow was a quantum leap in the quality of game graphics that was not achievable through repeated prompting of "ok, now make the graphics better", which I also tried, but it didn't work well.
Accomplishments that I'm proud of
I'm proud of how far the whole project came over a single weekend, even while doing my normal weekend chores and activities. I just set Codex a task, and came back 30 minutes later to check on it and start the next task.
An initial commit became a playable version, followed by curved roads, trainer fixes, richer landscapes, animals and aircraft, improved intersections, a detailed city, and an authored Blender asset library—all within two days.
I even managed to squeeze in an hour of hands-on (feet-on?) bike-based testing! It still has plenty of rough edges, but I think it's just as fun to play as paid apps, and, in my opinion, astonishingly good given the development time.
What I learned
I was not sure that coding agents were ready to make rich 3D environments. GPT 5.6 happily proved me wrong.
I also learned that precise feedback and strong verification loops matter as much as model capability. Screenshots, browser automation, deterministic seeds, renderer diagnostics, and focused visual tests were far more effective than vague requests for general improvement.
Finally, I learned how powerful MCP can be when it connects Codex to a specialized creative tool. Interfacing with Blender was a huge step forward for this project. For future projects I'll be on the lookout for relevant MCPs and skill files to augment Codex's built in capabilities.
What's next for Infinibike
I intend for Infinibike to be a long-running project. I am excited to see how it grows over the years as I think of new features to add and as the capabilities of OpenAI Codex continue to improve. Every time I ride my bike, I make a list of bugs I notice and other improvements that come to mind. The immediate next steps (when my token budget resets...) will be to improve the procedurally generated music system, fix the remaining graphical glitches, add more variety to the landscapes, and add a skyline texture image so the world is not just blue in the distance. Eventually I want to add more settings, such as a space colony setting with stars and blinky lights and aliens, and a fantasy setting with castles and knights and dragons.
I also want to refactor to make the code more modular and expandable, and add instructions for community contributors or forkers (and their Codex agents) in the open source hobby-world spirit of the project.
Built With
- bike
- blender
- dinosaur
- fitness
- free
- javascript
- mcp
- opensource
- serverless
- three.js
- typescript
- webgl
Log in or sign up for Devpost to join the conversation.