C:\Users\Kevin\Projects\The-Ascent>
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.
./project_summary
Project Overview
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.
A collaborative project made by Kevin Lewis, Elijah Rossman, and Kristopher Yu.
My main role was lead programmer, covering movement, collision, world interaction, player state machines, grappling logic, and boss mechanics.
./gameplay_systems
Gameplay Systems
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
Boss Fight Logic
Beetle Behavior
The 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 Mechanic
After 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 Phase
The Beetle’s shell must be broken by outside boulders, then the player finishes the encounter by using a kick-down action on the boss.
./worked_well
What Worked Well
Movement
The grappling mechanics made the movement feel fun, interesting, and distinct from a basic platformer.
Team Contributions
The team did strong work on the art and level design, giving the mechanics a more complete game world to exist in.
Boss Design
The final boss included interesting effects, behavior logic, and a multi-step defeat condition that gave the game a stronger ending.
./potential_improvements
Potential Improvements
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
./tech_stack