1 of 1

CPSC 4160 – 6160 / Ruined Ascent

Ethan Waugaman

Game Description

Ruined Ascent is a 2D platformer set in the remains of a collapsing stone tower. Players control an adventurer attempting to climb through increasingly dangerous screens, each introducing a new mechanic or obstacle.

The objective is to reach the exit door of each level while avoiding hazards such as spikes, moving saws, and environmental traps. As players progress, they learn new mechanics, including jumping, dashing, and midair control, to overcome more complex level layouts. Reaching the exit door will send players to the next screen of the level, and completing all the screens presents the player with a final win screen.

Game Mechanics

Gameplay is centered on timing-based platforming.�Key mechanics include:

Jumping: A jump system with gravity physics intended to make movement feel natural

Dashing: A short horizontal movement that helps clear gaps or evade hazards

Respawn System: When the player touches spikes or saws, they temporarily glow red, then respawn at the start point

Obstacles:

Spikes: static hazards found on the floor

Saws: animated enemies that move left and right

Terrain: Stone, boxes and wooden platforms that the player moves on

Technical Description

Ruined Ascent is built in Python using Pygame, running at a consistent 60 FPS.

The project features:

Modular Architecture:�Separate files for player logic, world generation, enemies, UI screens, and settings

Tile-Based Level Loading:�Levels are read from text files and converted into tiles, platforms, hazards, and objects

Sprite Animation:�Player and saw enemies use frame-based animations for movement and rotation

Collision Engine:�Custom tile-based collision for horizontal and vertical movement, platform edges, and ground detection

Menus & UI:�A custom-font title screen, pause menu, controls page, and win screen with background art

Extendable Framework:�Designed so new enemies, levels, and mechanics can be added without rewriting core processes

Controls

The controls for the game are simple. To move left and right, the player can press the A/D or the left/right arrow keys. To jump, players can press space, and to dash, they can press left shift. If the player wishes to pause the screen, they can press the escape key

Game Limitations

Future Work

In the future, improvements can be made to the sprites as well as adding a dynamic background for the levels. As mentioned before, sounds can also be added to provide more life to the player character as well as to the environment and setting. More levels will also be implemented, and along with that will be a save/checkpoint system to save player progress.

Game objective

Game Screenshots

The controls for Ruined Ascent are simple so that new players can easily pick the game up and are also intentionally similar to games of the same style and genre, so that controls are intuitive for players who have played similar games.

At the moment, the game does not have sound, though it is possible to easily integrate. The game sprites and backgrounds are serviceable but not ideal due to the limitations of using only free assets, so they can stand to be improved. The game is also short and lacks the enemy variety of a full game due to the timetable of the implementation.