I'm trying to find all the different ways I can teach a user the rules of a card game and considering which is the best way to do this.
I am building an application that allows users to play a number of card games with friends, with strangers or against the computer. The interface is the same for each card game but, obviously, the rules of each game are different.
Assuming the users are familiar with the how to use the application itself (i.e they know how to play cards, how to add new players etc) how should I show users the rules to each specific card game?
Here are some of the options I've considered so far:
1. Step-by-step walk through
download bmml source – Wireframes created with Balsamiq Mockups
My first thought is to take users though a step-by-step walkthrough of the rules showing some examples along the way. This is a bit slow and takes users away from a fully interactive interface. This could be quite slow and only be marginally better than a page of written instructions - I can imagine a lot of users skim reading and clicking through next rather quickly.
2. Tooltips
Users could go through the same experience as the walk through but inside a real game. The advantage would be seeing real life examples. The big downside of this is that other users would have to wait a lot longer while the learner reads the tooltips (perhaps overcome by playing first game with bots). Also, if this were using real game logic, it would be much harder to explain rules about rare or random events that may not present themselves during the game.
3. Trial and Error
The harsh approach would be just to explain rules only when users break that rule. This would mean keen users can jump straight in and only be interrupted when they can't perform specific actions. I'm worried this may be frustrating without any initial overview. Perhaps it could work if accompanied by a written set of rules. It also has similar problems to 2.
I'm looking for more ideas/suggestions since all of the above seem to each have their own disadvantages.
Are there any options I haven't considered? Is there an augmentation of one of these ideas which would make it better?