A sort of post-mortem
Open Jam 2018: The more open source, the better. The theme was “SPAM TO WIN!”
Decided to use Godot for this, simply because it’s a jam game and I still think that Godot and gdscript are great prototyping tools. It also adheres to the jam’s open source spirit.
When I consider the jam’s theme, I try to come up with game mechanics that will reflect the theme. For this one, I could only think of having to input a lot of inputs. Whether repetitive or not, while still maintaining the feeling that they’re spam. So, I decided to go with pushing any key will do one point of damage. In order to stop the game from being ‘how fast can you spam’ I decided on a targeting system. To further punish relentless spamming, I implemented delayed enemy death with this death timer increasing whenever damage was inflicted on them while they were in the state of delayed death.
Even while the game was in my head, I thought the game sucked and wouldn’t be something that I would play. I thought about it for a while and couldn’t think of anything to make the game mechanics more interesting and playable. Decided to just go with it and see what I could put together anyway.
This is a shitty post mortem, I should have probably taken screenshots of the embarrassing coding blunders while it was in development. I’d imagine I would find that more entertaining to read.
Anyway, I ended up pretty close with what the game is now when the mechanics were done. The way I coded it in gdscript was pretty garbage. You can take a look at it if you care about that sort of thing. Repo and binaries will be at the end of the post. From here, I wanted to add some effects that will make the game seem more ‘gamey’. Just to see how far the shit would take me with a little lipstick.
I didn’t want to have ‘perfect’ graphics. (Not that I’m capable of it). I didn’t want to struggle for perfect graphics. I already know that my art is shit, except when I’m trying to use it to make a product, I still try to make it better. I think I should try to make it better on my own time. When I’m creating assets for something, I should embrace that it sucks and try to work with that. Make the crappiness an endearing or cute feature instead of a ‘you can tell this is trying to be good, but it’s still trash’ type thing. I just need to make sure that it’s all the same level of garbage so that it meshes together into a nice matching trashcan set.
I just drew some pixel art. (I actually can’t tell that the main ship is a boat for the most part.) Kept it black and white for extra laziness. I think if I tried to color it, it would end up looking worse anyway.
I started to consider attacking effects. Since there’s a delay on death, I thought that the weapon should be a charging weapon. It targets, then when the player has spammed enough it starts to charge - if the player spams more than they need to, it charges slower. A laser and a targeting system are obvious choices. There’s a crosshair to denote targeted enemies. I drew a red line from the boat to the enemy to denote charging. Started a timer on top of the enemy where its hp is displayed and had it start ticking when it was about to be shot. Then when the timer reaches zero, the screen flashes white and the enemy is dead or has taken damage. I had it in mind to take this further by having weakened state sprites. For example, the plane would have a wing on fire and fly with less stability. I didn’t implement this because it’s just a prototype. If I thought the game was fundamentally fun, I would have put in the extra work because I would have kept on working on it after the jam. I could have just scrapped it at the start (which I probably should have), but I want to get in the habit of putting things out there. Believe me, it’s still very embarrassing.
I also needed to tell the user how to target things, so I used a tool I remembered seeing. I used this to display the tab combination required in order to target a certain unit on the screen. I still think that the design of the targeting system is unintuitive and could be worked on.
Sounds were next. I decided to use a mic, Audacity, and Helm. The latter being the most interesting since I’ve never known how to use a synth (I still don’t.)
I needed a sound that would be satisfying to hear whenever you pushed a button on the keyboard. My first thought was to include typewriter sounds, these make any idiot sound like a bad ass as long as they’re pushing buttons at a pleasant pace. Immediately thought of this dude. I’ve seen some of his posts on /r/gamedev and he does a lot of great work. Searched typewriter. He has some typewriter sounds, but they’re one of the few that are pay to use. Currently, I’ve made $0.00 off of gamedev (Side note: I’m condsidering making a monthly earnings post, so that I can laugh and make fun of myself being at $0.00 permanently), so I can’t spend anything on it. Also, I think something like this would make it not open source, so I started to think of other options. I could use someone else’s sounds, but maybe it would be better to make the sounds myself. I recorded some keystrokes into audacity using my shitty mic. Cut out the ones that I thought sounded better. Applied some effects to them and I think I even overlaid another track with a mouth sound that sounded a bit like a bass drum. It also had some effects on it. Sounded ok, decided to use it. The explosion and attack sounds had a similar process, except those were just mouth sounds and lo-fi filters with some stretching / pitch changing if I remember correctly.
Now, to Helm
Just looking at it is quite daunting, but I figured I’d force myself to mess with it. This is one way that I learn anyway. Plus my interest in it had been slowly building up behind the scenes ever since I first heard about it. It was time.
I needed a sound that was a buzzer or an error alert. Something easily identifiable as something that you should not continue doing. This would tell the player that he should stop spamming the targeted unit. I had some minor idea of how the oscillation affected the sound. I knew I wanted something that was a “saw” wave. I assumed this translated into a jagged oscillation and not a round sine wave. I set both of the oscillators to some jagged wave and experimented with the sound that they would make. It was kind of alright. I picked a note that I liked and took it into audacity to ‘master’ it and make it sound like the rest of the sounds.
I wanted to make a sonar sound for when the sub surfaces. Yes, this is not how a sub operates, but it’s a game and the sonar sound would be a learning experience. I looked at helm, had no idea how to do it. Went to Google. People said it would be pretty easy: Low Attack, some decay, low sustain, low release. Added some delay and messed around with these values. I actually got something that had the structure of a sonar… kind of. It was there, you can tell it’s trying to be a sonar, but it’s being played with the wrong instrument. I tried for a little bit longer and couldn’t really get it to sound like a perfect sonar ping, so I just went with what I had.
Added a game over screen that just reloads the scene when you die. Screen shake when you get hit. That was that.
Helm was fun to use, that minor dip makes me want to experiment more in it and see what kind of sounds I can get out of it. It makes me wonder what a synth is capable of: If you had enough synths put together and were skilled enough could you make practically any sound? I like that the bass sounds meaty and the highs are pleasant and versatile. It almost seems to be 8bit 2.0. If you’re like me and don’t like the typical 8bit sound generators, I’m thinking that using synths at an intermediate level may be the way to go. That’s just another thing that I have to get better at.
Relying on square particles and simple art and effects was alright for the jam. I’m not sure how far it would take me if I wanted people to buy something.
The lipstick didn’t do much.