Milestone Project 1
“Success is not final; failure is not fatal: It is the courage to continue that counts.”
–Winston S. Churchill
This is the first of the significant milestone projects for my software development Bootcamp. This project aims to combine and progress frontend development skills by making a PC-supported browser game. For this project, I chose to create a game called Gem Raider. It is a simple 2D action-adventure game centered around hunting for treasure.
“The game’s objectives are to find and collect all the gems scattered around the map while avoiding environmental hazards and dangerous NPCs. There is no time to waste; it is time to get Raiding. Progress through all four game-level difficulties to become the Master Gem Raider!”
I enjoyed completing this project’s development cycle and putting in more time and energy than was required for a grade because I had so much fun learning and implementing the new features. Below are some key elements that comprise the ~4,000 lines of code so far.
Core Features:
- Move Character via keyboard input
- Dig for Gems via the spacebar
- Pickup gems by running them over
- Explorable map
- Defined win state; collect all the gems before time runs out!
- Multiple game levels (4 total)
- Lose state 1 (timer)
- Lose state 2 (NPCs Collision)
- Randomly roaming NPCs, hostile on collision with your Adventurer
- Detect screen size and adjust the explorable map accordingly
I added the base framework for mobile and tablet screen detection and a dynamic scaling world from the beginning. I knew it would take too much time for the initial project build to have an app fully optimized for phones, tablets, and PCs. Still, I wanted to ensure the base framework was there so that expanding support to smaller devices wouldn’t mean a complete overhaul. Admittedly, it added complexity and slowed down my development on this project, but I think the learning value was worth it.
Things to add:
- Lose state 3 (hostile environment)
- Complete mobile and tablet-friendly optimization for screen size and dynamic scaling environment
- Add mouse movement alternative and click support
- Add mobile-friendly touch support
- Expand dynamically scaling environment features to include, becoming increasingly hospitable as time elapses. The higher the level of the map, the faster conditions worsen
In summary, I made a great effort to maximize my learning potential from this project by carefully planning an approach, creating a base framework that was adaptable to multiple devices, making sure to capitalize on the separation of concerns, refactoring for efficiency constantly, and making sure to be generous on the comment code.
Link to playable game: https://danthecoderaider.github.io/MP1/
Link to code repository: https://github.com/DantheCodeRaider/MP1