by Simeon Radivoev, |2 min read
  • unity
  • game jam
  • coder
  • gameplay loop
  • shooter
  • tower defense
  • 11+

My main responsibility was coding, but you all know how there jams go. I'll talk about some of the hurdles and challenges we faced during these 3 days.

The Start

I knew nailing the player controls and feel was essential. So we spent a bit more time on adding walking animations along with sway and bobble. It was mainly done using sine and cosine based on the distance walked.

Later on, when implementing the shooting AI, I added a bunch of juice like a camera shake and particles.

Architecture

We had planned at first to have a lot of enemies and bullets on screen, but I knew going with something like ECS won't be feasible in 3 days. So I just decided to use some of its strengths and utilize unity's way of doing thing as much as possible. So we went with a very atomic and modular components. Each having as little responsibility as possible. Here is the enemy prefab for example:

With this architecture we could quickly add almost anything we thought of, for example, plants that spawn minions that search for enemies, that was easy to do, just slap most of the components that enemies have, and change their target mask to enemies.

Performance

I suspected some of the biggest performance hogs to be the target searching, as I wanted it to be constantly updating so that enemies can find better targets not just stick to one. One quick hack I picked up for getting some free performance, was to add a random delay between each update, to stagger them since not all enemies would, for example, have the same delay and wouldn't all update at the same time causing lag spikes.

Design Troubles

Me and Nani (design) had a disagreement on what the best approach to the gameplay loop is, he was adamant about going for plants hurting the player and them doing all the work, you don't even need to shoot. I was more into shooters and tower defense, so I put my foot down on shooting. We did go with plants hurting you in the end though and he did prove me wrong, the whole plants hurting you turned out fun, once he balanced it properly. But I still wanted some more relaxed gameplay and given the modularity of the architecture we went with, including using Unity's prefab variants I added a quick mode where plants don't attack along with a new plant inspired by plants vs zombies that straight-up aims and shoots enemies and called it zen mode. (It is now the primary mode of the game, as jam players don't tend to stick too much with hard games).

The Sharp Shooter Plant I had to draw using Gimp and a mouse :neutral_face:

Last-Minute Additions

With all the commotion and juggling multiple features we kind of forgot about the pause menu. The guys were like "Don't worry, players can just press Alt+F4 to quit", and I was like, "screw that, I'm adding one". During the last 3 hours, I rushed to make it and just copied the main menu and quickly cobbled together one at the last minute. After all, it does help with polish and avoid making people frustrated when they can't change their volume mid-game or exit :neutral_face:

Play Our Game

Play our game on itch in your browser: https://ernani.itch.io/infernalgarden!