Post-mortem

Com es va fer Aritmetris

La idea va néixer el 2010 com a joc educatiu El meu projecte final de carrera va ser un motor per a jocs de plataformes en 2D construït amb patrons de disseny. Es pot llegir aquí.

Hi vaig modelar un petit motor que permetia crear jocs de plataformes 2D configurant un XML i preparant-ne els assets. Així podies fer jocs de plataformes aprofitant codi, sense haver de començar de zero cada vegada.

Aprofitant part d'aquell motor, vaig pensar: i si el feia servir per muntar alguna cosa tipus "Tetris"? Llavors se'm va acudir la idea d'Aritmetris: queien peces i aprenies a fer sumes a tota velocitat.

D'aquí en va sortir el primer prototip en Flash, però va acabar en un calaix. Per què? Doncs perquè la vida fa la seva.
I aquí som, 16 anys després.

L'origen

Com aprofitar el projecte final de carrera per fer un joc? Per algun motiu inexplicable, que només coneix el meu jo del 2010, després de fer un motor per crear jocs de plataformes vaig decidir fer... un puzzle.

La veritat és que aquest tipus de jocs sempre m'han encantat. M'he fet un tip de jugar a Tetris, Puyo Puyo, Magic Drop i fins i tot a indies de PlayStation Yaroze com Superbub...

Per a jocs de plataformes no tenia cap idea que em fes prou gràcia; per a aquest gènere, en canvi, sí: un Tetris amb sumes, restes i multiplicacions? No ho havia vist mai. Per què no?

En aquella època, a més, el meu nebot tenia uns 6 anys i vaig pensar que podia fer-li alguna cosa per ajudar-lo a entendre les mates. O, com a mínim, a practicar sense adonar-se'n.

El setembre del 2010 començava a treballar en una empresa de software i, el cap de setmana anterior, amb uns assets cutrets i moltes ganes d'engegar coses noves, vaig crear la base del que avui és Aritmetris.
Aquí teniu el zip amb el prototip inacabat: [Aritmetris Flash]
Data de creació de l'arxiu original d'Aritmetris Flash.
La data de l'arxiu conserva el moment exacte en què va néixer el prototip original.
Captura del prototip original d'Aritmetris en Flash.
Així es veia Aritmetris en la seva versió Flash del 2010.

El calaix

Vida laboral i projectes personals: encaix complicat El 2010 vaig començar a treballar en una de les dues empreses que han cimentat la meva experiència professional. Hi vaig entrar, precisament, per la meva experiència amb Flash i vaig treballar en un parell d'aplicacions. Una ja estava començada quan hi vaig arribar i l'altra la vam crear des de zero. Aquell context laboral, lluny de casa i dedicant-me també a projectes creatius, va fer que deixés de banda qualsevol intent de continuar amb la idea. Va quedar com l'ocurrència curiosa d'un cap de setmana i me'n vaig oblidar.

Quan va començar a sonar el toc de morts de Flash, entre el 2016 i el 2017, a l'empresa on treballava ens vam haver de posar seriosament a migrar el que teníem en Flash a un altre llenguatge que s'hi assemblés, però que permetés crear una versió en HTML5. Vam descobrir Haxe, que ens va servir per migrar en pocs mesos l'aplicació principal de l'empresa de Flash a HTML5. Allà vaig tenir el primer impuls de recuperar el projecte, fer servir alguna eina de la feina per passar-lo a Haxe i continuar. Però l'únic que vaig fer va ser migrar-lo i poca cosa més. Va seguir al calaix, perquè ficar-te tot sol a fer un joc sencer mentre treballes en gairebé el mateix és complicat.
Aquí es pot llegir el post-mortem de Haxe a l'empresa, al web oficial del llenguatge: [Porting BI Platform to Haxe]

El primer intent

El factor IA Fem un fast-forward, amb el scrath típic inclòs, i arribem al 2025. Estem en plena efervescència per l'arribada dels LLM i ens envolten canvis de model cada dos per tres. Jo ja hi havia començat a experimentar, tant a la feina com en el temps lliure. Però en feia un ús puntual: dubtes que abans eren setanta cerques a Google i hores remenant Stack Overflow ara eren preguntes directes a ChatGPT. El que sí que veia, tant en companys com a la resta del sector informàtic, és que cada vegada se'n feia més ús.

Després de ser pare per segona vegada a principis del 2025 i tornar del permís de paternitat, a l'empresa on treballo actualment em van donar l'oportunitat de dedicar-me exclusivamente a un nou departament de R+D enfocat a treure profit de la IA i crear funcionalitats relacionades amb tot això. Quan vaig començar a fer servir la versió de pagament de ChatGPT i a veure-li usos cada cop més interessants, vaig tornar a pensar en aprofitar les estones lliures de nit i de cap de setmana per reprendre Aritmetris. I si el migrava directament a JavaScript amb això?

I va funcionar. Relativament. Li vaig passar a ChatGPT un zip amb el codi original en ActionScript 3 i em va escopir un projecte en JavaScript. Funcional, tal com era l'original. I em vaig dir: ostres, quina passada. I si, en comptes d'anar cap a JavaScript, me n'anava a alguna cosa més potent i el passava a .NET MAUI? Així podria crear versions natives per a mòbil i donar-li una mica més de cos. I així ho vaig fer. Al cap de poc, una altra versió funcional. Però ai, quan vols iterar. Ai, quan vols millorar-lo.

El tema clau per a mi era que, si volia un projecte sobre el qual pogués iterar amb intel·ligència artificial, ho havia de poder fer en estones curtes. I aquestes estones havien de ser productives. Perquè la família, la feina i tota la resta s'emporten tot el temps. La idea era sacrificar petits moments d'oci personal per continuar amb aquest projecte que sempre m'havia fet il·lusió. Però, quan li passava un zip a ChatGPT, em tornava dues coses noves bé i dues de velles malament. Si he de dedicar més temps a corregir i refer, millor deixar-ho estar. Érem al setembre del 2025 i el projecte tornava al calaix.
Aritmetris tenia abonament al meu generós calaix de projectes abandonats.

El flux que va funcionar

L'agent que no és el 007 Va arribar el 2026 i, curiosament, en una classe de pàdel, un company que també és informàtic em va parlar d'un programa que feia servir i del qual jo encara no sabia res: Cursor. No el coneixia en concret, però sí que havia sentit a parlar d'eines com Claude Code, tot i que no m'havia posat seriosament a mirar com funcionaven. Després de trastejar una mica i veure com treballaven aquests programes d'intel·ligència artificial enfocats a ser "agents", els vaig veure un potencial enorme. Vaig fer algunes proves a la feina per fer algun refactor i el funcionament va resultar ser força espectacular.

Vaig començar un altre projecte, on encara continuem, i es va plantejar l'ús d'eines com aquestes. Com que ja tenim ChatGPT Plus, amb ell ve Codex, que és el sistema d'agents tipus Claude Code d'OpenAI. En investigar força sobre tot això, em va semblar tan interessant que vaig continuar llegint-ne també en el temps lliure. Vaig pensar: i si ara sí que podia reaprofitar el codi en JavaScript ja migrat, tirar per aquí i fer servir Codex amb Aritmetris des del meu compte personal de GPT?

Com treure suc a aquestes eines en estonetes de nit i de cap de setmana?

Doncs hi ha una cosa molt interessant amb agents d'aquest tipus: pots demanar-los que planifiquin els canvis. Tu expliques què vols fer, amb tot el detall possible, i llavors et preparen un pla de canvis sobre el codi. Tu el revises i, quan realment estàs d'acord amb el que proposen, els deixes implementar. I després refactoritzes. I refactoritzes el refactor.

La IA fa moltíssima feina i la fa excepcionalment ràpid. El problema és que, si no la guies bé, et pot generar codi monolític i acoblat a una velocitat de vertigen. Però també és molt bona si li dones guia i, el primer que vaig fer, un cop tenia una versió funcional, va ser separar per responsabilitats: input, render, àudio, etcètera, per poder anar afegint funcionalitat nova sense fricció. I, ostres, gairebé tot el que demanava a Codex ho complia i ho feia bé. Podia anar-me'n a fregar els plats després de demanar-li alguna cosa i tornar, mirar el resultat i comprovar que o bé ho havia fet bé o bé ho havia deixat gairebé bé. Poques vegades, després d'una funcionalitat nova que intentava acotar al màxim, havia de demanar-li correccions o fer un revert a la brava. Que també els vaig haver de fer, també.
Planificar - implementar - revisar - iterar.

El temps robat

Compaginar-ho tot és de valents El problema dels projectes com un videojoc, encara que sigui un de senzill com aquest, és que acostumen a ser llargs. Quan tens família, feina, dues criatures a càrrec i una feina força absorbent mentalment, costa molt posar el focus en les teves hores, o minuts, de relax en un altre projecte. I ja no parlem de mantenir un ritme decent d'avenç. Així que, en resum: sense una eina com les que he fet servir, Aritmetris continuaria en un calaix 16 anys més. De llarg.

Tot i poder seure a l'ordinador, llegir el nou pla de Codex, revisar-lo i donar-li a implementar mentre jo em poso a recollir la casa, vaig a buscar la nena a l'extraescolar o preparo el sopar, continua sent temps en què t'asseus davant l'ordinador. Mentre el món et reclama. I, quan un diu el món, vol dir la família.

Sense la IA m'hauria semblat impensable tenir això acabat sense haver abandonat tota la resta. I la veritat: al joc li tinc afecte, però no tant.
Un projecte així, amb família, és carn de "pare absent".

El que va canviar i el que no

El joc ja hi era el 2010 Hi ha moltes coses que no han canviat, en essència, des del primer prototip. És a dir, he mantingut les decisions de disseny que ja tenia aleshores. Per exemple, les fitxes són de tres peces: número + operador + número. Les peces es trenquen en xocar amb les altres i omplen tots els buits de la matriu principal. A mesura que avancen els nivells, també ho fan les operacions i els números disponibles.

Però...

En aquesta versió hi ha molt més. A banda que vaig trobar la manera de donar-li més personalitat creant l'estil quadern i fent que tot respirés ambient d'escola, també vaig definir millor els nivells, vaig afegir power-ups i vaig millorar els controls. A més, amb estadístiques, fites i una manera de compartir el resultat, he intentat donar-li una mica més de cos perquè vingui de gust continuar jugant després de la primera partida.

El que no he volgut afegir, d'una banda perquè m'agrada que els jocs vinguin complets de base i, de l'altra, per no complicar encara més el meu escàs temps lliure, és la possibilitat de jugar online, registrar-te i tenir rànquings amb altres jugadors, etcètera. Si el joc funciona, agrada i veig que hi ha clam popular, m'ho plantejaré. Però, de moment, vull deixar-lo net i offline.
En essència és el mateix joc, però ara és un producte acabat.

El que he après

L'important és saber acabar En aquest procés crec que he après moltíssimes coses sobre el desenvolupament amb IA. M'ha servit d'aprenentatge per a coses que estic aplicant en el meu dia a dia a la feina. Ara sé mantenir un flux de canvis amb agents, sé com configurar-los per treure'n més suc i sé que poden fer coses que fins fa quatre dies em semblaven impossibles.

També és cert que últimament els models han millorat moltíssim, i no sé si l'estiu del 2025 hauria pogut aprofitar una cosa així mentre perdia el temps a base de zips i converses de sords amb ChatGPT.

El que sí que hauria canviat és haver estat potser una mica més constant el 2010, perquè no hagués fet falta tenir una edat, una família i una bona feina per animar-me a posar-me a fons amb el projecte que havia deixat oblidat. Encara que després només hi juguin dues persones, val moltíssim la pena arribar al final d'un projecte personal i donar-lo per acabat. És molt satisfactori, de debò.
Arribar a la v1 en un projecte personal sembla una ximpleria, però no ho és.

Què ve ara

No hi ha DLC ni passi de temporada Vull que hi hagi una v2 i vull afegir-hi modes que encara no té, per poder treure una versió inicial amb què veure si agrada i enganxa, i mentrestant continuar amb la resta d'idees del projecte.

La principal: 1 vs 1. Vull que el joc es pugui jugar en multijugador local en la seva versió de PC. Que puguis connectar dos comandaments, o comandament i teclat, o teclat i ratolí, i jugar amb la parella, els amics o els fills. La idea és fer una versió competitiva a l'estil de les que existeixen a Puyo Puyo, juntament amb una altra per picar-te contra el PC.

I, més endavant, si queden forces i ganes, una versió online per a mòbil del mateix. Però això ja es veurà.

També estic obert a rebre tot el feedback possible a info@aritmetris.com sobre els possibles bugs que pugueu trobar, per intentar solucionar-los com més aviat millor.

Espero que Aritmetris us faci passar una estona entretinguda. I si torneu a fer una segona partida, qui hi ha guanyat soc jo. Hi haurà v2 aviat, espero.