Welcome to The Botanist, an MSc project by Thomas Warden with art by Emma Formosa.
The Botanist is a narrative-driven, 2D adventure game built with Phaser 3. Explore lush environments, interact with whimsical characters, collect rare plants through engaging minigames, and uncover the mysteries of the forest. The project demonstrates advanced scene management, dialogue systems, inventory, interactive minigames, and dynamic UI in a modern JavaScript game framework.
- Rich Dialogue System: Branching conversations with fairies, bees, butterflies, and woodland creatures.
- Interactive Minigames: Win plants through Tic-Tac-Toe and fishing challenges.
- Dynamic Inventory & Shop: Collect, buy, and use unique items and plants with persistent storage.
- Plant Journal: Track discovered plants with detailed information and beautiful artwork.
- Scene Navigation: Seamlessly move between locations like Wee Cair, Wall Garden, Shop, and Greenhouse.
- Time System: Day/night cycle affects gameplay and NPC interactions.
- Bush Exploration: Search bushes for hidden plants and trigger minigame challenges.
- Custom UI: Option boxes, popups, HUD, and responsive dialogue systems.
- Earthy Visuals: Hand-crafted art and atmospheric backgrounds with layered depth.
-
Clone the repository:
git clone git@github.com:tomlukewarden/MSc-Project.git
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and go to http://localhost:3000 (or the port shown in your terminal).
src/
components/
scenes/ # Core game scenes
dialogue/ # Dialogue system and UI helpers
npc/ # Character interactions
minigames/ # Interactive game challenges
utils/
public/
assets/
index.html # Entry point
package.json # Dependencies and scripts
- Exploration: Navigate between different garden areas and discover hidden secrets
- Plant Collection: Search bushes to find rare plants guarded by playful animals
- Minigame Challenges: Win plants by succeeding in skill-based minigames
- Character Interactions: Engage with various NPCs through branching dialogue
- Inventory Management: Organize collected plants and items in your personal journal
- Shopping: Trade items and purchase new plants from the garden shop
- Tic-Tac-Toe: Outsmart the computer to win plant rewards
- Fishing: (Coming soon) Test your timing and patience
Plants are hidden throughout the garden in interactive bushes. When you find one:
- A cheeky animal appears trying to steal it
- Choose to play a minigame to win the plant
- Success adds the plant to your journal
- Failure lets you try again at the same bush
- WASD: Move your character around the garden
- Mouse: Interact with NPCs, bushes, shop items, and UI elements
- Click: Advance dialogue, select options, and play minigames
- ESC: Access pause menu
The game automatically saves your progress including:
- Collected plants and inventory items
- Discovered bush locations
- Dialogue progression with NPCs
- Shop transactions
- Time of day
- Phaser 3 Scene Management: Efficient scene loading and transitions
- Component-Based Architecture: Modular and maintainable code structure
- Local Storage Persistence: Progress saved between sessions
- Dynamic Asset Loading: Efficient memory management
- Responsive Design: Adapts to different screen sizes
- Error Handling: Robust fallbacks for missing assets
- Add plant data to
src/data/plantData.js - Place plant artwork in
public/assets/plants/ - Configure bush locations in scene files
- Test minigame integration
- Create minigame folder in
src/minigames/ - Implement tutorial and game scenes
- Add to
minigameScene.jsxlauncher - Include assets in
public/assets/minigame/
- Programming & Game Design: Thomas Warden
- Art & Visual Design: Emma Formosa
- Framework: Phaser 3
- Special Thanks: Academic supervisors and playtesters
This project is for academic purposes as part of an MSc degree. For other uses, please contact the author.
Explore, discover, and become the ultimate botanist! 🌱
Happy gardening!