Tic-tac-toe Collection has been implemented with a technology called Xamarin Forms. That officially reached end-of-life at the end of April 2024.
There is a natural progression from Xamarin Forms to Microsoft MAUI, but it is a non-trivial amount of work.
Currently in progress
The short term plan is to do as much as possible to enable the MAUI transition to be as smooth as possible while still using Xamarin Forms. This will mainly be removing any dependencies that aren’t supported in MAUI (which means not changing in a user-visible fashion).
Future - Started
Save game revamp
I plan to switch the game to save all previous games by default. The storage space is tiny. This will also involve a new section combining the functions of the current load game screen and game stats screen.
Automatically discovered game modes
Since fairness calculations based on game simulations have been improved, I can now see which game modes are fairer than others. At the moment the results are only based on game modes people have actually tried though. To improve the situation I plan to do a few things. First is to run the simulation more for modes that look promising - simulations with a few runs are unlikely to be accurate. More interesting is to take the promising modes and mutate them - change one of the properties slightly - and then simulate that. This essentially becomes a simple genetic algorithm for finding fairer games.
The first results of this have been mixed. After playing with it for a while I’ve decided a more restricted search would be more interesting. Finding the best possible game modes out of all possible variations is quite daunting. Finding the best game mode that is “reasonably similar” to a specific one might be more useful.
Player rating
This will become a key part of any online multiplayer, but I plan to have it working offline too.
It will be Elo based, but with modifications to deal with requirements that most games don’t have. First is multiplayer. I won’t be the first to deal with this using an Elo-like system, and there are a few ways to handle it that all seem reasonable. The other big requirement is inherently unfair games, and my research on this topic has found no existing material on this.
Most games are designed to give each player an equal chance of winning, or at least as close as possible. And, for games played seriously like chess, a single match involves playing several games in which the advantage alternates between players so the match as a whole is considered fair.
Tic-tac-toe Collection has mostly unfair games. But, they are at least quantifiably unfair. This means I should be able to take that into account as part of a rating system. Early investigations are promising.
An independent implementation of this is largely complete and is documented on my personal blog in the Expanded Elo Rating series.
Future - Not started
AI options
At the moment the only difference between the difficulties is how long the AI searches for. There are a couple of other parameters however. There is one for changing the bias between promising moves and unexplored moves, as well as one for how ties are scored compared to wins and losses. My plan is to expand this into different AI profiles that could vary these parameters more. Combined with allowing them to get ratings just like normal players this means the better parameters would actually be discovered over time.
I’m also planning to give the AI names.
Campaign improvements
Campaign has gotten very little love since I added it. It’s a little buggy around progression, I don’t really like the easy/medium/hard split, and there are new game modes that need to be added.
I have a plan developing in my head to make the choice of the game modes to be semi-automated (which is going to be more important over time as more game modes are added). I will probably keep the existing campaign as a kind of legacy mode.
Online multiplayer
A big one that I’ve been intending to do for a while. In many ways it will be simpler than local network multiplayer but requires a commitment to some server resources. The plan includes both private games and matchmaking.
Co-op games
This makes more sense in the context of online multiplayer. I imagine a game mode in which several players “vote” on which move to play.
Crowd games
The simplest form is splitting users into two groups (possibly randomly, possibly with a choice) and have them play a game against each other. Everyone chooses the move they would play and after a certain time limit the most popular move is played.
Match options
The most basic would be to simply track the number of wins and losses as you repeatedly choose “rematch”. There could also be a predetermined match length (best of 5 for instance). I also plan to add timer options, including a simple per move timer and possibly chess clock timing.
Other game modes
Including but not limited to:
- Ultimate tic-tac-toe
- Notakto
- Wild tic-tac-toe
- Quantum tic-tac-toe
- Order and chaos
- SOS
- 3D tic-tac-toe
Infinite topologies
A new infinite board size. Moves would be restricted to being within one square of the current minimum and maximum row and column. As well as an option of being infinite in both directions, there would be infinite in one direction but something else in the other direction. I believe the complete list of new topologies would be:
- Infinite plane
- Infinite horizontal strip
- Infinite vertical strip
- Infinite horizontal cylinder
- Infinite vertical cylinder
- Infinite horizontal Möbius strip
- Infinite vertical Möbius strip
Sharing games
A natural extension to sharing game modes is to allow users to share whole games with history.
Airplay support
The ability to broadcast games to AppleTV. You could already just broadcast an iOS device’s screen but it’s possible to completely customize what appears on each screen. This would mean slightly tweaked UI with interactive elements hidden.
This could possibly include other broadcast formats like using a Chromecast but Airplay from iOS is much easier to implement.
Desktop
This has always been something I wanted to do. The game has worked to some degree on Windows on and off, but some things didn’t quite work so well (partly because Xamarin Forms support for Windows is a lower priority). The switch to MAUI should improve desktop support on Windows, and it also enables macOS support mostly for free.
Xbox One
In theory UWP apps will just run on an Xbox One with minimal changes and can be made available as with plain apps, or games via the Creators Collection. To actually make the game fun to play though a lot of work will need to be done to make the controls actually feel like a console game.
Currently in progress
Save game revamp
I plan to switch the game to save all previous games by default. The storage space is tiny. This will also involve a new section combining the functions of the current load game screen and game stats screen.
Automatically discovered game modes
Since fairness calculations based on game simulations have been improved, I can now see which game modes are fairer than others. At the moment the results are only based on game modes people have actually tried though. To improve the situation I plan to do a few things. First is to run the simulation more for modes that look promising - simulations with a few runs are unlikely to be accurate. More interesting is to take the promising modes and mutate them - change one of the properties slightly - and then simulate that. This essentially becomes a simple genetic algorithm for finding fairer games.
The first results of this have been mixed. After playing with it for a while I’ve decided a more restricted search would be more interesting. Finding the best possible game modes out of all possible variations is quite daunting. Finding the best game mode that is “reasonably similar” to a specific one might be more useful.
Future
Player rating
This will become a key part of any online multiplayer, but I plan to have it working offline too.
It is likely to be Elo based, but with modifications to deal with requirements that most games don’t have. First is multiplayer. I won’t be the first to deal with this using an Elo-like system, and there are a few ways to handle it that all seem reasonable. The other big requirement is inherently unfair games, and my research on this topic has found no existing material on this.
Most games are designed to give each player an equal chance of winning, or at least as close as possible. And, for games played seriously like chess, a single match involves playing several games in which the advantage alternates between players so the match as a whole is considered fair.
Tic-tac-toe Collection has mostly unfair games. But, they are at least quantifiably unfair. This means I should be able to take that into account as part of a rating system. Early investigations are promising.
AI options
At the moment the only difference between the difficulties is how long the AI searches for. There are a couple of other parameters however. There is one for changing the bias between promising moves and unexplored moves, as well as one for how ties are scored compared to wins and losses. My plan is to expand this into different AI profiles that could vary these parameters more. Combined with allowing them to get ratings just like normal players this means the better parameters would actually be discovered over time.
I’m also planning to give the AI names.
Campaign improvements
Campaign has gotten very little love since I added it. It’s a little buggy around progression, I don’t really like the easy/medium/hard split, and there are new game modes that need to be added.
I have a plan developing in my head to make the choice of the game modes to be semi-automated (which is going to be more important over time as more game modes are added). I will probably keep the existing campaign as a kind of legacy mode.
Online multiplayer
A big one that I’ve been intending to do for a while. In many ways it will be simpler than local network multiplayer but requires a commitment to some server resources. The plan includes both private games and matchmaking.
Co-op games
This makes more sense in the context of online multiplayer. I imagine a game mode in which several players “vote” on which move to play.
Crowd games
The simplest form is splitting users into two groups (possibly randomly, possibly with a choice) and have them play a game against each other. Everyone chooses the move they would play and after a certain time limit the most popular move is played.
Match options
The most basic would be to simply track the number of wins and losses as you repeatedly choose “rematch”. There could also be a predetermined match length (best of 5 for instance). I also plan to add timer options, including a simple per move timer and possibly chess clock timing.
Other game modes
Including but not limited to:
- Ultimate tic-tac-toe
- Notakto
- Wild tic-tac-toe
- Quantum tic-tac-toe
- Order and chaos
- SOS
- 3D tic-tac-toe
Infinite topologies
A new infinite board size. Moves would be restricted to being within one square of the current minimum and maximum row and column. As well as an option of being infinite in both directions, there would be infinite in one direction but something else in the other direction. I believe the complete list of new topologies would be:
- Infinite plane
- Infinite horizontal strip
- Infinite vertical strip
- Infinite horizontal cylinder
- Infinite vertical cylinder
- Infinite horizontal Möbius strip
- Infinite vertical Möbius strip
Sharing games
A natural extension to sharing game modes is to allow users to share whole games with history.
Airplay support
The ability to broadcast games to AppleTV. You could already just broadcast an iOS device’s screen but it’s possible to completely customize what appears on each screen. This would mean slightly tweaked UI with interactive elements hidden.
This could possibly include other broadcast formats like using a Chromecast but Airplay from iOS is much easier to implement.
Windows
This has always been something I wanted to do. The game has worked to some degree on Windows on and off, but somethings didn’t quite work so well (partly because Xamarin Forms support for Windows is a lower priority). The recent announcement that Microsoft are discontinuing their native advertising platform makes this a lower priority. Except the next point might make it happen anyway…
Xbox One
In theory UWP apps will just run on an Xbox One with minimal changes and can be made available as with plain apps, or games via the Creators Collection. To actually make the game fun to play though a lot of work will need to be done to make the controls actually feel like a console game.
Recently completed
Topology options improvements
Advanced options got too long. I made a separate popup to handle board settings, including width, height, topology and cell reuse into a popup.
Sharing game modes
You can now share game modes with other users.
Despite being the “first roadmap”, I retroactively added two previous posts to the roadmap category.
Topology options improvements
Advanced options is getting long. I plan to separate board settings, including width, height, topology and cell reuse into a popup. This will also allow some extra text to explain the topology options.
Dark mode
Fairly self-explanatory. As well as being able to choose light or dark, you’ll be able to choose auto for supported devices (iOS 13 and Android 10). I currently have a black mode in development, which is dark mode but using true black for the background color.
Automatically discovered game modes
Since fairness calculations based on game simulations have been improved, I can now see which game modes are fairer than others. At the moment the results are only based on game modes people have actually tried though. To improve the situation I plan to do a few things. First is to run the simulation more for modes that look promising - simulations with a few runs are unlikely to be accurate. More interesting is to take the promising modes and mutate them - change one of the properties slightly - and then simulate that. This essentially becomes a simple genetic algorithm for finding fairer games.
The first results of this have been mixed.
Player rating
This will become a key part of any online multiplayer, but I plan to have it working offline too.
It is likely to be Elo based, but with modifications to deal with requirements that most games don’t have. First is multiplayer. I won’t be the first to deal with this using an Elo-like system, and there are a few ways to handle it that all seem reasonable. The other big requirement is inherently unfair games, and my research on this topic has found no existing material on this.
Most games are designed to give each player an equal chance of winning, or at least as close as possible. And, for games played seriously like chess, a single match involves playing several games in which the advantage alternates between players so the match as a whole is considered fair.
Tic-tac-toe Collection has mostly unfair games. But, they are at least quantifiably unfair. This means I should be able to take that into account as part of a rating system. Early investigations are promising.
AI options
At the moment the only difference between the difficulties is how long the AI searches for. There are a couple of other parameters however. There is one for changing the bias between promising moves and unexplored moves, as well as one for how ties are scored compared to wins and losses. My plan is to expand this into different AI profiles that could vary these parameters more. Combined with allowing them to get ratings just like normal players this means the better parameters would actually be discovered over time.
I’m also planning to give the AI names.
Campaign improvements
Campaign has gotten very little love since I added it. It’s a little buggy around progression, I don’t really like the easy/medium/hard split, and there are new game modes that need to be added.
I have a plan developing in my head to make the choice of the game modes to be semi-automated (which is going to be more important over time as more game modes are added). I may or may not keep the existing campaign as a kind of legacy mode.
Save game revamp
I plan to switch the game to save all previous games by default. The storage space is tiny. This will also involve a new section combining the functions of the current load game screen and game stats screen.
Online multiplayer
A big one that I’ve been intending to do for a while. In many ways it will be simpler than local network multiplayer but requires a commitment to some server resources. The plan includes both private games and matchmaking.
Co-op games
This makes more sense in the context of online multiplayer. I imagine a game mode in which several players “vote” on which move to play.
Match options
The most basic would be to simply track the number of wins and losses as you repeatedly choose “rematch”. There could also be a predetermined match length (best of 5 for instance). I also plan to add timer options, including a simple per move timer and possibly chess clock timing.
Other game modes
Including but not limited to:
- Ultimate tic-tac-toe
- Notakto
- Wild tic-tac-toe
- Quantum tic-tac-toe
- Order and chaos
- 3D tic-tac-toe
0.17 has been mostly complete for a while, but release has been slowed by some minor but prominent bugs being hard to nail down.
In the meantime, work on the next few releases has been carrying on regardless. Here is a short list based on approximate order of release:
Topology options - imminent
Why play on a normal flat bounded plane when you could play on a Klein bottle? I plan on writing a longer post explaining this in detail very soon, but for now I’ll leave this as a teaser.
Dark mode - soon
Fairly self explanatory. As well as being able to choose light or dark, you’ll be able to choose auto for supported devices (iOS 13 and Android 10).
Automatically discovered game modes - soon
Since fairness calculations based on game simulations have been improved, I can now see which game modes are fairer than others. At the moment the results are only based on game modes people have actually tried though. To improve the situation I plan to do a few things. First is to run the simulation more for modes that look promising - simulations with a few runs are unlikely to be accurate. More interesting is to take the promising modes and mutate them - change one of the properties slightly - and then simulate that. This essentially becomes a simple genetic algorithm for finding fairer games.
Player rating - early investigation
This will become a key part of any online multiplayer, but I plan to have it working offline too.
It is likely to be Elo based, but with modifications to deal with requirements that most games don’t have. First is multiplayer. I won’t be the first to deal with this using an Elo-like system, and there are a few ways to handle it that all seem reasonable. The other big requirement is inherently unfair games, and my research on this topic has found no existing material on this.
Most games are designed to give each player an equal chance of winning, or at least as close as possible. And, for games played seriously like chess, a single match involves playing several games in which the advantage alternates between players so the match as a whole is considered fair.
Tic-tac-toe Collection has mostly unfair games. But, they are at least quantifiably unfair. This means I should be able to take that into account as part of a rating system. Early investigations are promising.
AI options - early investigation
At the moment the only difference between the difficulties is how long the AI searches for. There are a couple of other parameters however. There is one for changing the bias between promising moves and unexplored moves, as well as one for how ties are scored compared to wins and losses. My plan is to expand this into different AI profiles that could vary these parameters more. Combined with allowing them to get ratings just like normal players this means the better parameters would actually be discovered over time.
Tic-tac-toe Collection has been in development for nearly a year and the version number is still less than 1.0, suggesting the game is not yet “complete”. Although my intention is to continue updating the game while ever I can think of interesting things to do, there are specific features that I feel are required that are yet to be implemented.
Online multiplayer
Local network multiplayer has been a feature for a while, but online multiplayer has always been my plan. This includes private matches and matchmaking.
Matchmaking in particular has a lot of interesting issues associated with it because of the large number of game options available.
Ultimate Tic-tac-toe
Ultimate Tic-tac-toe is one of the most well known Tic-tac-toe variations that is actually possible to play competitively. As well as the traditional 9×9 grid with the normal rules, my plan would be support various sizes as well as many of the existing game variations as make sense.
One particularly interesting idea would be to support different rules for the inner and outer grids (like each sub grid being misère while the outer grid is not) and perhaps even different rules for each of the grids. The hardest part of this may well be coming with sensible UX for selecting the options and then communicating them in-game.
Other game variations
There are other game variations I’ve had in mind since I first started. These are probably not absolutely required for 1.0.
- Notakto (both single and multiple board)
- Wild Tic-tac-toe
- Order and Chaos
As with Ultimate Tic-tac-toe the aim would be to support as many variations as possible.
Multi round matches
Simple best-of-n setups, as well just an ongoing match that keeps track of the score as you keep playing games.
Time limits
A simple time limit per move as well as a chess clock option.