Contrary Motion
Contrary Motion is a 2 player co-op third person shooter and slasher set in a funky abandoned city beset by a robot uprising. the 2 players must work together to solve environmental puzzles and defeat a variety of enemies. The game features a score based ranking system encouraging players to work together and improves their skills to achieve the highest score possible and achieve the top rank.
Details & Responsibilities
Contrary Motion
Group project Abertay
January 2025 - May 2025
-
Ai programmer for all enemy types
-
Designed behaviour of all enemy types
-
Systems Programmer for health & damage, respawn and revival, enemy spawning and Score systems.
-
All programming documentation including TDD, UMLs and management of workloads in the department.
-
Q&A Testing of all features
-
Organisation and assisting in workload distribution
-
All projectiles
-
All pickups
-
Unique puzzle
Programming & Game Mechanics
Enemies and AI controllers
The AI in this project was developed through the used of the Unreal Engine Behaviour Tree systems. I wanted to make sure the enemies were easily modifiable and reusable thus I created the base class of enemy and all other enemies are derived form this.






I was responsible for both designing and developing the behaviour and the systems used by all the AI in the game. Thought the general idea of the enemies were decided on by the team(Melee, Ranged, Heavy and Boss) I was given creative freedom on what they did. thus I made the melee enemy move in a more flock like manor simply charging and surrounding straight at the target. The ranged will move to a position with line of sight and fire on the target before moving to a new vantage point. Finally the Heavy is slow moving and relentlessly chases a randomly selected player ignoring all distractions.
Game Systems





I was responsible for developing multiple of the key games systems.
With one being the damage system. This handled all types of damage and the reactions of how each actor should have. this allowed for the The heavy enemy and the boss to ignore all sources of damage except environmental. This was done through the uses of a key struct that held all the info whenever damage was delt that allows the actor to reference when calculate what happens to them.
​
Another system was the Respawn and Revival system. though it used data form the damage and health systems it was separate and used pointers to key points around the level where it would search for the current active point or simply revive the player at their current location. The players held key functions and events that would be called on by themselves or each other depending if they were revived or respawned.
​
I was also contributed to the development of the score system in the game, I developed the early alpha version and then assisted in the upgrade to the new way of using a hit multiplier that will changed based on a combo counter, changing the multiplier once over certain set millstones.
​
I worked on a specific puzzle within the game, this was the crane puzzle as shown. I did this as a specific event biased system to prevent physics errors and bugs as many of the physics based puzzles being developed were having major soft lock issues its sued detections of the player inputs and if the ability line trace collides with the actors and then running specified animations.​
​



