DiffDetectors is a web-based spot-the-difference puzzle game designed as an academic project for the unit CIS046-3 – Software For Enterprise.
The game combines interactive gameplay with enterprise software concepts such as authentication, event-driven programming, interoperability, and version control.
Play Online: Diff Detectors
Latest Version: v2.0
Players are presented with two images:
- A correct image
- A modified image with missing or altered details
The objective is to identify all missing spots within a limited time while avoiding incorrect selections. The game features multiple difficulty levels, a leaderboard system, and an admin panel for puzzle management.
- Level-based spot-the-difference puzzles
- Countdown timer based on difficulty (Easy / Normal / Hard)
- Limited wrong attempts displayed as hearts
- Hint system powered by the Banana API
- Bonus time challenges via custom made API integration (shortcutQuestionsApi)
- Score calculation based on remaining original time
- Retry and level-map navigation on failure
- User login and logout
- Admin login with email OTP verification
- Session-based authentication
- Virtual identity used for scoring and leaderboard ranking
- Visual level selection interface
- Preview of puzzles
- Access control for completed and available levels
- Displays top-scoring players
- Supports ties (multiple users with same score)
- Scores stored and retrieved from a database
- Upload puzzle images (original & modified)
- Define missing spot locations using grid points
- Add hint messages
- Set difficulty level and maximum solving time
- Delete puzzles when needed
- Frontend: HTML, CSS, JavaScript
- Backend: PHP
- Database: MySQL
- External API: Banana API
https://marcconrad.com/uob/banana/doc.php - Version Control: Git & GitHub
- Git used for tracking changes and feature development
- GitHub used for repository hosting and commit history
- Custom
.gitignorefile created to manage tracked files
- User interactions (clicks, timers, button events)
- Real-time UI updates based on player actions
- Countdown timers and dynamic game state changes
- Integration with the Banana API via HTTP requests and also my custom made shortcutQuestionsApi
- JSON data exchange between systems
- Communication between frontend, backend, database, and external services
- User accounts and admin roles
- OTP-based admin authentication
- Session handling for identity persistence
- Identity-linked scores and leaderboard positions
- Client (Web Browser)
- Backend Server (PHP)
- Database Server (MySQL)
- External Service (Banana API)
This represents a distributed software architecture.
-
Clone the repository:
git clone https://github.com/vishal-kalansooriya/DiffDetectors.git
-
Place the project in your local server directory (e.g. htdocs if you are using XAMPP).
-
Import the provided database SQL file into MySQL.
-
Configure database credentials in the configuration file.
-
Run the project in your browser:
http://localhost/DiffDetectors
This project was developed as an individual academic assignment. Any external code, APIs, or references used are acknowledged within the source code comments and documentation.
-Vishal Kavinda Kalansooriya -BSc (Hons) Software Engineering -University of Bedfordshire
This project is licensed under the MIT License.