- Added new board size/topology selection popup.
- Fix saving game copies.
- Updated AI to take in account relative scores.
- Changed fairness calculation.
- Improved popup rendering.
It’s become a running gag that many commercial apps include release notes that just something like “Bug fixes and improvements”. Often it will be because there are lots of minor fixes that are too small and numerous to list. But just as often, there will be lots of technical changes that while important for various reasons, have no user facing effect. This post will attempt to explain some of the changes.
Xamarin Forms
Tic-tac-toe Collection depends greatly on a library called Xamarin Forms. This version updates it from version 3.4 to 4.4. There aren’t any major features in use yet, but there are a bunch of performance and stability improvements nonetheless.
Xamarin Essentials
This is a new dependency, and is partly the reason for the new Android 5 requirement. The key feature this brings is detection of light/dark mode, but it is also now used for launching external sites (for example: rating an app on iOS < 10.3 or accessing any web page on an Android device with Chrome custom tab support).
AndroidX
Android has long provided Android Support Library as a way of accessing new features on older versions of Android. AndroidX is conceptually just the next version of this. In practice, the implementation is very different and getting support for it in Xamarin has taken a while.
Removals
Several libraries have been removed.
Iconize by Jeremy Marcus is a library for using icon fonts in Xamarin Forms. I’ve used icon fonts since the very beginning and this library was a huge part of that. Enough of the functionality is now included directly in Xamarin Forms that the library is no longer needed.
Xam.Plugin.Connectivity and Xam.Plugin.Settings by James Montemagno superseded by Xamarin Essentials.
CarouselView.FormsPlugin by Alexander Reyes. For a long time, this was the best carousel view for Xamarin Forms, but it there is finally a version provided directly.
Acr.UserDialogs by Allan Ritchie provides system dialogs. After including Rg.Plugins.Popup for providing popup functionality, I switched to using that for simpler dialogs too for better style consistency.
Others
There are handful of other libraries that have been updated just on the principle that staying up-to-date is better.
- Added auto light/dark mode detection.
- Made it so you can edit a player by tapping on the icon, not just the edit button.
- Improved Gomoku and Drop Four rendering.
- Reduce default zoom level for topology games.
- Fixed the “rate app” link on iOS < 10.3.
- Updated many libraries used by the app.
This version is not supported on Android 4.4 or earlier
0.19.1 of Tic-tac-toe Collection drops support for landscape orientation on phones.
This has been difficult to support and made certain complicated screens (like the game setup screen) take much more effort for very little gain.
Tablets will still support landscape orientation, however there will no longer be a custom layout for landscape (on the few screens that did).
- Added support for manually selectable light, dark and black themes. Automatically changing theme based on device setting will come later. The black theme uses true black for backgrounds, the dark theme uses a dark grey.
- Cleaned up styling and color of the app throughout.
- Removed support for landscape orientation on phones.
This will be the last version available on Android 4.4 (KitKat) or earlier. Future versions will require Android 5.0 (Lollipop) or later
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.
- 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.
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.
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:
- Bounded
- Horizontal cylinder
- Vertical cylinder
- Torus
- Horizontal Möbius strip
- Vertical Möbius strip
- Horizontal Klein bottle
- Vertical Klein bottle
- Real projective plane
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.