Game
CaveVox
15 days ago

Devlog #2: Generation


A week has passed since the last devlog, and this is day 19 of CaveVox development. This time, let's talk about generation.

So, what is generation? Generation (or procedural generation) is the process of creating something using automated algorithms. When we talk about a game dungeon, we refer to a complex and vast space that could be created manually - but that would eliminate replayability. For example, in the game ExoHub, a level editor was developed, yet even there generation algorithms are used - for instance, to spawn items across a level. It's a physically non-trivial task to build a deep and living game environment.

That’s why we rely on level generation.

What is a level made of? A level is a space consisting of a huge number of blocks (ceiling, walls, floor), divided into chunks for optimization. Dungeon rooms are placed within this space. Initially, the idea was to create an editor - and it was even tested - to manually design rooms and then randomly place them, and so on. However, this approach remained limited and time-consuming during development. So we decided to go with a more flexible approach: patterns.

Patterns are groups of objects connected by meaning. For example, instead of placing tables manually in a room, the algorithm does it automatically, taking into account necessary factors. This significantly saves development time and provides endless replayability. Likewise, it allows us to define that some locations are unique or special on a level (or floor), or that certain places should not border other types of locations. It all depends on the algorithm used. This can also be applied to monster placement.

CaveVox also uses Godot as its renderer, while most of the core logic is implemented in Rust, which significantly speeds up processes like generation. This is much faster compared to using languages like GDScript, C/C++, Java, C#, and others. The primary concern here was performance and stability - and Rust handles both incredibly well. It was necessary to create a system similar to chunk-based worlds in games like Minecraft or Vintage Story, in order to support massive in-game locations - and such a system was implemented. These world sections are loaded dynamically around the player, not only enabling large-scale levels but also optimizing the computational load on the system.

Currently, the system works as follows:

  • Rooms are created based on their meaning (corridor, dining room, etc.);

  • Physical rooms are generated and placed into chunks;

  • Objects are placed contextually (e.g., chairs and other items are placed near a table).

250706_0.png
250706_1.png

In CaveVox, all dungeon levels (floors) are thematically predefined (for example, floors 1 through 5 are all labyrinths). However, each floor can have its own unique features and will always have varied generation for most environmental items. This ensures players don't lose interest even after multiple playthroughs.

This system can also easily support item logic - such as opening chests, triggering traps, and other mechanics. This enhances player interaction with the world. More about this will come in future devlogs!

Thank you for reading this Devlog!



0 comments

Loading...

Next up

Short intro of us πŸ’•βœŒοΈ

We're an eletro duo based in Seoul πŸ‡°πŸ‡· Heavily influenced by the 90s.

Our new album #Xennials is all about the nostalgia of that era πŸ’½ CD listenin πŸ“Ÿ beeper beepin πŸ’Ύ floppy disks floppin days 😎

Stream now! 🎧

https://open.spotify.com/album/3YwWhnHWVy5cA8XOpbaGRA?si=8E9awqU…

What do you think guys in my robot?Just a beginner in 3d modeling..

My instagram https://www.instagram.com/rojhonbb/

Just a Pico sprite

Terraria

Rockin the Guitar, an Axe like Guitar I made for my Uni project

Why walk when you can jump?

I worked so hard to get all four of them to the end safely, but then...

Very ambitious construction going on in Planet Zoo on Plays today. We're tryin'. LIVE: www.twitch.tv/dreamhackplays

brung back my old oc plus a new one

...they don`t have names yet tho

Made my first ever animation.