Game Jam Projects
Game Jam Projects
The following section features games that I have helped develop as part of a team in various game jams that I have participated in, detailing the mechanics I worked on in each project.
Goblins & Clouds - PirateSoftware Game Jam 14
Game Overview
Engine Used: Unity Game Engine (C#)
Game Jam Theme: 'It's Spreading'.
Goblins & Clouds is an isometric wave-based combat game with a cartoon-like 3D art style where you play as a heroic goblin whose aim is to spread happiness to fellow goblins, while stopping enemy Rain Slimes from spreading sadness from goblin to goblin. You must keep fellow goblins happy and defeat all Rain Slimes to proceed through increasingly difficult waves.
I was the main programmer on this project and was responsible for all gameplay mechanics and AI navigation.
System/Mechanics I Implemented
- Character Controller
- Player Upgrades
- (UPDATED) Player Attack (Sun Beam)
- (UPDATED) Spawning Systems
- Enemy AI
- Goblin 'Sad Meter' functionality
- Modular Health System
- Main Gameplay Loop
- Player Attack - Sun Beam Weapon: The Sun beam attack uses a raycast, and inflicts damage to the targeted enemy beneath the cursor.
- Enemy AI: The enemies of the game (rain slimes) use a simple state machine, where slimes will react based on proximity to goblins. If a valid (happy) goblin is within radius of the slime, the slime will move towards the goblin, then when in proximity, will increase the goblin's sadness; otherwise, the slime will head towards a nearby random position and loop through again.
- Health System: The health system is a general class that is implemented by both the Player and enemy Rain Slimes, and contains events and functions to calculate changes to health. The player was intended to have health for the introduction of the Sorrow Slime, but this enemy type is not currently implemented.
- Game Loop: The total number of goblins and the number of enemies increment each round to increase the difficulty. As more slimes around a goblin increases the sadness faster, I set a limit of 5 slimes per goblin to control the distribution of enemies.
- (UPDATE) Player Attack (Sun Beam): I improved the player's weapon, allowing the beam to hit multiple enemies along the path of the laser instead of only at cursor position.
- (UPDATE) Collision Detection I improved the collision detection during spawning for Goblin and Rain Slimes - to prevent overlaps and AI navigation issues.
- (UPDATE) Object Pooling: I refactored all spawning of goblins and rain slimes to use object pooling. This way instead of instantiating and destroying gameobjects after each round: creating garbage for Unity's garbage collection system', gameobjects are disabled and re-enabled as needed. If additional gameobjects are required they can be instantiated at runtime.
Pigeon & Pete - Brackeys Game Jam 2022.2
Game Overview
Engine Used: Unity Game Engine (C#)
Game Jam Theme: 'You're Not alone'.
Pigeon & Pete is a light-hearted puzzle platformer where you take control of both Pigeon and Pete to solve puzzles to proceed through various levels of the game.
Pigeon and Pete form a strong bond together after Pete's wallet was stolen by a gang of rebel pigeons - The Rebel Pigeon Gang! Pigeon discovered Pete and promised that he would help Pete reclaim his wallet!
In this game, Pete can navigate obstacles by running and jumping and can also destroy crates on the ground, whereas Pigeon can traverse the skies and reach narrow areas that Pete cannot. They need to work together in order to progress successfully.
System/Mechanics I Implemented
- Character Controllers (Pigeon and Pete)
- Health System
- Character Animation (Unity Animator)
- Introductory Cutscene (Unity Timeline)
- Character Controllers: I developed Character controllers for both Pigeon & Pete as each are controlled differently and have different actions. A button (right-click) is used to toggle between control schemes: Pete has standard left/right movement and jump, whereas Pigeon allows movement in all four directions (up/down/left/right) and also has their poop action which is used to activate buttons to progress.
When the player switches to controlling Pete, Pigeon will automatically follow at an offset behind him. - Health System: The health system in Pigeon & Pete is a simple life-based system using triggers to detect collisions with enemy projectiles (enemy pigeon poop). Lives decrease by one every time Pete is hit, and a simple sprite change indicates how many lives remain.
- Animations: Using Unity's Animation system, animation states for both controllable characters are triggered based on their movement velocity.
- Timeline - Cutscene: I created the introductory cutscene using Unity's Timeline sequencer. I set up muiltiple camera angles, animations, and sounds effects, then set up transitions between them to effectively provide the overall narrative and objective for the game.
Neo-Runner - Transfuzer Employment Pathway Game Jam 2021
Game Overview
Engine Used: Unity Game Engine (C#)
Game Jam Theme: 'Showcase Your Skills'.
Neo-runner is fast-paced, 3D first-person platforming game. With only a single life, you must run, wallrun, jump, grapple, and shoot your way through uniquely designed levels. Neo-Runner provides a very challenging experience, with a standalone speed running mode to truly test your skills.
System/Mechanics I Implemented
- Shooting (Laser Gun)
- Ammunition + Pickups
- Destructible Objects
- Level Design: Floor 6
- (UPDATE) Gamepad Support
- (UPDATE) Grappling Aim-Assist
- (UPDATE) Checkpoint System
- Shooting: Neo-runner was designed to only have a single weapon - a laser gun, and this is used throughout the whole game from floor 2/level 2. It uses a raycast to detect hits on enemies, has a set fire rate, clip size, and ammunition capacity.
- Ammunition: Ammunition for the laser gun can be found as in-game pickups on the ground, triggered when the player collides with the object. Ammo pickups only provide the player a set amount of ammo, and only up to the limit of the weapon’s ammo capacity.
- (UPDATE) Gamepad Support: Following the game jam, I decided the add some features including gamepad support for every action: movement, aim, jump, shoot, and grappling, using Unity’s Input System. I used Mirror’s Edge as an example of well-designed gamepad configuration for a free running-type game, mapping ‘jump’ to a shoulder button so it doesn't affect the ability to move and aim at the same time.
- (UPDATE) Grappling Aim-Assist: Grappling using a gamepad could be difficult sometimes, so I also added an aim-assist feature for this. I created a ‘buffer zone’ around each grappling hook that allows players a margin of error on grapple attempts: increasing the chances of a successful grapple when the player aims in its direction. To aid this further, a visual indicator appears when aiming to show where the grapple connects.
- (UPDATE) Checkpoint System: The game's essence is to provide a challenge by giving the player only one life to complete each level. This can be frustrating for some players, so I have since implemented an optional checkpoint system, checkpoints are triggered when the player enters checkpoint zones placed before and after various obstacles. If the player dies, they are re-positioned at the last checkpoint they entered.
Personal Projects
The following section contains personal projects that I'm currently working on (WIP), which are inspired by some of the systems and game mechanics that I've come across while playing some of my favourite games.
Interaction System
Inspired by games like Life is Strange, where objects in the environment offer great storytelling, and opportunities for the player to discover secrets,
I am currently developing an interaction system, where several types of objects in the environment can be interacted with by the player.
To emulate this, I created a general interaction system using an Interface, which many types of objects can implement to trigger unique actions depending on their requirements:
to trigger object inspections in scene, for opening doors, drawers, or turning on lights.
Expanding on this, I plan to add descriptive UI text and additional interactivity when inspecting objects in the environment.
About Me
Ever since getting my first console and playing my first game, which was Rayman on PlayStation 1, I have loved everything about gaming.
Gaming was the catalyst to pursuing an education and ultimately a career in game development. I wanted to learn how the game mechanics I encountered in the games I played were made, and to be able to create them myself.
I love to learn, and I'm constantly learning new programming concepts and techniques to create better, more efficient code.
Outside of gaming and game development I like to keep myself active by going to the gym and playing team sports like football.
To see more about my education and work experience please view my one-page CV by clicking the button below.