Monday, March 12, 2007

After a long hiatus, Jeff and I finally updated Vocabulicious last week. We're pretty excited about this release - 15 months in, the game has left its bare-bones roots behind and fast approaches "casual game" status. (Ooooo.) A new feature in this release provided an opportunity to revisit the player's workflow, so that's what I'm going to talk about.

The initial version of the game had no high score table, so the workflow diagram looked like this:



The user chose either a timed or untimed game, and then played the chosen game until he or she lost (failed to finish the round). Upon losing, the game cycled back to the game-type selection screen.

1.03 added a high-score list for timed mode, which necessitated the ability to enter a name when a high score was achieved:



To reduce the hits to Jeff's database, the game remembered the lowest score on the high-score list upon starting a new game, and it determined whether or not a high score was achieved by comparing to that stored value. If the player's score was higher than the stored value, the game prompted the user to enter his or her name and upload the score. This system worked fairly well, but it had a few drawbacks that degraded the experience over time. First of all, the name entry prompt wasn't really in the ideal place for a game that involves rapid typing: many users typed right over the "Congratulations! Enter your name" prompt, resulting in wrong names (or "Player", the default) being credited. This was certainly a problem, but another, larger one soon grew to overshadow it.

The original purpose of providing the public high-score board was to promote playing the game. Unfortunately, the naive method of simply listing the top ten highest scores ended up turning the list into the "top ten scores from the highest-scoring players" list. The high-score list became dominated by one or two names, and pretty well shut out everyone else.

After a robust debate, Jeff and I arrived at a solution: turn the "high-score" list into a "high-scoring player" list.



This list shows the ten highest scores achieved by different players. We think this display is much better: it'll be more resistant to abuse, as it incentivizes sticking with a single name, and it lessens the effect of a player who simply plays more rounds than anyone else.

Unfortunately, this approach also has a big workflow drawback, because it makes determining whether or not a player has achieved a high score more difficult. In order to know whether or not a player has broken a record, we need to know the player's name while he or she is playing. We need to associate a name with the player up-front.



We didn't want to do this, because it makes the game more difficult to just jump into. It makes it less "pick up and play." We've tried to mitigate this by saving the player's name, and just prompting for confirmation on subsequent startups. This makes the login procedure a one-click procedure for repeat players, but it's still too bad. The alternative, using the saved name by default and just allowing the player to edit the saved name, may end up being the smarter move in the long run. Time will tell.

This approach hasn't been all bad news, though. For one, we no longer need to prompt for name entry when a player beats his or her record – since we already know the player's name, we can just go ahead and upload the score. This makes the end-game scenario simpler, and also decreases the likelihood that a wrong name will be entered by accident. That's nice.

This approach also allows us to keep track of a player's personal best, even if he or she isn't on the high-score list. By knowing the player's name on startup, Vocabulicious can always provide the highest score the player has achieved. We think this is a nice touch.

And finally, this approach hopefully lets us avoid a username/password authentication system (which causes all sorts of headaches, and adds all sorts of complexity), because logging in under another player's name doesn't allow an attacker to do any harm. Worst case: an attacker can increase a victim's high score. The horror.


2 Comments:

At 3:02 PM, Blogger Mitch Krpata said...

I think I'd be pissed if somebody inflated my score. Well, I wouldn't, because I am unscrupulous, but I can imagine some people not wanting to take the credit. I guess in the sense that someone is unlikely to want to boost another's score, it makes sense.

 
At 9:09 PM, Blogger avixe said...

That's true, and it is a violation of a person's implicit ownership of the name they've been working under. We're not really as happy with this state of affairs as it sounds, but we really don't want to start a username-password registration system. Something in the middle would be ideal.

 

Post a Comment

<< Home