Hey, been a while. Turns out I have ADHD, like pretty bad.
Well, today I went down a bit of a hyper-focus rabbit hole. I wish I hadn’t but then it was something that was interesting (to me) so there’s that. Balancing what I need to do with what I want to do can be… tricky, what with the ADHD and all. Did I mention I have ADHD?
Anyway, for some time now I’ve had this idea brewing in the back of my head for a video game set on Dezengarth. I’ve tried to learn a couple of programming languages but after a while I would get bored and move on, as is usually the case. I’m on meds now. Still an issue. But despite all of that, while my desire to actually work on such a project would wax and wane, it still stuck with me, brewing and growing. It’s an ambitious project, I know, but all of my projects usually are.
Here’s a quick run-down as to what I have in mind. I want a multi-player capable adventure game where you do archeology and dungeon delves where just finding where the dungeon is located is only the beginning. What supplies are you bringing with you? How far do you need to travel? How long will you stay? Do you have enough food and water not only for the trip but for the exploration of the ruin? Do you know what you’re looking for? How are you funding the trip? Essentially, an archeological logistics simulator with trappings of monster hunting and magic. I envision solving puzzles by looking up information by… going to the library! Translating ancient texts, looking at artifacts, and searching for clues. I envision having a base that you can build to grow food and craft supplies, hiring NPCs to physically construct buildings you blueprinted. I envision having to make deals with nobles, merchants, and guilds in order to fund expeditions, gain access to rare artifacts, and buy/sell goods. Destructible terrain you can dig in… anywhere! Build buildings… anywhere-ish. Guards might have an issue with you building and digging on community property. It’s an ambitious project, I know, but all of my projects usually are.
What I worked on today was a bit of math. I knew from the beginning that since I can map out the entire globe of Dezengarth, I’d like the ability to have the entirety of Dezengarth able to be rendered. I knew that I wanted to depict the globe as a rounded icosahedron, a d20 if you will. The triangular faces can be infinitely broken down into smaller triangles so I can get any level of detail I’m looking for. I know I wanted something like a voxel terrain though smooth in appearance.
Going with a voxel-like data structure, I supposed I could do something similar to Minecraft considering that the surface area of Dezengarth is smaller than the theoretical max surface area that Minecraft can handle. From sea level, you can go up to 3 km deep, upon which it would simply be too hot to survive. Earth has a relative temperature gradient of 30 deg C per kilometer of depth. That’s not even getting to the magma level under the Earth’s crust. I also went with 10 kilometers above sea level for the rendered ceiling since Mt. Everest is about 8 kilometers and I rounded up to 10 in case flying, in which it’ll either be too cold or the air too thin to survive.
With all that, I did a lot of math to determine the chord length of the triangular edges of an icosahedron with the given radius of the planet, the angle of that chord, and simplified equations should I need to do math in-game later. I also researched how triangular numbers worked, that way I could also determine how to sub-divide the icosahedron triangles to any sized blocks I needed. Considering the spherical nature of this globe, I was pleased to find that the deviation of size of the edges of each block depending on depth was less than a quarter of a centimeter over the 13 kilometers of height from deepest depths to highest heights. All this to figure that I think I can use triangular prisms as my voxel blocks. The planet is large, however, so I still need to determine how best to structure how each block is identified. And consider, I have very little coding experience; I have no idea how I’m going to do this… yet.
In any case, I’m pretty sure I can figure out the terrain generation algorithm that I’m using to create a mesh. It’s just going to take some time.