Fat Cats: Feeding Frenzy (iOS (android coming soon)) is a 2d cat-themed collect-em-all card game that we built while I was working at Blipd. It was built in Unity, and used addressables to overcome memory concerns (there are a lot of cats!), and identify content across game saves. This project took heavy use of prefabs to make git merging easier, and also to make the components more modular. The game is built entirely using UnityUI.

Features:

  • Collectible cats, you can purchase them with earnable in-game currency.
  • A mission system.
  • The card game itself.
  • An AI trained using MLAgents (neural network) to act as your opponent.
  • A shop where you can purchase cats and other items.
  • Special events, prize wheels, and weekly rewards.
  • A cheat system to make testing more robust. (The cheat system was built in such a way that when compiling the game for release there is absolutely no remnants of it left in the game.)

What I learned:

  • A lot about adressables. We used them to manage content, memory, and also to pass references around. Since addressable references are essentially a GUID packed up into a struct, we were also able to leverage the ID to identify content across game saves.
  • How to use MLAgents to train an AI, including optimizing the training via pulling out animations etc, and tweaking the hyperparameters.
  • A lot about Unity UI. We used Unity UI for everything, including the card game itself. The game is built to be adaptable across many devices, so we designed the UI in such a way that all the buttons, components, etc. have a physical size they attempt to target.
  • How to use Unity Ads and analytics.
  • Where async/await is superior to coroutines, and where it absolutely stinks.
  • A lot about unity editor scripting, reflection tricks (only when needed, and in the editor).

What I would do differently (today):

  • I would build the AI/card game in such a way that it would be easier to add multiplayer in the future. I think this game would really benefit from multiplayer.
  • I would plan for the interactive tutorial ahead of time. It was a bit of a pain to add it in after the fact.
  • I would stress on adding more animations to the game.