I built my daughter a Monopoly-style quiz-for-money game — Knowledge Town. She can play dress-up and keep pets in it, review questions while playing, and I can see which knowledge points she’s mastered and her mistake collection.

For the past two years I’ve been making her targeted practice sets with AI, and this midterm I also built a dedicated level-based game for her weak spot: “approximate numbers.”

Recently I also made a level game for the first semester of fourth grade — 30 levels. On the morning of the 4th I talked with Laurel, and she said she wanted something like Ludo with a town map. Like roll a die, land on a square, then start the level…

So I thought, I should fuse her quiz-answering with a “Monopoly” style of play.

The requirements came from Laurel, the harness was built by me, the code was developed by DeepSeek, and the assets — images, voiceover, etc. — were generated by mbai-platform. Apart from the DeepSeek token cost, everything else in the project runs on open source plus local deployment.

Total cost for the first version came to ¥12.87.


A lap around

20 squares in a ring, with a minimap and a die in the middle. Tap the die in the middle to roll, and wherever you land, that’s the scene you enter.

Seven quiz squares: one for each of the five units, plus a “Mixed Challenge” (random unit, 4 questions, coins ×1.5) and a “Hero Challenge” (3 questions, each worth more). Four shops: Yiyi’s Boutique, Starlight Wardrobe, Pet Shop, Furniture Store. The rest are three Chance squares, two treasure chests, two rest squares. Square 0 is home — you collect pocket money every time you pass, plus a bonus for completing a full lap.

5 coins per correct answer, an extra 15 for a perfect level, so a normal lap nets you 400-plus. Clothes run from 100 at the cheapest to 960 at the most expensive.

One rule when pricing: after the first lap, you have to be able to afford a piece of clothing.

Answering questions

Five units, 28 question generators, every question computed on the spot. Reading and writing numbers, measuring angles, three-digit multiplication, laws of operations, direction and position — the five units of the first semester of fourth grade.

After playing for two days she said, “the questions are always the same.” So I ran the stats: the laws-of-operations generator had only about 1,400 distinct question stems out of 5,000 runs, a 72% repeat rate, and questions like ×102 appeared only four times in the whole game.

So I split the templates from 10 to 25 (make a hundred, make a thousand, 125×8, repeated subtraction, repeated division, distributive law in reverse), opened up the number ranges, and the variety of stems jumped to the 7,000 range. I also shuffled the order of multiple-choice options.

Settlement

One level is 4 to 5 questions, and stars are awarded by proportion correct. Wrong answers don’t cost coins — the questions go into the mistake book and I get a Feishu message.

Shop

30 outfits, 100 to 960, all generated with mbai-platform image generation. Buy one and it’s on immediately — no need to go change.

Fitting room

Right now each outfit is a single full-body illustration.

Originally I wanted to do paper dolls: one base body, clothes layered on top, hair and shoes swapped separately. I built out the whole pipeline: generate the illustrations, slice parts by color and height, overlay at matching coordinates, fall back to the school uniform for missing slots, expand old save files’ outfit ids into part ids.

Three problems killed it. Seams: the shadow at the neck in each image was redrawn by the AI independently, so the lighting doesn’t match — there’s always a white line under the chin, and even after smearing it with a gradient you can still see a brightness step when you zoom in. Offsets: each illustration has different body proportions and center of gravity, so even after aligning on the eyes the character is still slightly off within the frame. Layering: when long hair covers a skirt, deciding what occludes what is done pixel by pixel, which isn’t the same as how an artist would hand-draw the layers — the crossings are inevitably awkward.

Two branches pushed to remote and archived, and the mainline reverted to “one outfit, one full-body illustration.”

Pets

A Ragdoll cat and a Corgi — you can only adopt one. Three stats: satiety, mood, affection. Food and toys are consumables, one used is one gone — otherwise you could buy once and feed it forever.

Stats decay over time: hungry by 4 per hour, mood down 3, affection down 1, with offline catch-up capped at 72 hours. Leave it alone for two days and you come back to a cat whose “stomach is growling.”

Room

A 5×4 grid; furniture takes up cells by size, and once bought it automatically finds an empty spot and places itself — she doesn’t have to drag anything.

What I can see

Every quiz settlement pushes a Feishu message: which square, how many correct out of how many, how many coins earned, which ones were wrong — with the question stems and correct answers. Clothing purchases aren’t pushed.

The mistake book is sorted by most-missed, with at most 12 questions per retry session, and a question disappears automatically once answered correctly. Retries give only 3 coins per question.

“Knowledge point mastery” is a bit of an empty phrase right now. All I have is a stream of wrong answers and a per-square correct rate (the latter has no UI yet). To actually draw a mastery curve, I’d first have to tag every question with a knowledge point.

Voice

16 encouragement voice lines in four tiers: normal correct, 3 in a row, 5 in a row, full stars — four voices alternating male and female, generated with cosyvoice2-instruct using emotional instructions.

After hearing the first version she said, “too flat.” The instructions were too long, so the model read the whole sentence out as dialogue — four characters took two and a half seconds. I changed them to short instructions of eight characters or fewer, like “say it happily, a bit faster,” and added a per-character seconds check (normally 0.11–0.23 seconds per character; anything over gets re-rolled). Another five sounded “depressing,” and only got better after switching to hero / heroine character voices.

Cost and time

Apart from DeepSeek tokens, everything is open source or locally deployed: React, Vite, mbai-platform on the LAN, TTS.

She raised the requirements on the morning of the 4th, and the first version was live online by 3:30 that afternoon — seven-odd hours end to end. The next two days went into adding content: the question bank grew to over 7,000 stems, and outfits went from 9 to 30.

Where she’s at now

These past two days, the moment she gets home from school she says she wants to do questions.

On my end, I just get Feishu messages every day, and I often see where she got something wrong and how many she missed. Getting a lot wrong is fine — just play with the questions more; once she’s familiar with the basics, practice makes perfect.

Next year

Once this fourth-grade first-semester version is done, I’ll tag it and archive it, and open a new repo for fifth grade next year: the question bank layer gets swapped out entirely, the engine doesn’t change a single line, and it stays at the same online address.

Whether to keep going with the second semester depends on whether she still wants to play by then.