An open API service indexing awesome lists of open source software.

https://github.com/ankitsingh2105/doodlequest

Draw and guess multiplayer online game
https://github.com/ankitsingh2105/doodlequest

aws aws-ec2 canvas ci-cd docker expressjs game grafana load-balancer loki mysql-database nginx nodejs prometheus reactjs sql websockets

Last synced: 4 months ago
JSON representation

Draw and guess multiplayer online game

Awesome Lists containing this project

README

          

# DOODLEQUEST

## Description
A multiplayer online drawing and guessing game inspired by Scribble. It allows users to connect with friends, chat in real-time, and engage in a creative and interactive gameplay experience.

## Game Images
- Home, Admin Player, Regular Player, Game Start, Select words
dd1
dd2
dd3
dd4

## Features

- **Join Specific Room:** Connect and play with friends using unique room codes.
- **Real-Time Chat:** Instantly chat with other players during the game.
- **Live Whiteboard:** Draw and guess together in real-time.
- **Live Leaderboard:** Scores update instantly as players guess correctly.
- **Features:** Eraser, Custom Stroke Size, Custom Colour, Canvas clear, interactive sound on guess

---

## Technologies Used

- **WebSockets:** Enabled seamless real-time communication.
- **Express & Node.js:** Powered the backend server logic.
- **React.js:** Built a dynamic and responsive frontend.
- **Socket.io:** Simplified real-time event handling.
- **Nginx:** For load balancing

---

## Learning Highlights

- **WebSockets:** Gained hands-on experience with real-time data flow between client and server.
- **Custom Promises:** Built custom promises to manage async tasks effectively.
- **State Management:** Learned to lift state in React for smoother component communication.
- **Closures:** Applied closures to maintain variable scope in socket event handlers and timers.
- **Throttling:** Implemented throttling techniques to optimise drawing performance.
- **Caching:** Used server-side caching to avoid relatively expensive DB calls.
- **Component Design:** Gained experience designing modular and reusable React components.
- **Real-Time Architecture:** Understood how to structure backend logic for real-time multiplayer systems.

---
## Running the Server and Frontend

## Server
- Open a new terminal.

- Navigate to the `backend` directory:
```bash
cd Backend

- Run:
```bash
nodemon server.js

## FrontEnd
- Open a new terminal.

- Navigate to the `FrontEnd` directory:
```bash
cd FrontEnd

- Run:
```bash
npm run dev

---

## About the Author
- **Ankit Singh Chauhan:** [ankitsinghchauhan.in](https://ankitsinghchauhan.in).