Skip to content

Latest commit

 

History

History
113 lines (66 loc) · 2.95 KB

README.md

File metadata and controls

113 lines (66 loc) · 2.95 KB

P'tit bac

This software is a VueJS + websockets implementation of a multiplayer “Petit Bac” game (also “Jeu du Baccalauréat”), sometimes translated as Tutti Frutti or Stadt Land Fluss, and close to Hasbro's Scattergories™.

It uses VueJS and Buefy for the (static) front-end, and a Node websocket server for the backend. The software is currently only available in French and for Latin alphabets, but this may evolve.

No account required: go to the homepage, bac.morel.games, enter your pseudonym, and play!

Project folders

commons

Contains shared and tested code for the backend and the frontend, things like answers check and votes calculations.

back

Contains the backend websocket server, handling games logic and synchronization.

front

Contains the JS frontend the users use to play the game.

Development installation

First, install all dependencies:

$ make install

Then on one terminal, start the backend server:

$ make start-back

And on another, start the front build development watchdog:

$ make watch-front

You can also start both at the same time, but you'll have to restart both if you work on the server:

$ make start

…or the Vue GUI:

$ make ui

If something fail somewhere, first, ensure you're running the correct version of NodeJS:

$ nvm use

You may have to install Node 16:

$ nvm install 16

To lint the front-end code, use:

$ make lint-front

Production deployment

Same as for the development, install all dependencies:

$ make install

Same as above, you may have to install Node 10 before:

$ nvm install 10

Then build the front-end for production:

$ make build-front

This will put all the files onto the dist folder. This folder should be served by nginx or another.

Use systemd or another dæmon system to run the backend server—see the service file for systemd in the production folder. You can customize the internal port used by the WS server using the PITIT_BAC_WS_PORT environment variable.

A nginx configuration file is provided to serve the front and proxy the websocket requests to the backend, also in the production folder.

To update, re-build the front and restart the systemd service.

Munin

Some metrics are exposed under /munin/running_games and /munin/all_games. Check out the README of the munin-http module for documentation on how to install these into a Munin node.

References

To generate filtered alphabets with frequent letters only, we used a dataset containing words from the English Wiktionary and their languages built by Tiago Tresoldi.

Tiago Tresoldi, "Extracting translation data from the Wiktionary project," in Computer-Assisted Language Comparison in Practice, 11/06/2018, https://calc.hypotheses.org/?p=32.