Posts
Blog Other  
  • Added a message to the main page if an update is available.
  • Implemented the first part of zooming and panning to the game screen. As a result, new users will longer be able to skip Gomoku levels in campaign.
Friday, November 30, 2018 Fri, Nov 30, 2018 30 Nov '18
Release notes
Unlockables in 0.14
  • Added partial support for SVG icons.
  • Added support for unlockable icon collections.
  • Added first unlockable item collection - Christmas. Unlock by playing during December.
Friday, November 23, 2018 Fri, Nov 23, 2018 23 Nov '18
Release notes
  • Fix crash when trying to go to the multiplayer page.
  • Make easy AI even easier.
Sunday, November 18, 2018 Sun, Nov 18, 2018 18 Nov '18
Release notes
Feedback in 0.13.3

Version 0.12.7 introduced a largely hidden feedback form (accessible from the release notes page, and small note on the local network multiplayer page).

0.13.3 brings an improved about page making the feedback form is now more visible, so I figured I would also make it more apparent here.

The feedback is gathered via a Google Form, and has some optional fields that will be auto-populated if you access it from the game.

Provide feedback here.

Tuesday, November 13, 2018 Tue, Nov 13, 2018 13 Nov '18
Announcements
  • Fix possible crash when exiting a network game.
  • Fix issue with video ads being shown to Prime users.
Tuesday, November 13, 2018 Tue, Nov 13, 2018 13 Nov '18
Release notes
Home screen 0.13.3
  • Made the landing screen more colorful.
  • Added a dedicated About page, with links to feedback, the blog and Google Play.
Monday, November 12, 2018 Mon, Nov 12, 2018 12 Nov '18
Release notes
New icons in 0.13.2
  • A new color for all users: <span style=“color: #FFEB3B; font-weight: bold”">YELLOW.
  • Two new colors for Prime users: DEEP BLUE and BLUE GREY.
  • Five new icons for all users: plus, square (outline and filled) and diamond (outline and filled).
  • Four new icons for Prime users: five and seven pointed stars (both outline and filled).
  • Added a news item for local multiplayer.
  • Fixed release notes not appearin on first load.
Tuesday, October 16, 2018 Tue, Oct 16, 2018 16 Oct '18
Release notes
  • Fixed spectate mode crashing when trying to spectate a multiplayer game not yet started.
  • Cleaned up how inactive games are handled in the multiplayer UI.
Friday, October 12, 2018 Fri, Oct 12, 2018 12 Oct '18
Release notes
Load game in 0.13
  • Added Local network multiplayer.
  • Cleaned up how player details are shown on game setup and in game.
  • Improved consistency of many small bits of UI.
  • Load game UI updated to make game options more discoverable.
  • Moved game results on to the game screen,
Tuesday, October 2, 2018 Tue, Oct 2, 2018 02 Oct '18
Release notes
Multiplayer in 0.13

0.13 brings the first multi-device network play to Tic-tac-toe Collection, local network play. With this post I will explain some of the details about how it works and why I made certain decisions.

There are a few types of multi-device play I want to support, but I felt it was important to start with local network. The most important is that I strongly believe as much of the app should work offline as possible. In the long term, it should also continue to work if I stop maintaining any server infrastructure it uses. Another point is that local network play has fewer security considerations. I make a pretty big assumption that you trust who you are playing with, since they will likely be in the same room.

There are two quite separate parts to multi-device process, and these two parts will exist regardless of whether the game is local network or over the internet, private or match-made, or pretty much anything else. They are device discovery, and actual game data exchange.

For local network device discovery I chose UDP broadcast. The game sends a short message to every device on the network, while simultaneously listening for broadcasts from other devices. It’s possible for networks to block broadcasts (and is quite common for public WiFi hotspots to prevent devices from seeing each other at all) but for most people at home, this will work. No real data is exchanged at this point.

For the exchange of actual game data there are quite a few options, but for the first release I decided on HTTP polling. A big reason for this was simplicity, but also the knowledge that in the future much of the code would be the same when running over the internet.

The HTTP server is implemented using EmbedIO, a small HTTP server that supports .NET Standard. The client uses Refit, a library that generates REST clients from interface definitions and my default choice for HTTP clients.

The structure of the API and data exchanged during play is really simple. There is one GET endpoint for getting the current state and another POST endpoint for sending a change. Additionally, ETags are used to avoid sending state data if nothing has changed.

Overall, the technical side of implementing multiplayer was straightforward. The hardest part by far was designing the updated UI for showing player details, both on the player setup screen and in game. I think there are still improvements that can be made.

Monday, October 1, 2018 Mon, Oct 1, 2018 01 Oct '18
Technical