Brackeys game jam: Sonar postmortem and future


Hello, the Brackeys game jam has concluded and we are all a little less sane now. Gotta say, at the beginning of the jam I never expected to get this far. But here we are now with an actual “designed” game that is fun and challenging, also horribly balanced. I’m not here to just talk about our deteriorating mental health though, I want to briefly touch on our design process, inspirations, hardships and also the future of the game. Before I go any further, I want to clarify that the following represents only my personal view of what went well, what didn’t and what I expect from the future. My team may hold different views and that’s ok, we are still in the process of figuring out where to go next.


Easy Beginnings

Depending on who you are, it may come as a surprise that we had a pretty good idea of what we wanted to do within the first 3 hours of the jam, including most of the main features that the game has at the time of writing. Some of our first ideas involved time reversal of destruction caused by enemies, or just a bog standard platformer with disappearing platforms (of which there are many in this jam). But I personally didn’t like these ideas just yet, they were a bit too boring and wanted something more experimental. I went on a serach for interesting games looking for a general mood and found a game called Frontier Diver Progenexis (yes that’s how you spell it). It is a sidescroller shmup game which twists the genre on its head by giving the player the ability to get rid of enemy bullets, but not the enemies themselves.

At that point inspiration struck me quite hard and I thought it would be fun to utilizes this mechanic by allowing the player to switch dimensions in a standard sidescroller bullet hell game. In one dimension he could shoot enemies, in the other only the bullets. All that tied together with ammo management. I wouldn’t let it go anymore at that point. It was too good to let it go. Another brain fart struck me and I was reminded of the game Devil Daggers. It’s a first person game that I would sorta categorize as a bullet hell game. Once I saw how it worked, I quickly moved to making a 3D bullet hell game, with two dimensions and an ammo mechanic. I had no particular reason for switching to 3D other than it seemed like a really cool idea. We generally didn’t really know if any of this would work until later into the week. We just thought it all kinda sounded cool.

We have to make a game now, fuck

We had the idea, now it was time to actually make something. I was lucky to have a team that I already worked with on other projects, so it was easy to find common ground and get to work immediately. Everyone had their designated field, except for us two programmers who had to duke out who would work on what, although it was clear that I would be doing effects and shaders. The very first thing that I did was work on enemy design, because I knew that boring enemies in a bullet hell game would hinder it quiet a bit.

I spent the first half of the week working on base mechanics for enemies and some other miscellaneous stuff that popped up. Unfortunately, the other programmer caught covid in the middle of the week so I had to start carrying some more features. That’s when I implemented the weapon and more sophisticated bullet mechanics. Accompanied to bullets, I immediately made an object pooling system, because god damn would I ever get some good use out of it. I say that because anything from particles to enemies uses an object pool. Makes that shit god damn efficient. Only the green glowing triangles are instantiated. I’m pushing 300 fps on my system for a reason.

A funny inside joke for one of the enemies is the mighty “Zwiebler” (Onion-er). At first it was meant to be called “Zwirbler”(twister) but it then somehow got twisted into Zwiebler and it’s been that name ever since. Why am I telling you this boring fact? Refer to the first sentence of the devlog.

Once weapons sorta worked I created the dimension switching mechanic and most of the shaders that I needed. I had a lot of trouble with those since I’ve only ever created shaders with Shadergraph and the SRP shader workflow sucks ass. What the fuck is a standard surface shader and why does emission not work on it out of the box? It’s not like I can’t write shader code, I just don’t have that much experience with it (also it sucks).

When making effects like the spawn and explosion effects, I had to deal with transparency issues that I never had to deal with in either URP or HDRP which was really frustrating, but I managed to hack my way around the issue.

At that point, 3D models and animations for enemies and weapons started to pour in from our local 3D man and I implemented those, along with some desperate fixes for the enemy AI. That was already pretty damn late into the week. I don’t remember much from that time, must’ve blanked out. I think at that point we had all of the mechanics we needed, so we started polishing everything, implemented all the sound effects, made a settings menu, a death screen…. Oh yeah an enemy spawner was also conceived very late. I opted to make it time based with randomized spawn positions so you can actually get better with every playthrough. As a last ditch effort I implemented a basic tutorial system that breaks as soon as you do anything too fast or not in the right order and also a progression system that upgrades your stuff when collecting glowing triangles. I spent all in all 4 hours balancing the progression system and ended up fucking that up pretty badly in some cases, but it definitely improves the flow through the game quite a bit.

We actually planned to make a web build at first, but turns out having about a 100 audio sources play at a time is not good for performance (in a browser anyways), so that was scrapped very early on. Instead I just made builds for windows, mac and linux.

Fuck, this is already too long. I feel sorry for you if you made it until here. It’ll get better now.

I’ve learned nothing

It’s been a stressful week. I definitely did too much work. I slept 4 hours every day. I felt awful most of the time.

Have I learned anything? No.

In fact, I enjoyed myself a little too much. Once the whole game design clicked, I couldn’t really stop myself from working and went on and on and on. I saw the vision and wanted to see it in it’s completed form no matter the cost. Even if the cost is my own health and well being. This is something I know I need to work on. It’s incredibly self destructive behavior that will bite me in the ass one day. If I’m ever going to make an indie hit, I’ll have to learn to pace myself so I don’t end up accidentally crunching myself into retirement. But let’s quit the heavy, mushy stuff and get to the next point.

Accomplishments and reception

I said it at the beginning, I never expected to get this far. The game works, there are barely any bugs but most importantly it is actually god damn fun and was so already in it’s early stages. The results speak for themselves, Top 200 overall and Top 100 in the Fun category.

Game Jam Results

I’ve also got really good and constructive feedback from the comments and some peeps in the Brackeys discord (thanks to Lucas and Malibloo and some other people I don’t remember right now) and it gave me a big confidence boost. Watching some streamers was also really nice, even got to do a dev interview with Gabriel from Bluish-Green Productions.

I’ve also managed to crank out cool new utilities for coding that’ll make a few things a lot easier in future projects. I’ve already expanded them a bit during my refactoring the other day. Quite amazing what you can come up with when you are too lazy to do the manual work.

As for things that didn’t go so well, we possibly overscoped a bit, as most issues occurred because we didn’t have enough time. Given the fact that I put too much work into it, it wouldn’t ever have been finished if I didn’t constantly crunch. But I already addressed that.

THE FUTURE

What does this mean for the future of Sonar? A lot, in fact. The incredible feedback I got motivated me and my team to continue working on the game. The first thing we’ll do is push a post jam patch within the next week or two. This will fix most balance issues the jam version had, fix bugs and also add better player feedback for progression and damage. There will be also a separate gameplay area for the tutorial. It was way to hasty and barely worked. There will be also MORE enemy spawns. A lot more. I hope to add as much as possible so people can get play time out of it until we push new content to the game. If you wish to see WIP updates or ratio me, follow me on Twitter. If you want to send me questionable messages, just dm me on Twitter or on Discord (Phil#6109). Especially dm me if you are interested in helping out with playtesting future builds of the game. We really need people other than my team to test the game.

Speaking of the future,

What content have we planned in future updates?

  • More arenas
  • Longer playtime within arenas (possibly an endless mode)
  • More enemy variation
  • More bullet types
  • Token system for enemies
  • Aggression system for enemies (whatever that means you may decide)
  • better scoring system?
  • a shit ton of balance, graphics and sound updates

Just know that this is subject to change as we start actually planning new stuff. We might find new or better ideas, but who knows. We’ll post an update once we know more.

I hope to generate a cult following similar to Devil Daggers. Problem is I’m rubbish at marketing and my Twitter follower count reflects that. Marketing experts dm me pls I will (not) pay you.


This is the end. I have nothing more to say as my ramblings have emptied my brain like jar of pickles at 3am. The new things will come out when they are done.

Goodbye, see you soon.

PS: Have you seen the easter egg that I put in yet? 1/5000 chance to trigger it ;)

Files

(Jam version) Sonar_win.zip 44 MB
Feb 27, 2022
(Jam Version) Sonar_linux.zip 61 MB
Feb 27, 2022
(Jam version) Sonar_mac.zip 42 MB
Feb 27, 2022

Get Sonar

Leave a comment

Log in with itch.io to leave a comment.