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:
- Horizontal cylinder
- Vertical cylinder
- 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.
0.15 brings a new flow for starting or loading a game based on other games.
It is currently accessible from the load game page, as well as relevant items on the main page, and provides a number of options depending on the source.
First is quickplay, which is always available. This lets you start a new game with all human players, or one human player and AI of a specified difficulty.
Setting up a new game (with the normal setup options) is also always available.
If it is a campaign game, you can continue the campaign. You can also load the game as a normal game (this won’t affect campaign progress).
If the game has existing game data (i.e. you are loading a game) then you can load the game but edit the players. This could be useful if you were playing against a human and want to continue with the AI for instance.
Finally, all these options can be used for local games and network games. This was a big part of the motivation since network games can normally only be continued with the exact same devices. If you need to continue with a different device, you can load and host the game and then change the players.
This is all part of a wider effort of general quality-of-life improvements. The next thing will be a revamped game selection screen which will make significant use of the new game buttons.
0.13 will bring the first iteration of one of the biggest features I’ve wanted to add since I started work on Tic-tac-toe Collection - multi-device multiplayer.
This first version brings multiplayer to devices on the same local area network - generally devices connected to the same WiFi.
All the options currently available to single-device play are available to multiple-device play. You can join with any number of players from each device and games can be saved and then resumed later. For the first version, they have to be resumed with the same devices (although not necessarily the same host), but I plan to lift that restriction in the future (it requires more complicated UI flow).
I hope to have a version in the beta channel shortly. I am still working to make the process more resilient to various problems that are common in multiplayer games.
As I said, this is just the first iteration of multiplayer. The next step is likely to be private games over the internet, followed by match-made games over the internet. How soon that will be, I do not know. I have other features I want to add in the meantime. So, watch this space…
Version 0.11 adds the first in-app-purchase to Tic-toe-collection: Prime. This is basically just an option to play without ads. It will disable the banner ads in game as well as the interstitials that appear when you exit a game. It also lets you skip levels freely in campaign (and thus, eliminates the rewarded ads that you might otherwise see).
The current price is £1.19, $1.49, €1.39 or whatever the equivalent is in your local currency. Exactly how it is these prices is interesting. In general, I don’t support the idea of ending prices in a 9 (I try to avoid psychological trickery), so I chose the price to be a nice round £1. Google adds sales tax on to this, which in the UK is VAT at 20%. So the price should be £1.20. Sadly, I was defeated by Google. Once the local price is determined, it is then adjusted using “locally relevant pricing patterns”, which in many cases makes the price end in a 9. I could manually edit the price for any currency I think, but there are a lot of them, and as the exchanges rates fluctuate, I think I would have to update them.
Version 0.10 brings a single player progression mode called “Campaign”.
This is part of my attempt to try and guide a player through the various game options that are available in Tic-tac-toe Collection. There are currently 12 different levels that between them showcase everything available.
In general, you must complete a level to play the next one, however Gomoku is currently skippable since at the moment since it’s only nice to play on a tablet. There are three difficulties, which just correspond to the three AI levels, and completing a level counts as completing the lower difficulty version of that level.
This also marks my first use of rewarded video ads. When you fail a level, you have the option of skipping to the next one after watching a rewarded ad.
Version 0.9 includes one big feature you can’t see, but it enables other little features you can see.
The renderer for the actual game has been rewritten. The first one was based on some assumptions that no longer hold, was rather complicated, and most importantly was slow. The new version is far more flexible and quicker.
To get the game up and running sooner, the original renderer created native UI elements for each cell. For 3×3 this was fine. For 19×19 this was terrible, and could take 20 seconds on a slow device. This also meant rendering pieces outside of their cells was difficult (and in the future rendering something that was not a rectangular grid would be a challenge). Now, the whole board is one thing and layout is handled internally.
The first little feature this enables is cool little piece placement animations. The video shows pieces dropping in Drop 4. Gomoku also has its own, which I’ll let you discover.
The second little feature is actually the one that drove me to do this. You may notice when playing on a large grid there still is a (much shorter) loading phase when starting a game. This is not actually the renderer, but the UI controls for selecting elements (which for various reasons will probably remain separate). If the game was non-interactive, the loading would not be there at all. And you can now see that in action when loading a saved game. The new renderer is fast enough (milliseconds) that I can render arbitrary game states anywhere in the UI and the load game screen now takes advantage of this (previously saving a game also saved an image of the game just so it could be shown on the game screen).
A while ago, I wrote about how some game modes are just “bad”, but I was going to include them anyway. Despite that, it would be nice if there was way to avoid the worst of them. One of my planned features is match-made online multiplayer. If I want to allow players to choose settings, then potential opponents definitely need to know whether the game is going to be fair.
I came up with a plan to generate a load of potential game settings, and run the AI on them, and see what the results were. That way it would be possible to identify fair games (games in which both players have a similar chance of winning) and add them as options to the game. Although I may still end up doing that, it occurred to me I could just add this information to the app.
So, on the game setup screen in 0.8 will be a new section called “chance to win”. This is how measure of how good the AI believes the best move is for the first turn of each player. A you can see, in a standard game of Tic-tac-toeTic-tac-toe, it does not look good for player 2.
For general use, this is calculated on the server, and cached per game setup. It can technically be run in the app, but the results vary more (but will probably be added as a fallback - I strongly believe the app should work offline).
Version 0.7.1 of Tic-tac-toe Collection includes new AI difficulty settings. It turns out making an easy AI was quite hard.
At some point I plan to write an in depth post into how the AI works, but for now all you need to is effectiveness is based on how long it thinks for compared to how many possible moves there are. In this way it is quite unsophisticated.
So, for easy, I made the AI think for less time, and for hard, I made it think for more (I also made normal a little easier while I was at it). In general, this worked well. The problem was, even when I made it really easy, it was still impossible to be at it at standard game of Tic-tac-toe. Standard Tic-tac-toe is a bit of problem all round frankly. I want the game to generally be a fun game, in which players have a good chance of winning (or losing). And that is not true of standard Tic-tac-toe.
But not including it seems odd, so I have to try and accommodate it. Since you can’t beat the AI on normal anyway, I was already facing the problem that normal and hard would be the same, so I felt that it was important that at least easy would be different.
So in the end, I had to make the easy AI a little stupid. It still does scale it’s thinking down but now it also has a chance of just choosing a move at random. That chance should be low for games with more moves, so it doesn’t become silly on larger boards. But it does mean you can, occasionally, win a game of Tic-tac-toe.
0.6 brings a new game mode called Drop Four (also known as Connect Four, Captain’s Mistress, Four Up, Plot Four, Find Four, Four in a Row, Four in a Line and Gravitrips).
This was on my shortlist of features to add for a couple of reasons. Firstly, I wanted to justify the “collection” part of the name (you may have noticed that Tic-tac-toe and Gomoku are the same game mode). Secondly I expected it to be quick to add.
And it was. The logic for determining winners is exactly the same as Tic-tac-toe, the only difference is a restriction on your valid moves. To differentiate it visually the board is also drawn differently (to look a bit more like you’re dropping pieces in) as well as the pieces (to look a bit like counters, but different from Gomoku).
Interestingly, the longest part was creating the image used on the game selection screen. The images used for Tic-tac-toe and Gomoku were created manually. I decided that would be a pain to keep having to do, so I developed a feature to let me cleanly screenshot games. At some point this may become a user facing feature…
0.6 is currently in beta for any one wanting to play Drop Four.
One of the key things I want to achieve with Tic-tac-toe Collection is fun game modes for more than two players. There are some obstacles to overcome.
The first, surprisingly enough, is how to refer to it. My first instinct is “multiplayer”, but when used in the context of, say, an app store description for a tic-tac-toe game, that just sounds like two player (and probably implies over the internet).
The second is more interesting. There is not a lot of information about tic-tac-toe-like games with more than two players. In fact, in academia in general, there is very little about any kind of game with more than two players.
If you look at the Wikipedia page for Tic-tac-toe, Connect Four or Gomoku (or Chess or Backgammon for that matter) there are sections about the mathematics of the game. Does one of the players have an advantage? Is the game “solved”? If you take the most well known similar game I can think of that regularly has more than two players, Chinese checkers, there is nothing of the sort.
So I figured I would just make something up, and see what happened. My first attempt is the Rumble game mode. This is a tic-tac-toe variant with two key differences, a larger board, and a point-per-line (playing until the game is full with the highest score winning). The larger board was the first step, since 3×3 is already a forced draw for two players and more would just make it worse. The point-per-line idea came about since with a larger board, it was still too easy for the first player to get a line.
That is to say, it is normally too easy for the first player to get a line, but not always. And it is for the same reason as why games with more than two players are taken less seriously - the possibility of collusion changes things drastically. If one of the players is not playing to win, it is very difficult to determine a useful strategy. Despite that, there is one multiplayer game that is taken seriously that features this as a mechanic: Diplomacy.