Category: Othello

SmartOthello Postmortem

SmartOthello is not dead yet, but the app has not lived up to expectations. It’s time for an assessment of this project: why I started it, obstacles along the way, and where to go from here.

Motivation

I needed a project to learn Swift and to experiment with different business models. I settled on Othello for several reasons:

  • Expertise: Expert knowledge of the game, and contacts in the Othello community. (I was the 1992 US Othello champion and have played at six Othello world championships.)
  • Similar domain: A two-player board game close enough to Go that much of the foundation code could carry over.
  • Potential customers: A more popular game than Go (think of all the people playing it as Reversi on Windows).

In addition, a trademark dispute had recently been resolved, with Megahouse of Japan making more efforts to license use of the name “Othello” and the trademarked board design.

Expectations

My three Go apps (SmartGo Kifu – $20, SmartGo Player – $3, and Go Books – free with IAP) were all doing reasonably well, with roughly similar profits. I had hoped SmartOthello might add a fourth leg to that stool, and thought I had several things going for me:

  • Experience: I had years of experience with Go apps in the App Store.
  • Marketing: I had a good marketing angle (former US Othello champion).
  • Design: All the existing Othello/Reversi apps in the App Store sucked. I knew I could create an app that gave players a better experience. (And some of those apps were ranked similar to my Go apps on the top grossing charts.)
  • Social: Game Center online play and leaderboards should help spread the app socially, something I didn’t have in my Go apps.

Obstacles

I made good progress on the app in the fall of 2015, learning Swift along the way. Not everthing went smoothly:

  • Licensing: I wanted to use the official name Othello, so I had to negotiate with Megahouse. We reached a deal on a reasonable licensing fee (10% after Apple’s cut), but I was not able to get them to agree to any business model other than a fixed paid-up-front price for the app.
  • iAd: Apple announcing the end of iAd didn’t help. So I was stuck with a paid up-front app for the first year; I figured I could re-negotiate after that (which I did, more below). However, not being free means the installed base becomes much smaller, thus Game Center play would not work as well (there may not always be a player available when you’re looking for a match).
  • Game Center: Implementing Game Center support was a mixed bag. Achievements and leaderboards were easy, but turn-based game play took a lot longer than expected, due to poor documentation, bugs, and APIs that are not fully baked. I could have implemented my own server in the time I spent getting Game Center play to work.

Release

Those obstacles slowed me down, but didn’t stop me. (Maybe they should have.) I finally got SmartOthello released on August 15, 2016, localized into Japanese, German, and French. In my unbiased opinion, I think design, game play, and usability are the best of any Othello app on the App Store.

Sales were underwhelming. Some possible contributing factors:

  • Press: I had created a press kit and reached out to press, but didn’t manage to get much coverage. August may not have been the best time to launch.
  • Go Players: I expected to be able to get some of my Go customers interested in Othello, but turns out there’s little crossover interest between the two games.
  • Othello players: My contacts in the Othello community were not as relevant as I thought, for several reasons:
    (1) The community of serious Othello players is very small.
    (2) There are some strong Othello analysis apps on Android, and thus most strong players are using Android, not iOS.
    (3) The core Othello community doesn’t really connect much with the general game-playing public, which is my audience.
  • Megahouse: I had expected Megahouse to help promote the app in Japan, a major Othello-playing country. Nothing.
  • Unlicensed apps: Lots of apps in the App Store continue to use the name Othello without being properly licensed. Megahouse has had little success getting those apps removed.

So the launch was not perfect. But it got worse.

iOS 10

  • At WWDC 2016, Apple announced that the Game Center app was going away, and that Game Center match-making was going through iMessage. This was ominous, but at least during the beta period, things worked reasonably well.
  • When iOS 10 was released in September, the avatar pictures disappeared. As the design of SmartOthello was heavily based around the avatars, I had to create my own bandaid for that.
  • Together with the cumbersome match-making using iMessage, I think the loss of the avatars was the death-knell for Game Center. (It‘s still technically alive, but without any improvements in iOS 11, it‘s not the technology to bet on.)
  • I had heard people complain about App Store search for years, but my Go apps always ranked reasonably well in search. With SmartOthello, search was a clear problem. Adding a space to change the app name to Smart Othello actually helped a bit, which is ridiculous. (The licensing restriction of not being able to include Reversi in the name also hurt.)
  • Since SmartOthello was a $2.99 app, I could at least benefit from Search Ads, but not enough for the app to get real traction.

Advertising and sale

  • In November 2016, I got the chance to advertise at the Othello World Championship in Japan. The resulting bump in sales? Minuscule. Again, it shows a disconnect between the serious player community and the general public I’m trying to reach.
  • I got permission from Megahouse to run a $0.99 sale over the holidays. More sales, slightly less profit. Back to $2.99.

Free with IAP and ads

  • By April 2017, I got the agreement with Megahouse renegotiated, allowing me to experiment with different business models and prices. So I tried free with ads and in-app purchase.
  • That experiment failed miserably. Sales went from low to near zero. While usage of the app went way up, I was not able to get the number of downloads that would be needed for the ads to generate significant revenue, and too few users upgraded to the Pro version. (My ads may have been too nice, and I may have included too much in the free version, but without more downloads, experimenting with those parameters would be futile.)
  • It’s possible this business model might have worked better when I first released the app and it got its initial attention; it’s much harder to generate interest with a new business model than with a new app.

Conclusions

  • Swift worked out really well. I’m very happy with the Swift foundation I got from the Othello project, and the conversion of my Go apps to Swift is continuing.
  • I’m glad I figured out issues with Game Center before trying to integrate that into my Go apps. At least that disaster was averted.
  • From an App Store perspective, Othello is more different from Go than I expected. The audience seems to consist more of casual players rather than people interested in a specific game, and as such they are probably less willing to spend money on the game. Thus my experience with Go was not as valuable; also, any conclusions based on this Othello experience might not transfer back to Go.

Future

I still love how the SmartOthello app turned out, and I will leave it in the App Store, giving it a chance to get noticed and grow over time. There’s much more I could do with it, but I can’t afford to invest more development effort into it at this point. Major changes (such as replacing Game Center, for instance) will have to wait until I get the Go apps converted to Swift and updated for iOS 11, get Go Books available on other platforms, and more: it will be a while.

SmartOthello will go back to paid shortly. Grab it for free while you can.

SmartOthello with ‘Ads’

SmartOthello achieved two of my goals for the app: it helped me learn Swift, and it gave me a reboot of the user interface that will influence the next versions of my Go apps. However, due to licensing restrictions, I couldn’t experiment with business models. For the first year, MegaHouse (who owns the license to Othello) was only willing to accept a paid-up-front app. I priced it at $2.99 — same as SmartGo Player, which is selling well. It turns out that Othello apps are a crowded market to compete in, and sales have been disappointing.

Blog othello pro upgrade

After renegotiating that license, SmartOthello 2.0 is now free, with a $2.99 Pro Pack in-app purchase that:

  • unlocks stronger computer play,
  • enables download of the WTHOR games database,
  • enables opening analysis,
  • and removes ‘ads’.

As for ads, I don’t want to give over part of my app’s screen to something garish that I don’t control. I’ve decided to follow Marco Arment’s lead and just roll my own. Their main purpose is to give you an extra kick to invest in the app so you can enjoy the full experience as it was designed.

Some of the ads promote the Pro Pack. For example:

Blog ads play expert Blog ads remove ads

Some promote my own apps:

Blog ads go booksBlog ads smartgo kifu

Some promote apps that I personally enjoy and recommend, mostly by indie developers. If people tap on the ad and purchase those apps, the affiliate fee (still at 7%?) helps, but more importantly, it helps another indie.

Blog ads obscuraBlog ads draftsBlog ads pcalc

And a few are links to books on Amazon that I’ve enjoyed, again with an affiliate link.

Blog ads changer

I expect income from those affiliate links to be minimal, but if those ‘ads’ nudge you to upgrade to the full experience, they have fulfilled their purpose. And they’re reasonably stylish, they’re accessible and localizable, there’s no user tracking, and you can even swipe to the next/previous ad anytime.

It’s an experiment. I’ve tried to find the right balance between being obtrusive and being obnoxious; most likely, I have not made them obnoxious enough. SmartOthello will be my guinea pig before I make any changes to the business model of my paid Go apps, SmartGo Player ($2.99) and SmartGo Kifu ($19.99).

Game Center

SmartOthello as released mid-August:

Blog othello avatar

And here’s SmartOthello mid-October:

Blog othello no avatar

The layout of the app was designed with profile pictures in mind. These player avatars disappeared when iOS 10 was released: Game Center leaderboards show boring gray circles, GKPlayer.loadPhoto returns nil.

Some bug reports and a Technical Support Incident later, this appears to be Apple’s intended behavior, not just a glitch. This behavior is so wrong and unlike Game Center that I think Apple will eventually backtrack, but waiting and hoping is not an option: I could not leave SmartOthello in that broken state. The newest version adds the ability to set your own profile picture and uses CloudKit to share these between players.

Matchmaking with iMessage

At WWDC in June, Apple announced that the Game Center app was going away, but not to worry, the Game Center functions were all still going to be there. Player invites would be using the newly improved iMessage; no code change needed. (Sure.)

That may have been true for the simplest matchmaking scenarios, but not for SmartOthello. I’m allowing players to set their color preference to black, white, or neutral, and their opening preference to regular or random. To start a game, I thus need that information from both players. (If they both prefer the same color, color choice will be random; random opening will only be applied if both players agree.) This added negotiation step needed extra work in iOS 10.

Blog invitation accepted

Starting a game over iMessage is cumbersome, adding several extra taps to specify opponent and start the game, as well as context switches. Apple has work left to do there. In particular, there needs to be a way to bypass the confusing auto-match screen.

Why no profile pictures?

My guess is that the missing profile pictures are related to using iMessage for matchmaking. Many iMessage users have images associated with them, but those are through the user’s contacts. There’s no way to map Game Center players to contacts, and for privacy reasons, it’s obvious that Apple won’t make those images available through Game Center.

It would be easy for Apple to add back a profile picture in Settings > Game Center. However, when starting a match through iMessage, that opponent would then have two images: one from Game Center and one from iMessage. It’s a mess, and that may be why the Game Center images were removed. Apple dug this hole for themselves; I hope they can dig their way back out.

Game Center in SmartGo

One of my goals with SmartOthello was to learn Swift (which worked out perfectly) as well as gain experience with technologies like Game Center and iCloud before including them in SmartGo. My experience with Game Center has not been good (poor and outdated documentation, APIs not working as advertised, no way to avoid polling for invites), and Apple doesn’t seem to be paying a lot of attention to the future of Game Center. Removing the avatars was a poor decision, and matchmaking using iMessage needs a lot of work.

At least I know to steer clear of Game Center for SmartGo.

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.

Othello

That separate Swift project I hinted at in December? Time to announce what it is: an app for Othello (also known as Reversi).

Why Othello?

As a two-player board game, Othello is similar enough to Go that much of the Swift code for an Othello app can be reused for Go. But Othello apps are a dime a dozen in the App Store: who needs another one? Well, you do — you deserve better than the current crop of Othello apps.

Relevant experience

Most people associate me with only one game: Go. However, I do have a bit of history with Othello.

  • Computer Othello: My first Othello program played in a tournament in Santa Cruz in 1981, long before I first made it to the USA. My work on Othello got Prof. J. Nievergelt to introduce me to Go, and my Ph.D. thesis included a chapter on Othello (“Smart Game Board: a Workbench for Game-Playing Programs, with Go and Othello as Case Studies”).
  • Human Othello: I was Swiss Othello Champion in 1983, 84, 85, and 89, and United States Othello Champion in 1992. My tournament experience includes six Othello World Championships: Paris (1983 & 1988), Warsaw (1989), Stockholm (1990), New York (1991), and Barcelona (1992).

Unique combination

So yes, combining years of iPhone development, user interface experience from SmartGo, and expert knowledge of Othello, I do think I have something unique to bring to a crowded field of Othello apps.

I’ve been working on SmartOthello with designer Scott Jensen (@_scottjensen); it’s making good progress, and I have just started limited beta testing. I’m very excited about how it’s turning out, and what it means for the future of my Go apps.

More later. Meanwhile, you can sign up for news about SmartOthello at smartothello.com, and follow @smartOthello on Twitter or Facebook.

PS: I played in an Othello tournament in Los Angeles in March: 4 wins and 6 losses, definitely a bit rusty. At least I scored a 33-31 win against former World Champion Ben Seeley.