[OpenJX Devlog #1] The reason I started this project and the PoC

In progress…

For the PoC, my goal was simple. Open the original game files and draw one map with a character on it. No server, no gameplay. That would be enough for me to believe this project is possible.

I had to build everything from zero. Open the PAK archives, decompress them, decode the sprite format, then make a window and a renderer to draw the images out.

The menu is just there to prove the map path in my config is correct before anything tries to draw it.

OpenJX menu screen: the title, a 'Bắt đầu' button, and the path of the map that will be loaded

And this was the first thing it drew.

OpenJX in game: an isometric stone structure rendered from the original map data, with a character on it and a debug overlay at the top

It worked, but it felt wrong. The character was floating above the ground and he had only one speed. Every semi transparent pixel was too bright, because I assumed the alpha channel was 5 bit and scaled it up. It was already full range, so I broke it by myself. The next step was just fixing these.

OpenJX outdoors: grass and dirt terrain with a stone-paved building corner, the character standing in the open, debug overlay showing 320 tiles and 76 objects at 60 FPS

Then the real map. The world is much bigger than my memory, so I only keep the regions around the player and drop the rest when he walks away. And I could finally draw everything in those files, not only the ground. Trees, houses, fences, all sorted with the character so they cover each other correctly.

OpenJX with scenery: trees, a tiled-roof house with a fenced yard, thatched shelters and a well around the character, debug overlay showing 93 scenery items and 9 of 49 regions loaded

320 tiles, 76 objects and 93 scenery on the screen, still 60 FPS. I was quite happy with that, until I realized 60 was not the limit of my machine. It was just a line I wrote by myself, and that is the next devlog.