In this update we will be sharing a little more on the technical side, but have provided a lot of images to show some of our progress in how we are going to be optimizing the game, and a first look at how we plan to go about dungeon creation.
- Dungeon Generator
Optimization will come in later stages of development, but we have been working on how it will take place and have already been successful with optimizing the overworld ground, through this method.
One of the stages that will go over optimization, before it reaches you, will be the dungeon walls which will be implemented before the Early Access version; here is an example of the walls:
Did you catch the differences there? If you take a look at this next image, you will be able to see the structure changes:
One of the ways we are going to be optimizing is through the use of one detailed wall and a few less detailed walls. From normal play, these changes will be hard to notice.
How this works is when you are near the object and it's in your focus the game will use a detailed wall but as the distance increases down the wall we will slowly use the walls with less and less detail. This result not only optimizes the load on your computer making less stress on the graphics card and allowing for a greater view distance but also gives the effect of how your natural eye loses detail as an object gets farther away from you.
When we first started work on Tal'doria one of the earliest projects was making a dungeon generator for the game which has been almost a year ago, here is an example of what the prototype looked like at the beginning:
Gray: Hallways; Green: Rooms; Yellow: Entrances to rooms
Today we are going to talk about the technical details of the dungeon generation and then in one of our future DDD's we will show what it is like to walk through the dungeon and slay some monsters.
Since it has been so long since we worked on the dungeons, the last couple of weeks have been focused on looking at our old code for how the dungeons were being created and revamp them to work with the game in its current stages, part of that change is in our pipeline as to how we deal with rooms and entrances.
What we had before was that rooms and the entrances to them would be completely random as far as what they contained like you see in prototype image.
And while this created for some fun outcomes it didn't feel like the dungeon progressed well because of it, so we have opted to design a large number of rooms that the dungeon will select from. As a note the dungeons are still going to be randomly laid out, it is only the rooms which will be pre-generated and have special events or cool treasures added to them.
This is what our new pipeline looks like from a technical perspective:
- Step 1: Determining size of the dungeon
- Step 2a: Generate one entrance/beginning room
- Step 2b: Generate one end/final room
- Step 2c: The engine will try to generate X normal rooms; X can be 50, 100, ...etc; and then rooms on an invalid location will be discarded
- Step 3: Fills all the empty space with randomized paths between the rooms
- Step 4: This step is used for correcting mistakes in the generation. Sometimes rooms are placed in a wrong direction and have zero connections; this action changes those rooms so that they are functional
- Step 5 (Post Processing 1): All unnecessary paths are cut out, so we that there is no longer a maze.
- Step 6 (Post Processing 2): a final pass with post-processing is done to finish off some of the details of the rooms and ways; you can see the differences between the photos:
And that is how our pipeline looks when generating a dungeon, the next stage moves it into another pipeline were the visual representation of the dungeon is created using the map we just created, but we will share that pipeline in another DDD.
In the meantime, we hope you have enjoyed this more technical look into our dungeon creation and if you have any questions or comments please feel free to ask them here or over on our discord were we would be happy to have you added to the community!
Join us on Discord: Discord.gg