Namma Games
Three street games in one 3D village lane: Gilli-Danda, Lagori and Lattu. It runs in the browser, installs on a phone and works offline. Designed and directed by me, built with Claude Code.
[01. What I designed]
I defined the three games and their rules, art-directed the village, the kids and the colours, and tuned how every hit and throw feels.
[02. What I built]
TypeScript, Three.js and Vite in one small offline file. The physics are hand-written, and the music and fireworks are generated in code. 91 automated tests, plus bots that play every game end to end.
[03. Where AI helped]
I used the Spline MCP with Claude to create the 3D assets: the village environment, the characters and the props. Claude Code wrote most of the code. I did the directing: what to build, what feels right, what to throw away.



Act 1
The lane in my memory, as a link you can open
I grew up playing street games: Gilli-Danda in the lane, seven stones with a tennis ball, a spinning top wound with string. Those games live in memory and in the street, not on a phone. So I built them, as one small village lane that plays three of them in a browser.
Anyone with a phone
Opens from a link. No app store, no account, no ads, no tracking.
Anyone offline
Install it from the browser and it keeps working with no connection.
Anyone who grew up with these games
Each game keeps its street name, with the English game beside it.

Act 2
Three street games, one village lane
Each game gets one clear instruction and one tap or drag that decides it. The lane stays the same, so moving between games feels like walking down the street.
Kittipul (Gilli-Danda)
Tip it, strike it, beat the fielders. A marker slides along the gilli and you tap when it is on a tapered tip; tap again when the ring closes in to strike. The hint is on screen at the moment you need it.
- Timing
- Tap to flick
- Tap again to strike

Ezhu Kal (Lagori)
Topple seven stones, then run, carry them and pile them back before you are tagged. It is played as a real team game: run, carry stones, dodge the throws and shout Lagori. The score bar shows the round, the time and how many stones you are carrying.
- Team game
- Dodge the throws
- Shout Lagori

Pambaram (Lattu)
Wind the string, spin the top, outlast the rival. The screen shows how well you threw, your top's spin in rpm and how your rival is doing, so you can see why you won or lost.
- Throw 1 of 3
- Spin in rpm
- Rival

Act 3
Nine kids, a village that feels alive, and a phone in your hand
The lane is not a backdrop. It has a temple tower at the end, bunting, lanterns and kites. It sways in the wind, lights up at night and ends with fireworks. The nine kids each look different: different heights, outfits, hair, glasses and a festival kurta.

3D assets made with the Spline MCP
I used the Spline MCP to create the 3D assets: the village environment, the characters and the props. Claude built shapes in the Spline editor from my direction, and I checked each one, changed colours and proportions, and sent back what looked wrong. Then the scene was brought into the game and animated.
- Spline MCP
- Environment
- Characters
- Props



91
automated tests
Plus bots that play every game end to end.
0
ads, accounts or tracking
It installs from the browser and works offline.
Act 4
Designed and directed, built with Claude Code
This is a product designer’s project. Every design decision here is also an engineering decision: the camera, the way a hit feels, the gap between a button and a thumb. None of it fits in a spec; I had to play it and tune it. Claude Code did most of the typing, and the Spline MCP made the 3D assets. I defined the games and their rules, art-directed the village and the colours, tested on real phones and sent back screenshots of what looked wrong, and cut what did not earn its place, such as the leaderboard.
- Role
- Designer and director
- Built with
- Claude Code, Spline MCP
- Stack
- TypeScript, Three.js, Vite
- Plays on
- Phone and laptop, offline
- Status
- Live
The 'does it feel good?' loop is design work, even when the output is code.