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.