logo principal galiviart, videojuegos artesanales indie uilizando js, html y css con ilustraciones propias. Hecho en Galicia

Videojuegos artesanales

bandera de Reino Unido
bandera de Galicia
bandera de España

Videojuegos hechos combinando HTML, CSS y JS con ilustraciones propias. 0% IA

separador sección
lápiz
pluma

GaliViarT

¡Hola! Mi nombre es Juan, o Gali, dependiendo de a quién le preguntes. Esta web en la que te encuentras fue creada para almacenar y permitir la descarga de mis videojuegos. Son juegos desarrollados por mí (o, quién sabe, en colaboración con otros en un futuro), empleando los códigos habituales en la creación web (HTML, CSS y JS) para su funcionamiento y dibujando uno a uno sus elementos visuales. Todo ello sin utilizar IA, lo que de vez en cuando no viene mal para volver a usar el cerebro.
El cómo y el porqué me he embarcado en esta laboriosa y peculiar tarea de crear "videojuegos artesanales", te lo explico a continuación.

Debido a mi formación y a mis experiencias vitales, hasta enero de 2025 mis habilidades y conocimientos de informática no superaban la media de la población general. Tal vez destacaba un poco en el manejo de Excel y en algún proyecto loco hecho con Windows Movie Maker en un pasado bastante remoto. En ese mes, comencé un curso de formación en confección de páginas web. Principalmente, fue por pasar el tiempo, pues no tenía muy claro que me fuese a servir para algo útil.


En el curso descubrí lo que era el código HTML, empleado para crear el esqueleto de una página web, y me pareció muy sencillo e intuitivo. Después llegó el código CSS, para manipular el aspecto visual. Y con él, las animaciones. Adoré las animaciones. Pasé horas haciendo todo tipo de animaciones, cada una más loca que la anterior. Incluso tuve la idea de crear una página web donde colgar "animaciones adaptativas" que, con solo copiar el código y cambiar las imágenes que se animaban, pudieran servir para cualquier tipo de proyecto y dispositivo.


Pero esas ideas se vieron eclipsadas cuando aprendimos JavaScript, el código que permite darle interactividad y mayor funcionalidad a las webs. Tardé un poco más en asimilarlo, pero en cuanto pude hacer que, pulsando un botón, cambiasen las propiedades de un elemento —su posición dentro de la web, en este caso—, me surgió una pregunta en la cabeza: 'Combinando HTML, CSS y JS, ¿se podrá crear un videojuego funcional?

Obviamente, había un camino fácil para resolver esa pregunta: buscar en Google. Pero decidí no hacerlo y me puse el reto personal de resolver el enigma yo solo, lo que me serviría como una actividad muy didáctica (y, obviamente, sin usar Inteligencia Artificial, para tener que esforzar más el cerebro). Supongo que alguien lo haría antes, pues a estas alturas de la existencia inventar algo es muy complicado, pero en la fecha de publicación de esta página aún no he indagado nada sobre el asunto, con el fin de mantener mis ideas y los próximos proyectos que tengo en mente sin contaminar e intentar alcanzar algo original.


Los comienzos fueron duros, pero en un par de semanas creé y asimilé lo que yo denomino “bucles controlados” y la manipulación de clases de los elementos. Los 'bucles controlados' consisten en que, cada vez que se pulsa una tecla, se ejecuta una función que, por un lado, incrementa o disminuye el valor de una variable y, por el otro, realiza un cambio en la propiedad de algún elemento que dependerá del valor actual de esa variable. Por lo tanto, dependiendo del número de veces que se pulsara la tecla, el resultado de la función variará. Esto permite, por ejemplo, que si el valor de una variable es dos, el avance en la posición que le damos a un elemento sea del 20%, si es tres, del 30%, y así sucesivamente.


código de bucle controlado

Por otra parte, manipulando las clases (que serían algo así como etiquetas o nombres que le podemos dar a un elemento), podemos indicar que un elemento está en una determinada posición de la pantalla. De este modo, puede interactuar con otro elemento a través de una función cuyo criterio será que ambos posean una cierta clase en un momento dado. Así, con los 'bucles controlados' y con la manipulación de las clases de los diferentes elementos, el juego comenzó a funcionar. Pude superar todos los retos que me propuse a lo largo del desarrollo de todos los niveles, sin usar más que los métodos y propiedades básicas de JS, como style, classList o setTimeout. Si a alguien le interesa más este punto, seguro que sabe cómo indagar en el código del juego una vez que lo descargue.


Como en un principio mi intención era que el juego fuese para dispositivos móviles, esto limitó el tamaño de la pantalla de juego, tal y como explicaré con más detalle en la sección específica de Dunkxar. Para mejorar la jugabilidad en PC, asigné funciones a diferentes teclas del teclado. Por este motivo, jugar en el ordenador se hizo mucho más cómodo que en dispositivos móviles.

Una vez que el videojuego estaba en marcha, quedaba un problema: el apartado visual. Mover cuadraditos por la pantalla no iba a interesar ni a mí ni a nadie. Había que darles una identidad a esos cuadraditos, por lo que debían contener imágenes. Siempre me gustó dibujar, sobre todo dinosaurios y dragones, pero hay que reconocer que siempre lo hice de forma no muy refinada. Y si hablamos de dibujo digital, aún peor. Solo había usado Paint para salir de apuros, y con resultados bastante mediocres. A continuación, adjunto la imagen del primer intento de protagonista para el videojuego, la cual me hizo darme cuenta de que había que evolucionar en este apartado:

debuxo arcaico de Dunkxar hecho con paint

En la etapa inicial de experimentación con animaciones CSS usé la IA para alguna ilustración. Sin embargo, en este proyecto no me iba a servir, ya que para las animaciones que tenía en mente, como la de andar del personaje principal, la inteligencia artificial no me iba a proporcionar los resultados exactos que precisaba. Además, ya que no tenía la intención de usar la IA para hacer el código, tampoco la quise para el aspecto visual.


Así que pedí consejo sobre programas de dibujo que podría utilizar y comencé a practicar con Krita. Con paciencia, empecé a obtener resultados más o menos decentes. El hecho de aprender a dibujar por capas fue muy útil para mejorar el aspecto del juego, facilitando la creación de diferentes niveles de terreno en el eje z, para el agua, los obstáculos, los sombreados o las distintas posiciones de las animaciones para los enemigos. Finalmente, el aspecto visual alcanzó un estilo propio que espero que sea atractivo, o que por lo menos se pueda entender lo que quiere transmitir. De momento, ya me he sorprendido a mí mismo, sobre todo si se compara la ilustración que he dejado más arriba con las ilustraciones de la historia, que fueron los últimos elementos que realicé para el juego.


ilustración elaborada con Krita para la historia principal de Dunkxar, primero juego de Galiviart

Una vez que el videojuego estaba completo y funcional, en la carpeta del proyecto había una infinidad de elementos y archivos. Después de meses de trabajo, me gustaría que más gente pudiera jugarlo, para lo cual había que transformar esa carpeta en una aplicación. Por suerte, durante el curso de confección de páginas web, nos explicaron cómo utilizar los frameworks ElectronJS y CapacitorJS para crear aplicaciones para ordenador y dispositivos móviles. Así que esta fue la metodología que utilicé para empaquetar el juego en un formato fácil de distribuir y ejecutar (en la sección de descarga del juego incluyo las instrucciones necesarias). Por desgracia, lo más probable es que en un inicio no estén disponibles las versiones para Mac y iPhone, ya que aún tengo que estudiar la metodología necesaria.

Cuando ya llevaba hechos unos pocos niveles de Dunkxar, ya tenía claro que quería tener una página web para que estuviese disponible para cualquiera que quisiera jugarlo. Pero retrasé el comienzo de su diseño hasta que el juego estuvo terminado. Después de mucho pensar en el aspecto visual que quería para la página, he decidido que la mejor idea era que recordase el tipo de juego que quiero ir haciendo y que tuviese un diseño característico. Por lo tanto, los elementos de la web, desde el logotipo hasta las etiquetas, están dibujados por mí. También le añadí animaciones para darle un toque divertido.


En cuanto a la estructura de la página, he querido que funcionase como un cuaderno. Que cada sección fuese una página del mismo, señalizada con una etiqueta que sobresale, como si fuese un marcapáginas en un cuaderno real. Para alcanzar este objetivo, las secciones están superpuestas en el mismo espacio y se llama a cada una a la primera posición al pulsar su etiqueta correspondiente. Esta estructura también permite que, aunque en el futuro añada más secciones al ir creando nuevos juegos, el aspecto de la página se mantenga igual, detectándose a primera vista solo la aparición de más etiquetas.


También he colocado dos botones, uno para moverse a la derecha y otro a la izquierda entre las secciones. Estos botones proporcionan más comodidad para navegar en la web, además de dar la sensación de que la propia página funciona como un videojuego, sobre todo en la versión móvil. En ella, los botones se colocan en la parte inferior de la pantalla, en el lugar perfecto para ser pulsados por cada uno de los pulgares.


Las secciones más importantes de la página serán las correspondientes a cada videojuego, donde aparecerán los enlaces para su descarga, así como datos y curiosidades sobre su desarrollo.


Debido al tiempo que me llevará hacer un juego nuevo, he añadido la sección de 'Próximamente'. En ella, daré detalles sobre el proyecto en el que me encuentre trabajando y en qué estado de desarrollo está.


Por último, está la sección de Contacto, en la que dejaré un enlace para que puedas comunicarte conmigo por correo electrónico para avisarme de errores en los juegos, transmitirme opiniones, etc. También incluiré enlaces de interés, como Instagram o GitHub, y otros por si alguien quiere colaborar con el proyecto, como Patreon o PayPal, con el fin de pagar clases de dibujo y que mejore el aspecto visual de los juegos, el mantenimiento de la página y, principalmente, animarme a seguir haciendo videojuegos y que no me gane la pereza.

En cuanto termine de crear esta página y la deje disponible, tengo pensado seguir con el desarrollo de otro juego que ya tengo comenzado. Esta vez será un videojuego estilo los de naves espaciales de los años ochenta, como el Space Invaders o el Galaga. Ya tengo listo el código que mueve la nave y el de la secuencia de disparos, así que la cosa pinta bien. Lo que intentaré ir haciendo será publicar avances del nuevo proyecto tanto en la sección 'Próximamente' como en las redes sociales, además de ir colgando versiones tempranas del juego en Patreon.


Eso sí, espero que los siguientes proyectos no me lleven tantos meses de desarrollo como Dunkxar...

magia del portal
marco del portal
luz verde
luz naranja
luz azul
luz amarilla
luz violeta
luz roja
separador sección
posicion1 dunkxar
posición2 dunkxar
posicion3 dunkxar
parpadeo
pico xirarosa
lateral xirarosa
xirarosa abierta
xirarosa cerrada
lume
fuego
fuego
gema
gema
gema
xureloide1
xureloide2
xureloide3
planta1
planta2
Captura de pantalla del décimo nivel del videojuego Dunkxar, donde te enfrentarás a Deinjon. Galiviart
Captura de pantalla del sexto nivel del videojuego Dunkxar. Galiviart

Pulsa en el icono que represente el dispositivo en el que quieras jugar a Dunkxar (siempre que aparezca como disponible) para comenzar la descarga.

icono pcdescarga
icono androiddescarga
icono iPhoneno dispoñible
icono MACno dispoñible

DESCARGA GRATUiTA

  • Al descargar la versión para PC Windows, obtendrás un archivo en formato RAR. Descomprímelo en el lugar que desees. En la carpeta resultante encontrarás un archivo llamado Dunkxar.exe, que ejecuta el juego. También se incluye un acceso directo para colocar en el escritorio. Con la ventana del juego abierta, puedes pulsar F11 para jugar a pantalla completa.
  • Al descargar la versión para Android, obtendrás un archivo .apk. Lo más habitual es que el dispositivo no te permita abrirlo, al no proceder de la Play Store y no estar firmado. Para poder abrirlo, tienes que concederle a la aplicación con la que intentas abrir el .apk el permiso para "instalar aplicaciones de origen desconocido" (recuerda retirarlo después de finalizar la instalación). Una vez hecho esto, la aplicación se instalará automáticamente en el dispositivo.
  • Versión para iPhone aún no disponible.
  • Versión para MAC aún no disponible.

Mi primera creación, Dunkxar, es un videojuego de aventuras con vista cenital. El objetivo es rescatar a tu hermana de las garras de los temibles Dreitel. Para ello, guiarás a Dunkxar a través de 10 niveles (más un epílogo extra) recogiendo gemas, esquivando y calcinando enemigos, sobrevolando obstáculos mortales y buscando la mejor manera de terminar cada nivel antes de que se agote el minuto de tiempo disponible.



Cuando se me ocurrió la idea de elaborar un código que pudiese funcionar como videojuego, tuve que decidir qué tipo de juego quería hacer, obviamente. No tardé mucho en decidirme por un juego con vista cenital, como los Zelda originales y muchos otros similares, ya que me pareció la opción más sencilla al tener que modificar las posiciones de los elementos en cuatro direcciones sobre un mapa estático.


Como la idea inicial era crear un juego compatible con dispositivos móviles, la pantalla de juego es cuadrada, dividida en una cuadrícula de 10×10. Esto permite jugar con el móvil tanto en posición normal como apaisada. Por lo tanto, los botones y la interfaz del juego se diseñaron para adaptarse a cada posición, colocándose debajo o en los laterales de la pantalla de juego, según corresponda.


ilustración dónde se aprecian las diferentes posiciones del juego Dunkxar, optimizado para móviles.

El primer nivel fue el campo de experimentación para las mecánicas del juego y para su diseño visual. Opté por que el protagonista fuese una especie de lagarto, ya que, al usar una vista cenital, me iba a ser más sencillo animar el movimiento de las patas (al sobresalir del cuerpo) y dar la sensación de que camina cuando se mueve entre las posiciones de la cuadrícula. Como posteriormente fui capaz de desarrollar el código para que lanzase fuego y pudiese volar, le añadí alas y pasó a ser una especie de dragón reptante.


Una vez establecidas las bases y las mecánicas en el primero, el desarrollo de cada nivel posterior comenzó con el dibujo de la disposición de los diferentes elementos del mapa en una cuadrícula de 10×10. Estos elementos incluían obstáculos, caídas, gemas, el portal, los recorridos de los enemigos, etc. Así, al tener las coordenadas de la cuadrícula de cada uno, su posterior expresión en el código fue mucho más rápida y sencilla.


esquema del jueogo comparado con el dibujo final, dixeño previo a la programación del código

Una vez terminado el boceto del nivel, el siguiente paso fue dibujar el escenario en Krita. Para esto, dividiendo el lienzo en la misma cuadrícula, se mantuvieron perfectamente las distancias y las proporciones planeadas. Para cada escenario, se elaboraron diferentes capas de elementos. Esto permitió crear sombras y elementos por los que el personaje pasa por debajo, al colocarlos en una posición del eje z más alta. Una vez dibujado el escenario, se crearon los enemigos y otros elementos dentro de un lienzo cuadrado (la mayoría) para poder integrarlos en la cuadrícula de forma sencilla.


Con los elementos visuales ya terminados, se cargaron en el código HTML del correspondiente nivel y se colocaron en su posición correcta. Posteriormente, añadiendo animaciones con el código CSS, y mediante JavaScript, las funciones ya elaboradas en niveles anteriores se fueron adaptando, introduciendo los nuevos elementos o creando funciones nuevas, de ser preciso. Y así, cada nivel va quedando terminado.


Otra parte importante del desarrollo del juego fue la adición de efectos sonoros. Por ejemplo, el sonido de los pasos de Dunkxar cambia según el tipo de suelo por el que camine y cesa cuando está volando. Descargué los sonidos de la página web freesound.org, teniendo que adaptarme muchas veces a las opciones existentes, pero creo que obtuve un buen resultado en este apartado.


Al ser un proyecto con una finalidad autodidáctica, me propuse el reto de que cada nivel aportase una innovación para forzarme a crear código nuevo y, de esta manera, adquirir más conocimientos:

  • -En el primer nivel se establecieron las mecánicas del juego, creando todas las funciones básicas: movimiento, proyectil, recogida de elementos, caídas, obstáculos, enemigos, etc.
  • -En el segundo nivel, el reto fue conseguir que el personaje pudiese sumergirse en agua. Para ello, desarrollé el sistema de colocar diferentes capas en el eje z.
  • -En el tercer nivel, mi objetivo fue simplemente crear condiciones atmosféricas. Lo conseguí añadiendo una capa superior con la animación de copos de nieve y aplicando un filtro oscuro para simular el oscurecimiento del cielo.
  • -En el cuarto nivel coloqué muchísimos obstáculos, ya que en niveles anteriores sufrí ciertos problemas con la interacción con los elementos del mapa. Como resultado, me llevó a entender la importancia del orden del código en JavaScript, ya que la orden incorrecta hacía que el personaje se desplazase hacia atrás en vez de pararse al moverse hacia un obstáculo.
  • -En el quinto nivel me propuse hacer una batalla contra un minijefe y colocar elementos en el mapa con los que hubiese que interactuar para poder alargarla, como botones para abrir puertas, en este caso.
  • -En el sexto nivel, quise diseñar un sistema para poder realizar más de un ataque de fuego por nivel y cambiar el sistema de movimiento, el cual, al final, también apliqué a todos los niveles anteriores. Originalmente, al pulsar la tecla para mover el personaje, este se movía instantáneamente. Con el nuevo sistema, primero gira en la dirección del movimiento y, al volver a pulsar, es cuando se mueve.
  • -En el séptimo nivel, que es el mejor diseñado en mi opinión, quise crear diferentes niveles de altura. Para ello, tuve que implementar la posibilidad de subir al superior por un punto concreto y de poder caer de ese nivel superior al inferior. También conseguí compartir espacio con un enemigo sin que te mate por estar a diferente altura. Si hago una secuela u otro juego parecido, desarrollaré el código a partir de este nivel.
  • -En el octavo nivel, el reto fue coordinar perfectamente una animación CSS con el cambio de clases de un elemento a través de JavaScript (JS). Esto lo hice para poder crear el efecto de unos pinchos que salen y vuelven a meterse en la tierra y solo maten al personaje en el momento correcto.
  • -En el noveno nivel, quise crear una mayor interactividad con un elemento del mapa, generando la ilusión de poder empujar algo. Lo conseguí desencadenando, con una acción concreta, una animación que combina JavaScript (JS) con CSS.
  • -En el nivel final, el objetivo fue crear una batalla con diferentes fases y algo sorprendente, teniendo en cuenta el poco tiempo disponible. Creo que conseguí un resultado bastante aceptable.
  • -En el epílogo, quise ofrecer un ambiente relajado en el que se pudiese pasear e interactuar con diferentes elementos. Esto permitió desencadenar dos finales de juego diferentes.

Al ir adquiriendo nuevos conocimientos, tanto de programación como artísticos, todos los niveles sufrieron reescritura de código y retoques visuales. Por ejemplo, no se me ocurrió poner las sombras hasta el nivel 6, por lo que hubo que retocar los fondos de todos los niveles anteriores. El último retoque a nivel general fue tener que modificar el código de todos los niveles para que el personaje principal y los de su especie parpadeasen, solo para darles un aspecto más vivo.


En realidad, ni la historia ni el objetivo final del juego estaban definidos cuando comencé el proyecto. Inicialmente, solo era un juego en el que tenías que coger seis objetos para abrir un portal y acceder a otro nivel. El resto lo fui decidiendo sobre la marcha, ya que no sabía hasta dónde podría llegar. Espero que, aun así, el juego haya alcanzado cierta coherencia al final. Lo que sí decidí al poco de comenzar fue que el juego tendría un máximo de diez niveles, para no eternizarme con el proyecto y poder empezar otros nuevos, que intentaré planificar mejor antes de iniciarlos.


Lo más probable es que Dunkxar tenga una secuela (o precuela), pero con una pantalla de juego más grande. Se desplazará el fondo del mapa al llegar a los bordes, y cada nivel tendrá un mínimo de cuatro secciones. Esto permitiría crear una aventura mucho mayor. En un principio, lo diseñaré solo para PC para eliminar la limitación del tamaño de la pantalla y, después, si es posible, lo adaptaré para dispositivos móviles.

En esta tabla iré informando de las diferentes versiones del juego que se irán lanzando, con el objetivo de resolver errores o actualizar algún punto mejorable. De este modo, sabrás si tienes descargada la última versión.

Versión

Resumen

Fecha

Inicial

Primera versión lanzada. Sin errores detectados en PC, pero con problemas de sonido en móvil

09/ 2025

Dunkxar versión vagancia

Versión de Dunkxar en modo vagancia, o sea, tienes un menú desplegable que permite acceder directamente a cualquiera de los 10 niveless sin tener que pasar por los anteriores. Incluye la versión de Windows y Android.

boton

Ilustraciones

5 imaxes da historia

Paquete con las 5 imágenes que aparecen en la Historia del videojuego, con un tamaño de 800x650 px.

boton
separador seccion
bombilla
luz
martillo1
martillo2
interrogación
martillo1
martillo2
bombilla
luz

Próximamente

El videojuego que tengo actualmente en desarrollo está inspirado en los juegos de naves típicos de los años 80. Las funcionalidades básicas ya las tengo programadas. La pantalla tiene unas dimensiones de 10×15 secciones, por lo que va a ser más ancha que alta, ya que voy a intentar que la forma óptima para jugarlo sea en un dispositivo móvil en posición vertical.
La nave se puede mover a izquierda y derecha, se pueden disparar 4 láseres y 'matar' a un enemigo al acertarle. También hay un indicador (línea de cuatro cuadraditos) para saber qué láseres están listos para ser disparados y cuál de los cuatro va a ser el siguiente.
A partir de esta base, continúo el desarrollo del código y la apariencia del videojuego tal y como describo en el siguiente apartado (y con máis detalle en mis redes sociales).

Blog de desarrollo

Primer jefe del juego, que está formado por más de 40 imágenes y 1000 líneas de código JavaScript. Galiviart

Actualización 2 enero 2026: ¡El jefe del primer nivel ya está listo! Está formado por más de 40 dibujos y más de 1000 líneas de JavaScript. Al principio tiene un escudo de energía que aguanta 20 disparos y después puedes ir quitándole la armadura en sus 8 segmentos para destruirlo a continuación. Tiene 6 cañones láser y un ataque de baba asquerosa.

El fondo del videojuego indie ha sido actualizado para parecerse a un planeta con mucha naturaleza y ciudades. Aparecen nuevos enemigos. El diseño de la nave espacial también ha sido actualizado. Galiviart

Actualización enero 2026: he actualizado el aspecto visual tanto de la nave espacial como del fondo. También he diseñado dos tipos de enemigos, uno básico y otro con blindaje. Por último, he puesto superpuesta una capa de nubes.
Comienzo con el diseño de un jefe para el nivel y de objetos recolectables

fase temprana del videojuego. Ya se pueden disparar láseres y hay un fondo dinámico. Sistema de pérdida de vida añadido. Galiviart

Actualización diciembre 2025: he añadido un fondo formado por 5 ilustraciones que se desplazan de manera infinita en un ciclo en el que van pasando una tras otra y volviendo a la primera, creando la ilusión de que la nave se está moviendo. También he creado un sistema de tres puntos de vida para la nave, muriendo tras tocar 3 veces a un enemigo o un proyectil.
Las ilustraciones de la captura son completamente provisionales.

separador sección
sobre1
sobre2
corazón
arroba
hi!

Contacto/Redes

En la caja de arriba tienes un enlace para contactar conmigo por correo electrónico y así informar de errores en los juegos o en la web, o aportar cualquier sugerencia que se te ocurra.
También hay enlaces a diferentes redes sociales, donde intentaré ir informando de los avances en nuevos proyectos.
Por último, puedes encontrar el Patreon y el PayPal de Galiviart por si quieres animarme a seguir haciendo videojuegos artesanales y ayudar con el mantenimiento del sitio web. En el Patreon subiré algún contenido exclusivo, como ilustraciones o versiones de los juegos con alguna funcionalidad extra.

moneda
flecha izquierda
flecha derecha