Purpose of the Game

I developed this 2D pixel platformer using Unity. Through this project I got a taste of how the many complex features of modern videogames work, while experimenting with object-oriented programming.

Technical Features and Programming Insights

Player Movement

I aimed to program a highly responsive player movement system, allowing smooth transitions between walking, jumping and crouching. Multiple layers of physics calculations ensure the penguin reacts naturally to terrain and obstacles.

Player Movement Diagram

Responsive jump

The longer the jump button is held during a jump, the higher the player jumps. A buffer system means that if the button is pressed just before landing, the jump still fires. In the air, the player also falls faster while holding the down arrow.

Player Movement Jump

Wall Correction

To make the movement more natural and fair, I added a system that carries the player over a ledge when it was just about to clear it but clipped the wall.

Player Movement Wall Correction

Corner Correction

The player is nudged to the side when hitting a corner, allowing it to continue the jump.

Player Movement Corner Correction

Ground Saver

The player can still jump just after leaving a ledge, keeping the movement natural and making sure a jump registers even if the penguin is pixels off the platform.

Player Movement Ground Saver

Advanced movement

The game also has advanced movement mechanics for a higher difficulty ceiling.

Player Movement Dive Boost Player Movement Swipe Up

Parallax Background

A multi-layered parallax background which adds depth to the game environment, with each layer moving at different rates.

Parallax Background

Boss Behavioral Movement

I used Opsive Behavior Designer to create an advanced boss enemy with an attack pattern involving several movements, and with varying phases depending on its health and other variables.

Boss Behavioral Movement Diagram

A* Pathfinding

A* pathfinding is implemented to give enemies the ability to navigate the level intelligently, finding the shortest path to the player while avoiding obstacles.

A* Pathfinding

Enemies & Damage System

The enemies are designed with unique attack patterns, and a damage system built on hurt and attack boxes lets the player attack enemies and take damage from them. Certain player moves also grant invincibility frames during which the player cannot be hurt.

Enemies & Damage System

Level Select

The level select menu allows players to choose from different levels, each being unlocked through a certain progression.

Level Select

Some Game Mechanics

The game features a set of unique mechanics, each changing how a level plays. Many are still under development.

Lighting

Using 2D lighting to create dark levels that are harder to navigate.

Lighting

Moving Platform

A platform that moves along its rails, and off them.

Moving Platform

Object bounce

A grabbable item that enables complex movement.

Bounce object

Tyrolean

A zip line that lets the player move quickly from one point to another.

Tyrolean