No hay ningún .png en la carpeta de arte de CraftWar. Cada unidad, cada edificio, y el anunciador del juego (una cabeza de robot corroída con un ojo LED) existen únicamente como código — coordenadas, rectángulos y círculos que se recalculan 20 veces por segundo.
El motor de CraftWar (`src/gfx/draw_game.cpp`) no carga sprites — construye cada personaje sumando primitivas de canvas: `fillRect` para las placas de metal, `fillCircle` para los ojos y los rivets, `line` para las grietas de corrosión. El anunciador "Undead-AI" del juego, por ejemplo, es una función de unas 60 líneas que dibuja una cabeza de robot oxidado — sin un solo asset externo, solo geometría y color hexadecimal directo en el código.
Esto no es una limitación técnica — es una decisión de arquitectura. CraftWar corre con netcode lockstep determinista: ambos jugadores simulan exactamente lo mismo, cuadro por cuadro. Dibujar por código en vez de por sprite significa que la animación (el ojo LED que parpadea, la mandíbula que se abre al hablar) es una función del mismo `tick` determinista que ya gobierna la simulación — no hace falta sincronizar un spritesheet externo con el estado del juego, el dibujo *es* una expresión directa del estado.
Escribir arte por coordenadas a mano es lento y propenso a error — mover un rivet dos píxeles implica recalcular offsets en una docena de líneas relacionadas. Usar un asistente de IA como pair-programmer para este tipo de código de bajo nivel cambia el flujo real: describís la composición que querés ("cabeza de robot, placa superior con banda de luz, dos ojos — uno con LED vivo, otro con socket muerto y craqueado") y la IA propone la primera pasada de `fillRect`/`fillCircle` con las proporciones correctas, que después se ajusta a mano iterando sobre el resultado renderizado. Es el mismo patrón de trabajo que usamos en proyectos de clientes: la IA no reemplaza el criterio de diseño, acelera la traducción de una idea visual a código verificable.
Un sprite pixel art tradicional pesa kilobytes por frame de animación. Una función de dibujo por primitivas pesa lo mismo sin importar cuántos frames de animación tenga — porque no hay frames, hay una función continua del tiempo. Para un juego que corre completo en WebAssembly en el navegador (como CraftWar, jugable ahora en [guatemalia.com/craftwar](https://guatemalia.com/craftwar)), esto se traduce directo en un binario más chico y una carga más rápida.
El mismo principio — usar un asistente de IA para escribir y verificar código de bajo nivel en vez de depender de assets pesados generados por separado — es exactamente el tipo de aceleración de ingeniería que aplicamos en arquitecturas de IA empresarial: no se trata de que la IA "haga el trabajo sola", se trata de comprimir el ciclo entre "así lo quiero ver" y "así se ve, verificado y corriendo".
Carlos Montiel es arquitecto de soluciones IA empresarial. Implementa LLMs, Agentes, RAG y orquestadores en empresas de Guatemala y Latinoamérica. Contáctalo para una consultoría.
Contactar a Carlos Montiel