Building Triska the Ninja Cat: A js13k Dev Story
Play as a ninja cat and swing with just one tap to collect clovers. All packed into a game under 13KB. Even with a tiny size limit, Triska the Ninja Cat is full of action, challenge, and a bandana that moves on its own. In this post, I’ll share how I used AI to speed up game development and bring everything together.
Updated: Sep 26, 2025
Published: Sep 26, 2025
I wanted to make a one-touch ninja cat game in just 13KB.
Play my game here: Triska the Ninja Cat. It’s easy to learn but hard to master. Swing your tail on red dots to reach the goal, collect all three clovers in each level for the best score, and avoid shurikens and lasers across 17 increasingly difficult stages.
About my Game
I've had gradual success with my past js13kgames entries, going from the bottom 10 to the top 10 (which I write about in a different blog post from last year's game jam. Read it here.)
The most common feedback I’ve received is that my games are often too difficult. That hurts the experience more than you’d think, because frustration makes players quit.
Balancing difficulty is tricky. Some people are first-time gamers, while others are highly skilled veterans. For this game, I tried to design it so that reaching the goal is achievable for most players, while collecting all the clovers presents a real challenge. This way, beginners can focus on just finishing, while advanced players can push themselves for the perfect score.
The game uses a simple one-touch control, which makes it easy to play on mobile devices where most casual gaming happens. Of course, it works with a mouse on PC too, since most js13kgames participants will probably play that way. Sticking to a simple control scheme is not only better for gameplay but also helps keep the file size down.
I’m happy with how the game turned out. Depending on feedback from other participants, I may port it to Phaser, continue developing it, and release a version on Poki or Crazy Games.
About the Bandana
The cat’s bandana moves independently of the rest of the physics. Take a look at this video to see it in action.
Bouncing boxes are probably the last feature I can squeeze in before hitting the 13k budget. I've also removed a bunch of unnecessary AI code to reduce the bundle. AI likes to add a lot of overhead 🤖💦#js13k #gamedev #sologamedev pic.twitter.com/nZytpW3IMF
— John 🎮 Reit Games (@ReitGames) August 28, 2025
The bandana is calculated using Verlet integration. I attached two anchor points that follow the cat’s head. The rest of the bandana consists of a series of points that adjust according to two factors: the resting distance between each point, and gravity. With Verlet, I don’t need to rely on complex physics engines. I just approximate where the points should be. Finally, I draw a spline (a curved line) that runs through all the points, creating a smooth, wavy bandana effect.
This isn’t my first time using this technique. You can read more about my previous experiment with Verlet integration here: Hang by a Thread - Post Mortem
How I used AI in my Game
AI is a controversial topic. I don't think it's a trend like blockchain, which never really sky rocketed. AI however is here to stay.
I used AI for my latest js13kgames game jam entry, and the results are mind blowing. I can prototype a game in hours, which I would normally spend days on. The most impressive example I used AI for was my level editor. After creating the core game loop, and adding a few levels manually, I quickly realized that inputting coordinates in my "level"-object, and refresh the page was just too slow and tedious. I also experimented with creating levels in an SVG editor and exporting them into the game, but that required a library I couldn’t include because of size limits. I even asked AI to generate levels directly, but they turned out completely random and unplayable.
Then I pivoted. I asked AI to create a level editor for me. My prompt was:Can you create a level-editor for me, where I can specify the position of boxes, the height and width of boxes, and also specify the positions of the pickups, shurikens, goal and player
To my surprise, the AI delivered a fully working editor on the first try! It had a sidebar for creating and adjusting objects, with the level layout rendering on the right.
It wasn’t perfect. It contained bugs and needed refinements, but it was far more advanced than I expected. With some extra prompts and manual tweaks, I turned it into a tool that massively sped up my workflow. Instead of spending 20 minutes adjusting levels by hand, I could now build them in just a few minutes.

Here's an image of the level I created in the editor, and how it turned out in the game.

The results speak for themselves. While I still needed to fine-tune scaling and proportions, the editor was “good enough.” For a one-month project with only a few hours of free time each day after work, this tool was a lifesaver.
It’s amazing how much AI can help with development. I got tired of manually creating levels, and decided to make a level editor. After a conversation with AI, I now have a working level editor for my game🤯#AI #gameDev #js13k pic.twitter.com/C96fGl5M2O
— John 🎮 Reit Games (@ReitGames) August 20, 2025
AI didn’t just save me time. It also saved my energy. I wasn’t sleep-deprived, and I could still enjoy playing games in my free time. For the first time in js13kgames, I even found myself worrying about bundle size, since AI enabled me to add more features than usual (including some unnecessary code that I later had to strip down).
AI isn’t perfect. It introduces risks, including security concerns, and its solutions often need refinement. But as a tool, it’s incredibly powerful. With a software engineering background, I know how to direct AI, spot mistakes, and rework what doesn’t fit. Sometimes it’s faster to write code myself than explain an idea to AI, but often AI helps me get past tedious steps faster.
For anyone wondering: AI won’t replace skilled developers, but it will make certain tasks easier and more accessible. Don’t forget to double-check everything it gives you, and remember to tidy up.
Staying Under 13KB
AI didn’t help much with file size. I still had to manually trim unnecessary code. The real optimization came from using tools like Vite with Rollup, Roadroller, and an archiver.
I also avoided images entirely. Everything in the game is rendered with the Canvas API. This makes the game look smooth while keeping the bundle small. Pixel art is a common solution for small games, but I prefer a vector-style look. With the Canvas API built directly into the browser, it’s essentially a “free” resource in terms of file size.
Final Words
Big thanks thanks to the crew at js13kgames, who spend their spare time making the competition as great as it can be. The site is improving year by year, and the community provides invaluable feedback on how to improve our games.
Play Triska the Ninja Cat here, and give me honest feedback! If enough people enjoy it, I’ll do my best to port it to Phaser for Poki and CrazyGames.
Let’s Connect!
I’d love to connect and support each other on our game development journeys. Feel free to:
- 📝 Reach out through My Contact form if you have questions or just want to chat about game development
- 🐦 Follow me on 𝕏 @ReitGames for real-time updates and insights
- 🔔 Subscribe to my newsletter for exclusive content and notifications about new posts on game development
- 💬 Leave a comment: Share your thoughts or experiences below this post
Happy coding, and may your games be a hit! 🎯