The Ascent

A platformer game made using Phaser 3, built around grappling as the main focal point of movement, traversal, world interaction, and boss mechanics.

Playable Link → GitHub Source Phaser 3
Status Playable

Browser-based Phaser 3 platformer with grappling movement, traversal systems, and a final boss encounter.

Build Type Collaborative

CMPM 120 final group project built as a browser-playable game.

Engine Phaser 3

JavaScript platformer built around state machines, collision, and physics-based movement.

The Ascent Gameplay

Project Overview

Concept: The Ascent is a browser-based platformer centered on grappling movement. The player uses movement, jumping, grappling, and world interaction to climb through the level and reach the final encounter.

Team: A collaborative project made by Kevin Lewis, Elijah Rossman, and Kristopher Yu.

My Role: My main role was lead programmer, covering movement, collision, world interaction, player state machines, grappling logic, and boss mechanics.

Gameplay Systems

Core systemsHow state machines, grappling, traversal, and the boss all connect.
SystemDetails
State Machines
  • Handled most player movement and interaction through state machines
  • Included running, jumping, grappling, kick-down actions, and related transitions
  • Used state logic for branch range checks and highlight behavior
  • Kept player behavior organized as mechanics expanded
Grappling
  • Created an invisible connection between the player and grapple hook
  • Added a visible rope-like restraint to communicate the grapple connection
  • Used minimum and maximum rope lengths for each grapple hook
  • Limited movement after grapple release until the player officially landed
World Interaction
  • Worked on player collision and level interaction
  • Implemented movement behavior around platforms, branches, and walls
  • Supported traversal logic for the climbing-focused level structure
  • Helped connect movement mechanics into the playable environment
Boss Mechanics
  • Built the Beetle Boss using a state machine
  • Made the boss chase the player while grounded
  • Added random movement behavior when the player was not grounded
  • Created falling object attacks and shell-break progression

Boss Fight Logic

The Beetle BossBehavior, pressure, and the final defeat condition.
PhaseDetail
Beetle BehaviorThe Beetle Boss reacts based on the player's grounded state. When the player is grounded, the boss runs toward them. When the player is airborne, the boss uses more random movement.
Pressure MechanicAfter a set amount of time, the Beetle roars and causes objects to fall from the sky, discouraging the player from staying still on platforms above the boss.
Final PhaseThe Beetle's shell must be broken by outside boulders, then the player finishes the encounter by using a kick-down action on the boss.

What Worked Well

Production notesWhat landed for the team and the game's feel.
AspectDetail
MovementThe grappling mechanics made the movement feel fun, interesting, and distinct from a basic platformer.
Team ContributionsThe team did strong work on the art and level design, giving the mechanics a more complete game world to exist in.
Boss DesignThe final boss included interesting effects, behavior logic, and a multi-step defeat condition that gave the game a stronger ending.

Potential Improvements

Future improvementsRough edges left in the physics layer.
AreaIdeas
Frame Rate Behavior
  • The game could run differently depending on the computer
  • Time delta was attempted but did not fully solve the Phaser behavior
  • Some speed adjustments were made based on current frame rate
  • The solution helped, but was not a perfect fix
Jump Reset
  • The physics setup did not include a clean built-in jump reset
  • Jump reset behavior had to be handled manually
  • This caused occasional bugs and edge cases
  • Wall and block-side contact could create unintended reset behavior

Technical Focus

Phaser 3JavaScriptPlatformer DesignGrappling MechanicsState MachinesCollision SystemsWorld InteractionBoss AIBrowser Game DevelopmentTeam Collaboration

More projects like this

← Back to all projects