PenQuiz is a trivia PvP game which is set in Antarctica. Game offers multiple playable characters with various abilities that help the player throughout the game. The game consists of 3 different stages with multiple rounds and requires 3 people per match to play. Capture territories from other players with engaging trivia questions. Scoring is based on the amount of territories and points you own.
This repository contains documentation and information regarding the PenQuiz project.
- Source
- Features
- How to play?
- Game rules
- Game characters
- Architecture
- Backend stack
- Frontend stack
- In game pictures
- Backend repo - https://github.com/BoostedPenguin/PenQuiz-Backend
- Frontend repo - https://github.com/BoostedPenguin/PenQuiz-Frontend
- Engaging trivia battles
- Multiple playable characters
- Public matchmaking
- Private lobbies
- Game bots
- Match history and statistics
- Submit your own questions to the game
- Login with Google account
- Admin panel
Visit https://penquiz.netlify.app/ and create a free to play account.
For android devices please download the app and install it from here.
Currently there are 4 playable characters in PenQuiz. Most of the characters are free to play, however some are premium and require to be purchased first before the user has the option to play them. Each champion has different in-game abilities.
Can remove 2 of the wrong answers in a multiple choice question. Ability can be used total of 3 times per game.
Can narrow down the number choice question answer. Ability can be used 3 times per game.
Can fortify his capital against attacks, increasing the amount of required consecutive wins for the enemy. Ability can be used a total of 2 times per game.
Has a permanent 10% score bonus multiplier when you capture a territory (Premium character)
The backend consists of 3 microservices which utilize RabbitMQ and GRPC to communicate with each other and send messages via SignalR to the frontend React Native application.
- NET 6
- SQL Server / PostgreSQL (Entity ORM)
- CockroachDB
- SignalR
- GRPC
- JWT Authentication
- RabbitMQ
- Docker
- Kubernetes
- Azure App Services
- React Native
- Expo SDK 44
- SignalR Client
- JWT Authentication
- Google auth
- Native-base
- Netlify
Embracing eventual consistency pattern, we use the RabbitMQ message bus to send messages between the microservices and we "pull" for any missing data whenever a microservice starts.