Blog Other  
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
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

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

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

After a long hiatus, this release is mainly about cleaning things up internally before more serious work begins. However, the following should be apparent:

  • Fixed in-app purchases not working for some users.
  • Fixed “Setup local game” part of modify game flow.
  • Fixed “Quickplay” with human players in modify game flow.
  • Hide AI thinking details while panning or zooming to improve performance.
  • No longer show the AI as “thinking” when browsing a game’s history.
  • Improved startup performance.
Sunday, August 11, 2019 Sun, Aug 11, 2019 11 Aug '19
Release notes

A small release to fix some iOS issues that only became apparent after launch, including:

  • Fixed some screens that did not with certain regional settings (including Arabic and Thai).
  • Significantly reduced app size.
  • Fixed the modify game flow not working in some cases.
  • Improved layout of the modify game page on tablets.
Saturday, April 13, 2019 Sat, Apr 13, 2019 13 Apr '19
Release notes
Home screen on iOS in 0.16.2

Tic-tac-toe Collection is now available to download for iPhone and iPad on the App Store.

All existing game modes and features are available, including cross-platform multiplayer.

Prime is not yet supported, but will be coming soon.

Tuesday, April 9, 2019 Tue, Apr 9, 2019 09 Apr '19
Saturday, March 23, 2019 Sat, Mar 23, 2019 23 Mar '19
Release notes

From 0.16.2 onwards, the app will not collect your Google Advertising ID as part of the analytics the app uses on Android. The privacy policy has been updated accordingly.

What is Google Advertising ID

This link explains it quite well, but basically it is an identifier stored on your device that identifies you to Google when using different apps and when browsing websites. This allows Google to determine a lot of information about users.

This information is not directly available to people who operate apps or websites (like me), but is available indirectly in an aggregate form. For example, I can see a report that says what percentage of my users are male or female, what their age ranges are, and even their interests broken down into various categories.

While this is all quite interesting, I realised I’m not making any decisions based on it, so I decided to disable it.

What does this have to do with advertising

One of the main uses of the data is to provide more relevant advertising. That will still be enabled for Tic-tac-toe Collection for users who have personalized ads enabled. It functions based on information already collected about you (from other places that have Google Advertising ID enabled for their analytics).

You can opt-out of Google’s advertising tracking completely.


With regards to Google, Tic-tac-toe Collection will no longer be a source of information about you, but will still use it if it is available.

Sunday, March 10, 2019 Sun, Mar 10, 2019 10 Mar '19