Level Blocking (Week 2)


Level Blocking

I wasn't sick this week so this is going to be a long one, strap in!

Level Design  

Up until the peer review on Friday i had small areas that looked like this.

It is near impossible to dodge some attacks at this size and leaves room for no more than 5 enemies.

And here is how it looks now.

Despite it being much easier it took a lot of attempts to get this gif showing how much 'easier' it is.... so don't worry its still hard!


Procedural Generation

As my game is a rogue-lite it only made sense to have some sort of procedural generation in my game, this proved to be an extremely hard thing to implement. I never really considered setting up my own procedural generation system, i just don't have the experience or even an idea where to start, so i went to the Unity Asset Store. There were a lot that didn't work at all, but i finally found one that worked (somewhat) after a while.

https://assetstore.unity.com/packages/tools/behavior-ai/procedural-level-generat...

Now this one had one MAJOR issue, it was made for 3D, so to make it work for 2D was a bit of a struggle. 

So a quick rundown on how this generator works. It uses a tag system, when you make a section of playable area, you give it a bounds with a collider, and exit points, then you choose which tags this section is and which tags can spawn off this section. The simplicity is the flaw for 2D though, not having control over which exits spawn which rooms causes errors like this in 2D.

On the horizontal entry and exit this corridor works but on the verticals it doesn't.

So my solution to this is only have one entry point and exit point for each section, with different sections with different entry and exits, i have a horizontal in/vertical out, horizontal in/horizontal out, vertical in/horizontal out, vertical in/vertical out. With 3 visual variants of each. And with these sections i have a VERY simple but functioning generator.

As you can see it only goes up and right for now, but it accomplishes the feeling that the world is changing every time you try a new run.

Camera

Now a part of this level blocking is my camera setup, i have opted for a Binding of Isaac type of camera in which its fixed on the room you are currently in and transitions with the player between rooms, like a classic Zelda dungeon. This is the reason for the rectangle rooms. If i have the time it would be ideal for me to change to a different camera system so i can design more interesting levels that emphasise the feeling of a new world every time you start a new run.


During peer review this week it was seen that if you don't move with the camera you can break the game quite easily so i also added a collider to the camera that pushes the player along with the edges of the camera to ensure they don't try to break the camera shift. There was a few other ideas for achieving this effect such as forcing the player input into the next area, or having the player pushed via a script instead but this was the quickest and simplest solution so it is what i am going with for now.


Okay that is all for level blocking, pretty simple but i am happy with how it is at this point. Now onto the fun stuff!

Enemies

I have decided to make an early start on enemies as i feel they are incredibly important to get right and a large variety of them is important for making combat enjoyable and not repetitive.

Carrot

This cute little guy is my simplest enemy, he runs around and after a varied time will spin and spray projectiles in all directions.

Radish

This even cuter little guy is my favourite, he runs around and after a varied time does a charge attack towards the player. 

I think he may be a little too weak right now. In peer review he was giving players a very hard time, but since the levels have gotten bigger, a charge line was added, and the delay between him aiming and charging was slightly increased; i think its been too much. Balance isn't something I'm super worried about yet though, its too hard to balance this early, that will come later.

Broccoli

This guy is going less for a cute look and more of an aggressive look.  Broccoli shoots a shotgun like group of projectiles at the player, also pretty simple.


This guy was not added until yesterday so no feedback was given on him.

'Blanks'

So if you have ever played Enter the Gungeon you will know what the 'Blanks' mechanic is, if not, its basically a take a breather mechanic, you trigger it, it clears all projectiles on screen and jams the enemies weapons for a second. I love that mechanic so much i decided to add it to my game. 

It currently is bound to right click, although i plan for it to be a feature you unlock through upgrades!

It also triggers when you are hit, this will be default and not locked behind upgrades, this gives you a second to catch your breath while taking a beating in an intense situation.


I am quite happy with the 'Blanks', its simply instantiating a projectile that expands very fast, with the projectile set to its own layer that hits enemies and their projectiles. And then the stun on the enemies is quite simple too, on trigger with blanks a boolean isPaused gets set to true, when this boolean is true none of the enemies coroutines can run, and all their movement and attacks are in coroutines so it works nicely.


The enemy animation gifs come from here: https://elthen.itch.io/2d-pixel-art-vegetable-monsters-sprite-pack

I have purchased that sprite pack for use with my game!

Leave a comment

Log in with itch.io to leave a comment.