Post-mortem

Como se fixo Aritmetris

A idea naceu en 2010 como xogo educativo O meu proxecto de fin de carreira foi un motor para xogos de plataformas en 2D construído con patróns de deseño. Pódese ler aquí.

Nel modelei un pequeno motor que permitía crear xoguiños de plataformas 2D configurando un XML e preparándolle assets. Así podías facer xogos de plataformas reaproveitando código, sen ter que empezar de cero cada vez.

Aproveitando parte dese motor, pensei: e se o usaba para facer algo tipo "Tetris"? Daquela ocorréuseme a idea de Aritmetris, onde caían pezas e aprendías a facer sumas a toda velocidade.

De aí saíu o primeiro prototipo en Flash, pero acabou nun caixón. Por que? Pois porque a vida vai como vai.
E aquí estamos, 16 anos despois.

A orixe

Como aproveitar o proxecto de fin de carreira para facer un xogo? Por algún motivo inexplicable, que só coñece o meu eu de 2010, despois de facer un motor para crear xogos de plataformas decidín facer... un puzzle.

A verdade é que sempre me encantaron este tipo de xogos. Xoguei a moreas de Tetris, Puyo Puyo, Magic Drop e mesmo a indies de PlayStation Yaroze como Superbub...

Para xogos de plataformas non tiña ningunha idea que me chamase de verdade. Para este xénero, en cambio, si: un Tetris con sumas, restas e multiplicacións? Non o vira nunca. Por que non?

Naquela época, ademais, o meu sobriño tiña uns 6 anos e pensei que podía facerlle algo para axudalo a entender as mates. Ou, polo menos, a practicar sen decatarse.

En setembro de 2010 empezaba a traballar nunha empresa de software e, a fin de semana anterior, creei con uns assets cutriños e moitas ganas de facer cousas novas a base do que hoxe é Aritmetris.
Aquí tedes o zip co prototipo inacabado: [Aritmetris Flash]
Data de creación do arquivo orixinal de Aritmetris Flash.
A data do arquivo conserva o momento exacto no que naceu o prototipo orixinal.
Captura do prototipo orixinal de Aritmetris en Flash.
Así se vía Aritmetris na súa versión Flash de 2010.

O caixón

Vida laboral contra proxectos persoais En 2010 empecei a traballar nunha das dúas empresas que cimentaron a miña experiencia profesional. Entrei, precisamente, pola miña experiencia con Flash e estiven traballando nun par de aplicacións. Unha xa estaba empezada cando cheguei e a outra creámola desde cero. Aquel contexto laboral, lonxe da casa e dedicándome tamén a proxectos creativos, fixo que deixase de lado calquera intento de seguir coa idea. Quedou como a ocorrencia curiosa dunha fin de semana e esquecínme dela.

Cando empezaron a soar os tambores de morte de Flash, entre 2016 e 2017, na empresa onde traballaba tivemos que poñernos en serio a migrar o que tiñamos en Flash a outra linguaxe que se parecese, pero que permitise crear unha versión en HTML5. Descubrimos Haxe, que nos serviu para migrar en poucos meses a aplicación principal da empresa de Flash a HTML5. Aí tiven o primeiro impulso de recuperar o proxecto, usar algunha ferramenta do traballo para pasalo a Haxe e continuar. Pero o único que fixen foi migralo e pouco máis. Seguiu no caixón, porque meterte ti só a facer un xogo enteiro mentres traballas en case o mesmo é complicado.
Aquí pódese ler o post-mortem de Haxe na empresa, na web oficial da linguaxe: [Porting BI Platform to Haxe]

O primeiro intento

O factor IA Facemos un fast-forward deses, co disco raiado incluído, e chegamos a 2025. Estamos en plena efervescencia pola chegada dos LLM e rodeados de cambios de modelo cada dous por tres. Eu xa empezara a experimentar con eles tanto no traballo como no meu tempo libre. Pero o uso era puntual: dúbidas que antes eran setenta buscas en Google e mergullarse en Stack Overflow agora eran preguntas directas en ChatGPT. O que si vía, tanto en compañeiros como no resto da industria informática, é que cada vez se usaban máis.

Despois de ser pai a comezos de 2025 e volver do meu permiso de paternidade, na empresa onde traballo actualmente déronme a oportunidade de responsabilizarme dun novo departamento de I+D enfocado en sacarlles partido á IA e crear funcionalidades relacionadas con ela. Ao empezar a usar a versión de pago de ChatGPT e velo cada vez máis útil, volvín pensar en aproveitar os meus ratos libres das noites e das fins de semana para retomar Aritmetris. E se o migraba directamente a JavaScript con isto?

E funcionou. Relativamente. Paseille a ChatGPT un zip co código orixinal en ActionScript 3 e devolveume un proxecto en JavaScript. Funcional, tal como era o orixinal. E pensei: ostras, que pasada. E se, en vez de irme a JavaScript, probaba algo máis potente e o pasaba a .NET MAUI? Así podería crear versións nativas para móbil e darlle algo máis de corpo. E así o fixen. Ao pouco, outra versión funcional. Pero ai, cando queres iterar. Ai, cando queres melloralo.

A cuestión principal para min era que, se quería un proxecto sobre o que puidese iterar con intelixencia artificial, tiña que poder facelo en poucos ratos. E eses poucos ratos tiñan que render. Porque a familia, o traballo e todo o demais lévanse todo o tempo. A idea era sacrificar pequenos momentos de gozo persoal para seguir con este proxecto que sempre me fixera ilusión. Pero, cando lle pasaba un zip a ChatGPT, devolvíame dúas cousas novas ben e dúas vellas mal. Se teño que dedicar máis tempo a corrixir e refacer, mellor deixalo estar. Estabamos en setembro de 2025 e o proxecto volvía ao caixón.
Aritmetris tiña abono no meu xeneroso caixón de proxectos abandonados.

O fluxo que funcionou

O axente que non é 007 Chegou 2026 e, curiosamente, nunha clase de pádel, un compañeiro que tamén é informático faloume dun programa que usaba e do que eu aínda non sabía nada: Cursor. Non o coñecía en concreto, pero si escoitara falar de ferramentas como Claude Code, aínda que non me puxera en serio a ver como funcionaban. Despois de fedellar un pouco e ver como traballaban estes programas de intelixencia artificial enfocados a ser "axentes", vinlles un potencial enorme. Fixen algunhas probas no traballo para facer algún refactor e o funcionamento resultou bastante espectacular.

Empecei outro proxecto, no que aínda seguimos, e plantexouse o uso de ferramentas coma estas. Como xa temos ChatGPT Plus, con el vén Codex, que é o sistema de axentes tipo Claude Code de OpenAI. Ao investigar bastante sobre isto, pareceume tan interesante que seguín lendo tamén no meu tempo libre. Pensei: e se agora si podía reaproveitar o código en JavaScript xa migrado, tirar por aí e usar Codex con Aritmetris desde a miña conta persoal de GPT?

Como sacarlles zume a estas ferramentas en ratiños polas noites e as fins de semana?

Pois hai unha cousa moi interesante con axentes deste tipo: podes pedirlles que planifiquen os cambios. Ti explicas o que queres facer, co máximo detalle posible, e entón prepáranche un plan de cambios sobre o código. Ti revísalo e, cando de verdade estás de acordo co que propoñen, déixaslles implementar. E logo refactorizas. E refactorizas o refactor.

A IA fai moitísimo traballo e faino excepcionalmente rápido. O problema é que, se non a guías ben, pode xerarche código monolítico e acoplado a unha velocidade de vertixe. Pero tamén é moi boa se lle dás guía e, o primeiro que fixen, unha vez tiña unha versión funcional, foi separar por responsabilidades: input, render, audio, etcétera, para poder ir engadindo nova funcionalidade sen fricción. E, ostras, case todo o que lle pedía a Codex cumpríao e facíao ben. Podía ir fregar os pratos despois de pedirlle algo e volver, mirar o resultado e comprobar que ou ben o fixera ben ou ben o deixara case ben. Poucas veces, tras unha funcionalidade nova que tentaba acoutar ao máximo, tiña que pedirlle correccións ou facer un revert á brava. Que tamén pasou, claro.
Planificar - implementar - revisar - iterar.

O tempo roubado

Compaxinalo todo é de valentes O problema de proxectos como un videoxogo, aínda que sexa un sinxelo coma este, é que adoitan ser longos. Cando tes familia, traballo, dous nenos que coidar e un emprego bastante absorbente a nivel mental, é moi difícil poñer o foco nas túas horas, ou minutos, de relax noutro proxecto. Xa non digamos manter un ritmo decente de avance. Así que, en resumo: sen unha ferramenta como as que usei, Aritmetris seguiría nun caixón 16 anos máis. De sobra.

A pesar de poder sentarme no ordenador, ler o novo plan de Codex, revisalo e darlle a implementar mentres eu recollo a casa, vou buscar a nena á extraescolar ou preparo a cea, segue sendo tempo no que te sentas diante do ordenador. Mentres o mundo te reclama. E cando un di o mundo, refírese á familia.

Sen a IA resultaríame impensable ter isto rematado sen abandonar todo o demais. E a verdade: ao xogo téñolle cariño, pero non tanto.
Un proxecto así, con familia, é carne de "pai ausente".

O que cambiou e o que non

O xogo que xa estaba en 2010 Hai moitas cousas que non cambiaron, en esencia, desde o primeiro prototipo. É dicir, mantiven as decisións de deseño que xa tiña daquela. Por exemplo, as fichas son de tres pezas: número + operador + número. As pezas rompen ao chocar coas outras e enchen todos os ocos da matriz principal. A medida que avanzan os niveis, tamén avanzan as operacións e os números dispoñibles.

Pero...

Nesta versión hai moito máis. Ademais de atopar a maneira de darlle máis personalidade creando o estilo de caderno e facendo que todo respirase ambiente de colexio, tamén definín mellor os niveis, engadín power-ups e mellorei os controis. Ademais, ao sumarlle estatísticas, logros e unha maneira de compartir o resultado, tentei darlle algo máis de empaque para que anime a seguir xogando despois da primeira partida.

O que non quixen engadir, por unha banda porque me gusta que os xogos veñan completos de base e, por outra, para non complicar aínda máis o meu escaso tempo libre, é a posibilidade de xogar online, rexistrarte e ter rankings con outros xogadores, etcétera. Se o xogo funciona, gusta e vexo que hai clamor popular, pensareino. Pero, por agora, quero deixalo limpo e offline.
En esencia é o mesmo xogo, pero agora é un produto acabado.

O que aprendín

O importante é saber acabar Neste proceso creo que aprendín moitísimas cousas sobre o desenvolvemento con IA. Serviume de aprendizaxe para cousas que estou aplicando no meu día a día no traballo. Agora sei manter un fluxo de cambios usando axentes, sei como configuralos para sacarlles máis partido e sei que poden facer cousas que ata hai nada me parecían imposibles.

Tamén é verdade que nos últimos tempos os modelos melloraron moitísimo, e non sei se no verán de 2025 podería ter aproveitado algo así mentres perdía o tempo a base de zips e conversas de besugos con ChatGPT.

O que si cambiaría é ter sido quizais algo máis constante en 2010, para que non fixese falta ter unha idade, unha familia e un bo traballo para animarme a meterlle caña ao proxecto que deixara esquecido. Aínda que logo o acaben xogando só dúas persoas, paga moitísimo a pena chegar ao final dun proxecto persoal e dalo por rematado. É realmente satisfactorio.
Chegar á v1 nun proxecto persoal parece unha parvada, pero non o é.

Que vén agora

Non hai DLC nin pase de tempada Quero que haxa unha v2 e quero engadirlle modos que aínda non ten, para poder sacar unha versión inicial coa que ver se gusta e engancha, e mentres tanto seguir co resto de ideas do proxecto.

A principal: 1 vs 1. Quero que o xogo se poida xogar en multixogador local na súa versión de PC. Que poidas conectar dous mandos, ou mando e teclado, ou teclado e rato, e xogar coa túa parella, cos teus amigos ou cos teus fillos. A idea é facer unha versión competitiva ao estilo das que existen en Puyo Puyo, xunto con outra para picarte contra o PC.

E, máis adiante, se quedan forzas e ganas, unha versión online para móbil do mesmo. Pero iso xa se verá.

Tamén estou aberto a recibir todo o feedback posible en info@aritmetris.com sobre os posibles bugs que poidades atopar, para intentar solucionalos canto antes.

Espero que Aritmetris vos faga pasar un bo rato. E se volvedes botar unha segunda partida, quen gañou fun eu. Haberá v2 axiña, espero.