Posts
Blog Other  
Prime on iOS in 0.19

0.19 finally brings Prime support to iOS. This includes all the current features of Prime, including the removal of ads, unlimited campaign skips, two extra icons, and two extra colors.

If you’re interested in trying it as soon as possible, please join the beta on Testflight. Purchases made on Testflight versions will not actually charge you, but will also not be available outside of Testflight versions.

The Prime in-app purchase is now available to all iOS users.

Monday, November 25, 2019 Mon, Nov 25, 2019 25 Nov '19
Announcements
Prime on iOS in 0.19
  • Add in-app-purchase support to iOS, so Prime is now available.
Monday, November 25, 2019 Mon, Nov 25, 2019 25 Nov '19
Release notes
  • Fixed a crash issue that could occur on multiplayer setup game, depending on the state of the host.
  • Fixed a crash on iOS 13 when closing popups.
Thursday, October 24, 2019 Thu, Oct 24, 2019 24 Oct '19
Release notes

Preliminary release of topology options. Currently only available from custom game > advanced options. Also

  • Made hosting a multiplayer game more robust.
  • Game simulation is now triggered when a multiplayer game settings change remotely.
Tuesday, October 15, 2019 Tue, Oct 15, 2019 15 Oct '19
Release notes
Klein bottle in 0.18

The next version of Tic-tac-toe Collection will include support for playing on different topologies. Other games have done this before but probably not with so many options. To be specific, the options available will be:

The ones that have horizontal and vertical versions are basically the same, but it does make a difference for how Drop Four is played.

  • A cylinder is formed by repeating the play space in one direction, and a torus is formed by repeating it in both directions.

  • A Möbius strip is like a cylinder, but each repeat is flipped (so a horizontal Möbius strip repeats horizontally, but each copy of the board is flipped vertically relative to its neighbours).

  • A Klein bottle is like Möbius strip, but also repeats (normally) in the opposite direction.

  • The real projective plane is like a Möbius strip in both directions. That is, vertical copies flip horizontally and horizontal copies flip vertically.

That last item, the real projective plane is interesting and led to a new game option being added. One of its odd features is it makes all the corner squares diagonally adjacent to themselves. This means, for instance, you can get three-in-a-row with just two moves. This seemed odd to me so I did a bit of investigating. The corners are not really adjacent to themselves, but just appear that way because trying to render the real projective plane on a flat surface is very misleading. The end result, is a new game option:

“Allow cell reuse” determines whether the same cell can be used more than once in the same line. For example, imagine playing on a 3×3 torus with a winline size of 4. If you get three-in-row horizontally, it would appear you have also have four-in-row (and five-in-a-row and six-in-a-row etc.) if you allow cells to be reused. Whether allowing it or not makes for better gameplay or not, I don’t know yet. But the option is there.

Sunday, October 13, 2019 Sun, Oct 13, 2019 13 Oct '19
Game design
Gomoku
Jeff Weeks

Torus Games

A small collection of paper and board games (including tic-tac-toe and gomoku) with options for playing in different topological spaces, like a Klein bottle.

A simple app with clever gameplay. A collection of eight 2D games and two 3D games that are well implemented, supporting human vs human or human vs AI (with difficulty levels).

The key feature differentiating this from many other games is the addition of different topological options. The exact options vary between games, but most include a torus and a Klein bottle.

The special thanks section include a mention of the National Science Foundation, and to be honest, the presentation of the app certainly has an… academic feel to it. But what it lacks in visual style it makes up for in speed, cleanness, and just being very to-the-point.

As a final note, it is available on Android, iOS, Windows and macOS (I tried the Android version), is free, and has no ads.

Good things

  • Many games.
  • Many options.
  • Actual 3D.
  • Localized in 15 languages.
  • Quick AI.
  • Small and quick to load.

Bad things

  • Not particularly polished (but apparently reliable and robust).

Game features missing from Tic-tac-toe Collection

  • Topology options.
  • 3D tic-tac-toe.
  • Other games quite unlike tic-tac-toe.

App features missing from Tic-tac-toe Collection

  • Localization.
  • Sound effects.
Saturday, October 12, 2019 Sat, Oct 12, 2019 12 Oct '19
Reviews
New icons in 0.17

The big feature is lots of new unlockable icons, along with some improvements around icons. Specifically:

  • Fireworks icons.
  • Hallowe’en icons.
  • Valentine’s Day icons.
  • Earth Day icons.
  • Zodiac sign icons.
  • Show icon locked status in more places.
  • Icon selection screen layout improved.
  • Unlockable icons screen layout improved.
  • Icon license screen layout improved.
  • SVG icons centered and scaled better.
  • Improved Gomoku AI.
Thursday, September 26, 2019 Thu, Sep 26, 2019 26 Sep '19
Release notes

A while ago I announced that Tic-tac-toe Collection would no longer support Android Jelly Bean.

The reason was the desire by the Xamarin Forms team to drop support for it. That doesn’t seem to have happened. At least not explicitly.

Instead, more features are being added that require Android Lollipop (5.0). So at some point in the future that will become the minimum requirement for Tic-tac-toe Collection, and devices running 4.4 or lower will no longer receive updates. Existing installations will not be affected.

Monday, September 23, 2019 Mon, Sep 23, 2019 23 Sep '19
Announcements

The server component for Tic-tac-toe Collection has always been based on Azure Functions, a serverless compute platform by Microsoft. It is currently used to run the cloud AI and the game simulation used for fairness estimation, and does this by running the exact same code as the app. And, pretty much like the blog, deploying it was a slightly error-prone mostly manual process.

But like the blog, I’ve automated the deployment using an Azure pipeline.

The first update deployed with the new system is an improvement to the fairness estimation.

Estimating fairness

The fairness estimation is performed by simulating a game for a few moves, and then seeing how each of the AI rates its best possible next move. A big problem with this method is that the AI is probabilistic, so for a single simulation it is unlikely to be accurate (and some times it will end up being terrible). And, since the result for each combination of settings is cached, if an estimate is bad, it will stay bad.

With the update however, each subsequent request for a fairness estimation queues another one to run, and the results are averaged. So hopefully over time the estimation will actually become accurate.

Considering draws

Another change is draws are now considered. For example, previously, the estimation for standard tic-tac-toe gave the first player a score of 0.91 (on a scale of 0 - 1). Which more or less means a 91% chance of winning, assuming draws aren’t possible. Now, the first player gets a score of 0.68, which is closer to what your intuition would suggest your chances of winning tic-tac-toe is.

Thursday, September 19, 2019 Thu, Sep 19, 2019 19 Sep '19
Technical

A while ago I switched the blog from Wordpress to Hugo. Since the switch updating the blog has had a few steps to it:

  • Write the new content.
  • Commit to the git repo.
  • Run the hugo command to generate the site.
  • Upload to Azure Blob Storage.
  • Purge the CDN.

I’ve been running those steps manually up until now. But then I discovered this guide to deploying Hugo using Azure Pipelines by Michael Brinkman.

I had always planned to automate it, but I didn’t expect there to be prebuilt steps for doing in the Azure Pipelines, notably Hugo by Giulio Vian and Purge Azure CDN Endpoint by Fabien Lavocat.

Sunday, August 25, 2019 Sun, Aug 25, 2019 25 Aug '19
Technical