The Interactive Story is a web app developed as Software Engineering course's final project, adhering to core Object-Oriented Programming (OOP) principles, SOLID principles, and implementing various design patterns for scalability and maintainability. The game is an engaging platform where users can immerse themselves in interactive stories, make choices, and explore different outcomes.
This project is built with a focus on clean architecture, modularity, and a separation of concerns, ensuring a robust and extensible codebase.
The game offers players a dynamic storytelling experience:
-
Interactive Story Selection: Players can browse through a catalog of stories, each represented by a brief description and title.
-
Gameplay Mechanics:
- Each story is broken down into scenarios.
- Players make choices, answer riddles, or provide items to progress.
- Based on the choices, the story branches into different paths.
-
Dynamic Scenarios:
- Scenarios may include challenges such as riddles or specific item requirements.
- The game adapts based on the player's inventory and responses.
-
Endgame:
- Stories conclude when all scenarios are completed or when players reach specific final outcomes.
-
Browse Stories:
- Visit the homepage to view available stories.
- Click "Gioca ora" to start a story (login required).
-
Make Choices:
- Follow the prompts, make decisions, and progress through the story.
-
Endgame:
- Complete the story or explore multiple endings based on your choices.
The project integrates modern technologies for both frontend and backend:
- HTML5, CSS3, and JavaScript: For responsive and interactive user interfaces.
- Firebase Authentication: User login and registration.
- Dynamic Rendering: Scenarios, choices, and outcomes are dynamically displayed based on backend responses.
- Spring Boot:
- RESTful APIs to handle game logic and interactions.
- Session management for user state tracking.
- Firebase Firestore:
- Database for storing stories, scenarios, and user progress.
- Java:
- Backend language adhering to OOP principles.
- Controllers and services handle requests and game logic.
- Java JDK 21+
- Maven (for building the backend)
- Firebase: Set up Firebase Project
-
Clone the Repository:
git clone https://github.com/ngljcb/px-interactive-story.git
-
Initial Setup:
- Navigate to the
resources
folder:cd /src/main/resources/
- Configure
google-services.json
for Firebase:{ "type": "xxxxx", "project_id": "xxxxx", "private_key_id": "xxxxx", "private_key": "xxxxx", "client_email": "xxxxx", "client_id": "xxxxx", "auth_uri": "xxxxx", "token_uri": "xxxxx", "auth_provider_x509_cert_url": "xxxxx", "client_x509_cert_url": "xxxxx", "universe_domain": "xxxxx" }
- Navigate to the
-
Build and run:
- Install dependencies (if applicable):
mvn clean install
- Run the app:
mvn spring-boot:run
- Install dependencies (if applicable):
-
Access the Game:
- Open your browser and navigate to
http://localhost:8080
for the game interface.
- Open your browser and navigate to
This project is licensed under the MIT License. See the LICENSE
file for details.