HomeProjectsAI FilesBlog

© 2026 Matheus Pires. All rights reserved.

Back to projects
Racino

Racino

A blockchain-integrated Formula racing game played in the browser, with a 3D car customization system and a full NFT marketplace built on Ethers.js.

TypeScriptReactThree.jsEthers.jsSolidity

Racino: a racing game with an economy attached

Racino is a Formula racing game that runs entirely in the browser and carries a real economy underneath it. Players manage a fleet of cars, race on daily and weekly cycles, and own what they race — every car is an on-chain asset that can be upgraded, repaired, and traded.

The interesting engineering problem was not the racing. It was making a game that feels like a game while every meaningful object in it lives on a blockchain.

The garage as the core loop

The screen players spend the most time on is not a track — it is the garage. Each car shows its level, its accumulated points, and its condition, and cars degrade as they race: a car at 35/140 needs attention before the next event, one at 140/140 is ready to go.

That turns the garage into a resource management loop that runs alongside the racing one. Daily and weekly timers give it rhythm, and the fleet view lets players see at a glance which cars are earning and which ones are a liability.

3D customization in the browser

Cars are rendered and customized in real time in the browser with Three.js — liveries, colors, and parts applied to the model without a round trip to a server, so the player sees exactly what they will own before committing.

The constraint that shaped this system was performance on ordinary hardware. Players do not install anything; the game has to reach a stable frame rate on a mid-range laptop and a browser tab that is already carrying a wallet extension.

The wallet is part of the product

Ownership runs through Ethers.js and MetaMask. Buying, selling, and upgrading a car are wallet transactions, and the NFT marketplace where cars change hands is a first-class surface of the app rather than an external site players are sent off to.

The design work here was mostly about hiding the machinery without hiding the stakes: a transaction has to feel like an in-game action, but the player must always know when real ownership is changing hands and what it costs. Pending states, confirmations, and failures all had to read as game feedback instead of blockchain errors.

What it took

Racino sits at an unusual intersection: real-time 3D, a live-service game economy with daily and weekly cycles, and on-chain ownership that cannot be rolled back when something goes wrong. Each of those alone is demanding; together they force every decision to account for latency, cost, and irreversibility at the same time.