Inspiration
We all hate waiting and it is even worse if you have nothing to do. qGame should help to blow away the boredom and get closer together with the people waiting around you.
What it does
An organizer sets up a game (e.g. vBirds) and all the participants play all together in that game by sharing the control on a slot based schema. As it works as web extension, any browser game with up to 4 input keys can be played.
How I built it
Backend
The backend is written in golang as the fast processing of the web sockets messages is essential for the fun of qGame.
Frontend
Frontend is vanilla JavaScript in two parts: 1) Control app for the players (hackero.uber.space/qGame](http://hackero.uber.space/qGame)) 2) A chrome web extension for the game host
Challenges I ran into
1) This is my first bigger chrome web extension. The logic of the manifest is kinda hard to get. 2) Game interactions being to slow on mobile 3) Keeping information about the open web socket connections in the server for giving certain clients the control over the game
Accomplishments that I'm proud of
My basic idea was only to build a multiplayer flappy birds. After finishing that I did not stop, but tried to think the idea even further. With the chrome web extension there are endless game opportunities for qGame, not only one as in the beginning of my process.
What I learned
1) Use 'touchstart' listener instead of 'click' listener as they trigger a lot faster 2) Animations are nice, but can slow down your app (that's why I removed them again) 3) In-App message queues via golang channels 4) Programmatically triggering keyboard events
What's next for qGame
As I see quite some potential in qGame I want to continue working on it and publish the web extension in the chrome store. For being able to handle different user groups a game session system needs to be added to qGame. And I should get a good designer to work over the frontend :D
Try it!
Come around for the demo and play with cooperative with your friends. As the server currently has only one session, the web extension can not yet be publicly released.
Built With
- chrome-webextension
- go
- golang
- javascript
- websockets
Log in or sign up for Devpost to join the conversation.