KeepScore version 1.2: more style, more substance

KeepScore v1.2

I had always thought of KeepScore as a fairly simple app. Functional, yes. But beautiful? Meh.

It’s a counting app. Counting apps only have to do one thing right, and that’s count. This is not brain surgery, people. Just keep it simple, and you’re already 95% of the way there.

A few weeks ago, though, I decided to make KeepScore my guinea pig for trying out some new design elements from the “Holo” theme, introduced in Android 3.0. At the same time, I also added some fit-and-finish features that were sorely needed, giving the app a much more coherent feel.

The result is KeepScore version 1.2, probably the biggest update I’ve ever written for the app. It looks and functions so differently now, I feel like I barely recognize my own app.

What I like most about this update, though, is that it adds a fresh coat of paint without subtracting anything from the usability. In fact, I think KeepScore is actually much easier to use than it was before, to the point where I feel a little embarrassed for having bragged about it in previous posts.

New home screen

The new home screen is a design I’ve been wanting to do for awhile. Here’s a side-by-side comparison of the old and new looks:

Out with the old, in with the new.

The new design basically takes the “Load Game” screen and transplants it onto the welcome screen. I find it’s a huge improvement. There was a ton of wasted space with the old design, and plus it took two clicks to get to your saved games. Now everything the user needs is front and center, without sacrificing any usability or app branding.

I also wanted to make sure that the new design wasn’t so cluttered that it would confuse first-time users. Their experience is still pretty streamlined: there’s a big “New Game” button the size of a barn that you can’t possibly miss.

Big gray squares. Your thumb is drawn to them.

The new home screen also makes use of the “Action Bar” paradigm, which was introduced in Android 3.0 and back-ported thanks to the wonderful Action Bar Sherlock library.

The in-game view

In-game, not a whole lot has changed. If it ain’t broke, why fix it? All I added was a very small graphical flourish:

Never change, KeepScore. Never change.

Did ya miss it? The last score in the score history now has a “fade-out” gradient, to indicate that the list has been cut off at the bottom.

This is to solve a common problem I heard from users, which is that they could never remember whether the list was ordered top-down or bottom-up. Hell, I kept forgetting myself! So hopefully this subtle change will make that clearer.

Rematch button

This is something I struggled with for a long time. In early versions of KeepScore, I had a “Reset” button, which prompted the user with “Overwrite game or start new game with same players?” Knowing that users don’t read anything, though, I was unsatisfied with this dialog.

The old, confusing dialog.

In later versions, I replaced it with “Reset” and “Copy Game”:

“Reset” and “Copy Game” buttons.

Now I’ve combined them both into “Rematch”:

New “Rematch” button.

What I realized about “Reset” and “Copy Game” is that they’re an inelegant solution to a common problem. 99% of the time, if you’re still using the app after the game is over, it’s because you want to start a new game with the same players. However, I didn’t want users to overwrite their old scores, because then they’d lose all their history from the previous game. Hence the option of copying the game before resetting it.

“Rematch” captures this concept much more succinctly than “Copy Game” and “Reset.” And plus, it makes it more difficult for users to shoot themselves in the foot, i.e. by overwriting their scores.

Unfortunately I can’t take the credit for this idea. I borrowed it from Rounds, which is a pretty slick round-based score keeper that was actually originally built on KeepScore’s source code. When I saw the “Rematch” button in that app, I slapped myself on the forehead and wondered how I’d never thought of it.

Edit Players

This is a pretty nifty new feature. In the previous versions, I had an “Add Player” button and a “Shuffle” button, but there was no way to manually reorder players or delete players.

Every day I’m shuffling, and adding, players.

Now all of that is handled in a separate “Edit Players” screen, which makes it a breeze to change players mid-game. You can even touch and drag to get the order exactly right.

Clearly, Storm Eagle should go after Mega Man.

This screen also makes it easier to change players’ names. Previously, the only way to do that was to long-press on a player’s name, which is kind of low on discoverability. But hopefully the button with the pencil icon is a lot easier to figure out.

A tip of my hat goes to Carl Bauer for the drag-and-drop list implementation.

History chart

One occasionally-requested feature was a line chart to show the players’ scores over time. Well, ask and ye shall receive:

Fact: nerds love data. And gamers are all nerds.

Players’ scores are on the Y axis, rounds on the X axis. It’s probably useless for any non-round-based game, but kind of neat nonetheless.

I realize the history chart is probably the most unpolished out of the new visual features I added. The colors are pretty bland, and it’s all very MS Paint-esque, because Android has no native graphing library, so I had to whip this up from scratch. But I’m not too concerned, since most people don’t bother going into the History anyway. And for those that do, I think it’s a nice little feature.

Other new features

Besides all the UI changes, I also added some new functionality:

  • Backup/restore. Back up your games to an XML file on USB storage, and load them later. Duplicates are handled automatically based on unique game IDs.
  • Undo/redo. Self-explanatory. Any action in-game can be undone or redone, i.e. scores subtracted, scores added, etc.
  • Better German translations. Germany is the Mecca of modern-day board gaming, so this has got to be worth something. The app is already available in French and Japanese.
  • Dropped support for pre-Eclair devices. Android 1.5 and 1.6 only account for 0.5% of the user base, and the new backup/restore feature required some XML libraries from Eclair. Sorry, Cupcake and Donut! You were delicious while you lasted.

So there you have it. KeepScore v1.2 has a fresh new look, a better UI, and it’s still free and open-source. So go grab it from the Google Play Store!

14 responses to this post.

  1. Hi! I discovered your app yesterday just before playing Scrabble. It is really great as the game manufacturer only added a counter for the points in its travel edition of the game. It was great fun concentration on the letters as each player was able to records their own points on the app. Well done!

    If you have some more spare time for improvement I’d like to see a dark theme for the GUI. The white background is very bright.

    Many thanks and kind regards from Dresden, Germany.

    P.S.: Btw, why don’t you have a flattr.com button? For me this is a great way for little donations.

    Reply

    • Actually, there is a dark theme! Just go under “Settings” and change the “Color Scheme” from Light to Dark. Most likely you missed it because there was a mistake in the German translation (which I will fix in the next release). :P

      I’ve never heard of flattr before, but I’ll look into it! Thanks for the tip. :)

      Reply

  2. Posted by Paul on October 24, 2012 at 9:04 PM

    Great app. I needed a scoring app during Essen last week and this was pretty much spot on.

    The two features which would have made it perfect would be making it possible to store the name of the game, and allowing a comment to be entered. I worked around the former by creating a dummy player with the game name but couldn’t see any way to add a note.

    Anyway, many thanks for an excellent application.

    Reply

    • You can actually name a game by long-pressing on the game and choosing “Enter Game Name.” This could work for comments as well, since you can put whatever text you want in there. Let me know if that works for you!

      Reply

      • Posted by Paul on October 26, 2012 at 12:04 AM

        How did I miss that?! Thanks, that sorts that one out.

        It more or less covers commenting too, though I’ll mention what I wanted to use a comment for in case I’ve missed another feature. The aim was to store a rating for the game for each player. I can pretty much do exactly this another way, by editing the player name and appending their rating to it. The only downside of that is that I end up with multiple versions of the player name on the player name drop down – eg Bob (7), Bob (9) etc. Have I missed a smarter way of doing this?

      • No problem. It’s kind of a “hidden” feature, so you weren’t the only one who didn’t find it.

        As for the ratings, I assume you and your friends are trying out lots of board games, and then you give ratings afterwards so you can remember whether you liked them or not? This sounds a little bit out of KeepScore’s scope, so actually I’d recommend you use Google Docs for that instead. That way you can have a nice spreadsheet showing what ratings you gave for which games. :)

      • I would agree, it’s completely out of scope for a score keeping application. Just wanted to check I hadn’t missed another hidden feature.

        No matter – I can append it to the game name, and that lets me keep everything in one place.

  3. Posted by beewee on November 11, 2012 at 5:31 PM

    Hi there!
    Just discovered your app and it’s spot on… Thanks for that!
    There’s just a thing I didn’t manage to do with it. Is there a way to add a score of zero to a player? It might seem weird but it makes sense in turn-based games to avoid shifts in history… The screenshots on this post seem to imply it’s possible to do so (a +0 showing in the previous turns scores) but I didn’t manage to do so…

    Reply

    • Absolutely you can! There are two ways: either 1) long-press the score history, which will give you the option to “add zero”, or 2) long-press the + or – button, and then press OK without changing the value, which will add zero.

      I realize this is sort of a “hidden” feature (and hence, it does not exist), but it’s all related to the general problem of KeepScore not having a good interface for round-based games (see https://github.com/nolanlawson/KeepScore/issues/31). This is something I hope to resolve in the future. Thanks for your question!

      Reply

      • Posted by beewee on November 17, 2012 at 12:00 PM

        Thanks for the answer!
        That does the trick… This and the fact that you can delete the last entry in history by long clicking on it which I discovered at the same time ;-)
        Now I believe with those infos I’m all set for every kind of games (turn based or not…)

  4. Posted by Stefan on December 25, 2012 at 6:43 PM

    Hi Nolan
    Great app. Nice design.
    There is one little thing I’m missing while using last time.
    I would appreciate to have a ranking possibility.
    We started to play a game not knowing how many rounds we will play. After playing 4 rounds we decided to finish. So I wanted to see the ranking but could not see it on one screen.
    It wold be nice to have an option like “by player ” with the final result ordered by points.
    Thanks.
    Stefan

    Reply

    • Hi Stefan,

      Currently there’s no explicit ranking shown. But I’m working on an “export to spreadsheet” option, so that you can import your scores into Excel and do whatever kind of data manipulation or graphing that you want. Let me know if that provides the functionality you would like. :)

      Cheers,
      Nolan

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: