A solo project in which I made a voxel based terrain engine with my custom engine.
Over the past four years I've been developing a custom engine. Re-doing it several times as I learned something new or felt like it needed a better API. In the beginning it's main purpose was to create a voxel based game. Something I wanted to make for a long time now. Though, through iterations it became more of a general purpose engine.
I had 18 weeks to make the game, which I decided to build the game from scratch using my personal custom engine. I knew this would cause a lot of setbacks, as this was the first time I would be using the custom engine for an official project. So, for the coming half a year my goal was to create the terrain engine and most of the systems I would need to create the game I had envisioned. I also needed to keep in mind that I'm doing everything solo, so everything was going to take a lot longer then it would in a team project.
Progress is not going as quick as before, since I'm working 32 hours a day, but I still work on it sometimes during the weekends.
After the initial phase was completed I continued making the terrain. I added infinite terrain loading using threads, improving loading performance in the process. Made an editor for creating models and features (like trees) and added terrain features like water, trees and biomes.
Unfortunately a lot more time was spend on the custom engine then I originally expected. I already expected a slowdown from it, but this was way more time. A lot of time was spend on adding missing features that I didn't think of before. For example getting transparency to function properly with distance sorting and pipeline modifications. The most time was spend on implementing the physics engine. I spend a lot of time wrapping the features and trying to understand and debug Bullet, which I had never used before. Luckily I had some help, as in Project Sulphur some of my team mates did use Bullet and I was able to read through the source code.
One example was when I was trying to implement a rope system in Unreal and I was wondering if I was able to make it in my own engine. See the result below.
Another example of this was when I wanted to gain more experience in working with multi-threaded systems. I ended up making the resource manager asynchronous. To do this I created a basic job system. I could create a new task and let the job system execute it on another thread.
I'm still working on it quite often. My latest addition to the project is a completely rewritten editor base that I converted from C++ QT to C# WPF. I also still work on the terrain engine from time to time. My latest addition is an occlusion system that hides chunks that are behind a mountain. In the next video you will see how I paused the occlusion algorithm when I was standing behind a mountain and started recording on top of the mountain. After that I enabled the algorithm again to have it update my visibility.
Still lots left to add an improve and I would love to keep working on it.