rant-dom

dominik wagner Powered by Obtvse

Steve's Void

The recent ousting of Scott Forstall struck me as first real post Steve Jobs job decision. That got me thinking: What is it what is really missing since Steve Jobs died? Apple is running like a good oiled machine, quick releases of solid to great hardware and software. Obviously the company is in good shape.

One obvious thing Apple lost with Scott Forstall is a keynote style different from Cook, Cue, Schiller (and Frederighi). I think Scott did manage to come as closely to Steve in terms of boldly presenting a product as anyone at Apple ever did. He is gone now and it will be interesting who is able to step up. I don't know if Jony Ive can or even wants to. The closest to Forstall I ever saw presenting on stage is Randy Ubillos, responsible for the iMovie rewrite and last seen presenting the iPhoto for iOS. However he is still far off.

However to me the biggest void is the lack of the customer perspective Steve Jobs brought to the table. He was constantly looking for solutions for every day life. The Digital Hub, iTunes, iLife, iPod, iTunes Music Store, iWork, iPhone, iPad: they all are great solutions to tasks that were hard before their inception. You could really tell that Steve had his mind set to solve and improve everyday life. Currently I don't see that drive in any of the executives at Apple. To me that drive is the essence of Apple's success: the drive to provide and sell innovative solutions to problems people have, even if big obstacles are in the way.

The music industry, telecommunication companies, media companies, adobe - none of them have their focus on the customer. Steve did, and more over, he was that customer. Apple's products excelled in the non-professional area. He owned that position and presented the case when it was needed. I don't see Tim Cook writing the open letter about Flash or DRM. None of the current executives have his proverbial Chutzpah which is so needed for that. I like nothing more to be proven wrong on this, but it is my deepest belief that this is a void left by Steve that needs to be filled by someone for Apple to stay a great company in the long run. And that someone doesn't exist yet. He or She needs to emerge, the sooner the better. Maybe Jony Ive can become this one, but my guess is that his industrial design backround is more of a hinderance than help for that.

The Times They Are a-Changin'

Apple PR:

Eddy Cue will take on the additional responsibility of Siri® and Maps, placing all of our online services in one group. This organization has overseen major successes such as the iTunes Store®, the App Store℠, the iBookstore℠ and iCloud®. This group has an excellent track record of building and strengthening Apple’s online services to meet and exceed the high expectations of our customers.

While the most discussed topic seems to be that Forstall is out, and Ive seems to be in, and wether this was about maps or not, I would argue that this part is the bigger issue: Networking and iCloud.

So far the track record is not good. iMessage, while not having totally broken down, took quite some time to work the way it was initially intended, and even now messages sometimes arrive out of order or not at all or not on all machines. Documents in the iCloud has some major conceptional design flaws, the biggest one being the non-existing of the slightest idea of sharing between people - while also suffering from implementation and execution difficulties. Ask anyone who used the non-file based iCloud variants in their Apps. And don't even get me started on Game Center and the networking behind it. All that LTE and fast WiFi is not enough to view a list of friends or high scores without a noticable delay. iTunes Match also took quite some time to work as advertised. Great idea, great concept, strange and diffuse execution. And even the App Store has had some major hiccups.

In a nutshell: I'm worried. Apple is putting networking and their iCloud services front and center in all their products. And while everything works more or less okay for the end user, there are flaws. Design flaws as well as technical flaws.

They could throw away .Mac, because it was an add on. They could also throw out mobile.me because it was essentially the same. They already can't kill iCloud anymore, it is here to stay. For better or worse.

Official App Pages

Tina Amini for Kotaku:

Letterpress may very well not be the only culprit in Game Center's bugginess, but it's certainly the focal point for some of Twitter's most vocal gaming crowd. One player even mentioned it on the app's official page:

So it has come to the point where news sites cite App Store comments and refer to the App Store landing page as the "App's official page". Troublesome.

Letterpress vs Lost Cities - turn based design study

You probably have spent the last 2 days playing the excellent Letterpress from @atebits. A truly fantastic, simple, minimalistic, quick to learn, quick to play wordgame. If not, then grab it now. You might also have noticed that the game is using the Game Center turn based API, which probably doesn't ring favorably in your ears. Why is that so you might ask, atebits does have significant experience with networking. That is because it's not about atebits, it is about Game Center, and the design limitations it sadly introduces.

Having done an implementation for our latest game Lost Cities I thought it is fun to compare the design decisions and directions of @lorenb vs ours. It might prove insightful to you and others, especially because turn based Game Center done right is really tough.

tl;dr: Game Center has major issues. Letterpress mostly did go one way where Lost Cities did go the other. Both valid. Both with drawbacks. Apple would need to address much of the issues, however, in my opinion going with your own server infastructure can significantly improve the user experience. Please go out and buy both games to give Apple some real usage of their turn based servers. Despite my bickering, they are still tons of fun to play.

Overall

Letterpress went with the direct online game only approach. No local games, just online. The game list is your central entry point for the app. Your running games are on the top with the games it is your turn in listed first. Games that ended are at the end of the list. Essentially the list the Game Center API is giving you, presented in a very nice custom view.

Lost Cities is more of a full fledged boardgame conversion. We have several AI opponents as well as online multiplayer. Therefore the game list itself is not on the first screen. However, we have a continue button showing the next game that it is your turn in on the apps main screen to give you direct access to the next game. If you go into the game list, we have 3 sections: Online Games, Local Games and Recently Finished Games. The running online games are more or less feed by the Game Center turn based API's games, the local games are stored seperately, and the Recently Finished Games are just stored on the device, not on Game Center anymore.

Why is that so? We decided early on that we wanted the experience to not depend on online connectivity, so we introduced a caching layer inbetween Game Center and us. This caching layer lets the user play when Game Center is still connecting, but we already have games downloaded. This caching layer also introduces quite a bit of complexity in handling all the necessary cases.

Detailed scenarios

Incoming Invitations

Letterpress: invitation notifications are shown as push notification even if the app is running. Even after that the game might not turn up in the game.

Lost Cities: the same.

Game Center Details: somebody decided that invitation pushes should appear always. But someone also did not make sure that the game the invitation is for is present in Game Center when this notification arrives. So we have this awkward situation where the notification arrives, but the game hasn't. This can be seconds or minutes and is confusing to everybody.

Entering the app via a push notification

Letterpress: nothing particular happens, the app is starting up and showing you the state it was in, or the normal app start. However, it shows you a progress indicator, indicating some form of communication with Game Center.

Lost Cities: at first: nothing particular happens. When the Game Center API decides to tell that you are you and everything is fine, it tries to jump directly into the game the notifications was for. That is on iOS 6. On iOS 5 an elaborate amount of guesswork is taken to put you into the game that you might have touched the notification of.

Game Center Details: if you start the app or re-enter it from the outside, Game Center itself needs you to reauthenticate. This might be quick, or might take long. However, only afer Game Center is authenicated you get any information whatsoever about Game Center and Game states. This is a significant lag, in which you can do nothing in particular to serve the users wishes. After that lag you might get a callback that tells you if the user entered the app via a notification, but you also might not. If you take the user to the game like Lost Cities does, the user might already have moved around in the UI on their own, and you might confuse them. If you don't you might too. Also you might have badges on the outside, but for a long time no next game on the inside. Tough luck to you.

Potential Solutions: Apple needs to do away with the authentication stuff. This always has to return immediatly if the user is already signed into Game Center on this device. Apple also needs to give the target of the push notification on startup so the app can immediatly jump into that game and not waste a second on waiting.

Making a move

Letterpress: directly shows a progress indicator. Showing the user that it is trying to send out a move. If it doesn't go through, an error is presented. This has the advantage that a user can be absolutely sure the move has gone through if they send it. However, if the network is behaving badly (or the Game Center infrastructure) then the game is stuck at this point for now.

Lost Cities: lets you make a move no matter what. It also gives you no feedback whatsoever about the network conditions. It hides this stuff from the user. If a send turn fails, it is tried again later. If the user leaves the app, the turn might not have gone out, but in that case the badge on the app will prompt the user back to open the app, which in turn will try to send out the move again.

Game Center Details: Game Center has some amount of error codes it gives back on sending out a turn. However, they are almost undocumented, so there is no way a sane programmer can react specifically and rightfully on them. In my opinion they are also too cryptic to present to the user. Game Center also doesn't allow you to make a move if the authentication callback hasn't come back yet. E.g. if you quickly jump out of the app and then back and make a quick move, you might have been quicker than Game Center.

Potential Solutions: Game Center should only check for programmer errors, then and only then specific documented errors should be returned. If there are none, Game Center should take the move, and act as if that move was made. If it encounters networking errors, it should just cache and ensure the delivery afterwards.

Creating a game

Letterpress: opens up the Game Center matchmaking dialog. With all its strengths and weaknesses. It will profit from improvements along the line.

Lost Cities: doesn't show the Game Center matchmaking dialog at all. It fetches and caches the Game Center friends, aliases, avatar images and provides a custom UI. It is quicker to load, but it e.g. cannot show you, which of your friends are already playing the game because this isn't exposed in the API.

Game Center Details: IMHO the Game Center matchmaker dialog is a really really bad user experience. If you have seen it, it is a mess. The Invite Friends button is way to close to the Play Now Button. You can't tap the Auto-Match icon to choose a player. When you press Invite friends then the list of friends slowly loads from the server, the avatar images slowly afterwards. If you select a player, and then another one, you get an alert - even in a 2 player game where the tick mark should just select the other player. You can edit an invitation text that only ever is displayed in the notification center, nowhere else. The dialog looks almost the same for synchronous games as for asynchronous, but behaves quite differently.

End of Game - Rematch

Letterpress: if it is your turn, the game ends after you submit your turn and a dialog is presented. The game moves to the finished game part. If it isn't your turn, the game just disappers there too.

Lost Cities: makes sure the user has seen the end of game screen. After that a rematch question is asked (both parties) if both parties say yes another game is started. If one says no the game is ended. The way we implemented this is oblivious to Game Center. As far as Game Center is concerend the game is still running and the same one as long as nobody leaves or says no. This might bring Lost Cities into trouble when more of the state of the Game Center turn based matches is exposed in standard UI, but it allows for the feature at all.

Game Center Details: iOS 5 didn't allow for any kind of rematch via API. iOS 6 added an api call for a rematch, but I'm unsure how the semantics really work and at this point almost sure that you still have to implement a way of asking both parties if they like a rematch.

The Application Badge

Letterpress: maybe slightly higher than the amount of running games that need our turn.

Lost Cities: sometimes just for a short moment slightly higher than the amount of running games that need your turn.

Game Center Details: this is a nasty iOS 6 bug in Game Center. If you decline and remove a game there are edge cases that make your badge count stick at more than 0 if you have made moves in all your games. In Lost Cities we boldly set the App Badge ourselves for now, until the problem is alleviate.

Conclusion

Two different approaches: One to hide as much Game Center as possible. One to make it front and center, and give the user a chance to experience the issues and handle them manually. If Lost Cities has issues, you probably have to wait for the next update. If Letterpress has issues you can kill the app, and you are probably fine.

Both ways are in some aspects undesireable. Both ways are superior in some others. The main issue is the underlying technology that does not give the kind of quality we would need. Although it elevates us from providing our own gaming servers. Which is a huge aspect, one which made us choose Game Center Turn Based. However, if we were in the same situation again, we probably would go for our own infrastructure.

Apple's no internal client syndrome

There exists a common problem for Apple frameworks, technologies and services.

Once upon a time Apple proceeded this way: They worked on frameworks and services internally, made them private, gave them a little time to mature (about one or two releases) and only then made them public. This way they had knowledge how the usage pattern was, what part of the API is good, what is bad, maybe adjust some of the issues even before they made them public. Sounds like a good strategy.

The problem is: that isn't the case anymore. Release cycles spun up from 2-3 Years in prehistoric Mac OS X times to every year, so this kind of quality control basically went out of the window. I'm sure as a concept it is still there in many heads at Apple, but the times where this was common policy are - simply put - gone.

The other issue that this kind of quality control can't cover, is services and frameworks where Apple itself has no internal clients. The biggest example being Game Center.

Game Center is supposed to be this fun and engaging infrastructure to enrich games and provide services like online matchmaking and connectivity. The idea is great, the infrastructure is really necessary, but the actual implementation is so bad almost all developers I know and talked about it dread using it. This has many reasons, some of them will be topic on this blog. But for now I just want to put attention to the one structural reason:

There is no internal client for Game Kit and Game Center at Apple

Apple doesn't make games, and doesn't use Game Center anywhere outside its own Game Center app. Once upon a time they had a poker game in the App Store, which would have been the perfect internal client for it, but they chose to discontinue it and never integrated Game Center or even added Retina graphics before they pulled it.

So the only clients of Game Center are us developers. That means a lot of things:

  • Roundtrip time: We can only give good feedback once we jumped on the bandwagon. Let's say we are frickin' quick and release shortly after an iOS release, using a new API feature. Even then we need to analyze the problems and take the time to write our bug reports. If you want to do it right and not just blow off steam, that takes a lot of time, and doesn't help us for this iteration of our app anyways because the fixes will come in a later OS version. So many of us don't even bother, but the ones that do might not even submit bug reports in time to hit the next iOS version.
  • Game Devs are rarely invested deeply in the Platform. The bulk of Game Dev's aren't interested so much in perfect platform integration, more in perfecting their game. And on second thought probably how to make the game as platform independent as possible, to bring it to as many people as possible. So critiquing and wanting to improve the Game Center experience isn't high on the list. They use it, or not.
  • Apple has no testbed for new technologies in that area whatsoever. For example last year they added Turn Based Gaming. You might now think this is a boon for us, as we did our own implementation for this in Carcassonne and initially I was very excited. However, it quickly turned out that this technology is ambitious, and many ideas are interesting, but it is no way finished or working the way it needs to if you want to give a great user experience. They simply had no internal client to point out all these issues beforehand, and now we are stuck with a technology with so severe issues, that even in the next iteration of iOS not all of the major ones are addressed. And they do have clients that jump on the new technology for demos at the WWDC. But the way Apple works this is done about 1-2 weeks before the session. The game dev posing as a client is eager to make things work to be mentioned in a demo, no matter what the problems are. They will give feedback on the problems, but at this time it is too late to change anything meaningful. Also they will be quiet about it, as they want to be part of the keynote, and praise the product there. Even at this point I am afraid to write about this so bluntly, because I'm afraid they might feature us less. With Lost Cities we used Game Center Turn Based, and put a lot of effort to eliviate all the existing quirks the best we could.

So unless Apple is changing this in a major way and starts to include third parties during the creation of new technology they don't use themselves, I think this is what we are stuck with. I dread using Apple technology that isn't up to the standards of the framework or the platform. The bright side: Us working around all the issues and improving the experience gives us a great unique selling point. However, personally I would much rather work on improving our games than to work around system issues.

Infantile

John Moltz:

This kind of commentary reflects a startling lack of knowledge of Apple history and an infantile level of patience.

Very well put.

The future looks slightly Cloudy

Cory Doctorow:

Owners of Cisco/Linksys home routers got a nasty shock this week, when their devices automatically downloaded a new operating system, which locked out device owners.

"I see my shadow" said Punxsutawney Phil.

Infinite Shamrock on Game Center's Turn Based APIs

Patrick McCarron:

The purpose of me bringing up these issues is not to bitch and complain, but to inform other developers and hopefully get some attention to these issues. I actually see the value and potential in Game Center and I want to see Apple improve it.

Great list of bugs filed against Turn Based Game Center. I will try to post as much of my experience as possible (including radars) soon.

Update: I'll post it over at cocoa-dom - my cocoa coding blog. First article is already up: Turn Based Gaming Game Center Style

A massive mistake

Matt Neuburg:

Please note, though, that I’m not claiming to be entirely happy with the Modern Document Model. Actually, to be quite honest, in my view, Auto Save is itself a massive mistake, an utterly erroneous pretense that the desktop is like iOS. Its deeply flawed nature is well revealed by what happens when you edit a file on a mounted remote disk: you get Auto Save without Versions, which even Apple has admitted is troublesome;

While I don't agree entirely with Matt on this, the article is awesome. And the length of it is the reason I'm shying back from giving the Lion / Mountain Lion to my parents just now. It clearly feels like a transitory stage, that will continue to transition in small naggy iterations.

Finger Tip Interface

bbum:

Then looked at the tip of her finger to make sure the color was picked up.

Great little story about a child using a finger painting app for the first time. I find these first time reactions fascinating. I always try to understand and memorize those kind of interactions first, instead of immediatly lecturing them to do it differently. If the person is older I try to have a little conversation to clearly understand the intention of what just happens. This always turned out to be very insightful, I highly recommend it.