- A game is a story
- A story is a succession of turns
- A turn is a succession of player rounds
- The story creator is the administrator
- When a story is created, it is in a non-started state
- The administrator should share the story url to invite the players
- The player should register to the story to be authorized to play
- The administrator is able to reorder (eventually randomly) players to define the turn order
- The administrator is able to start a story
- When administrator starts a story, its state is started
- Player can play when it is his turn by pushing a contribution
- A contribution is a pair of head and tail strings
- The head is private and the tail is given to the next player
- The next player is able to see the ptail (previous tail) before playing
- At every moment (?), a player can update his name and color
- The administrator is able to stop a story at every moment (?)
- The administrator is able to skip a player round
- The administrator is able to ban a player (?)
- When story is stopped, all contribution in the order is published to create the final story content
It is required for backend AND frontend
cd commonlib
npm run build
Do not forget to compile CadexLib before use frontend
cd frontend
npm install
npm run serve
npm run build
npm run lint
Do not forget to compile CadexLib before use frontend
cd backend
Run functions (backend logic) and a local database
firebase emulators:start --only "functions,database"
npm run build
- updateStoryState: the state function of the game
- storyUpdated: copy all "public" (story) data into "private" (player) space
- newStory: create a new story, set the current user as the administrator
- startStory: start the story
- closeStory: finalize the story
- newPlayer: player registration
- play: player push new contribution
- updatePlayer: player update its personnal data (name & color)
- Bug with Babel / ESlint with module "links": https://cli.vuejs.org/guide/troubleshooting.html#symbolic-links-in-node-modules