Browser Port
Play Game — No Audio (Recommended)
Play Game — With Audio
Controls
- Jump | ↑ or SPACE
- Left | ←
- Right | →
- Dash | C
- Toggle Fullscreen | F11
Notes
- F11 controls browser fullscreen mode and may affect how the game is displayed.
- The audio version has a much larger file size and is not optimized for web browsers. As a result, it may take longer to load and may have poor audio quality.
- To wallslide, press into the direction of the wall while falling.
- Wall jumping can be achieved by engaging a wallslide then pressing the jump button.
Project Overview
Novara's Ascent is a 2D platformer developed in Python and Pygame. The player navigates challenging levels using movement options including jumping, wall jumping, and dashing.
Alongside the game, I developed a custom level editor for creating and managing levels without directly editing the game's source code. The editor supports tile placement, automatic tiling, decorative elements, enemies, hazards, and other level components, as well as saving and loading levels.
I built Novara's Ascent as a large-scale personal project to learn how the systems behind games work and to gain experience developing interactive software from the ground up. The project currently contains three playable levels and remains unfinished, with additional planned features still to be implemented.
Development
One of the more challenging systems to develop was the game's camera. The camera needed to move through the game world while keeping the underlying coordinates of tiles and entities unchanged. I implemented the camera so that world coordinates are transformed into screen coordinates during rendering, allowing the same objects to maintain consistent positions in the game world while appearing to move as the camera moves.
Technical Highlights
- Custom game engine and level editor built from scratch using Pygame.
- Camera system that transforms world coordinates into screen coordinates during rendering.
- Tile-based level design with automatic tiling, tile variants, and decorative elements.
- Player movement mechanics including jumping, wall jumping, and dashing.
- Level saving and loading functionality.
Technologies
- Python
- Pygame
- JSON
Credits
Artwork by Noel Wiser.
Contact: wiser.noel@gmail.com