Skip to content

Latest commit

 

History

History
177 lines (141 loc) · 6.12 KB

design.org

File metadata and controls

177 lines (141 loc) · 6.12 KB

Extra packages worth having

One Round Model: Embedded Responses

Session variable holds current game. For now, just grabs the only game.

Note: check out these useful array operations:

Games:

  • _id (autogenerated)
  • players (array of user ids)
  • turn: null if not begun or turn ID

Turns:

  • _id (autogenerated)
  • round (number)
  • judgeId (player id)
  • challenge (null/non-present or completed challenge as string)
  • displayOrder (array of player IDs; hidable!)
  • responses (array of {text: null or text, done: null/Boolean})
  • votes (array of null or # (displayOrder) of length 6; null if not cast)
  • done (null/non-present/false or true)

One Round Model

Actual design used:

Player:

  • _id (Meteor.userId())

Turns (exactly 1 row):

  • _id (autogenerated)
  • judgeId (player id)
  • challenge (null/non-present or completed challenge as string)
  • isDoneVote (null/non-present/false or true)

Responses:

  • _id (Meteor.userId() of respondent)
  • text (null or text of response)
  • votes (number of votes given to this response)
  • isSubmitted (whether complete)

Original design:

Player:

  • id: id
  • order: order #

Turn:

  • judge: player id
  • challenge: prompt (null -> none yet)
  • responses: 2+ responses (not present -> none yet; else, look at isSubmitted)
  • isVotingComplete: is voting complete?

Response:

  • judge: player id (judge)
  • respondent: player id (respondent)
  • judgingOrder: judging order #
  • response: response text (null or row is not present? -> none yet)
  • votes: vote count
  • isSubmitted: is submitted?

Interface:

Start: “Join” button; first to join becomes the owner/judge

Judge:

  • If no challenge: create challenge interface DONE: makeChallenge
  • If not all responses back: pending interface DONE: judgeAwaitsResponses
  • If all responses back: voting interface DONE: voteOnResponses
  • If voting complete: display end-game DONE: endGame

Player:

  • If no challenge: pending screen DONE: wait
  • If voting is not complete:
    • Show the challenge
    • Ask for a response (unsubmit if edit)
    • Submit button
    • Submitted: [# submitted]/[# players]
  • If voting is complete: display end-game

Pass at Big Model

Game:

  • _id
  • name
  • password (clear!)
  • expected number of players
  • 3+ players (until = expected number, pre-game; then set order and current turn)
  • vote count
  • win threshold
  • turn (current turn _id; also encodes round # and judge ID)
  • creation time
  • last update time

Player:

  • id
  • name

GamePerPlayer:

  • _id = { game: game _id, player: player _id }
  • order #
  • score (cache; recoverable from other records)

Turn:

  • _id = { game: game _id, round: #, judge: player _id}
  • prompt (null -> none yet)
  • creation time
  • last update time
  • deadline time (or none; only for responses? or judge loses 6 points if misses deadline?)

Response:

  • id = { turn: turn _id (includes judge!), player: player _id}
  • response (non-null)
  • order #
  • vote count
  • submitted?
  • creation time
  • last update time, response
  • last update time, vote

Interface:

Start: tabbed pane of options:

  • join game
  • create game
  • watch game

Join game: List of games with expected number of players and players already joined. Plus special parameters. Search box to search by various things.

Create game: Basic form with number of slots, etc. for initial configuration. Once created, goes in the table.

Watch game: DON’T BOTHER until later.

Note: displaying who has responded interacts badly with the timeout. In that case, would want to display how many have responded.

Once in a game, for the judge: At the top, show the round # and player #.

Below:

Before prompt created
A design box for the challenge with a “Send challenge!” button at bottom.
Before all responses received
The challenge and a row of status indicators for the players, grayed if they haven’t gone yet.
After all responses received
The challenge and a scrollable (swipeable) display of responses; tapping one pops it out for full visibility? Drag gold stars onto the submissions. Initially have “vote count” stars. Also drag back off.
After votes distributed, if another turn
everyone but next judge sees the challenge, the scrollable display of responses (now with identities overlaid) and the gold stars for votes; next judge sees the start above

Non-judge, same but:

Before prompt created
just the judge’s icon, greyed out below
Before all responses received
response design area and submit button, once submitted, becomes withdraw submission button; also display at bottom showing who has responded (your own slot is your submit button?)
After all responses received
The challenge and a scrollable (swipeable) display of responses (randomly reordered); tapping one pops it out for full visibility? Live feed of gold stars?

End game:

  • Show round #, scrolling list of challenges (clickable to view the individual challenges), and list of players/scores