From the 10th to the 20th of September, I decided to take part in the VimJam 2 Game Jam which had the requirement to include a Boss of some sorts within the developed game.
My take on the requirement was to have a mechanic that allowed the player to take control of a group of enemies to aid them in a fight. It is what I centred my game around though coming up with the idea for the entire game was an interesting task. I eventually decided on creating a sort of minigame where the objective was to gain points by killing as many enemies as possible. I believed it would be something that could be simple, and doable within my limited time. Sadly due to a late start, I was barely able to implement everything that I wanted and had to unfortunately forfeit the jam. It was extremely disheartening but I am somewhat happy with what I developed so far.
In terms of Programming, the game was fairly simple. I put a large enthesis on flexibility and scalability as I wanted each component to work independently from each other as much as possible. This is mainly represent in the item system I developed which was originally going to be much bigger. Players and enemies would be able to pick up items that came with their own special abilities and properties. There was going to be a collection of standard melee weapons along with ranged and magic weapons. The horn within the footage above is an example of one of the non-weapon items I wanted to include with its ability being to control the enemies within the game to attack your opponent (This was also my attempt to implement that boss requirement for the game jam.
An Item can be simply creating by attaching the relevant script to a GameObject. There is a little more required for Weapons as they require damage functionality, but a basic item that can be picked up is created as simply as attaching that mentioned class and assigning the relevant properties.
Weapons are still incredibly simple to make. Melee Weapons are created in the exact same way with a few other properties needed such as their damage and their range. Along with those are combo properties which allow weapons to have multiple attacks in sequence. This allows me to develop a number of different Melee Weapons, and is flexible enough to even use it as a basic damage source. This was done for the enemies which while they don’t look like they are holding a weapon, to the game they are as they are using the exact same functionality to pickup and use items/weapons like the player.
The biggest issue with Melee Weapons was the damage range which was incredibly annoying at times due to how I implemented it. Essentially each weapon has a damage point with enemies within a radius around that point taking damage from the weapon when used. The radius amount however is incredibly precise and didn’t work well when enemies are right in your face as they would be outside of that mentioned radius and miss. Next time I will likely use a box collision system or something similar which I think would work out much better. at detecting enemies within the area of the weapon.
Another area to talk about is the AI for the opponent player. They were originally planned to be a player controlled opponent but as I was running out of time, I decided to develop an incredibly simple AI for them using a Finite State Machine.
The AI has 2 states for now. It will first look for a weapon within the scene, and then once acquired one, it will look for enemies to slay. All of the item functionality for the opponent is the exact same as for the player, with instead a script calling the required functions to pick up items and use them instead of a button press.
Overall, I do believe I got quite a lot done in the limited time I had. Some issues lead to me having to start the game jam a week later so I only had 3 days to develop the game completely. Maybe going for something that was even simpler would of been the best course. I will likely continue work on this game as I intend to bring my vision of it to life! and I think if there was one day left of the game jam, I could of achieved it, even if it would of been a quite messy project.
Here is a link to the repository for the Project: https://github.com/adamraybould22/VimJam-2-Boss