Videojuegos hechos combinando HTML, CSS y JS con ilustraciones propias. 0% IA
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.
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:
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.
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...
Pulsa en el icono que represente el dispositivo en el que quieras jugar a Dunkxar (siempre que
aparezca como disponible) para comenzar la descarga.
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.
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.
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.
Ilustraciones
Paquete con las 5 imágenes que aparecen en la Historia del videojuego, con un tamaño
de 800x650 px.
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
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.
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
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.
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.