Tic Tactics was a turn-based competitive online game where you played a strategic twist on the classic game Tic-Tac-Toe against friends or random opponents.
It’s tic-tac-toe, but with a twist: each cell on the board itself contains another tic-tac-toe board. Your move will dictate which “sub-board” your opponent can use on their next turn. To win the game, you must win “three across” of the sub-boards and claim victory over the main board. It’s “tic-tac-toe-ception!”
The game also features a progression system where you gain XP for making moves and winning matches. As you level up, you gain new titles. Winning or losing also affects your rating, which is used for bragging rights and matching up opponents of equal skill.
Tic Tactics was available for several years on the Apple App Store and Google Play, but is no longer available.
Tic Tactics was developed in 2013 as Hidden Variable’s first foray into the world of networked multiplayer and free-to-play games. We developed our backend server logic in C# using a service called Player.IO.
I learned a lot about backend server coding, deployment, and monitoring during the development of this game. Using a platform like Player.IO instead of hosting our own servers gave huge advantages to our small team of six: many backend tools were available for us to use (such as a database system), and we didn’t have to worry too much about monitoring and scaling infrastructure. It also presented some challenges - when Player.IO didn’t support features that we needed, we had to get creative. One example was Player.IO not supporting API calls with JSON bodies - only web form content was supported! As a result, we had to run a server whose only job was to convert web form data to JSON and redirect the content to some other server.
On the client, we used Unity, along with many of the libraries and features we had used on Bag It!. We used Playmaker to script our tutorials and NGUI to do our UI (this was before Unity had their own UI system).
My primary contributions on the client were a game state framework with animated transitions (which made moving between screens feel quite snazzy), and a scroll list system that can display hundreds or thousands of friends with ease, due to clever recycling of elements as they entered and left screen, pagination of remote data, and delayed loading of picture data from social networks. These systems are still used in Hidden Variable’s games to this day!
Server-side, I was primarily responsible for implementing purchase validation for Apple and Google in-app purchases, as well as a system for managing logins from a variety of sources (Facebook, Google, Game Center).