Posted October 23, 2019 by Pandaqi
#godot #level design #level 2
Welcome to the nineteenth devlog!
With level 1 finished, I can finally start work on level 2. In this devlog, I will explain my though process and how I went about designing this level.
Each level introduces a new mechanic. After some deep thinking, I decided this level should teach players that they can catch packages (that are flying through the air). It’s a really simple thing: you just hold the same button as you use for grabbing packages, whilst a package flies by.
But that’s what I wanted: something as simple as possible. If I don’t explain you can do this, many players might not even try it.
The first level had very few height differences. I wanted to change that! For level 2, I wanted there to be huge height differences, so that:
This would encourage players to cooperate and think a little more about their positioning.
After some sketches I decided on the following layout: a few layers of scaffolding, each one higher than the one before it. Between the scaffolding is a loose, swinging bridge.
Most importantly: you can only go down. The height difference is just large enough that it’s impossible to use the scaffolding to move up.
Instead, to the left and right of the scaffolding, there will be trampolines that allow you to go up. (Spoiler alert: the trampolines were eventually replaced, and by the end of the devlog I’ll explain why)
And last but not least: I decided to add an extra package type and dropzone. The first level had 2 of each, this level has 3 of each. Just to keep it challenging. As always, it tries to make deliveries go to the dropzone that is furthest away from the starting location. Also to keep it challenging :p
(How do you tell packages to take the most difficult route? I simply do NOT allow deliveries along the easiest route. The dropzone that is closest to the starting location of the package, is saved as an “exception”. This means that a delivery is never allowed to move from that starting location to that particular dropzone, because it would be too easy. This is all set manually.)
Besides a new mechanic, each level should also introduce a few new (interactive) objects to play with. For this level, I chose:
These were the results from testing the game (with 2 players):
This is a video taken after iterating and improving the level for the first time. (I also already started work on the campaign screen. For now it's just a cube that can drive around a barebones terrain, and if you drive onto a certain platform, the associated level starts.)
And this is what the final, improved level 2 looked like:
As you can see, a LOT has changed. It took me a few iterations to find the best version of the level.
For example, I noticed that the second and fourth bridge were completely unnecessary. There was absolutely no reason to walk there, they just made the level bigger and more bloated. So I removed them, which allowed me to make the level much smaller and more compact.
I also added back the rain effects and “stormy” environment I had already created for the old level 2.
The wind sock not only shows the current direction, but also has a little windy animation! This was accomplished with a very straightforward vertex shader:
VERTEX.x += sin(TIME + VERTEX.z)
It displaces the vertex in the x-direction (perpendicular to the wind sock). By adding the Z-coordinate, different parts of the sock are displaced at different times, which creates this nice wavy effect. (Otherwise, the whole wind sock would just move to the left/right as one static object.)
I plan to write a much more thorough devlog on Godot shaders in the future, because there’s a LOT of awesome things you can do with them.
And lastly, I experimented with different heights and distances between the scaffolding, ground and elevators. I was looking for something that takes SOME skill to navigate, but not too much. It’s only a level 2, after all.
At the final height level, the only way to go up is by using the (slow) elevators. Going down is easier/faster in most cases, but some platforms still require the elevator. (For example, the top and middle bridge are too far apart to jump down. You’d just fall and die.) The fastest way to move packages, is by dropping them and asking other players to catch it. Cooperation!
(Of course, players should discover this solution by themselves. As I said before: by reading these devlogs, some of the best strategies for the levels will be spoiled. Sorry about that, but otherwise I can’t explain my game decisions.)
Level 2 is finished! Obviously, it needs a lot of polish and playtesting, but that’s not important right now. It’s more important to create the core of the game. I will now start working on level 3, and write some devlogs about other parts of the game (like how I was able to make the game playable with both controller and keyboard) in the meantime.