Another hiatus since October 2019. But I keep coming back so thats good. Here is another quick update.

Procedural Generation

In the previous dev update I talked about how the game would feature server side procedurally generated dungeons. Meaning that the server would pass down to clients what the current dungeon looks like. Players would then be able to join the same dungeon and every X amount of time new sets of dungeons would be generated.

So far…

I’ve completed the both initial server and client side implementations. Meaning that the system is working end to end. In a high level view the usage happens something like this:

1. After X amount of time the server creates a set of new dungeon template using predefined parameters.

Server logs

2. When a player walks into a dungeon its notified by the server that it is entering a new instance. It receives a small package with the template information, it basically specifies what rooms the client has to load and how they should be placed.

Client logs.

3. At this point the server has generated an instance of the dungeon and placed the player/s in there.

Zoomed out screen capture of the player inside the dungeon.

And thats it. All the systems needed are roughy in place. But I’ve not decided on a lot of specifics yet so I’ll be tweaking them as I go. I expect theres a couple of challenges I’ll be facing down the road. For example, if I have 100 players entering a dungeon how many instances of the dungeon should I create server-side and how would player share a dungeon instance. Instances aren’t cheap, since each of them hold X amount of monsters that the server has to process for. This kind of challenge is specifically tied to the game design and how the game is gonna play so I have to make those decisions before I’m able to tackle it.

References

Not a lot of new articles I used for this part. I mostly just went with my gut. I do, however, want to share a bit of how I’ve using Tiled to help debug and create rooms in a generated dungeon.

I used the world feature in Tiled to generate a json file for any generated template. This allowed me to open multiple rooms in a single window and work on real generated maps.

Tiled with multiple map files

What’s next?

I’m planning to work on figuring this out. I want to write up a plan for next steps and figure out how the first playable version of the game would look like.


Subscribe to my newsletter

Remember to subscribe to receive monthly updates about Clash Legacy!

It’s been a while since my last update but here’s a quick one on some of the progress I made this week on procedural generation.

Procedural Generation

Since the game is meant to be a sort of Rogue-like MMO having procedurally generated dungeons is what I have in mind as the most core feature to the game.

So I’ve devised a system to generate a sort-of room-based dungeon template on the server side that can be easily passed down to clients. The idea is to create (by hand) different types of rooms that can be stitched together using the template. The rooms can vary in shape but they most all have the at least one door. This is a simple method of generation that has its pros and cons.

Pros

  1. Passing a dungeon template between Server and Client is very easy.
  2. Having hand-made rooms can guarantee high-quality
  3. It can be easier to manage.
  4. It’s faster than other methods.

Cons

  1. Dungeons can feel repetitive if there is not enough room variety.
  2. You have to.. well.. manually create the rooms..
  3. Rooms have a maximum size.
  4. More room types increase app size.

I believe I can address the main cons by simply creating many room types but also by adding certain procedural elements which can reduce the amount of work and increase variety.

So far…

I’ve finished version 1 of the template generator. It can take in a couple of parameters which can be used to change the end result, including:

  • max horizontal and vertical size
  • min and max room count
  • probability for a room to merge to adjacent rooms
  • breadth or depth first, etc.

I used some unicode symbols to output the result in action and it looks something like this:

Procedural generation of dungeon template

References

When I was starting with PCG I found many complex articles which was a bit overwhelming. I found this video tutorial for a very simple dungeon generation that was somehow similar to what I wanted. That implementation however, is very limited and not that great in my opinion but it gave me a lot of good ideas that got me started.

I also found this site which has large list of good resources that I highly recommend. I’ll be coming back to it as I progress further into my dungeon generation.

What’s next?

For next update I’ll keep working on this procedural generation. Starting with creating some of the base room types and stitching them together in the server using the template generated.


Subscribe to my newsletter

Remember to subscribe to receive monthly updates about Clash Legacy!