I Like Programming

Building a Good New User Experience for Elemental Chess

People don’t like to log in to things until they’re convinced it’s worth it.  That’s a given.  My first thought was to just make a sandbox mode for my game, where you can play it purely on the client side, with a friend or against the computer.  If you wanted to play against other players online, you’d need to log in with an openid provider.

I showed off my new sandbox mode at Google IO.  It didn’t have AI or checkmate detection yet, since I couldn’t decide whether to implement that on the client side or the server side.  Google Web Toolkit seems like a nice solution for client/server code sharing that I will definitely pursue.  But then I thought, I can solve this code sharing problem and provide a better user experience, if I get a little more ambitious with my user account handling.  I’ll let users do anything they want except hang onto their history if they’re not logged in.

When a user hits the site without a user in their session cookie, I’ll create a brand new user for them with a randomized name (and plenty of invitation to change it).  This is a full-featured user, with one caveat: it can expire, at about the time their cookie-based session should.  To keep it from expiring, all the user has to do is associate it with an OpenID.  This is exactly the same thing as logging in.

Okay, but what if a lazy user who already has a saved account comes along and plays a few games without logging in?  Easy.  When they eventually do log in, we can delete their temporary account and replace every instance of it with the real one!  Talk about awesome.

Since I’m totally overloading my Login button to function as “Login”, “Register”, “Save”, and “Merge Accounts”, I think it’s appropriate to call it something else.  “Recognize Me” sounds pretty good!