Adventure Game
NOTE: The above git repository is just for showcasing my work as the original repository with documented code reviews, merge requests, and commits is not public to maintain privacy of work and group members.
Project Details
This project is a Java-based adventure game developed by me and three colleagues of mine. It focuses on leveraging JavaFX, adhering to SOLID principles, implementing various design patterns, addressing user accessibility needs, following Agile methods of project management, and integrating third-party tools to create an immersive gaming experience.
Key Features
- Enhanced GUI with Dynamic Game Simulation: The project implements a graphical user interface (GUI) by implementing dynamic simulation elements, providing players with a visually engaging representation of the game world.
- Incorporation of Visual Elements in Game Environment: Visual elements within the game environment, including objects and backgrounds enhance the overall visual experience and improve player interaction.
- Object Interaction and Management: Players have the ability to interact with objects in the game environment and effectively manage their inventory, enhancing gameplay dynamics.
- Character Control: The game offers versatile control options, allowing players to navigate the game world using both keyboard inputs (WASD keys or arrow keys) and mouse clicks for interacting with in-game elements.
- Object Collection: Players are able to effortlessly add objects to their inventory within a one-unit radius, ensuring smooth and seamless interaction with the game environment.
- Visual Feedback for Text Commands: Visual effects are incorporated to provide feedback when players input commands into the game’s text field, enhancing the immersive experience and confirming successful command entry.
- In-Game Instruction Accessibility: The game provides easy access to instructions throughout the gaming experience, ensuring that players can quickly grasp the game mechanics and objectives.
- Game State Control Options: Players have the capability to pause, restart, or load a previously saved game at any moment during gameplay, enhancing flexibility and user experience.
- Alt Text and Focus Selection for Accessibility Users: Accessibility features, such as alt texts for graphical elements and focus selection, are implemented to cater to non-sighted players’ needs.
- Audio Narration for Non-Sighted Game Players: Audio narration is included to describe alt texts and provide information about the player’s position on the game board, ensuring an inclusive gaming experience.
- Ability to Choose Color Palettes for Low-Vision Users: Low-vision users have the option to choose from a variety of color palettes to improve visibility and user experience.
Technologies & Resources Used
- IDE: IntelliJ by JetBrains
- GUI: Utilized JavaFX for GUI development, enabling the creation of dynamic and visually appealing user interfaces for the adventure game.
- Free Text to Speech (FreeTTS): Integrated this third party tool to provide audio narration for non-sighted players, enhancing accessibility.
- WCAG Rules: Followed WCAG rules for audio preferences and color coordination to ensure accessibility for players with visual impairments.
- Design Patterns: Implemented Composite, Adapter, Command, Strategy design patterns to improve code structure and maintainability, ensuring adherence to SOLID principles.
- Agile Methodology: Adopted the Agile Manifesto for project management, facilitating iterative development and collaboration.
- Git: Utilized git for version control, enabling efficient collaboration, code reviews, and tracking of project progress.
Main Takeaways
- Through hands-on experience in developing the adventure game using JavaFX, I deepened my understanding of JavaFX’s capabilities and learned how to leverage its features to create engaging user interfaces and gaming experiences.
- By integrating accessibility features such as audio narration and ensuring compliance with WCAG rules, I gained valuable insights into making digital products more inclusive and accessible to users with diverse needs, broadening my skill set as a developer and fostering a greater sense of social responsibility in my work.
- Implementing Composite, Adapter, Command, and Strategy patterns in the adventure game project provided me with practical experience in applying design patterns to solve complex problems, improving code structure, scalability, and maintainability. This experience equipped me with valuable problem-solving skills applicable to a wide range of software development projects.
- Engaging in Agile project management practices, including daily standups, retrospectives, and sprints, enhanced my ability to collaborate effectively within a team, adapt to changing requirements, and deliver incremental value to stakeholders. This experience strengthened my project management skills and prepared me to excel in dynamic, fast-paced development environments.
- Throughout the project, collaboration emerged as a cornerstone of success. Learning to communicate effectively, exchange ideas, and provide constructive feedback not only strengthened team dynamics but also enriched the overall project outcome, highlighting the invaluable role of collaboration in achieving shared goals.