Category: Design

The State of Game Center

My happy blog post on SmartOthello for Mac conveniently skipped my journey through Game Center purgatory. While profile pictures are back, Apple is still not giving Game Center proper attention. I’ve been busy submitting bugs to Feedback Assistant – here’s a sampling:

  • There is still no way to get notified of invitations without polling (FB5990491).
  • On the Mac, turn notifications are not received (FB7659591).
  • On the Mac, there’s no way to edit your Game Center profile picture (FB7667313).

When you try to start a Game Center game on the Mac, you get the following cut off dialog (FB7668604):

mac-game-center-cut-off

(Yes, that’s the actual amount of white space.) Luckily, you can resize it to reveal some more buttons:

mac-game-center-revealed

The worst issue right now is that Apple has deprecated GKPlayer.playerID, and tells developers to use teamPlayerID or gamePlayerID instead. However, those simply don’t work (FB7662712), as the IDs keep changing even within a single game, making it impossible to e.g. cache profile images, never mind reconcile locally stored games with Game Center data. If GKPlayer.playerID gets removed in iOS 14 without fixing teamPlayerID, I will have to pull SmartOthello from the App Store.

How to Play With Friends

The whole process of finding friends to play with is way too convoluted. I’ve improved the UI in SmartOthello 3.0 to make it easy to start a game with somebody you recently played with. However, the process to first find somebody to play with is kafkaesque:

1. Tap on New Game and choose Game Center at the top.

start-game-center-game

2. SmartOthello lists recent opponents, and you can easily start a game with them. To play with anybody else, tap on Invite Friends.

after-invite-friends-long

3. This leads to a screen that has two buttons: Invite Friends and Play Now. While Invite Friends is just lightly outlined and you’re tempted to tap the boldly emphasized Play Now, that would just try to match you with somebody else who’s looking for a random opponent right then, which only really works if the app is much more popular than SmartOthello. So don’t get stuck in limbo; tap Invite Friends.

after-second-invite-friends

4. This brings you to an iMessage screen where you can send an invitation to a contact. However, the instruction “Tap + for Friends and more” is trying to give you a clue that you should tap on the ⊕ button, and then you’re finally presented with the right choices: play with contacts, friends, nearby players, or players you recently played with.

final-game-center-screen

This last screen makes sense – Apple needs to give developers a way to take users directly to that screen (FB7672633). Game Center matching was much easier when there was a Game Center app; Apple really went off-track when they decided that matching should go through iMessage.

I hope this helps others navigate through Game Center issues with turn-based games. If I’m wrong about any of these, I’d love to know! Hopefully, Apple can address these issues in iOS 14 and give both players and developers a better experience with Game Center.

Unknown Kifu Features

It’s rewarding to see many go players at the Go Congress use SmartGo Kifu, and invaluable to be able to provide support in person. Most questions are due to users not being aware of existing features. I will keep improving the user interface to make features easier to find and use; meanwhile, here are answers to questions that came up several times during the week.

Edit Game Info

If you misspelled your opponent’s name, or started recording a game without entering the player names, tap on the title of the game above the board (with the little orange i) to see the game info, then tap on Edit to add or change any of the game info attributes.

Edit game info

Joseki Matching

Many players know about joseki matching, but may not be aware they can match a whole side of the board. To see a list of the games that match, tap on the little orange > in the joseki result (bottom left below the board).

Joseki matching

Rotate to Opponent’s View

If you get a game record from your opponent, it’s probably upside down. You can rotate a game in My Games by rotating two fingers around the center of the board. It rotates by 90 degrees only, so you have to rotate twice, and it’s a bit fiddly, but at least it’s possible. (This will be much improved in a future version, showing the following panel of rotation options.)

Rotation panel

Guess Next Move

Pick a game by a pro you like, turn on Guess Move, then try to figure out where the pro played. SmartGo Kifu gives you clues: right area but wrong move, right move but wrong timing, or the wrong area entirely. This also turns out to be great bar entertainment for several people, as we proved at the Green Leafe last night.

Guess next move

Double-Tap to Zoom

Such a simple feature: double-tap to zoom in on the Go board. On the iPhone, it conveniently zooms to use the full height available. So why does SmartGo Kifu have a setting to turn it off?

Double tap to zoom

When SmartGo detects a tap on the board, your intent is not clear: do you plan to play a move, or is there a second tap coming? On iOS you can tell the system to disambiguate between the two gestures – for the single-tap to succeed, the double-tap has to fail:

singleTapGesture.require(toFail: doubleTapGesture)

The price you pay is that move entry is delayed by a quarter of a second. Thus that setting gives you a choice: convenient zooming or faster move entry. Not a good choice. (But at least you now know how to speed up move entry.)

There’s a better way to solve this: always play the move right away. Then if it turns out to be the first tap in a double-tap, undo the move and zoom the board instead. Fast move entry and zoom, no setting needed. However, that means being able to cleanly undo the move (and anything else that a tap on the board might do), and in SmartGo Kifu, that would be harder to implement than what the feature is worth.

Rewriting SmartGo in Swift is still work in progress; a long journey. But thanks to less technical debt, I’m able to add features like undo, and thus make move input fast while still allowing you to double-tap. Getting rid of a confusing setting always makes me happy.

SmartOthello

My Othello app is now available in the App Store — check it out at smartothello.com. Even if you’re not interested in Othello/Reversi, it will give you an idea of the future direction of my Go apps. And next time you play Go and somebody asks whether that’s Othello, at least now you have an app you can recommend.

SmartOthello is 100% Swift: it was a perfect way to learn Swift while building up code I can reuse for my Go apps. It’s also my first app to support Game Center, including achievements and leaderboards. My experience with Swift has been really good; my experience with Game Center less so.

SmartOthello is also a reboot in terms of user interface. The clean design that Scott Jensen came up with for Othello will definitely influence the Swift version of SmartGo. For example, the games list sliding in from the left leaves more room for the board on the iPad; the ability to turn off the status bar again provides more room and less distraction.

The tutorial in SmartGo Player uses Go Books under the hood, so the Swift version of Go Books is up next. Yes, this conversion is taking a while, but I’m planning to live with these apps for many more years. After launching my first Swift app, I’m more convinced than ever that the investment is worth it.

Read at Night

Go Books on iOS now includes dark gray and black backgrounds for better reading at night. That was not a feature I saw a need for myself, but I started getting a number of requests for this, and it’s clearly a significant issue for many. Whenever you want to read Go books, I want to encourage that, whether it’s day or night.

Blog night mode

Please let me know how this new night mode works for you. So far, I have not changed the diagrams — do you also need the board to be darker?

Bonus feature: You can now choose three-column layout on the iPad. Probably not that useful, which is why I had not enabled it before, but I think you’re going to love three or even four columns on the upcoming iPad Pro. (The Mac version of Go Books already supports four-column layout.)