Mutility 1.4.0 - Beta 1

When I started on 1.4.0, the headline feature was supposed to be the addition of counters. However, so many other things came up while overhauling the interface code to support them that 1.4.0 will not include them. In fact, after nearly a month of work I still haven't settled on exactly how I'm going to implement them in the UI (although the database now supports them). More on that in a later post; let's talk about what's new in Beta 1, which I'm releasing tonight to beta testers.

Bug Fixes

  • Discovered by Tommy V: 3 player layout had issues when the status bar was visible.
  • Discovered by Tommy V: “In a few layouts, the plus side of the player’s background grows by a few pixels whenever you are subtracting life. It happens for any number of players for any layout that has the text rotated putting the baseline parallel with the side of the phone.
  • In some circumstances the timer could get stuck in a paused state, but show that it’s running. Although it could be reset, the pause button didn’t toggle when tapped.
  • With three players in certain orientations, the layout did not completely fill the screen.
  • Names and life totals are scaled to fit correctly when they get long, instead of being cut off.
  • Life totals shown in the player customization and orientation selection cells reverted back to their original values after a starting life change if you scrolled all the way to the bottom then back up.

User Facing Improvements

  • New option to change the life increment during a tap-and-hold (1 or 5)
  • Brought back two finger tap for lifelink /extort option in settings
    • Works with 2-player games only, off by default
    • Known issue with Beta 1: Sometimes during a two-finger tap, the player view will look like it's not being pressed anymore. Working on that.
    • Known issue with Beta 1: The game history does not show that a particular life transaction was lifelink, but the player life numbers it shows are correct
  • Resetting the current game does not reset the timer anymore by default
    • A new option to override this is included in settings
  • New dice section in settings
    • A note explaining that the dice results are actually random, since several people have commented that they don't trust app dice
    • An option to turn off tie skipping when performing a dice roll
  • New color option: Pink
  • Fun animations occur when customizing player colors and orientations
  • Life totals are centered vertically when player names are left blank
  • New custom animated transitions to settings & history screens
  • Unified look of history and settings navigation bars
    • Blue background with white content, iOS 7 style text, status bar always showing
  • Moved to toggle switches instead of text-heavy segmented controls in settings
  • Removed circle around +/- watermarks and made them slightly smaller in an effort to make them look less like buttons (folks are always trying to tap on them directly)
  • Numerous other little UI tweaks

Development Notes

Although there aren't many big new features in 1.4.0, the changes to the codebase were extreme. With each day that goes by I learn so much more about developing for this platform, and along with that comes a big pile of technical debt. I had to gut most of the interface code and rebuild it the right way (note: the right way is what I currently think is the right way, and I'm sure I'll be embarrassed about in just a few weeks as usual).

The most important change that I made was to unify the three separate classes I had built for displaying player views (the rounded rectangles all over that display a player's life/name/color, or represent that in an icon in settings or the history) into one, well constructed and reusable class. In doing so, I rebuilt it from scratch using Core Animation layers instead of UIViews, which gave me much more flexibility in controlling animations and the placement of UI elements. Getting this right is critical to how I implement counters, so it had to be done first.

What's Coming in the Next Beta?

  • Timer usability improvements
    • After a great discussion with @brandonadamb, it became clear that I didn't get the timer usage flow right (even though I thought about it quite a bit). I think we've figured it out, and that's the next thing to straighten out.
  • Update history table cells in preparation for counters and include lifelink

Alright, that's enough blogging. Now, back to work.