Videoxogos feitos combinando HTML, CSS e JS con ilustracións propias. 0% IA
GaliViarT
Ola! O meu nome é Juan, ou Gali, dependendo de a quen lle preguntes. Esta web
na que te atopas foi creada para almacenar e permitir a descarga dos meus videoxogos. Son xogos
desenvolvidos por min (ou, quen sabe, en colaboración con outros nun futuro), empregando os códigos
habituais na creación web (HTML, CSS e JS) para o seu funcionamento e debuxando un a un os seus
elementos visuais. O como e o porqué me embarquei nesta laboriosa e peculiar tarefa, explícocho a
continuación.
Debido á miña formación e ás miñas experiencias vitais, ata xaneiro de 2025 as miñas habilidades
e coñecementos de informática non superaban a media da poboación xeral. Tal vez destacaba un
pouco no manexo de Excel e nalgún proxecto tolo feito con Windows Movie Maker nun pasado
bastante remoto. Nese mes, comecei un curso de formación en confección de páxinas web.
Principalmente, foi por pasar o tempo, pois non tiña moi claro que me fose servir para algo
útil.
No curso descubrín o que era o código HTML, empregado para crear o esqueleto dunha páxina web, e
pareceume moi sinxelo e intuitivo. Despois chegou o código CSS, para manipular o aspecto visual.
E con el, as animacións. Adorei as animacións. Pasei horas facendo todo tipo de animacións, cada
unha máis tola ca anterior. Mesmo tiven a idea de crear unha páxina web onde colgar "animacións
adaptativas" que, con só copiar o código e cambiar as imaxes que se animaban, puidesen servir
para calquera tipo de proxecto e dispositivo.
Pero esas ideas víronse eclipsadas cando aprendemos JavaScript, o código que permite darlle
interactividade e maior funcionalidade ás webs. Tardei un pouco máis en asimilalo, pero en canto
puiden facer que, premendo un botón, cambiasen as propiedades dun elemento —a súa posición
dentro da web, neste caso—, xurdiume unha pregunta na cabeza: "Combinando HTML, CSS e JS,
poderase crear un videoxogo funcional?"
Obviamente, había un camiño doado para resolver esa pregunta: buscar en Google. Pero decidín non
facelo e púxenme o reto persoal de resolver o enigma eu só, o que me serviría como unha
actividade moi didáctica (e, obviamente, sen usar Intelixencia Artificial, para ter que esforzar
máis o cerebro). Supoño que alguén o faría antes, pois a estas alturas da existencia inventar
algo é moi complicado, pero na data de publicación desta páxina aínda non indaguei nada sobre o
asunto, co fin de manter as miñas ideas e os próximos proxectos que teño en mente sen contaminar
e intentar acadar algo orixinal.
Os comezos foron duros, pero nun par de semanas creei e asimilei o que eu denomino “bucles
controlados” e a manipulación de clases dos elementos. Os "bucles controlados" consisten en que,
cada vez que se preme unha tecla, execútase unha función que, por unha banda, incrementa ou
diminúe o valor dunha variable e, pola outra, realiza un cambio na propiedade dalgún elemento
que dependerá do valor actual desa variable. Polo tanto, dependendo do número de veces que se
premese a tecla, o resultado da función variará. Isto permite, por exemplo, que se o valor dunha
variable é dous, o avance na posición que lle damos a un elemento sexa do 20%, se é tres, do
30%, e así sucesivamente.
Por outra banda, manipulando as clases (que serían algo así como etiquetas ou nomes que lle
podemos dar a un elemento), podemos indicar que un elemento está nunha determinada posición da
pantalla. Deste xeito, pode interactuar con outro elemento a través dunha función cuxo criterio
será que ambos os dous posúan unha certa clase nun momento dado.
Así, cos "bucles controlados" e coa manipulación das clases dos diferentes elementos, o xogo
comezou a funcionar. Puiden superar todos os retos que me propuxen ao longo do desenvolvemento
de todos os niveis, sen usar máis que os métodos e propiedades básicas de JS, como style,
classList ou setTimeout. Se a alguén lle interesa máis este punto, seguro que sabe como indagar
no código do xogo unha vez que o descargue.
Como nun principio a miña intención era que o xogo fose para dispositivos móbiles, isto limitou
o tamaño da pantalla de xogo, tal e como explicarei máis polo miúdo na sección específica de
Dunkxar. Para mellorar a xogabilidade en PC, asignei funcións a diferentes teclas do teclado.
Por este motivo, xogar no ordenador fíxose moito máis cómodo ca en dispositivos móbiles.
Unha vez que o xogo estaba en marcha, quedaba un problema: o apartado visual. Mover cadradiños
pola pantalla non ía interesar nin a min nin a ninguén. Había que darlles unha identidade a eses
cadradiños, polo que debían conter imaxes. Sempre me gustou debuxar, sobre todo dinosauros e
dragóns, pero hai que recoñecer que sempre o fixen de forma non moi refinada. E se falamos de
debuxo dixital, aínda peor. Só usara o Paint para saír de apuros, e con resultados bastante
mediocres. A continuación, adxunto a imaxe do primeiro intento de protagonista para o videoxogo,
a cal me fixo dar conta de que había que evolucionar neste apartado:
Na etapa inicial de experimentación con animacións CSS usei a IA para algunha ilustración.
Porén, neste proxecto non me ía servir, xa que para as animacións que tiña en mente, como a de
andar do personaxe principal, a intelixencia artificial non me ía proporcionar os resultados
exactos que precisaba. Ademais, xa que non tiña a intención de usar a IA para facer o código,
tampouco a
quixen para o aspecto visual.
A excepción foron as tipografías dos logotipos. Como teño mala caligrafía a man, e aínda é peor
facéndoa co rato, neses casos elaborei as palabras coa IA usando os comandos axeitados ás
características que quería. Despois, debuxei e modifiquei por riba das letras nun programa de
debuxo ata obter o resultado desexado.
Así que pedín consello sobre programas de debuxo que podería utilizar e comecei a practicar con
Krita. Con paciencia, comecei a obter resultados máis ou menos decentes. O feito de aprender a
debuxar por capas foi moi útil para mellorar o aspecto do xogo, facilitando a creación de
diferentes niveis de terreo no eixo z, para a auga, os obstáculos, os sombreados ou as distintas
posicións das animacións para os inimigos.
Finalmente, o aspecto visual acadou un estilo propio que espero que sexa atractivo, ou que polo
menos se poida entender o que quere transmitir. De momento, xa me sorprendín a min mesmo, sobre
todo se se compara a ilustración que deixei máis arriba coas ilustracións da historia, que foron
os últimos elementos que realicei para o xogo.
Unha vez que o xogo estaba completo e funcional, na carpeta do proxecto había unha infinidade de
elementos e arquivos. Despois de meses de traballo, gustaríame que máis xente puidese xogalo,
para o cal había que transformar esa carpeta nunha aplicación. Por sorte, durante o curso de
confección de páxinas web, explicáronnos como utilizar os frameworks ElectronJS e CapacitorJS
para crear aplicacións para ordenador e dispositivos móbiles. Así que esta foi a metodoloxía que
utilicei para empaquetar o xogo nun formato fácil de distribuír e executar (na sección de
descarga do xogo inclúo as instrucións necesarias). Por desgraza, o máis probable é que nun
inicio non estean dispoñibles as versións para Mac e iPhone, xa que aínda teño que estudar a
metodoloxía necesaria.
Cando xa levaba feitos uns poucos niveis de Dunkxar, xa tiña claro que quería ter unha páxina
web para que estivese dispoñible para calquera que o quixese xogar. Pero atrasei o comezo do seu
deseño ata que o xogo estivo rematado. Despois de moito pensar no aspecto visual que quería para
a páxina, decidín que a mellor idea era que lembrase o tipo de xogo que quero ir facendo e que
tivese un deseño característico. Polo tanto, os elementos da web, dende o logotipo ata as
etiquetas, están debuxados por min. Tamén lle engadín animacións para darlle un toque divertido.
En canto á estrutura da páxina, quixen que funcionase coma un caderno. Que cada sección fose
unha páxina do mesmo, sinalizada cunha etiqueta que sobresae, como se fose un marcapáxinas nun
caderno real. Para acadar este obxectivo, as seccións están superpostas no mesmo espazo e
chámase a cada unha á primeira posición ao premer a súa etiqueta correspondente. Esta estrutura
tamén permite que, aínda que no futuro engada máis seccións ao ir creando novos xogos, o aspecto
da páxina se manteña igual, detectándose á primeira vista só a aparición de máis etiquetas.
Tamén coloquei dous botóns, un para moverse á dereita e outro á esquerda entre as seccións.
Estes botóns proporcionan máis comodidade para navegar na web, ademais de dar a sensación de que
a propia páxina funciona coma un videoxogo, sobre todo na versión móbil. Nela, os botóns
colócanse na parte inferior da pantalla, no lugar perfecto para seren premidos por cada un dos
polgares.
As seccións máis importantes da páxina serán as correspondentes a cada videoxogo, onde
aparecerán as ligazóns para a súa descarga, así como datos e curiosidades sobre o seu
desenvolvemento
Debido ao tempo que me levará facer un xogo novo, engadín a sección de “Proximamente”. Nela,
darei detalles sobre o proxecto no que me atope traballando e en que estado se atopa.
Por último, está a sección de Contacto, onde deixarei unha ligazón para que poidas comunicarte
comigo por correo electrónico para avisarme de erros nos xogos, transmitirme opinións, etc.
Tamén incluirei ligazóns de interese, como Instagram ou GitHub, e outras por se alguén quere
colaborar co proxecto, como Patreon ou PayPal, co fin de pagar clases de debuxo e que mellore o
aspecto visual dos xogos, o mantemento da
páxina e, principalmente, animarme a seguir facendo xogos e que non me gañe a preguiza.
En canto remate de crear esta páxina e a deixe dispoñible, teño pensado seguir co
desenvolvemento doutro xogo que xa teño comezado. Esta vez será un xogo estilo os de naves
espaciais dos anos oitenta, como o Space Invaders ou o Galaga. Xa teño listo o código que move a
nave e o da secuencia de disparos, así que a cousa pinta ben. O que intentarei ir facendo será
publicar avances do novo proxecto tanto na sección “Proximamente” coma nas redes sociais,
ademais de ir colgando versións temperás do xogo en Patreon.
Iso si, espero que os seguintes proxectos non me leven tantos meses de desenvolvemento coma
Dunkxar...
Preme na icona que represente o dispositivo no que queiras xogar Dunkxar (sempre que apareza como
dispoñible) para comezar a descarga.
DESCARGA GRATUiTA
Ao descargar a versión para PC Windows, obterás un ficheiro en formato RAR. Descomprímeo no
lugar que queiras. Na carpeta resultante atoparás un arquivo chamado Dunkxar.exe, que
executa o xogo. Tamén se inclúe un acceso directo para colocares no escritorio. Coa xanela
do xogo aberta, podes premer F11 para xogar a pantalla completa.
Ao descargar a versión para Android, obterás un ficheiro .apk. O máis habitual é que o
dispositivo non che permita abrilo, ao non proceder da Play Store e non estar asinado. Para
poder abrilo, tes que concederlle á aplicación coa que tentas abrir o .apk o permiso para
"instalar aplicacións de orixe descoñecida" (lembra retiralo despois de finalizar a
instalación). Unha vez feito isto, a aplicación instalarase automaticamente no dispositivo.
Versión para iPhone aínda non dispoñible.
Versión para MAC aínda non dispoñible.
A miña primeira creación, Dunkxar, é un videoxogo de aventuras con vista
cenital. O obxectivo é rescatar a túa irmá das gadoupas dos temibles Dreitel. Para iso, guiarás a
Dunkxar a través de 10 niveis (máis un epílogo extra) recollendo xemas, esquivando e calcinando
inimigos, sobrevoando obstáculos mortais e buscando a mellor maneira de rematar cada nivel antes de
que se esgote o minuto de tempo dispoñible.
Cando se me ocorreu a idea de elaborar un código que puidese funcionar como xogo, tiven que
decidir que tipo de xogo quería facer, obviamente. Non tardei moito en decidirme por un xogo con
vista cenital, como os Zelda orixinais e moitos outros similares, xa que me pareceu a opción
máis sinxela ao ter que modificar as posicións dos elementos en catro direccións sobre un mapa
estático.
Como a idea inicial era crear un xogo compatible con dispositivos móbiles, a pantalla de xogo é
cadrada, dividida nunha cuadrícula de 10×10. Isto permite xogar co móbil tanto en posición
normal coma apaisada. Polo tanto, os botóns e a interface do xogo deseñáronse para adaptarse a
cada posición, colocándose debaixo ou nos laterais da pantalla de xogo, segundo corresponda.
O primeiro nivel foi o campo de experimentación para as mecánicas do xogo e para o seu deseño
visual. Optei por que o protagonista fose unha especie de lagarto, xa que, ao usar unha vista
cenital, íame ser máis sinxelo animar o movemento das patas (ao sobresaír do corpo) e dar a
sensación de que camiña cando se move entre as posicións da cuadrícula. Como posteriormente fun
capaz de desenvolver o código para que lanzase lume e puidese voar, engadinlle ás e pasou a ser
unha especie de dragón reptante.
Unha vez establecidas as bases e as mecánicas no primeiro, o desenvolvemento de cada nivel
posterior comezou co debuxo da disposición dos diferentes elementos do mapa nunha cuadrícula de
10×10. Estes elementos incluían obstáculos, caídas, xemas, o portal, os percorridos dos
inimigos, etc. Así, ao ter as coordenadas da cuadrícula de cada un, a súa posterior expresión no
código foi moito máis rápida e sinxela.
Unha vez rematado o bosquexo do nivel, o seguinte paso foi debuxar o escenario en Krita. Para
isto, dividindo o lenzo na mesma cuadrícula, mantivéronse perfectamente as distancias e as
proporcións planeadas. Para cada escenario, elaboráronse diferentes capas de elementos. Isto
permitiu crear sombras e elementos polos que o personaxe pasa por debaixo, ao colocalos nunha
posición do eixe z máis alta. Unha vez debuxado o escenario, creáronse os inimigos e outros
elementos dentro dun lenzo cadrado (a maioría) para poder integralos na cuadrícula de forma
sinxela.
Cos elementos visuais xa rematados, cargáronse no código HTML do correspondente nivel e
colocáronse na súa posición correcta. Posteriormente, engadindo animacións co código CSS, e
mediante JavaScript, as funcións xa elaboradas en niveis anteriores fóronse adaptando,
introducindo os novos elementos ou creando funcións novas, de ser preciso. E así, cada nivel vai
quedando rematado.
Outra parte importante do desenvolvemento do xogo foi a adición de efectos sonoros. Por exemplo,
o son dos pasos de Dunkxar cambia segundo o tipo de chan polo que camiñe e cesa cando está a
voar. Descarguei os sons da páxina web freesound.org, tendo que adaptarme moitas veces ás
opcións existentes, pero creo que obtiven un bo resultado neste apartado.
Ao ser un proxecto cunha finalidade autodidáctica, propúxenme o reto de que cada nivel achegase
unha innovación para forzarme a crear código novo e, deste xeito, adquirir máis coñecementos:
-No primeiro nivel establecéronse as mecánicas do xogo, creando todas as funcións básicas:
movemento, proxectil, recollida de elementos, caídas, obstáculos, inimigos, etc.
-No segundo nivel, o reto foi conseguir que o personaxe puidese somerxerse en auga. Para
iso, desenvolvei o sistema de colocar diferentes capas no eixe z.
-No terceiro nivel, o meu obxectivo foi simplemente crear condicións atmosféricas.
Conseguino engadindo unha capa superior coa animación de folerpas de neve e aplicando un
filtro escuro para simular o escurecemento do ceo.
-No cuarto nivel coloquei moitísimos obstáculos, xa que en niveis anteriores sufrin certos
problemas coa interacción cos elementos do mapa. Como reultado, levoume a entender a
importancia da orde do
código en JavaScript, xa que a orde incorrecta facía que o personaxe se desplazase cara
atrás en vez
de pararse ó moverse cara un obstáculo.
-No quinto nivel propúxenme facer unha batalla contra un minixefe e colocar elementos no
mapa cos que houbese que interactuar para poder alongala, como botóns para abrir portas,
neste caso.
-No sexto nivel, quixen deseñar un sistema para poder realizar máis dun ataque de lume por
nivel e cambiar o sistema de movemento, o cal, ao final, tamén apliquei a todos os niveis
anteriores. Orixinalmente, ao premer a tecla para mover o personaxe, este movíase
instantaneamente. Co novo sistema, primeiro xira na dirección do movemento e, ao volver
premer, é cando se move.
-No sétimo nivel, que é o mellor deseñado na miña opinión, quixen crear diferentes niveis de
altura. Para iso, tiven que implementar a posibilidade de subir ao superior por un punto
concreto e de poder caer dese nivel superior ao inferior. Tamén conseguín compartir espazo
cun inimigo sen que che mate por estardes a diferente altura. Se fago unha secuela ou outro
xogo parecido, desenvolverei o código a partir deste nivel.
-No oitavo nivel, o reto foi coordinar perfectamente unha animación CSS co cambio de clases
dun elemento a través de JavaScript (JS). Isto fíxeno para poder crear o efecto duns pinchos
que saen e volven meterse na terra e só maten ó personaxe no momento correcto.
-No noveno nivel, quixen crear unha maior interactividade cun elemento do mapa, xerando a
ilusión de poder empurrar algo. Conseguino desencadeando, cunha acción concreta, unha
animación que combina JavaScript (JS) con CSS.
-No nivel final, o obxectivo foi crear unha batalla con diferentes fases e algo
sorprendente, tendo en conta o pouco tempo dispoñible. Creo que conseguín un resultado
bastante aceptable.
-No epílogo, quixen ofrecer un ambiente relaxado no que se puidese pasear e interactuar con
diferentes elementos. Isto permitiu desencadear dous finais de xogo diferentes.
Ao ir adquirindo novos coñecementos, tanto de programación coma artísticos, todos os niveis
sufriron reescritura de código e retoques visuais. Por exemplo, non se me ocorreu poñer as
sombras ata o nivel 6, polo que houbo que retocar os fondos de todos os niveis anteriores. O
último retoque a nivel xeral foi ter que modificar o código de todos os niveis para que o
personaxe principal e os da súa especie pestanexasen, só para darlles un aspecto máis vivo.
En realidade, nin a historia nin o obxectivo final do xogo estaban definidos cando comecei o
proxecto. Inicialmente, só era un xogo no que tiñas que coller seis obxectos para abrir un
portal e acceder a outro nivel. O resto funo decidindo sobre a marcha, xa que non sabía ata onde
podería chegar. Espero que, aínda así, o xogo acadase certa coherencia ao final. O que si
decidín ao pouco de comezar foi que o xogo tería un máximo de dez niveis, para non eternizarme
co proxecto e poder comezar outros novos, que intentarei planificar mellor antes de inicialos.
O máis probable é que Dunkxar teña unha secuela (ou precuela), pero cunha pantalla de xogo máis
grande. Desplazarase o fondo do mapa ao chegar aos bordos, e cada nivel terá un mínimo de catro
seccións. Isto permitiría crear unha aventura moito maior. Nun principio, deseñareino só para PC
para eliminar a limitación do tamaño da pantalla e, despois, se é posible, adaptareino para
dispositivos móbiles.
Nesta táboa irei informando das diferentes versións do xogo que se irán lanzando, co obxectivo de
resolver erros ou actualizar algún punto mellorable. Deste xeito, saberás se tes descargada a
última versión.
Versión
Resumo
Data
Inicial
Primeira versión lanzada. Sen erros detectados en PC, pero con problemas de son en
móvil
09/ 2025
Dunkxar versión vagancia
Versión de Dunkxar en modo vagancia, ou sexa, tes un menú despregable que permite
aceder
directamente a calquera dos 10 niveis sen ter que pasar polos anteriores. Inclue a
versión de Windows e Android.
Ilustracións
Paquete coas 5 imaxes que aparecen na Historia do videoxogo, con un tamaño de 800x650
px.
Proximamente
O xogo que teño actualmente en desenvolvemento está inspirado nos xogos de naves típicos dos anos
80.
As funcionalidades básicas xa as teño programadas. As funcionalidades básicas xa as teño
programadas. A pantalla ten unhas dimensións de 10x15 seccións, polo que vai ser máis ancha que
alta, xa que vou tentar que a forma óptima para xogalo sexa nun dispositivo móbil en posición
vertical.
A nave pódese mover a esquerda e dereita, pódense disparar 4 láseres e "matar" a un inimigo (cadrado
aamrelo) ó acertarlle. Tamén hai un indicador (liña de catro
cadradiños) para saber que láseres están listos para ser disparados e cal dos catro vai ser o
seguinte.
Actualización decembro 2025: engadín un fondo formado por 5 ilustracións que se desprazan de maneira
infinita nun ciclo no que van pasando unha tras outra e volvendo á primeira , creando a ilusión de
que a nave se está a mover. Tamén creei un sistema de tres puntos de vida para a nave, morrendo tras
tocar 3 veces a un inimigo ou un proxectil .
As ilustracións da captura son completamente provisionais.
Na caixa de arriba tes unha ligazón para contactar comigo por correo electrónico e así informar de
erros nos xogos ou na web, ou achegar calquera suxestión que se che ocorra.
Tamén hai ligazóns a
diferentes redes sociais, onde intentarei ir informando dos avances en novos proxectos.
Por último, podes atopar o Patreon e o PayPal de Galiviart por se queres animarme a seguir
facendo xogos e
axudar co mantemento do sitio web. No Patreon subirei algún contido exclusivo, como ilustracións ou
versións dos xogos con algunha funcionalidade extra.