Really enjoyed reading this :) I loved the driver mechanic!
Our first Game Jam Winner: Diver Down Postmortem
So far, Diver Down was one of our most successful games: the feedback was great, it gained a lot of views, and we got first place on the Godot Wild Jam #2! Me and my friend Sklaiser started making games about January of this year, and after making 17 games with varying results, finally getting it right feels awesome! However, we almost gave up on developing it because of some issues with the main mechanic.
Before reading the rest of this Postmortem, consider playing the game by clicking here. There is a HTML5 version available, but in case it doesn't work, the standalone version are fairly small, at least for Linux and Windows.
About Diver Down
Feel free to skip this section is case you are interested only on What went well and What went wrong!
That said, let me explain the game's main gimmick: at first, Diver Down is a simple stealth platformer where you can walk and jump. The player needs to avoid lights and get to a door in each of the game 20 stages. The main mechanic comes in the form of the Diver Down ability: at any time the player is next to a solid, such as a wall, floor, or even ceiling, they can press a button and "dive" on that solid. While submerged the lights will not detect the player, so using this ability is essential to progress through the game. After diving, the player may submerge outside the solid, in any direction where there isn't another solid.
Now that you know how the game works, let's jump into what we could learn developing Diver Down.
What went right
#1: Making a compatible Level Design
If you played the game, you might have noticed that the main mechanic is very liberating: at the beginning of the game, it's used only for getting through some walls and avoiding the lights, but as the game progresses, it begins to be used for a more subtle wall jump technique as well. Also, with some practice, the player can skip most of the stages abusing the ability as well.
That is actually intended: while designing the levels, I tried to make most of them interesting for different skill levels, most of the time by adding a evident path for reaching the door, and a more subtle path as well, that requires some creativity and skill for the player to notice and make use of it. This is nothing new by any means: the following video helped a lot in this aspect, I definitely recommend watching it. Still, since I'm not used to designing levels, building them in such a way really was something new and interesting for me.
For instance, consider the following stage.
There are (at least) two ways to transverse it. The first is by doing the more evident path:
While the other is subtler and harder to do, but a lot faster:
I tried to build every level with this versatility, so that both new and experienced players would find the game equally enjoyable, whatever their play style was.
#2: Limiting the Main Mechanic and using Paper Prototyping
As you just read, the Diver Down ability was purposefully left a bit overpowered, such that the gameplay felt very free and some stages had big intended skips. However, the truth is that it was a lot more overpowered initially, to the point that designing the game around it was hard enough for us to initially give up.
You see, our first idea was that the player could be able to dive anywhere to hide from lights, which is something present through the majority of the final game, but the player wouldn't be limited to diving into a solid and then waiting to reemerge: originally the player would be able to swim around in the solid, as if it was some kind of water... I'm not sure this explanation was clear, but I definitely hope it was!
Well, the problem with this mechanic is that Level Design became rather limited. Why would the player walk, when diving and swimming would be superior in every aspect? Some puzzles were possible, and some interesting Level Design could have emerged as well, but due to the time limit and the amount of care it would have go into coding the stages and other mechanics, it didn't seemed like a good idea, albeit the best one we had so far.
Paper Prototyping helped a lot in this aspect, that is, defining if a game idea was viable or not. Along with the mechanic needing to be something that we could implement during the time limit, it also needed to be something that allowed us to make at least 20 stages: any less, and the game would be too small I believe. So, before even starting to code the gameplay, we could think of possible stages by drawing them on paper, and if we got a good amount of ideas, them we knew we might finally had found something interesting.
Below is a picture of our first try on Diver Down's Level Design, when the mechanic still was pretty broken. Notice that it wasn't east to design a lot of unique stages:
After about a day away from anything related to this game, we tried again to think of something. Maybe limiting more the dive and swim mechanics would help? We knew it would definitely make things easier to manage, but would remove some of the game feel we were aiming for. We thought of letting the player dive and swim, but with a time limit, or a maximum distance the player could swim from where they dived. That made the Level Design easier to make, but it seemed to make the coding harder as well. Didn't seemed like a good choice for the main mechanic.
The following day, with yet another paper prototype, we tried to design something where the player could dive, but not swim: this way, the player could for instance at any time dive on the floor, dodge some lights, and keep going on, pretty standard stuff for a Stealth game. However, the way the ability worked allowed for some interesting applications, that emerged by themselves from the way the mechanic was thought: the player could dive on the left of a wall, and then emerge on the right of such wall, so putting in other words, some walls (ceilings and floors as well) could be transversed as if they were not there, but serving as a safe spot for the player as well. The main mechanic finally sounded pretty solid: it was a really simple interaction, that worked in many ways, e.g. it allowed the player to hide but to move in creative manners as well.
And now, a picture of the final design on paper (yes, it took us 4 tries to something get something that might work), that we obtained after iterating over our ideas. Most of these stages ended up in the final game in a way or another:
Also, adding names to each level really helped on designing them. I believe you can call it a kind of cheat to describe the level's "story" (as mentioned in the Celeste Level Design video), but if in the end we ended it something interesting, I guess it's OK to "cheat" in this way!
#3: Seamless UI
No one that played the game mentioned this, but I personally believe it was a very nice little touch. If you play the HTML5 version, you should notice that the game and the rest of the webpage are seamless, save for some transitions or effects that I might polish and fix on a future update.
It's definitely something very simple, but again, I believe it adds a lot to the player immersion.
What went wrong
#1: Uninspired music
I'll use some Music Theory terms here, hope you don't mind!
Just as happened with the seamless UI, no one (at least not yet) said anything about the music being bad, but I personally found the way it came you kind uninspired and dull. You see, while researching how Stealth games do music, I wasn't able to find a "trick" that would make a music "stealthy"...Minor scales sounded too sad or dark, while Major scales didn't fit the theme as well.
The solution I found was to let the music focus less on the stealth aspect, and more on the forest-like ambient the game takes place in. To do so, first I tried using a Whole tone Scale, but finding a nice motif was being a little hard... to I ended up taking some seventh chords and doing some slight arpeggios on them. For the game's first section it worked OK I guess, but for the second -- where the music is very similar, with some minor tweaks -- it didn't really seem fit.
#2: Spaghetti code
This one isn't something that is really visible to the player while they are playing, but if they eventually find some glitch or bug, then the way the code is organized will play a gigantic part on how to fix the issue. For Diver Down, happily the only glitch found was one that didn't break the game and was fairly easy to get out of, but either way it broke some of the game immersion and polish.
When the jam was over, I started trying to fix this glitch: what happened was that sometimes the player would aim towards a wall to dive on it, but would end diving just outside of it, in thin air. Other version of this glitch allowed the player to do a quick succession of inputs, and then consistently be able to reproduce it anywhere. It couldn't be exploited, but as I said, running into a glitch like this isn't something the player looks forward to.
I spent an entire day trying to fix it, and each time I thought I got it, it not only still was there, but also the fix I added accidentally made another bug possible to occur! It was very stressing dealing with it, but by the end of the day I was able to find a elegant solution that works (or at least is working as far as I know).
#3: The default control scheme
By default, Diver Down had the following controls:
Which are as far as I knew, pretty standard controls, that many games use. However there is one major flaw in them: some keyboard layouts common in countries like France or Deutschland, such as the QWERTZ or AZERTY, have the Z key pretty distant to the X key. A more decent choice would have been Arrow+XC keys, or even better, to include alternative controls, such that the player can use the one they feel most comfortable with, e.g. WASD+JK, Arrows+Ctrl+Shift, etc. I ended up including such alternative control schemes on Version 1.0.1, but I'm sure having them available on the initial version would've been great.
Diver Down was a amazing game for us. We had tons of fun developing it, and receiving such a great feedback was amazing as well! However, now that it's popularity is declining, which is normal as far as I know, I wonder if we didn't just had luck. At the moment I believe there's no real way to know if we were lucky or not: only by making more games, and on most of them getting something interesting and
with good reception, we should start believing that we are truly improving as Game Developers... welp, as I say on my profile page, I hope it doesn't take us too long to become good gamedevs.
Thanks a lot for reading! In case you have something to say about this postmortem or about Diver Down, consider leaving us a comment!