|
1 | | -# Introduction |
| 1 | +# Game Hub – Design Process |
2 | 2 |
|
3 | | -Genome Gamers Frontend is a project designed to support students in their Computer Science and Software Engineering education. It combines educational resources like tech talks, code examples, and blogs with an interactive **Game Hub** that gamifies learning through engaging minigames. |
| 3 | +Welcome to Game Hub! |
| 4 | +This document outlines the journey of designing and building our game hub, focusing on the evolution of our ideas and how they shaped the final product. |
4 | 5 |
|
5 | | -The **Game Hub** serves as the central platform where players can explore different worlds, interact with NPCs, and access a variety of games. Players navigate the hub using WASD controls, customize their character's appearance, and earn points by completing challenges. Each world offers unique experiences, with three games per world designed to enhance STEM learning in a fun and interactive way. |
| 6 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/eaaf7ae4-3a85-4045-861a-311e8c6700de" /> |
6 | 7 |
|
7 | | -GitHub Pages can be customized by the blogger to support computer science learnings as the student works through the pathway of using JavaScript, Python/Flask, Java/Spring. |
8 | | - |
9 | | -## Key Features |
10 | | - |
11 | | -### Game Hub (World Selector) |
12 | | -The **Game Hub** acts as the central map where players can select different worlds to explore. Each world is represented by an icon, and players can interact with NPCs to learn more about the world and its games. The hub also includes options for customizing character skins and accessing help or additional resources. |
13 | | - |
14 | | -### Worlds and Their Games |
15 | | -Each world contains three unique games that align with its theme: |
16 | | - |
17 | | -1. **Bioverse Central**: |
18 | | - - Explore options like skins, help, outlines, and more. |
19 | | - - Games: Skins customization, Help section, and Outlines. |
20 | | - |
21 | | -2. **Genomic Architects**: |
22 | | - - Focus on building DNA, editing genes, and playing blackjack. |
23 | | - - Games: DNA Building, Gene Editing, Blackjack. |
24 | | - |
25 | | -3. **Pathogen Patrol**: |
26 | | - - Predict outbreaks, explore organelles, and engage in scientific adventures. |
27 | | - - Games: Outbreak Prediction, Exploration, Adventure. |
28 | | - |
29 | | -4. **Arcade Rush**: |
30 | | - - Master fast-paced classics like Pac-Man, Flappy Bird, and Geometry Dash. |
31 | | - - Games: Pac-Man, Flappy Bird, Jump Challenges. |
32 | | - |
33 | | -5. **Party Time**: |
34 | | - - Spin slot machines, open digital packs, and enjoy party games. |
35 | | - - Games: Slot Machine, Pack Opening, Party Games. |
36 | | - |
37 | | -6. **Combat Zone**: |
38 | | - - Enter skirmishes, plan tactics, and survive swarms. |
39 | | - - Games: Skirmish, Strategy, Survival. |
40 | | - |
41 | | -7. **Strategy Core**: |
42 | | - - Engage in tower defense, simulations, and bird slinging. |
43 | | - - Games: Tower Defense, Simulation, Racing. |
44 | | - |
45 | | -8. **Skill & React**: |
46 | | - - Test reflexes with table tennis, crossy road, and other challenges. |
47 | | - - Games: Table Tennis, Reflex Challenges, Crossy Road. |
48 | | - |
49 | | -9. **Click & Collect**: |
50 | | - - Farm, race, and click through fast-paced experiences. |
51 | | - - Games: Farming, Racing, Clicker. |
52 | | - |
53 | | -### Common Features Across the Site |
| 8 | +--- |
54 | 9 |
|
55 | | -1. **Interactive Minigames**: |
56 | | - - A variety of games such as platformers, tower defense, blackjack, farming simulators, and more. |
57 | | - - Real-time scoring and leaderboard systems. |
| 10 | +## 1. Initial Plan: The Outline |
58 | 11 |
|
59 | | -2. **NPC Interactions**: |
60 | | - - NPCs provide hints, dialogue, and guidance for each world and its games. |
| 12 | +Our project began with a simple goal: make biotech-related engaging games. |
| 13 | +**Outline** was our first plan, where we brainstormed core concepts: |
61 | 14 |
|
62 | | -3. **Customization**: |
63 | | - - Players can customize their character's appearance using skins. |
| 15 | +- **Biotech Education**: Use games to teach real-world science. |
| 16 | +- **Data & ML Integration**: Incorporate real datasets and machine learning for authentic scenarios. |
| 17 | +- **Adventure Structure**: Start with a single world, inspired by classic adventure games like Mario. |
| 18 | +- **Team Roles**: Assign clear responsibilities (frontend, backend, ML, testing, project management). |
64 | 19 |
|
65 | | -4. **Educational Content**: |
66 | | - - Games are designed to enhance STEM learning through interactive and engaging experiences. |
| 20 | +We mapped out a handful of games (e.g., Outbreak, DNA Building, Blackjack) and focused on how each would teach a biotech concept. |
| 21 | +The first prototype was a single map which can be seen in /world10 with 6 games and 3 other experiences. |
67 | 22 |
|
68 | | -5. **Responsive Design**: |
69 | | - - All pages and games are optimized for desktop and mobile devices. |
70 | | - - CSS animations and transitions for smooth user interactions. |
| 23 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/c97ad687-7f25-43f9-8910-2b46e38462e8" /> |
71 | 24 |
|
72 | | -6. **Audio Integration**: |
73 | | - - Background music and sound effects are included in most games. |
74 | | - - Audio files are preloaded for seamless playback. |
| 25 | +--- |
75 | 26 |
|
76 | | -7. **Reusable Components**: |
77 | | - - Modular JavaScript files for shared functionality across games (e.g., game loops, collision detection, scoring systems). |
78 | | - - Shared CSS styles for consistent design. |
| 27 | +## 2. Next Plan: The Format |
79 | 28 |
|
80 | | -8. **API Integration**: |
81 | | - - Backend API endpoints for updating user points and fetching leaderboard data. |
82 | | - - Fetch-based asynchronous calls for real-time updates. |
| 29 | +As the project grew, we realized the need for better organization and scalability. |
| 30 | +**Format** was our second plan, where we restructured the site: |
83 | 31 |
|
84 | | -9. **Customizable Settings**: |
85 | | - - Difficulty levels for games (e.g., Easy, Medium, Hard). |
86 | | - - Adjustable parameters like speed, jump height, and spawn rates. |
| 32 | +- **Game Categorization**: Grouped games by type (arcade, strategy, party, etc.) for easier navigation. |
| 33 | +- **Worlds & Levels**: Had several related games and designed about worlds that led to different games. |
| 34 | +- **UI/UX Improvements**: Added a central hub and repurposed the games to be on different worlds rather than on one. |
| 35 | +- **Points System**: Integrated backend points and rewards for playing games. |
87 | 36 |
|
88 | | -10. **Leaderboard System**: |
89 | | - - Persistent leaderboard for tracking top scores across games. |
90 | | - - Integration with backend APIs for storing and retrieving leaderboard data. |
| 37 | +This phase led to the creation of /world9 which was our second map design. It grouped similar games next to each other, but had all games on one page which was not UI friendly nor easy to navigate. |
| 38 | +We also began planning for more games, aiming for 24 total, and started to separate design from implementation. |
91 | 39 |
|
92 | | -11. **Modular Design**: |
93 | | - - Each game is encapsulated in its own file structure for easy maintenance and updates. |
94 | | - - Shared assets like images, audio files, and scripts are stored in centralized directories. |
| 40 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/10daf8b2-4dfd-4569-8c4e-d2df44d2467a" /> |
95 | 41 |
|
96 | 42 | --- |
97 | 43 |
|
98 | | -## Technical Design Overview |
| 44 | +## 3. Final Plan: The Synopsis |
99 | 45 |
|
100 | | -### Architecture Diagram |
| 46 | +With feedback and iteration, we moved to our **Final Plan**: |
| 47 | +**Synopsis** focused on polishing our website and making it scalable. |
101 | 48 |
|
102 | | -The technical design of Genome Gamers follows a modular architecture that integrates the front-end, backend, and deployment pipelines. Below is a high-level overview of the architecture: |
| 49 | +- **Eight Themed Worlds**: Each world from /world0 -> /world8 represents a category (e.g., Arcade Rush, Party Time, Combat Zone). |
| 50 | +- **Central Hub**: The index page became the starting world with 9 different worlds - 8 being to groups of 3 with minigames and the other being other experiences. |
| 51 | +- **Dialogue & NPCs**: Added character-driven world entry, with NPCs to interact and talk with before entering a world. |
| 52 | +- **Cosmetics & Points**: Expanded skin selection and integrated a persistent points system. |
| 53 | +- **Modular Design**: Each minigame in each world is in its own .md file, making it easy to navigate the worlds and minigames while programming the website. |
| 54 | +- **Educational Focus**: 6 of the games are still related to our biotech original theme (the first 6 games), with real data and ML models where possible. |
103 | 55 |
|
104 | | -- **Frontend**: Built using HTML, CSS, and JavaScript, leveraging Jekyll for static site generation. The front-end is styled using SASS and integrates with GitHub APIs for dynamic content. The interactive game hub is implemented using HTML5 Canvas and JavaScript. |
| 56 | +This structure allowed us to scale, maintain, and expand the site efficiently. |
| 57 | +The final product is a collection of interconnected worlds, each with its own theme, games, and educational goals. |
105 | 58 |
|
106 | | -A detailed architecture diagram is available on [Draw.io](https://app.diagrams.net/). You can find the diagram file in the repository under `docs/architecture.drawio`. |
| 59 | +<img width="1279" alt="Image" src="https://github.com/user-attachments/assets/def86fbb-4268-4dce-ac24-59a7a494e188" /> |
107 | 60 |
|
108 | 61 | --- |
109 | 62 |
|
110 | | -## Technical Description |
| 63 | +## Design Principles & Lessons Learned |
111 | 64 |
|
112 | | -### Frontend Design |
| 65 | +- **Iterative Design**: Each plan built on the last, responding to user feedback and technical challenges. |
| 66 | +- **User Experience**: Navigation, clarity, and engagement were prioritized at every stage. |
| 67 | +- **Educational Value**: Games were chosen and designed for their ability to teach, not just entertain. |
| 68 | +- **Team Collaboration**: Clear roles and regular planning meetings kept the project on track. |
113 | 69 |
|
114 | | -The front-end is based on the structure of the website, which includes: |
| 70 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/1ea65e63-4da7-440f-b36d-7ebcaf3d781c" /> |
115 | 71 |
|
116 | | -1. **Game Hub**: The index page (`index.md`) serves as the central hub for navigating different worlds and minigames. It features: |
117 | | - - Interactive elements like NPC dialogues and skin customization. |
118 | | - - Dynamic rendering using HTML5 Canvas. |
119 | | - - Background music and visual styling for an immersive experience. |
120 | | -2. **Navigation Bar**: Configured in `_config.yml` to provide easy access to different sections of the website. |
121 | | -3. **Styling**: Custom themes are applied using SASS, with options to switch themes in `_sass/minima/custom-styles.scss`. |
| 72 | +--- |
122 | 73 |
|
123 | | -### Interactive Features |
| 74 | +## File Structure Overview |
124 | 75 |
|
125 | | -The game hub includes several interactive features: |
| 76 | +- Index.md: Central hub with navigation and NPCs. |
| 77 | +- World0 to World8: Themed worlds, each with unique games and experiences. |
| 78 | +- World9 and World10: Our early prototypes and "legacies" of our old maps to document our journey creating the game |
| 79 | +- Outline, Synopsis, and Format: Our planning documents for our website. |
| 80 | +- Music, Aboutus, Skin, and Help: Other experiences showing our credibility, how to help the user, custom music on each level for immersive and engaging purposes, and a way to customize your profile. |
| 81 | +- Points, Home Icons, and Other Documents: Even more ways to make your experience at Game Hub better. |
126 | 82 |
|
127 | | -- **NPC Dialogues**: NPCs provide hints and guidance for navigating different worlds. Dialogues are dynamically rendered using JavaScript. |
128 | | -- **Skin Customization**: Players can customize their character's appearance using a modal interface. |
129 | | -- **Game Worlds**: Each world is represented by an interactive object on the canvas, allowing players to enter different experiences. |
| 83 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/1016de84-348c-4f02-a079-6028b1dba6c9" /> |
130 | 84 |
|
131 | 85 | --- |
132 | 86 |
|
133 | | -## Getting Started |
134 | | - |
135 | | -To set up the Genome Gamers Frontend project, follow the steps below: |
136 | | - |
137 | | -### Prerequisites |
| 87 | +## Next Steps |
138 | 88 |
|
139 | | -Ensure you have the following installed on your system: |
140 | | -1. **Node.js**: Download and install from [Node.js Official Website](https://nodejs.org/). |
141 | | -2. **npm**: Comes bundled with Node.js. |
142 | | -3. **Git**: Download and install from [Git Official Website](https://git-scm.com/). |
| 89 | +- Continue fixing bugs to our games and worlds (will probably stop after presenting at N@TM). |
| 90 | +- Refine our content to be more educational and useful rather than just for entertainment. |
| 91 | +- Expand cosmetic, social, and interactive features. |
143 | 92 |
|
144 | | -### Setup Instructions |
| 93 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/c8cda384-13b3-4f7c-98b6-393405918194" /> |
145 | 94 |
|
146 | | -1. **Clone the Repository**: |
147 | | - Open a terminal and run the following command to clone the repository: |
148 | | - ```bash |
149 | | - git clone https://github.com/your-username/GenomeGamersFrontend.git |
150 | | - ``` |
151 | | - Replace `your-username` with the actual GitHub username. |
| 95 | +--- |
152 | 96 |
|
153 | | -2. **Navigate to the Project Directory**: |
154 | | - ```bash |
155 | | - cd GenomeGamersFrontend |
156 | | - ``` |
| 97 | +## Credits |
157 | 98 |
|
158 | | -3. **Install Dependencies**: |
159 | | - Run the following command to install the required dependencies: |
160 | | - ```bash |
161 | | - npm install |
162 | | - ``` |
| 99 | +- **Project Manager/Scrum Master**: Ian Manangan |
| 100 | +- **Frontend/Backend Developer**: Zach Peltz |
| 101 | +- **ML Engineer/Data Science Lead**: Aarush Kota |
163 | 102 |
|
164 | | -4. **Start the Development Server**: |
165 | | - Launch the development server using: |
166 | | - ```bash |
167 | | - npm start |
168 | | - ``` |
169 | | - This will start the server and open the project in your default web browser. |
| 103 | +<img width="1280" alt="Image" src="https://github.com/user-attachments/assets/27b1f3ae-92df-43df-8bf1-4e1c9f353c45" /> |
170 | 104 |
|
171 | | -5. **Build the Project**: |
172 | | - To generate the production-ready files, use: |
173 | | - ```bash |
174 | | - npm run build |
175 | | - ``` |
176 | 105 |
|
177 | | -6. **Deploy**: |
178 | | - Follow the deployment instructions in the repository to host the project on GitHub Pages or another platform. |
| 106 | +--- |
179 | 107 |
|
180 | | ---- |
| 108 | +<script> |
| 109 | +// filepath: /home/kasm-user/nighthawk/GenomeGamersFrontend/navigation/Worlds/world0.md |
| 110 | +// ...existing code... |
| 111 | + |
| 112 | +// --- Background Music --- |
| 113 | +const music = new Audio('{{site.baseurl}}/assets/audio/39iceiceoutpost.mp3'); // Change path as needed |
| 114 | +music.loop = true; |
| 115 | +music.volume = 0.5; |
| 116 | + |
| 117 | +// Play music after first user interaction (required by browsers) |
| 118 | +function startMusicOnce() { |
| 119 | + music.play().catch(() => {}); |
| 120 | + window.removeEventListener('click', startMusicOnce); |
| 121 | + window.removeEventListener('keydown', startMusicOnce); |
| 122 | +} |
| 123 | +window.addEventListener('click', startMusicOnce); |
| 124 | +window.addEventListener('keydown', startMusicOnce); |
| 125 | +</script> |
0 commit comments