GR1 - Task analysis
User analysis
There is basically just one user class, someone that plays card games. Interviewees all fell within this user class. They mentioned that they wanted an interface flexible enough to allow them to play more obscure games. They also wanted it to look clean, so that they mainly just see cards on a table and no other clutter. Following are some examples of people that would find MetaDeck useful.
Tim is a college student. He likes to play all sorts of card games. He plays cards with his friends every now and then, but they play different games all the time. Instead of having to use different sites for playing various card games, and having to maintain user accounts at each site and learning different interfaces, he could just use MetaDeck every time.
Jack is an Asian parent. He plays this Asian card game called tractor on weekends with his Asian parent buddies. He recently moved far away and can't play with them live anymore. They can't find any sites that support playing tractor online, but he knows that he can always use MetaDeck.
Ashey is a high school student. She and her friends invented this new card game, and they want to play it online. They don't know how to program, so they can't make their own multiplayer card game client for this new game. Fortunately, they can use MetaDeck to play this game.
Task analysis
Task: Start a new round
Goal: Clean up from previous round and start a fresh round
Subtasks:
- Collect all the cards into one stack
- Shuffle the stack
- Deal cards by splitting the stack into different stacks
- Give the stacks to the players
Task: Communication
Goal: Convey information between players
Subtasks:
- Select which users to send message to
- Enter and send the message
Notes: For now, we'll probably stick with a chatbox panel for simplicity. Multiple interviewees mentioned that built-in voice chat would be highly desirable.
Task: Play a card
Goal: Move a card from your hand onto the table
Subtasks:
- Select a card or multiple cards from your hand
- Move the cards onto the appropriate stack of the table
Notes: A related task is moving a card from a stack to another task, or merging two stacks.
Task: Update the score
Goal: Keep the score consistently updated
Subtasks:
- Select player's score to change
- Input the new score
Notes: There will probably be a minimizable scoreboard panel in the corner of the interface.
Task: Change games
Goal: Clean up table and set up deck for a new type of game
Subtask:
- Clear the table
- Possibly change the deck composition (# of decks, add jokers, etc)
Domain analysis
Entities
Player: A person connected to the server. Has a name, a seat position, and a score for the current game.
Hand: Represents the cards that the player is holding. Each player has exactly one hand. Only he can see the contents of his hand, others just see how many cards he is holding.
Stack: A collection of cards, representing a physical stack of cards on the table. Stacks can be rotated different ways on the table, and can be face up or face down. Hands are special instances of stacks.
Card: Represents a card in the deck. Has a number and suit, possibly a joker. Stacks contain a positive number of cards.
1 Comment
Mason Tang
Have you tried to see how your proposed system would actually handle a few real-world card games? It's a neat idea, I'm just worried that it will be difficult to capture all of the potential rules of many card games. Have you considered making this a mobile application?