GIFS Showing Examples of Work
(Click to Expand)
GIFS Showing Examples of Work
(Click to Expand)
Dodging
Skating + Auto Cam
Shooting, Aiming and Reloading
Melee Attacks
Push Ability
Pull Ability
NOTE!! GIFS may take a while to Load
Contrary Motion is a couch co-op action/puzzle game developed in Unreal Engine 5, where two Players are given seperate Push and Pulling abilities. These abilites allow them to manipulate physics objects around the level, and each other.
My roles in the development of this game were as a Programmer, UX Designer and assisting UI design. I was also in charge of Art and Sound implementation. My goal for this project was to develop the feel of moment-to-moment gameplay to feel punchy and polished.
KEY ACCOMPLISHMENTS:
PLAYER MOVEMENT/CAMERA:
Developed a fully custom Character Controller using the Collide and Slide Algorithm for Collision Response. Includes features such as variable Jump Height based on Input Hold Time, Coyote Time and Jump Input Buffering to enhance the responsiveness. It can also handle uneven terrain such as Slopes and Stairs.
Custom Movement for the Skater Character akin to Roller Skating. Includes a Slope Momentum system to pick-up/lose speed based on Slope Angle.
Developed a Camera System with procedural response to on-screen actions such as a bump when the Player lands based on their Velocity, Weapon Recoil, and a custom screen shake algorithm inspired by this GDC Talk: (https://www.youtube.com/watch?v=tu-Qe66AvtY).
Auto Rotation to aid Camera Movement for the faster Skater Character.
Scrapped Mechanic which auto-moved the Skater in the direction of an enemy when attacking. The enemy was chosen based on closeness to Input Direction.
PLAYER STATE MACHINE
Player State Machine linked to a Struct which allows custom Movement and Camera values per-state.
This enabled easy addition of new Movement States such as a Walk when Aiming, and a fast Dash move, and ensuring each action felt the part with a dynamic Camera (Supports Custom Offsets, FOV Alteration, Post Processing FX).
The blend time between Camera States could be controlled too, as to avoid harsher transitions being an eyesore. For example, the Aiming In transition has to be fast to keep up with the pace of combat, but I was able to make Aiming Out slower to recude the harsh motion.
GAMEPLAY MECHANICS:
Developed a system which damages enemies based on an objects Velocity/Mass when whacking into them.
Helped refine and streamline Push/Pulling mechanics.
Developed a scrapped Rhythm System which uses the BPM of a song to represent your closeness to the beat as a value between 0 and 1.
Assisted in creation of Death/Revive mechanics.
UI/UX:
Designed and developed a system which displays a Damage Number pop-up on screen that scales based on the damage amount.
Developed a system which can display Health Bars for enemies in Canvas-Space. This was done as bill-boarding would not work in splitscreen.
Developed a system which will display Notification pop-ups when entering a trigger-zone. These can have free-placement of text and images, and both Players can have seperate pop-ups from eachother. This greatly helped tutorialisation.
Extensive visual programming to UI elements to make them feel bouncy, alive and readable (Examples seen on the Left).
Assisted in creation of the final iteration of the tutorial area.
MENUS:
Developed entire Menu System with responsive animated buttons, including an Options menu with functional Graphics Settings, per-Player Mouse Sensitivity, and Brightness.
Developed a Ranking Screen which shows a counter ticking up to your Score, and a corresponding Rank (D, C, B, A, S).
Developed a Parallax screen effect with 8 layers to enhance the depth of the Menu Background Image. It also responds to Mouse/Joystick input.
Per-Player Pop-ups
Main Menu