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!
Contains shared and tested code for the backend and the frontend, things like answers check and votes calculations.
Contains the backend websocket server, handling games logic and synchronization.
Contains the JS frontend the users use to play the game.
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
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.
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.
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.