Tamagotchi web
Mi Mascota Virtual
No todo lo que construyo es para empresas. Mi Mascota Virtual es un tamagotchi hecho para la familia: una mascota que hay que alimentar, hacer jugar y mandar a dormir, y que crece según cómo se la cuide. Justamente por ser para niños, obligó a decisiones de diseño distintas a las de un panel de trabajo.
Diseñar para un niño, no para un desarrollador
La prioridad fue que se viera bonito y que fuera imposible perderse. Una pantalla, la mascota al centro, y pocos botones grandes con acciones claras. Los indicadores de hambre, energía, felicidad y salud bajan con el tiempo, y cuidar a la mascota es lo que los recupera.
Una decisión que cambió la experiencia fue quitar el movimiento autónomo. Las primeras versiones hacían caminar y volar a la mascota por la pantalla, y eso distraía más de lo que entretenía. La versión final es estática, con una respiración suave, y reacciona a los toques: se sienta, se para o da una pirueta. Menos animación, más sensación de que responde a quien la cuida.
Cómo se construyó
La mascota se dibuja en Canvas 2D, con animaciones de reposo y una escala que cambia según su etapa de crecimiento. El servidor es Node.js con Express y PostgreSQL. Hubo un bug instructivo en el dibujo: al escalar la mascota por etapa y aplicar además la escala de la pantalla, el tamaño se multiplicaba dos veces y la mascota adulta no cabía. La solución fue concentrar toda la escala en un solo punto del renderizado.
Que funcione sin internet
Un juego para niños se usa en el auto, en casa de los abuelos o donde el WiFi no llega. Por eso el almacenamiento es doble: la base de datos es la fuente principal y el navegador guarda una copia local que permite seguir jugando sin conexión. Es además una PWA instalable, con su service worker y su ícono en la pantalla de inicio, así que se abre como cualquier otra app del celular.
Estado actual
El juego está completo y en uso familiar, sin publicación abierta. La demostración permite cuidar a una mascota de ejemplo directamente en el navegador, sin guardar nada.