Mini Games · Making-of

Cat Finder

Cat Finder already existed inside the Toss mini-app monorepo, but nothing about it had been written down anywhere. It was just a folder, never even committed. It's Minesweeper turned into a cat hunt. Open a cell and instead of a number you see how many cats are hiding nearby; clear the board and a few new cats join a 300-cat collection book. The job was to move a folder with no record of who made it onto the web.

None of the cat pictures showed up

Open a collection card or the detail window, and the space for the cat picture was empty. The code had absolute paths baked in, like /graphics/cat-001.svg. The app used to run at the domain root, so that was fine, but now it runs under play.ghmun.com/nyang-finder/, and those paths pointed at a location that didn't exist. I fixed it by prefixing import.meta.env.BASE_URL in three places (collection cards, the detail window, and the recently found list on the home screen).

After deploying, the whole screen went blank

This was the real problem. It ran fine on my computer, but on the live site it was a completely blank screen. No errors in the console, either. I only found the cause after reloading the built file by hand in the browser console to force the exception out. The @toss/tds-mobile package says it's "only for Apps in Toss development," and on any domain other than localhost it throws an error on itself the moment it loads. Digging through the code, the library was only used as an empty wrapper. Not one of its buttons or cards was actually used. Once I ripped it out entirely, the page came up right away, and the build shrank from 1.36 MB to 318 KB. It died carrying something it never used.

I was told 20 stages wasn't enough

There were originally 20 stages, starting with 10 cats on a 9×9 board and ending with 50 cats on 18×18. I took it to 100: 20 themed worlds (from Kitty's House through Kitty Beach and Kitty Space Station to Kitty Kingdom), each with 5 rooms. Board size stops at 22×22, and cat density goes up instead. The last stage, "Coronation Square," has 130 cats in 484 cells, so more than one cell in four is a cat. I also removed the lock that made you clear stages in order to open the next one. Ask people to clear 100 in order and most will quit around 40, so that was the right call. Instead, the selection screen is split into four bands, Easy, Normal, Hard and Very Hard, with colored badges.

Five times the stages, same number of cats

Each of the original 20 stages had 15 cats assigned to it. 20 times 15: that's why the collection has 300 cats. I raised the stage count to 100 but didn't add any cat pictures. Instead it cycles: from stage 21, "Sandcastle," the 15 cats of stage 1 are reused; stage 22, "Sound of Waves," reuses stage 2's 15; and so on. So anyone who has collected all 300 and expects something new from stage 101 may be a little disappointed. Nobody has suggested drawing 400 more cats yet, and I'm not going to bring it up first. On the other hand, the later stages have bigger boards packed with cats, so meeting the same cat again takes a lot more work.

I was told flagging was slow

On a phone, you plant a flag by long-pressing a cell. The threshold was 0.45 seconds. I was told it felt slow, so I cut it to 0.2 seconds. It's a 0.25-second difference, but when you try it, it's clearly different. I'll admit that.

How to use it

From home, go to stage select and pick a board from a difficulty band. Tap a cell to open it; long-press a cell you think hides a cat to plant a flag. When you clear a board, the cats assigned to that stage are added to your collection. "Bonus Hunt" on the home screen is a separate board where rare cats show up more often, and the "Collection" tab at the bottom shows how many of the 300 you've gathered. Outside Toss, vibration and sharing fall back to browser vibration and copying to the clipboard.

Try Cat Finder (in Korean) Go to play.ghmun.com/nyang-finder →