I built a 3D game about my Nigerian childhood (and I'm not a game developer)
If you grew up in Nigeria, there is one sentence that can stop your heart in the middle of cartoons: "My pikin, come o." You know what's coming. An errand. Go and buy bread. Go and buy salt. Go to Iya Toyin's shop, and
If you grew up in Nigeria, there is one sentence that can stop your heart in the middle of cartoons:
"My pikin, come o."
You know what's coming. An errand. Go and buy bread. Go and buy salt. Go to Iya Toyin's shop, and count your change o. And as you're walking out of the gate, you hear the final warning:
"If I count this money and one naira is missingβ¦"
So I did what any normal adult would do with that memory. I turned it into a 3D game. π
So what is Pikin Days?
Pikin Days is a free browser game where you play a Nigerian child sent on errands. You pick your child, pick who is sending you (Mama, Papa, Grandma, Aunty, Uncleβ¦), and off you go.
On the way you have to:
- find the right shop and buy the right item (salt and sugar are not the same o!)
- count your change, because sellers are not always honest
- dodge okadas, kekes and buses that are not slowing down for anybody
- run from Bingo, the neighbour's dog who has never liked you
- decide if you'll stop and play football with your friends⦠while Mama's patience is running out
- get home before she sends someone to come and look for you
At the end, Mama gives you a trust rating. I got a C on my own game. Mama said, "Was it for tomorrow I sent you?" I felt that. π
Why I built it
Honestly? Nostalgia, and curiosity.
Every time I scrolled Nigerian Twitter, people were sharing childhood memories: the kerosene lantern when NEPA took light, everybody shouting "Up NEPA!" when it came back, secretly eating powdered milk straight from the tin and getting caught because of your white lips. I kept thinking: what if you could walk inside those memories?
The other half was curiosity. I write about developer tools for a living. I explain how things work. But I had never built something like this end to end, a real 3D world in the browser that real people play, and I wanted to know what that actually feels like from the inside.
Spoiler: it feels like joy, panic, and a lot of testing on your phone at 6am.
How I built it (without being a game developer)
Here's the stack:
- Three.js for the 3D street, the people and the animals
- Rapier for physics, so the child doesn't walk through walls (more on that later π)
- Vite + TypeScript
- Cloudflare Pages for hosting, with Workers KV for simple game stats, votes and feedback
- ElevenLabs for the voices: Mama, the sellers, the drivers shouting "Comot for road!"
And the most important part of the workflow: I built it with an AI coding agent.
Now, before anybody says "so the AI built it" β let me explain how it actually went. The agent wrote most of the code. But it didn't know what a Nigerian street should feel like. It didn't know that a seller says "thank you, go well" after you buy, not before. It didn't know that Mama cannot shout your name from the house when you're three streets away (I had to tell it that one π).
My job was everything around the code:
- Writing very detailed instructions. Not "make the camera better", but "when the child turns, the camera must follow behind them quickly; one-finger drag only turns the view and never zooms; most players are not gamers."
- Setting rules. No real brands. No adult is ever hostile to a child. Children are never shown doing heavy labour. Nothing goes live until I say the word "push".
- Testing like my life depended on it. On my phone, in different browsers, held upright and sideways.
- Asking for proof. This one I learned the hard way. "Done" and "done and verified" are not the same thing. So I started asking for screenshots and screen recordings of every fix, plus an honest table of what was verified, what was not verified and what was hidden.
It felt a lot like being a product manager, a QA tester, a writer and a very strict Nigerian aunty, all at once.
Launch night: we broke the free tier π
I posted the game on X, went to bed happy, and woke up to my stats dashboard throwing errors.
// Detect dark theme var iframe = document.getElementById('tweet-2114057303460913562-293'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2114057303460913562&theme=dark" }
The reason? People were actually playing, and I'd hit Cloudflare's free limit of 1,000 KV writes per day on day one. Every game start, every vote and every bit of feedback was a write. I upgraded to the $5 plan, made the dashboard read without writing, and batched the counts.
Was it annoying? Yes. Was it also the best problem to have on launch day? Also yes. π₯Ή
The bug that was hiding in plain sight
A few days after launch, a player messaged me: the game was stuck on "Turn your phone sideways to play". Even after turning their phone. Since launch.
And here's the crazy part: I had seen this myself. I'd opened my own link from X, got the same screen, tapped "Open in browser", and moved on. I genuinely thought it was just my phone.
It wasn't my phone. It was everybody.
When you tap a link inside X, TikTok, Instagram or WhatsApp, it doesn't open in Safari or Chrome. It opens in the app's own mini browser. Many of them never rotate, or they rotate but never tell the page it happened. My game was waiting patiently for a "the phone is sideways now" signal that was never going to come. So people were stuck at the door.
My dashboard had been trying to tell me too. There were 188 bounces on the title screen. People came, got stuck, and left without saying a word.
That taught me two things I won't forget:
- If you hit something weird and work around it, your players will hit it too, and most of them won't know the workaround. Your little workarounds are clues.
- Most players don't report bugs. They just leave. For every person who messages you, assume many more quietly closed the tab.
The quick fix was to check the screen's width and height every half second instead of waiting for a rotation event. The real fix was bigger: rebuild the game to play upright. If the game works holding your phone normally, it doesn't matter what the app's browser does.
Before, held upright, the game was squashed:
After the phone-first rebuild:
What the players (and the numbers) told me
In the first full week: 138 games started, 38 new players. Lovely! But only 31% finished the first errand, and only 2 games made it through a full day of errands.
Ouch. But useful ouch. Combine that with the feedback and the picture got very clear:
- "The conversations are too slow."
- "I got stuck behind the bread seller's table and had to leave the game."
- "When I lost my money and found it, going home was the only option, but my time was running out."
- "My energy wears out too fast."
And when I sat down and played for an hour on my phone, I found even more:
- the seller said "thank you, go well" before I'd even bought anything
- a driver shouted three different lines at me, back to back, while I was standing at a table, not even on the road
- a goat walked straight through the wall of a gutter π
- my friends invited me to play police and thief, said "oya let's go!"β¦ and then we all just stood there
- football was being played on top of the suwe grid
- running out of time sent me on the exact same errand again, with the same list and the same shop. That one hurt, because the whole point of the game is that every errand feels different
So I made a few rules for myself that I'd now apply to any product:
- One message on screen at a time. Ever.
- Max about 12 words on a card. If they have to read, they won't play.
- No pop-up bigger than ~60% of the screen.
- A player must never be stuck, confused, or overwhelmed. Not for one second.
The update: share your funniest moments
The newest update plays upright, opens properly from any app, follows you with a smoother camera, gives drivers their own (very dramatic) voices, and lets you save your funniest moments as short clips: Bingo chasing you, a close call with an okada, coming home late and facing Mamaβ¦
β¦and then share them straight to WhatsApp, TikTok or X.
What I learned
If you remember nothing else from this post:
- Test where your users actually are. Not on your laptop. On a phone, from inside the apps people will share your link in.
- Your dashboard is your quiet users talking. Bounces and drop-offs are feedback. Read them like messages.
- Working with AI is a skill. Be specific, set rules, and ask for proof. "It says it's done" is not a test.
- Ship, then listen. I found more in one week of real players than in weeks of building alone.
- Make it personal. The bits people loved most were never the tech. It was Bingo, "Up NEPA!", and Mama's report card lines.
What's next
Players get to vote on what comes next in the game, and "Up NEPA!" is currently winning with 60% of the vote. π‘ So yes, there will be a light-is-back moment. Also on my list: more errand types, more friends' games (suwe is coming back once I get the hopping right), and more memories to collect.
It's been a busy few weeks, so I'm taking a short break before the next update. But the game is live and free to play.
ππΎ Play Pikin Days: pikindays.com
And tell me in the comments: what's the most nostalgic thing you remember from your childhood errands? Mine is the walk home, counting the change three times, praying the seller didn't cheat me. π
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.










