README.md
The final project submission and original project extension proposal. Also the project's README
CMP105 2026 Final Submission
Game
Dino Handyman: The Gun
You play as a little dino handyman! His friends have problems so he needs to get to their front door as soon as possible to help out. Your goal is to get yourself across the level as fast as you can and enter the door.
Controls:
WASD to move, SPACE to shoot, ESCAPE to pause.
Student Details
Student Name: Noah Albrock
Student Number: [REDACTED]
Course: [REDACTED]
Changelist
- Nearly all texture management has been moved to the global singleton “AssetManager""
- The player how has a gun that fires a bullet in the direction of the mouse relative to the player. The player is then given recoil in the opposite direction
- Jumping has been disabled in favour of using the gun mentioned above as your main movement mechanic
- Levels are no longer hard-coded, and are loaded from files and managed by LevelManager
- dc1fa5d: Framework/TileMap no longer stores a texture. They hold a pointer to a texture which is filled by AssetManager. This was to fix a strange bug I had with the game crashing when attempting the background and terrain.
- You’re time to complete a level is now recorded and stored in a leaderboard that can be views while hovering the respective level button
- If you complete different levels in a fast enough time, you get a medal! it is saved in the leaderboard file
Known Bugs
- If you move manage to fast enough, you can phase through the ground. I believe this is a by-product of how collisions work since this behaviour is quite common in video games generally.
- If any of the levels files are malformed (including autogenerated leaderboard files), the game will likely just crash. Bare this in mind if you attempt making your own levels <3
CMP105 Extension Proposal
Student Details
Name: Noah Albrock
Team: [REDACTED]
Course: [REDACTED]
Abertay id: [REDACTED]
Game Extended
Dino Handyman
supplied project
Title of Extension
Dino Handyman: The Gun
Brief Overview of game
UPDATED: Dino Handyman: The Gun will be a multi-level metroidvania platformer where the player controls a small dinosaur. Along with the usual walk, run and jump; the player will also be introduced to every american’s favourite item: The Gun. Because our dino friend is so light, they will be knocked back by the recoil, allowing them to jump higher and move faster. The player’s goal is to fix the problems around the world as fast as possible. You get a different rank of medal acheivement for going faster, so you can compete with your friends.
Must Have Features
-
The Gun: The gun item given to the player function as both a offensive and movement mechanic. Shooting the gun produced a decent amount of recoil, causing the plauer character to move in the opposite direction. Additionally, the bullets shot from the gun will be used to defeat enemies that stand in the player’s way.
-
Enemies: To stop players from winning the game immediately, eneimes will be scattered around the level that the player will need to avoid/defeat. They should be quick to deal with, to not disturb the fast-paced movement, but also pose enough of a threat to the player to not be ignorable.
Should Have Features
-
The Timer: Each level will include a timer that will record how long the player takes to complete the level. These times will be saved in the player’s save file for later reference.
-
UPDATED: The Leaderboard: Extending on the timer,
at the end of each levelon the menu, a leaderboard of times will be displayed. This will allow players to more easily compare their scores and compete for who can get the fastest time.
Could Have Features
-
UPDATED: Alert System: The alert system will allow the game to display temporary pieces of information to the player. This could be anything from
saving the gameto getting a new high score in a level. You get a notification if you receive a medal -
REMOVED:
Acheivements: The acheivement system will listen for the player completing different actions, and give them visual rewards for completing the challenges.When an acheivement is collected, the alert system will inform the player that they have completed it. If the player completes a level fast enough, they will be rewarded with a diffently ranked medal acheivement for that feat. The times they need to beat are configured in the level config and the earned acheivement will be displayed next to the level
Wish to Have Features
-
Enhanced UI: During each level, the player will be shown the current time taken, their health, ammo, and loading spinners for reloading. Other general UI/UX enhancements will be considdered. -
UPDATED: User-created Levels:
The player will be able to load a file containing enough information to create a new level challenge.All levels are loaded from files, and the user will be able to add custom levels. Custom levels will not count towards the players progression / acheivements, but are a fun feature for players to challenge eachother. These level files will need to be created manually, but will have a clean and semi-human-readable syntax -
UPDATED: Level Builder: If enough time is left after everything else is done, I may attempt to create a visual level creator program. This will be written in Swift using SwiftUI, and not C++. I do not expect to be graded on this contribution, but it seems like a nice to have, so I have mentioned it :) I made a visual editor compatible with the DataFile class file format, so you can edit level config and leaderboard files. Microsoft Excell actualy proved to a perfect terrain editor, so I’ve just used that for terrain instead!