logo principal galiviart. Here you will find artisanal video games made with HTML, JS and CSS. Made in Galicia

Artisanalvideo games

Galician flag
spanish flag
british flag

Video games made by combining HTML, CSS, and JS with original illustrations. 0% AI

section separator
pencil
pen

GaliViarT

Hi! My name is Juan, or Gali, depending on who you talk to. This website was created to host and let you download my video games. I developed these games myself (or, who knows, maybe in collaboration with others in the future), using the standard web development languages (HTML, CSS, and JS) to make them work, and hand-drawing every single visual element. All without using AI, since sometimes it doesn't hurt to use your brain again
I'll explain below how and why I got started on this laborious and peculiar task of creating "artisanal video games".

Due to my background and life experiences, my computer skills and knowledge were no better than the average person's until January 2025. Perhaps I stood out a bit in handling Excel and in some crazy project made with Windows Movie Maker in the fairly distant past. That month, I started a training course in web page creation. Primarily, it was to pass the time, as I wasn't sure it would lead to anything useful.


During the course, I discovered what HTML code was, used to create the skeleton of a web page, and I found it to be very simple and intuitive. Then came CSS code, for manipulating the visual appearance. And with it, animations. I loved the animations. I spent hours making all kinds of animations, each one crazier than the last. I even had the idea of creating a website where I would upload 'adaptive animations' that, just by copying the code and changing the animated images, could be used for any type of project and device.


But those ideas were eclipsed when we learned JavaScript, the code that allows you to give interactivity and greater functionality to websites. It took me a little longer to grasp it, but as soon as I could make the properties of an element change by pressing a button—its position within the website, in this case—a question popped into my head: 'By combining HTML, CSS, and JS, could I create a functional video game?

Obviously, the easy way to answer that was to search Google. But I chose not to, setting myself the personal challenge of solving the puzzle alone. This would serve as a great learning experience (and, of course, without using Artificial Intelligence, to really push my brain). I assume someone else has done it before—it's tough to invent anything truly new nowadays—but as of this page's publication date, I haven't looked into it at all. This is to keep my ideas and future projects uncontaminated and aim for something original.


The beginnings were tough, but in a couple of weeks, I created and assimilated what I call 'controlled loops' and the manipulation of element classes. 'Controlled loops' consist of a function being executed every time a key is pressed. This function, on the one hand, increments or decrements the value of a variable, and on the other hand, makes a change to an element's property that will depend on the current value of that variable. Therefore, depending on the number of times the key is pressed, the result of the function will vary. This allows, for example, that if the value of a variable is two, the position advance we give to an element is 20%, if it is three, it is 30%, and so on.


controlled loop code

On the other hand, by manipulating classes (which are like tags or names we can assign to an element), we can indicate that an element is in a specific screen position. This way, it can interact with another element through a function whose criterion will be that both elements possess a certain class at a given moment. Thus, with 'controlled loops' and the manipulation of the classes of the different elements, the game started working. I was able to overcome all the challenges I set for myself throughout the development of all the levels, using nothing more than the basic methods and properties of JS, such as style, classList, or setTimeout. If anyone is more interested in this point, they surely know how to look into the game's code once they download it.


Since my initial intention was for the game to be for mobile devices, this limited the size of the game screen, as I will explain in more detail in the specific section for Dunkxar. To improve PC gameplay, I assigned functions to different keyboard keys. For this reason, playing on a computer became much more comfortable than on mobile devices.

Once the video game was working, a problem remained: the visuals. Moving little squares around the screen wasn't going to be interesting to anyone, myself included. Those squares needed an identity, meaning they had to display images. I've always liked drawing, especially dinosaurs and dragons, but I must admit my style has always been unrefined. When it came to digital drawing, it was even worse. I had only used Paint for quick fixes, and the results were quite mediocre. Below, I'm including the image of my first attempt at the video game's protagonist, which made me realize I needed to step up my skills in this department:

Archaic drawing of Dunkxar made with Paint

In the initial stage of experimenting with CSS animations, I used AI for some illustration. However, it wouldn't be useful for this project because, for the animations I had in mind—such as the main character's walking animation—Artificial Intelligence wasn't going to provide the exact results I needed. Furthermore, since I had no intention of using AI to write the code, I didn't want it for the visual aspect either.


So, I asked for advice on drawing programs I could use and started practicing with Krita. With patience, I began to get more or less decent results. Learning to draw using layers was very useful for improving the game's appearance, making it easier to create different terrain levels on the Z-axis, for the water, obstacles, shading, or the different animation positions for the enemies. Finally, the visual aspect achieved its own style, which I hope is appealing, or at least that what it intends to convey can be understood. For now, I have already surprised myself, especially if you compare the illustration I included above with the illustrations in the story, which were the last elements I created for the game.


ilustration made with Krita to ilustrate the history of the indie game Dunkxar

Once the video game was complete and functional, the project folder contained an infinite number of elements and files. After months of work, I would like more people to be able to play it, which required transforming that folder into an application. Fortunately, during the web page creation course, we were taught how to use the ElectronJS and CapacitorJS frameworks to create applications for computers and mobile devices. So this was the methodology I used to package the game into a format that is easy to distribute and run (I include the necessary instructions in the game download section). Unfortunately, it is most likely that the Mac and iPhone versions will not be available initially, as I still have to study the necessary methodology.

Once I had completed a few levels of Dunkxar, I was certain I wanted a website to make the game available to anyone who wished to play it. However, I postponed starting the design until the game was completely finished. After giving considerable thought to the visual style I wanted for the page, I decided the best approach was for it to reflect the kind of games I intend to create and to have a distinctive look. Consequently, all the elements of the website, from the logo to the labels, are hand-drawn by me. I also included animations to give it a fun touch.


Regarding the website structure, I wanted it to function like a notebook. That each section be a page within it, marked with a protruding tab, as if it were a bookmark in a real notebook. To achieve this, the sections are superimposed in the same space, and each one is brought to the foreground when its corresponding tab is clicked. This structure also ensures that even if I add more sections in the future by creating new vieo games, the page's look will remain the same, with the only noticeable change being the appearance of more tabs


I have also placed two buttons, one to move right and one to move left between the sections. These buttons provide more convenience for navigating the website, in addition to giving the feeling that the page itself functions like a video game, especially in the mobile version. In it, the buttons are placed at the bottom of the screen, in the perfect spot to be pressed by each of the thumbs.


The most important sections of the page will be those corresponding to each video game, where you will find the links for downloading them, as well as facts and interesting tidbits about their development.


Due to the time it will take me to make a new video game, I have added the 'Coming Soon' section. In it, I will provide details about the project I am currently working on and what its development status is.


Finally, there is the Contact section, where I will leave a link so you can communicate with me by email to notify me of errors in the games, share opinions, etc. I will also include links of interest, such as Instagram or GitHub, and others in case someone wants to collaborate with the project, like Patreon or PayPal, with the aim of funding drawing lessons to improve the visual aspect of the games, the maintenance of the website, and mainly, to encourage me to keep making games and prevent laziness from taking over.

As soon as I finish creating this website and make it available, I plan to continue the development of another game that I've already started. This time it will be a game in the style of the space shooters from the eighties, like Space Invaders or Galaga. I already have the code ready for moving the ship and for the firing sequence, so things look good. What I will try to do is publish updates on the new project both in the 'Coming Soon' section and on social media, in addition to uploading early versions of the game to Patreon.


I just hope the next projects don't take as many months to develop as Dunkxar did, though...

portal magic
portal stones
green light
orange light
blue light
yellow light
purple light
red light
section separator
position1 dunkxar protagonist video game
position2 dunkxar
position3 dunkxar
blink
 xirarosa foot
lateral xirarosa
xirarosa open
xirarosa clodes
fire
fire
fire
gem
gem
gem
xureloide1
xureloide2
xureloide3
plant1
plant2
screenshot of the tenth level of the video game Dunkxar, where you will face Deinjon. Galiviart
screenshot of the sixth level of the video game Dunkxar, where you will face Deinjon. Galiviart

Click the icon for the device you wish to play Dunkxar on (if available) to start the download.

icono pcdownload
icon androiddownload
icon iPhonenot available
icon MACnot available

FREE DOWNLOAD

  • When downloading the PC Windows version, you will get a file in RAR format. Unzip it to the desired location. In the resulting folder, you will find a file named Dunkxar.exe, which runs the game. A shortcut is also included for you to place on your desktop. With the game window open, you can press F11 to play in full screen.
  • When downloading the Android version, you will get an .apk file. Most commonly, your device will not allow you to open it because it does not come from the Play Store and is not signed. To open it, you need to grant the application you are using to open the .apk permission to 'install unknown apps' (remember to revoke this permission after finishing the installation). Once this is done, the app will install automatically on your device.
  • iPhone version not yet available.
  • MAC version not yet available.

My first creation, Dunkxar, is a top-down adventure video game. Your goal is to rescue your sister from the fearsome Dreitel. To achieve this, you'll guide Dunkxar through 10 levels (plus an extra epilogue), collecting gems, dodging and torching enemies, flying over deadly obstacles, and finding the best route to complete each stage before the one-minute timer runs out.



Once I had the idea of developing code that could function as a video game, I obviously had to decide what type of game I wanted to make. It didn't take me long to settle on a game with a top-down view, like the original Zeldas and many similar ones, as it seemed like the simplest option since I only had to modify the positions of the elements in four directions on a static map.


Since the initial idea was to create a game compatible with mobile devices, the game screen is square, divided into a 10×10 grid. This allows playing on a mobile phone in both portrait and landscape orientation. Therefore, the buttons and the game interface were designed to adapt to each position, placing them below or on the sides of the game screen, as appropriate.


Illustration where the different game positions are appreciated

The first level was the testing ground for the game's mechanics and its visual design. I opted for the protagonist to be a lizard-like creature because, when using a top-down view, it would be easier for me to animate the movement of the legs (as they protrude from the body) and give the sensation that it is walking when moving between the grid positions. Since I was later able to develop the code for it to breathe fire and fly, I added wings, and it became a kind of creeping dragon.


Once the foundations and mechanics were established in the first level, the development of each subsequent level began with drawing the layout of the map's different elements on a 10x10 grid. These elements included obstacles, drops, gems, the portal, the enemies' paths, and so on. By having the grid coordinates for each one, their later expression in the code was much quicker and simpler.


galiviart Schema of the game compared with the final drawing, then, i had to program the html, css and js

Once the level sketch was finished, the next step was to draw the scenario in Krita. By dividing the canvas into the same grid, the planned distances and proportions were perfectly maintained. Different layers of elements were created for each scenario. This allowed for the creation of shadows and elements that the character passes under, by placing them at a higher Z-axis position. Once the scenario was drawn, the enemies and other elements were created within a square canvas (mostly) to be easily integrated into the grid.


With the visual elements now finished, they were loaded into the HTML code of the corresponding level and placed in their correct position. Subsequently, by adding animations with CSS code, and using JavaScript, the functions already developed in previous levels were adapted, introducing the new elements or creating new functions, if necessary. And thus, each level was completed.


Another important part of the game's development was the addition of sound effects. For example, the sound of Dunkxar's footsteps changes depending on the type of ground he's walking on and stops when he's flying. I downloaded the sounds from the website freesound.org, having to adapt to the available options many times, but I think I achieved a good result in this area.


Since this was an autodidactic project, I set myself the challenge of having each level introduce an innovation to force myself to create new code and, in this way, acquire more knowledge:

  • -The first level established the game's core mechanics by implementing all the basic functions: movement, projectiles, item collection, falls/pitfalls, obstacles, enemies, and so on.
  • -In the second level, the challenge was to allow the character to submerge into water. To achieve this, I developed the system of placing different layers on the z-axis.
  • -In the third level, my goal was simply to create atmospheric conditions. I achieved this by adding a top layer with a snowflake animation and applying a dark filter to simulate the darkening of the sky.
  • -In the fourth level, I placed a large number of obstacles, as in previous levels I had experienced some issues with map element interaction. This led me to understand the importance of code order in JavaScript, as incorrect sequencing caused the character to move backward instead of stopping when moving toward an obstacle.
  • -In the fifth level, I set out to create a battle against a mini-boss and place elements on the map that had to be interacted with to prolong the fight, such as buttons to open doors, in this case.
  • -In the sixth level, I wanted to design a system to allow for more than one fire attack per level and to change the movement system, which I eventually applied to all previous levels as well. Originally, when you pressed the movement key, the character moved instantly. With the new system, it first turns in the direction of movement, and then, upon pressing the key again, it moves.
  • -In the seventh level, which in my opinion is the best designed, I wanted to create different height levels. To do this, I had to implement the ability to climb to the upper level at a specific point and to be able to fall from that upper level to the lower one. I also managed to share space with an enemy without being killed because of being at a different height. If I make a sequel or another similar game, I will develop the code starting from this level.
  • -In the eighth level, the challenge was to perfectly coordinate a CSS animation with the changing of an element's classes via JavaScript (JS). I did this to create the effect of spikes that emerge from the ground and retract, only killing the character at the correct moment.
  • -In the ninth level, I wanted to create greater interactivity with a map element, generating the illusion of being able to push something. I achieved this by triggering, with a specific action, an animation that combines JavaScript (JS) with CSS.
  • -In the final level, the goal was to create a battle with different phases and something surprising, considering the short time available. I think I achieved a quite acceptable result.
  • -In the epilogue, I wanted to offer a relaxed environment where the player could walk around and interact with different elements. This made it possible to trigger two different game endings.

As I acquired new knowledge, both in programming and art, all the levels underwent code rewriting and visual retouching. For example, it didn't occur to me to add shadows until Level 6, so I had to retouch the backgrounds of all the previous levels. The final general refinement was having to modify the code of all the levels so that the main character and those of his species would blink, just to give them a more lifelike appearance.


In reality, neither the story nor the final objective of the video game were defined when I started the project. Initially, it was just a game where you had to collect six objects to open a portal and access another level. I decided the rest as I went, since I didn't know how far I could get. I hope that, even so, the game achieved a certain coherence in the end. What I decided shortly after starting was that the game would have a maximum of ten levels, so as not to drag out the project endlessly and to be able to start new ones, which I will try to plan better before initiating them.


Dunkxar will most likely have a sequel (or prequel), but with a larger game screen. The map background will scroll when reaching the edges, and each level will have a minimum of four sections. This would allow for a much greater adventure. Initially, I will design it only for PC to eliminate the screen size limitation and, later, if possible, I will adapt it for mobile devices.

In this table, I will provide updates on the different versions of the game that are released, with the aim of resolving errors or updating any area that can be improved. This way, you will know if you have the latest version downloaded.

Version

Summary

Date

Initial

First version released. No errors detected on PC, but with sound issues on mobile.

09/ 2025

Dunkxar laziness version

Version of Dunkxar in roaming mode, that is, you have a drop-down menu that allows to access directly any of the 10 levels without having to go through the previous ones. Includes the Windows and Android version.

boton

Illustrations

5 images from dunxxar, the first artisanal video game from galiviart

Package with the 5 images that appear in the History of the video game, with a size of 800x650 px.

boton
section separator
lamp
lisght
hammer1
hammer2
question
hammer1
hammer2
lamp
light

Coming soon

The video game I am currently developing is inspired by the typical spaceship games of the 80s. I already have the basic functionalities programmed. The screen has dimensions of 10×15 sections, meaning it will be taller than it is wide, as I am trying to make the optimal way to play it on a mobile device in portrait orientation. The ship can move left and right, four lasers can be fired , and an enemy can be 'killed' upon hitting it. There is also an indicator (a line of four small squares) to show which lasers are ready to be fired and which of the four will be the next one.
From this base, I continue the development of the video game code and appearance as I describe in the next section (and in more detail on my social media).

Development blog

First boss of the game, made up of more than 40 images and 1000 lines of JavaScript code. Galiviart

Update January 2, 2026: The first level boss is now ready! It consists of more than 40 drawings and over 1000 lines of JavaScript. At the beginning, it has an energy shield that withstands 20 shots; after that, you can remove the armor from its 8 segments to eventually destroy it. It has 6 laser cannons and a disgusting slime attack.

The background of the indie video game has been updated to resemble a planet with abundant nature and cities. New enemies appear. The spaceship design has also been updated. Galiviart

January 2026 Update: I have updated the visual appearance of both the spaceship and the background. I also designed two types of enemies, a basic one and an armored one. Finally, I added an overlaid layer of clouds.
I am starting with the design of a level boss and collectible items

Early stage of the video game. Lasers can now be fired and there is a dynamic background. Life loss system added. Galiviart

December 2025 Update: I added a background made up of 5 illustrations that scroll infinitely in a cycle where they pass one after another and return to the first, creating the illusion that the ship is moving. I also created a system of three health points for the ship, dying after touching an enemy or a projectile 3 times.
The illustrations in the screenshot are completely provisional.

separator section
card1
card2
hearth
arroba
hi!

Contact/Socials

In the box above you have a link to contact me via email to report bugs in the games or on the website, or to offer any suggestion you may have.
There are also links to different social media networks, where I will try to post updates on the progress of new projects.
Finally, you can find Galiviart's Patreon and PayPal if you wish to encourage me to continue making artisanal vido games and help with website maintenance. On Patreon, I will upload some exclusive content, such as illustrations or versions of the games with extra functionality.

coin
left arrow
right arrow