https://github.com/dhruvikdonga/wordsbattle
text based games more to come
https://github.com/dhruvikdonga/wordsbattle
gameserver golang vuejs websocket
Last synced: about 1 year ago
JSON representation
text based games more to come
- Host: GitHub
- URL: https://github.com/dhruvikdonga/wordsbattle
- Owner: DhruvikDonga
- Created: 2023-05-06T04:04:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-01-06T13:05:26.000Z (over 2 years ago)
- Last Synced: 2024-09-07T08:00:12.143Z (almost 2 years ago)
- Topics: gameserver, golang, vuejs, websocket
- Language: Go
- Homepage: http://www.miniwordgames.com
- Size: 4.31 MB
- Stars: 23
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WordsBattle
MiniWordGames is an engaging multiplayer word game that combines the thrill of real-time battles with the challenge of word creation. This project utilizes Golang for the backend server, Vue.js for the frontend application, WebSocket for real-time communication, and Docker for easy deployment. The game is hosted under the domain [miniwordgames.com](http://miniwordgames.com).
## Tech Stack
    
## Features
- **Real-time Battles:** Challenge your friends or random opponents to fast-paced word battles.
- **WebSocket Integration:** Enjoy seamless and instant communication between players for a responsive gaming experience.
- **Golang Backend:** Utilizes the power of Golang to handle server-side logic efficiently.
- **Vue.js Frontend:** A dynamic and interactive user interface designed with Vue.js for a smooth gaming experience.
- **Dockerized Multistaged Deployment:** Easily deploy and manage the application using Docker containers which are small and lightweight.
## SimplySocket
Wordsbattle uses simplysocket package for better rooms,events and message [link](https://github.com/DhruvikDonga/simplysocket)
## Architecture
```mermaid
graph TD
A[Vue Client] --> B[Go Server]
B --> C[HTTP server]
B ==> D[Websocket client upgrader]
D ==> E[Concurrent client reader]
D --> F[Concurrent client writer]
B ==> G[Game Server]
G -.->|manage the rooms and clients
Manage the lobby for random rooms| H[Room Server id:-axGrw]
E -->|Usecases
Lobby server for random games connect two users create a room|G
G -->|Usecases
Give user notificatons incase of room is not connected due to reasons|F
B --> H
E ==>|send the data from client to room server| H
H ==> F
F ==>|Send data to all the clients in list| A
H <--> I[Game State Manager
- Game algorithm
- Send Game State to the
UI client on time ticker
- Process the data of the user
]
H -.->|Send game state data
<-ticker.C to all clients in a room|F
```
## Demo
https://youtu.be/-9HrFUU_jfs?si=RhmSZE6-uSq-6M8f
Live :- http://miniwordgames.com
## Project Setup
wordsbattle uses Docker for deployment and project creation you can find docker-compose.yaml in repo .
```
git clone git@github.com:DhruvikDonga/wordsbattle.git
cd miniwordgames
docker-compose build
docker-compose up
```
## Interested to contribute
Checkout this issue :- https://github.com/DhruvikDonga/wordsbattle/issues/12
Dev Branch :- https://github.com/DhruvikDonga/wordsbattle/tree/WB-8
## Authors
- [@Dhruvik D.](https://www.github.com/DhruvikDonga)