UU PROJECTS

THE FIFTH PROJECT: 2D arcade game

The game can be downloaded and played from my itch.io page.

The source code for the game can be found on my GitHub page.

Bombergirl is a project I worked on at the mid-point of my third semester. The focus on this project was implementation of collision systems, binary file reading and writing, and entity management. To this end we could recreate any arcade-like game we could think of that was 2D. We had to create physics collision detection for circle vs circle, Axis-aligned Bounding Box (AABB) vs Circle, AABB vs AABB, and Circle vs Line segment collisions. though they did not all need to be implemented in the game itself, we did need to create a test room where these collisions could be demonstrated to be working.

We also had to create a hiscore script that would read and write to a binary file so the score could be retrieved for future use, and persist across multiple executions of the game, something I had not done on previous projects. Lastly I had to work on entity management. The game needed to be able to reliably, and accurately spawn and delete entities without causing crashes, or memory leaks. I also got to implement some parallax scrolling in the main menu, which was fun, but hard to make look nice.

I enjoyed working on this project as it was a clear step-up in complexity for the kind of code I have had to write so far. I also got to create all the assets for the game myself, so it has a ‘made by me’ feel to it. It only features a single level, which is a bit short – especially since the level only has a 60-second timer. The game does feature an interesting level-loading system. It is entirely text-based, and can be freely customised by the player by altering the Levels.txt file in the game folders. I had used a similar implementation in a previous project. It utilises a switch-case and reads though the characters in the text file and places the correct entities where the characters are.

This was supposed to be a Bomberman clone, though traditional Bomberman 2D games is tile-based in movement, whereas my reimagining is more free-form movement in any 360° movement. This did make my collision system a little sensitive as each wall object has its own collision area to run checks against and the player is pretty exactly sized to fit between a single-slot gap in a wall.

I was pretty please with how the player can kick the bombs, and how they bounce off walls. Bombs can also be kicked into destructible boxes and enemies to cause them to explode immediately. Explosions near other bombs also cause the other bomb’s fuse time to reduce so they explode quicker, though this is less obvious during gameplay. The sprite changing system is also pretty fun, albeit not super sophisticated.

I had fun making this game, though if I was to return to it I would make a few changes:

  1. I would implement more levels.
  2. I would change the goal from ‘kill all enemies’ to ‘complete puzzle objective’.
  3. Return to more corridor-form map design to be more in line with the inspiration material.
  4. Redo the collision system for walls, so that a series of adjacent walls form a singular collider, instead of a multitude of smaller colliders.
  5. Redo some art assets, particularly the protagonist.
  6. Sounds. Any at all.
  7. Variety of bombs, time bombs, remote detonation bombs, proximity bombs.
  8. More enemies with more complex behaviours.

Leave a Reply

Your email address will not be published. Required fields are marked *