project-thumbnail-voxels
Developed for Personal projects in 2015
Tags: Java jMonkeyEngine Voxels

One of the oldest interesting projects that I have is a voxel engine that I created in Java, inspired by Minecraft.

More information

Games like Minecraft have become quite popular in the recent years, even though voxel engines have existed long before then. For example, there is Ken Silverman's excellent Voxlap engine that was used in games like Ace of Spades back in the day. Out of curiosity, I also set out to build something similar, using the Java based jMonkeyEngine.

What I did

Admittedly I was just standing on the shoulders of giants with this project - I had the game engine and editor available to me, which in turn is based on LWJGL. I also found someone's efforts towards making a voxel engine as well, though I had to hack on proper texture support and support for shadows myself.

Adding logic for loading and saving chunks was also a bit of a challenge, especially because with larger maps everything tended to break - there were limits for how many vertices you could have within a single mesh, which in turn was needed for optimization, so that you could display large worlds.

What I learnt

It was overall a pretty good experience and made me feel that Java itself is also a decent language for anything from developing tools, web development, to even things like video games. The GC situation might have been a bit challenging, but frankly anything from JDK 8 onwards is good enough.

That said, I ran into issues both because jMonkeyEngine isn't quite polished in of itself, as well as because of the fact that working with shaders is a pain in general (e.g. wanting spherical distance fog, as opposed to a plane that lets you see more on a diagonal). Furthermore, the performance took a major hit when adding effects such as shadows and ambient occlusion, which made it run at around 30 FPS at most on my laptop with integrated graphics.

Sadly the project doesn't survive to this day.

Page rendered in: 0.03 seconds