Spellbound! Devlog #02 - Procedural Generation

This is the second devlog of my co-op survival game, Spellbound! In this update, I focused on creating a better generated immersive world for the player.

Previous Devlog

Spellbound! Devlog #01

What is this game about?

Spellbound! is primarily a survival based co-op game. However, unlike other survival games, it is not meant to be extremely realistic with hunger, stamina, or thirst bars. I have decided to take a different turn on the survival genre.

In the beginning (or the “lobby”) players can join each others “rooms”, with a max of 5 players per room. During this phase, players have the ability to choose different “classes” (ranging from c-s tiers). Each class has their own unique advantages of abilities.

The main objective upon joining the game is to protect your Life Crystal and survive as long as you can. Without your life crystal, you will no longer be able to respawn (kind of like the bed in “bedwars”)
Enemies, will try to “kill” your life crystal and end your time. Enemies primarily spawn at night, with some exceptions being made.

Players will be able to build defenses that can block or harm enemies in their way. A large variety of spawnable structures will keep the player curious.

Every 5 nights will have a new season (autumn, winter, etc.), and also a boss fight. The new season will indicate different enemies that spawn, new structures, and etc.



Originally, this game was meant to be a story game, but I have instead decided to create different modes for this: Survival, Battles, and Story. The mode that will be fully functional upon release is Survival.

Progress

Improved Procedural Generation

With the feedback gained from my previous devlog, I have added different types of terrain to the procedural generation. I plan to add different biomes (desert, tundra, etc.) as well.


Ally/Friendly NPCs

Friendly NPCs have been added!
There is only one type as of right now: Knight

The Knight NPC attacks using an Iron Glaive, and deals 10 damage per hit.

Screen Shot 2021-12-31 at 1.57.44 PM

Friendly NPCs will follow the player when they are in range, and attack any enemy NPCs that come across the player. If the NPC has not detected a player yet and an enemy comes within range, they will also attack.

Structure Generation: (Basic) Villages

Villages are now spawnable, and come with 3-5 Knight NPCs that will aid you in battle! There is also a chance of an archer tower spawning in alongside.

Village sizes can be adjustable as well.



Chests will soon be added.



Roadblocks and Bug fixes

Trouble with Village Generation (Fixed!)

How my original village generation worked was it would pick a random point from the map and build the village around it. This worked well except for some circumstances, like…

Yea. Mountains >: (

To fix this all I needed to do was to create a recursive function that would return a position of maximum height. Then, I could just check if there were any mountains around using raycasts.
And no, this does not lag at all.

Problem fixed : )

Trouble with Village Generation (Part 2 - Fixed)

At this point, the village generation works pretty well except for…

Water

Screen Shot 2021-12-30 at 6.26.48 PM

Don’t get me wrong, this is a very easy bug to fix with some simple raycasting methods. In fact, in the process of fixing this bug, I actually killed two birds with one stone. Adding Stairs.

Using my raycasting method not only was I able to fix this bug, but was also able to add stairs at the right places needed.
If I needed to elevate a part due to it being submerged in terrain or water, I would check all four sides for wooden floors. If the y-level of one of the wood floors was less than the raised floor, I placed a wood stair.

Trouble with Stair generation (Fixed)

This bug stumped me for a bit. When spawning in stairs, some areas where there should be a stair would be empty. After a while of thinking I realized it was how I was generating the village.

How my stair generation worked was it would raycast 4 different sides for each floor. For each raycast, if the ray Instance was a floor and had a lower y-level, a stair would be placed. Since stairs were generated when one floor was placed, there could be some spots where there was no floor (because the rest of the floors were still generating).

So, instead of generating stairs as soon as one floor was placed, I wrapped the “SpawnStairs” function to wait until every single floor was placed.



Future Plans / WIPs

  • Structure generation (Chests, houses, shrines, villages, etc.)
  • Different Classes (only flame/aqua mage rn)
  • RNG “Rolling System” for gaining classes
  • Better UI

Notable Notes worthy of Notice

  • This is only one type of many types of villages (View Bulletin Board for more information), meaning I basically have the framework for spawning whatever village I want anywhere
  • With this update, Spellbound! Survival mode is about 55% complete.
  • A test version for player feedback will be released at about 80%-90% completion

Feedback

What do you think? (1-5 stars)
  • 5
  • 4
  • 3 (state why)
  • 2 (state why)
  • 1 (state why)

0 voters

Any suggestions, questions, or anything you think I should know/add? Add it down below : D
Feel free to DM me about anything as well.

3 Likes

With you saying “ultra realistic”, do you mean by all the small details on the meshes, parts, or the lighting? (or literally everything)

I didn’t say anything about ultra realism, did you accidentally reply to the wrong post?

image
Oh my bad! I guess I didn’t read it well.

1 Like