Through Their Eyes
A dark atmospheric 2D platformer where a young girl named Ava navigates haunted cave levels, fights enemies, and survives — built in Godot as a first-year university project.
At a glance
Godot
Engine
GDScript
Language
5
Team size
3
Levels
Gameplay footage
Overview
Through Their Eyes was developed at Brock University as a first-year group project by a team of five. Built entirely in Godot using GDScript, the game is a dark atmospheric 2D platformer with a hand-crafted horror aesthetic — bare branch motifs, cascading fog, dim cave environments lit by fireflies, and a graveyard-inspired tileset.
The player controls Ava, a young girl who must fight through three increasingly difficult cave levels armed with a water gun. Enemies patrol the platforms and spikes punish mistimed jumps. The game ends with a You Win or You Died screen depending on how the player fares.
Player — Ava

Enemies

Caterpillar
The primary enemy type — a ground-crawling creature with a spiked body and unsettling grin. Patrols platforms at a fixed speed and reverses direction upon hitting a wall. Damages Ava on contact.
Boss

Teddy is a corrupted stuffed bear and the final threat of the game. Fully animated with idle, walk, attack, jump, and death states, he was designed as the culmination of everything Ava faces across the three levels.
His behaviour follows the same wall-reversing patrol logic as standard enemies but with a larger health pool and projectile attacks, making each encounter significantly more demanding than anything encountered before.
UI & HUD

You Died

My contributions
Implemented the Player controller in GDScript — movement, sprint, single jump, and collision handling via KinematicBody2D
Built the shooting system — directional bullet instantiation tied to Ava's facing direction and Position2D node
Implemented the enemy patrol AI — wall-reversal direction logic and move_and_slide physics
Wired up the health system — damage on collision with enemies and enemy bullets, death trigger at 0 HP
Contributed to scene management — stage transitions, You Died and You Win scene routing via change_scene()
Integrated audio — walking, jumping, shooting, damage, and death sound effects via AudioStreamPlayer nodes