Post-mortem
How Aritmetris was made
The idea was born in 2010 as an educational game
My final degree project was a 2D platform game engine built around design patterns. You can read it here.
In it, I modelled a small engine that let you create little 2D platformers by configuring an XML file and making the assets for it. That meant you could build platform games while reusing code, instead of starting from scratch every time.
Using part of that engine, I thought: what if I used it to make something a bit like "Tetris"? That's when the idea for Aritmetris came up: falling pieces, and you learned to add numbers at full speed.
That became the first Flash prototype, but it ended up in a drawer. Why? Well, life happened. And here we are, 16 years later.
In it, I modelled a small engine that let you create little 2D platformers by configuring an XML file and making the assets for it. That meant you could build platform games while reusing code, instead of starting from scratch every time.
Using part of that engine, I thought: what if I used it to make something a bit like "Tetris"? That's when the idea for Aritmetris came up: falling pieces, and you learned to add numbers at full speed.
That became the first Flash prototype, but it ended up in a drawer. Why? Well, life happened. And here we are, 16 years later.
The origin
How do you turn a final degree project into a game?
For some inexplicable reason, known only to my 2010 self, after building an engine for platform games I decided to make... a puzzle game.
The truth is, I've always loved this kind of game. I've played a silly amount of Tetris, Puyo Puyo, Magic Drop and even PlayStation Yaroze indie games like Superbub...
For platform games, I didn't have an idea that really grabbed me. For this kind of game, though, I did: a Tetris with additions, subtractions and multiplications? I'd never seen that. Why not?
Back then, my nephew was about 6, and I thought I could make something to help him understand maths. Or at least practise without noticing.
In September 2010 I was about to start working at a software company and, the weekend before, with some very rough assets and a lot of itch to make new things, I built the foundation of what Aritmetris is today. Here's the zip with the unfinished prototype: [Aritmetris Flash]
The truth is, I've always loved this kind of game. I've played a silly amount of Tetris, Puyo Puyo, Magic Drop and even PlayStation Yaroze indie games like Superbub...
For platform games, I didn't have an idea that really grabbed me. For this kind of game, though, I did: a Tetris with additions, subtractions and multiplications? I'd never seen that. Why not?
Back then, my nephew was about 6, and I thought I could make something to help him understand maths. Or at least practise without noticing.
In September 2010 I was about to start working at a software company and, the weekend before, with some very rough assets and a lot of itch to make new things, I built the foundation of what Aritmetris is today. Here's the zip with the unfinished prototype: [Aritmetris Flash]
The drawer
Work life versus personal projects
In 2010 I started working at one of the two companies that have shaped my professional experience. I got in, precisely, because of my experience with Flash, and I worked on a couple of applications. One had already been started when I arrived; the other we built from scratch. That work context, away from home and also doing creative projects, made me put aside any attempt to keep the idea going. It stayed as a curious weekend thing, and I forgot about it.
When the death knell for Flash started ringing, between 2016 and 2017, the company I worked for had to get serious about migrating what we had in Flash to another language that felt similar, but could produce an HTML5 version. We discovered Haxe, which let us migrate the company's main application from Flash to HTML5 in a few months. That gave me my first push to bring the project back, use some work tooling to move it to Haxe, and keep going. But all I really did was migrate it, and not much more. It stayed in the drawer, because making an entire game on your own while your day job is almost the same thing is complicated. You can read the Haxe post-mortem from the company on the language's official website: [Porting BI Platform to Haxe]
When the death knell for Flash started ringing, between 2016 and 2017, the company I worked for had to get serious about migrating what we had in Flash to another language that felt similar, but could produce an HTML5 version. We discovered Haxe, which let us migrate the company's main application from Flash to HTML5 in a few months. That gave me my first push to bring the project back, use some work tooling to move it to Haxe, and keep going. But all I really did was migrate it, and not much more. It stayed in the drawer, because making an entire game on your own while your day job is almost the same thing is complicated. You can read the Haxe post-mortem from the company on the language's official website: [Porting BI Platform to Haxe]
The first attempt
The AI factor
Let's fast-forward, scratched-record style, to 2025. LLMs are everywhere, and model changes are coming at us every other week. I had already started experimenting with them, both at work and in my free time. But it was occasional use: questions that used to mean seventy Google searches and a dive through Stack Overflow were now direct questions to ChatGPT. What I did see, both in colleagues and across the software industry, was that people were using them more and more.
After becoming a father in early 2025 and coming back from paternity leave, the company where I work now gave me the chance to lead a new R&D department focused on making use of AI and building features around it. Once I started using the paid version of ChatGPT and seeing more and more interesting uses for it, I thought again about using my free evenings and weekends to pick Aritmetris back up. What if I migrated it straight to JavaScript with this?
And it worked. Relatively. I gave ChatGPT a zip with the original ActionScript 3 code, and it spat out a JavaScript project. Functional, just like the original. And I thought: wow, that's wild. What if, instead of JavaScript, I went for something more powerful and moved it to .NET MAUI? That way I could build native mobile versions and give it a bit more weight. So I did. Not long after, another functional version. But then, oh dear, you want to iterate. Oh dear, you want to improve it.
The key issue for me was that, if I wanted a project I could iterate on with artificial intelligence, I had to be able to do it in short bursts. And those short bursts had to be productive. Family, work and everything else take all the time. The idea was to sacrifice small bits of personal downtime to keep going with this project I had always been fond of. But when I gave ChatGPT a zip, I got two new things working and two old things broken. If I have to spend more time fixing and rebuilding, it's better to leave it alone. It was September 2025, and the project went back into the drawer. Aritmetris had a season ticket to my very full drawer of abandoned projects.
After becoming a father in early 2025 and coming back from paternity leave, the company where I work now gave me the chance to lead a new R&D department focused on making use of AI and building features around it. Once I started using the paid version of ChatGPT and seeing more and more interesting uses for it, I thought again about using my free evenings and weekends to pick Aritmetris back up. What if I migrated it straight to JavaScript with this?
And it worked. Relatively. I gave ChatGPT a zip with the original ActionScript 3 code, and it spat out a JavaScript project. Functional, just like the original. And I thought: wow, that's wild. What if, instead of JavaScript, I went for something more powerful and moved it to .NET MAUI? That way I could build native mobile versions and give it a bit more weight. So I did. Not long after, another functional version. But then, oh dear, you want to iterate. Oh dear, you want to improve it.
The key issue for me was that, if I wanted a project I could iterate on with artificial intelligence, I had to be able to do it in short bursts. And those short bursts had to be productive. Family, work and everything else take all the time. The idea was to sacrifice small bits of personal downtime to keep going with this project I had always been fond of. But when I gave ChatGPT a zip, I got two new things working and two old things broken. If I have to spend more time fixing and rebuilding, it's better to leave it alone. It was September 2025, and the project went back into the drawer. Aritmetris had a season ticket to my very full drawer of abandoned projects.
The workflow that worked
The agent that isn't 007
Then 2026 arrived and, oddly enough, during a padel lesson, a fellow developer told me about a program he was using and I still knew nothing about: Cursor. I didn't know that one in particular, but I had heard of tools like Claude Code, even if I hadn't properly looked into how they worked. After tinkering a bit and seeing how these AI programs built around "agents" behaved, I saw huge potential. I ran a few tests at work for some refactoring tasks, and the results were pretty spectacular.
I started another project, one we're still working on, and tools like these came up as an option. Since we already have ChatGPT Plus, it includes Codex, OpenAI's Claude Code-style agent system. The more I looked into all of this, the more interesting it got, so I kept reading in my free time too. I thought: what if now I really could reuse the JavaScript code I had already migrated, go that route, and use Codex on Aritmetris from my personal GPT account?
How do you get real use out of these tools in little evening and weekend pockets of time?
There's one very interesting thing about agents like this: you can ask them to plan changes. You explain what you want to do, with as much detail as possible, and they prepare a change plan for the code. You review it and, when you genuinely agree with what they propose, you let them implement it. Then you refactor. And refactor the refactor.
AI does a huge amount of work, and it does it exceptionally fast. The problem is that, if you don't guide it properly, it can generate monolithic, tightly coupled code at dizzying speed. But it's also very good when you do give it guidance and, once I had a functional version, the first thing I did was split responsibilities apart: input, rendering, audio, and so on, so I could add new functionality without friction. And honestly, almost everything I asked Codex to do, it did, and did well. I could ask it for something, go wash the dishes, come back, check the result and see that it had either done it right or left it almost right. Only a few times, after a new feature I had tried to scope as tightly as possible, did I need to ask for fixes or do a wild revert. That happened too, of course. Plan - implement - review - iterate.
I started another project, one we're still working on, and tools like these came up as an option. Since we already have ChatGPT Plus, it includes Codex, OpenAI's Claude Code-style agent system. The more I looked into all of this, the more interesting it got, so I kept reading in my free time too. I thought: what if now I really could reuse the JavaScript code I had already migrated, go that route, and use Codex on Aritmetris from my personal GPT account?
How do you get real use out of these tools in little evening and weekend pockets of time?
There's one very interesting thing about agents like this: you can ask them to plan changes. You explain what you want to do, with as much detail as possible, and they prepare a change plan for the code. You review it and, when you genuinely agree with what they propose, you let them implement it. Then you refactor. And refactor the refactor.
AI does a huge amount of work, and it does it exceptionally fast. The problem is that, if you don't guide it properly, it can generate monolithic, tightly coupled code at dizzying speed. But it's also very good when you do give it guidance and, once I had a functional version, the first thing I did was split responsibilities apart: input, rendering, audio, and so on, so I could add new functionality without friction. And honestly, almost everything I asked Codex to do, it did, and did well. I could ask it for something, go wash the dishes, come back, check the result and see that it had either done it right or left it almost right. Only a few times, after a new feature I had tried to scope as tightly as possible, did I need to ask for fixes or do a wild revert. That happened too, of course. Plan - implement - review - iterate.
The stolen time
Juggling everything is not for the faint-hearted
The problem with projects like a video game, even a simple one like this, is that they tend to be long. When you have a family, a job, two kids to look after and work that is pretty mentally demanding, it's very hard to focus your hours, or minutes, of downtime on another project. Let alone keep up a decent pace. So, in short: without a tool like the ones I've used, Aritmetris would still be in a drawer for another 16 years. Easily.
Even if I can sit down at the computer, read Codex's new plan, review it and hit implement while I tidy the house, pick up my daughter from her after-school activity or make dinner, it is still time spent sitting at the computer. While the world is asking things of you. And by the world, I mean family.
Without AI, finishing this would have felt unthinkable unless I had abandoned everything else. And honestly: I love the game, but not that much. A project like this, with a family, is prime "absent dad" material.
Even if I can sit down at the computer, read Codex's new plan, review it and hit implement while I tidy the house, pick up my daughter from her after-school activity or make dinner, it is still time spent sitting at the computer. While the world is asking things of you. And by the world, I mean family.
Without AI, finishing this would have felt unthinkable unless I had abandoned everything else. And honestly: I love the game, but not that much. A project like this, with a family, is prime "absent dad" material.
What changed and what didn't
The game that was already there in 2010
A lot of things have not really changed since the first prototype. In other words, I kept the design decisions I already had back then. For example, pieces are made of three parts: number + operator + number. Pieces break when they collide with others and fill every gap in the main grid. As levels progress, so do the available operations and numbers.
But...
There is much more in this version. Besides finding a way to give it more personality with the notebook style and a whole schoolroom feel, I also defined the levels better, added power-ups and improved the controls. On top of that, with stats, achievements and a way to share your result, I've tried to give it a bit more substance so you feel like playing again after the first round.
What I did not want to add, partly because I like games to feel complete from the start and partly because I didn't want to complicate my already scarce free time, was online play, accounts, rankings with other players, and so on. If the game works, people like it and there is loud demand for it, I'll think about it. For now, I want to leave it clean and offline. Deep down it's the same game, but now it's a finished product.
But...
There is much more in this version. Besides finding a way to give it more personality with the notebook style and a whole schoolroom feel, I also defined the levels better, added power-ups and improved the controls. On top of that, with stats, achievements and a way to share your result, I've tried to give it a bit more substance so you feel like playing again after the first round.
What I did not want to add, partly because I like games to feel complete from the start and partly because I didn't want to complicate my already scarce free time, was online play, accounts, rankings with other players, and so on. If the game works, people like it and there is loud demand for it, I'll think about it. For now, I want to leave it clean and offline. Deep down it's the same game, but now it's a finished product.
What I learned
The important thing is knowing how to finish
I think I learned a huge amount about AI-assisted development during this process. It has taught me things I'm already applying in my day-to-day work. I now know how to keep a change workflow going with agents, how to configure them to get more out of them, and that they can do things that would have seemed impossible to me not long ago.
It's also true that models have improved massively lately, and I don't know whether in the summer of 2025 I could have used something like this properly while wasting time with zips and dead-end chats with ChatGPT.
What I would change is maybe having been a little more consistent back in 2010, so it wouldn't have taken being older, having a family and having a good job to finally get serious about the project I had left behind. Even if only two people end up playing it, reaching the end of a personal project and calling it finished is absolutely worth it. It feels genuinely good. Reaching v1 on a personal project sounds like a small thing, but it isn't.
It's also true that models have improved massively lately, and I don't know whether in the summer of 2025 I could have used something like this properly while wasting time with zips and dead-end chats with ChatGPT.
What I would change is maybe having been a little more consistent back in 2010, so it wouldn't have taken being older, having a family and having a good job to finally get serious about the project I had left behind. Even if only two people end up playing it, reaching the end of a personal project and calling it finished is absolutely worth it. It feels genuinely good. Reaching v1 on a personal project sounds like a small thing, but it isn't.
What's next
No DLC, no season pass
I want there to be a v2, and I want to add modes the game doesn't have yet, so I can release an initial version, see whether people like it and get hooked, and keep working through the rest of the ideas for the project.
The main one: 1 vs 1. I want the PC version to support local multiplayer. Two controllers, or controller and keyboard, or keyboard and mouse, so you can play with your partner, your friends or your kids. The idea is to make a competitive version in the spirit of games like Puyo Puyo, plus another mode where you can go up against the computer.
And later, if there is still energy and appetite, an online mobile version of the same idea. We'll see.
I'm also open to any feedback you can send to info@aritmetris.com about bugs you may find, so I can try to fix them as soon as possible.
I hope Aritmetris gives you a fun little while. And if you come back for a second game, then I'm the one who has won. There will be a v2 soon, I hope.
The main one: 1 vs 1. I want the PC version to support local multiplayer. Two controllers, or controller and keyboard, or keyboard and mouse, so you can play with your partner, your friends or your kids. The idea is to make a competitive version in the spirit of games like Puyo Puyo, plus another mode where you can go up against the computer.
And later, if there is still energy and appetite, an online mobile version of the same idea. We'll see.
I'm also open to any feedback you can send to info@aritmetris.com about bugs you may find, so I can try to fix them as soon as possible.
I hope Aritmetris gives you a fun little while. And if you come back for a second game, then I'm the one who has won. There will be a v2 soon, I hope.