From a Python text-based game to a 2D Angular and Phaser 3 game.
The vampire hunter game is an interactive 2D game where players explore a small village to collect eight specific items needed to defeat a vampire living in a mansion. The game incorporates various gameplay elements, including item collection, combat with the vampire, and a dynamic user interface with an inventory system, location descriptions, and player stats. This artifact originates from course IT 140 where I created the text-based version, and it represents a comprehensive showcase of my software development abilities. It required not only coding skills but also a good understanding of user interaction, game mechanics, and backend integration.
The development and enhancement of the Vampire Hunter game demonstrate the following skills:
My ability to design,
develop, and deliver professional-quality oral, written, and visual communications that are
coherent,
technically sound, and appropriately adapted to specific audiences and contexts.
Enhancing the game involved thoughtful consideration of the user experience, with key
elements
designed to guide players through the game smoothly.
My implementation of custom alert dialogs that appear when players collect items or
reach
certain stages,
helps users track their progress and achievements. The addition of the village map that
displays
all the
locations,
items, and routes, provides clear navigation tools to both technical and non-technical
users.
The enhancement of the inventory scene offers detailed information about the origin and
importance
of the collected items, with clickable buttons allowing guided access. To support both
developers and
users, I included gameplay instructions and technical details in a comprehensive README
file,
ensuring that installation steps, gameplay, and key technical features were well documented.
Extensive comments were added throughout the codebase, making it easier for future
developers
or collaborators to understand the game’s logic and expand upon it. These enhancements
reflect
my
ability to adapt communication for different audiences and ensure clarity across multiple
platforms.
My ability to design and evaluate computing solutions that solve a given
problem
using algorithmic
principles and computer science practices and standards appropriate to its solution, while
managing the
trade-offs involved in design choices. One of the major advancements in this project was the
transition
from a text-based game into a full-fledged interactive 2D game with a visually engaging user
interface.
By integrating Phaser 3 for rendering the game and Angular for managing the game’s frontend
architecture,
I demonstrated a clear ability to design solutions that solve complex user interaction
problems.
I implemented player movement, item collection, and used algorithmic principles to implement
player-object collisions that trigger different game actions and dynamic scene transitions,
ensuring the game mechanics remained smooth and intuitive.
Additionally, I created the “GameStateService” to manage state between Angular and
Phaser.
For example, once an item is collected from a location, the game state records the event,
ensuring that if the player returns to the same location, the item cannot be collected
again.
This prevents item duplication and maintains a smooth, uninterrupted flow of gameplay.
My ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals. The game was refactored to separate the backend logic into modular components such as: The game.py module that handles the core game logic. The game_classes.py module that handles the definitions for game entities such as characters, items, and locations. The game_objects.py module that handles the Instantiations of in-game objects (e.g., items, locations). And The game_api.py module that handles API endpoints for player actions, state saving, and backend communication. This separation of concerns made the codebase more maintainable and scalable. On the frontend, I used HTML and CSS to build custom pop-ups and dialogues, replacing Angular Material components with more tailored solutions for better control and a cohesive game aesthetic. I Integrated sound effects during player movements, item collection, and the final battle to enhance the user experience, making the game more immersive.
My ability to develop a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources. Although the game is not heavily reliant on user input beyond the game mechanics, security principles were still considered during development. The backend API was designed using Flask, which provided a secure and lightweight framework for handling game-related requests. Additionally, the implementation of the “gameStateService” to handle the game state and data within the application reduces the risk of unauthorized or unintended state changes. This adheres to best practices in securing game logic, ensuring the integrity of the player’s progress. These considerations demonstrate my anticipation of potential vulnerabilities, even in a game environment, reflecting a strong security mindset.