Lessons Learned from Find Matt’s Cats

Hey everyone.

I think it’s time to write about all the things that caused me trouble during the development of Find Matt’s Cats – just to get my thoughts out there, and to remind myself not to make these mistakes again in the future. To release all of the bad feelings, or whatever.

For anyone not familiar – Find Matt’s Cats is a hidden-object game that I worked on part-time for a little over 3 years. It’s a Flash game designed to run in a Flashplayer emulator called Ruffle. It’s currently available on Steam/Windows, will likely come to Android later, and I’m still working on more content for it.


Many Name Changes

First of all, the game went through many different titles!

The game was originally codenamed “Hidden Cats”, which was quickly changed to“Hidden Cats and Dogs”, to differentiate it from similar games. But I only chose this title so I’d have something to put on the Steam store page, which I maybe rushed out a bit too early – I didn’t really have a feel for what the final game would look like yet.

The name was changed to “Matt’s Hidden Cats” once I decided to add story, and to include the characters from my Epic Battle Fantasy games. This name was way catchier too.

But that still wasn’t enough. About a month before release, and a couple of days before Steam’s Next Fest, I was alerted that the name “Hidden Cats” had been trademarked, and the multiple developers that were using the term in their game titles were being threatened with legal action! And the company that trademarked it wasn’t even the first to use it in the name of a hidden-object game!

Frustrating.

Anyway, there wasn’t time for me to do anything other than to quickly rebrand my game to “Find Matt’s Cats” – this new name is catchy too, but I’m still salty about the change. At least all of this drama generated a bit of interest for the game on Reddit and on the Steam forums.

I don’t think the last-minute name change particularly hurt the game’s reach – anyone following the project would easily recognise it as still the same game – but it did waste a lot of time as assets and store pages had to be redesigned. Perhaps it was a bit reckless to use a term that many developers were using in their titles – but I figured the practice was so widespread it was basically the name of a small genre by that point.



Poorly Defined Scope

Find Matt’s Cats was by far the biggest game I’ve made from scratch – all of my other Steam games are sequels to much smaller projects. This made it difficult to plan where to spend the most resources, as I wasn’t sure which parts of the game players would be the most interested in, or if the core gameplay was even interesting enough to begin with. I had no idea if the game had too little content to be taken seriously, or if it had too much content and most players wouldn’t finish it. I didn’t know if the average hidden-object fan wanted an easier or more challenging experience – so I made sure the game had options to cater to everyone.

So this caused a lot of fear, doubt and uncertainty, and made game development quite miserable.
I kept adding more and more content and options due to these doubts.

I added a story to the game to get Epic Battle Fantasy fans interested. I didn’t particularly want to do it, but I took the chance to try out some new storytelling ideas. I played around with some visual novel mechanics. I like how it turned out, but it felt a little bit forced. This decision probably doubled the number of sales though.

The game turned out better as a result of adding so many features and aiming to capture a broad demographic, but it was no fun to work on it with this mindset. The responses to the game on social media were decent, so I could tell the game wouldn’t be a flop – but that wasn’t enough to keep me motivated. I flip flopped between being proud of the game and feeling like I could be doing something better with my time. I felt like this a lot when working on Bullet Heaven 2 as well – if it’s not the best game I’ve ever worked on, then I wonder if it’s even worth making? Oh well…

The game started off as a test of Ruffle’s capabilities, and maybe I should have left it as a small project to test the waters. But once things got going, my mindset was “I don’t want to make a sequel to this, I better make it as good as it can be… but maybe making a good game in a niche casual genre still won’t feel very fulfilling…”

I don’t like feeling this way, but it seems unavoidable. I only feel a little bit better about it since the launch.


Showing Off the Game


The death of Flash content on the web messed up my process a lot. Flash made it easy to share everything I was working on – small demos, interactive animations, incomplete segments of games – these could all be shared on several platforms. Now it’s a lot harder to collect feedback early on – I’ve either got to make videos, or put together a downloadable demo on Itch or something. It’s more work for me, and more barriers for my audience.

It still would have been possible to share bits of the game on my website using Ruffle though. I definitely could have done that. I was a bit hesitant to show off too much of the game, which in retrospect sounds a bit silly, since that’s never been a problem with my previous games – where I usually showed every single thing except the final boss.

I felt that with this game the main reward for playing was seeing how each new level looked, and I didn’t want to spoil that. It doesn’t have the sort of mechanical depth my other games have.

Anyway, it felt bad finishing work on a level and then trying to keep it a secret from the world. So perhaps my biggest regret is this – not showing off the game more while working on it. It was mostly just Ronja that tested levels for me.


Revisiting Old Levels

Because the game was poorly planned out, a lot of levels I made early on had to be updated. Collectable currency was added much later on, along with collectable artworks. Way more art assets were available towards the end of the project, so I had to sprinkle some of those into the old levels too. I also had to make sure that levels were compatible with options added later – for example, making sure that disabling animations didn’t obscure any goals behind moving objects.

I enjoyed making levels, so I made too many early on in the project. Ideally I would have made just enough levels to test new features as I programmed them, and then made the rest of the levels once all mechanics and options were programmed.

To some extent this issue was unavoidable, but it did slow things down a lot, and a more complete prototype in the beginning could have helped things go more smoothly long-term.



Saving System Chaos

When it comes to the core gameplay, the saving system was one of the last features I programmed. I kept adding more collectables, and more mechanics, and I didn’t at all think about how I would save the state of each level. There was no data structure for tracking the overall state – only each individual object was changed a bit when the player interacted with it. Containers and buildings were open only because they were showing frame 2 rather than frame 1. Gems were collected because when the player clicked on them they became invisible and stayed that way, and the number of gems collected went up.

None of these objects had any unique identifier. They were simply identified by the order in which they were loaded into a level. The game doesn’t even have a way to calculate in advance how many collectibles there are in each level. I have to enter the numbers shown on the level-select menu manually. This was one of the big limitations of using Flash/Animate as my level editor, rather than programming a dedicated level editor. A lot of important meta-data is calculated during runtime while the level is starting up – like if an object should be attached to another object, should it be marked as hidden behind an obstacle, the ID number of each goal – these are all just calculated based on the level layout. A cleaner approach would have been to calculate this stuff when the level was created, and have those things known in advance.

This was all further complicated by each difficulty setting having it’s own separate save data, and different objects being hidden or visible on different settings.

This was also the first game I’ve made where it autosaves every tiny bit of progress. Every single item collected or cutscene played saves the game, and it took some effort to make sure this happened only at the correct places in the code and didn’t lead to any invalid save states. For example – I can’t assume the player returns to the level select menu after finishing a level, and triggers the next cutscene. They could just exit the game after finishing the level – the level state would need to be saved and the cutscene would need to trigger some other time.

And finally, I also added the option to delete different types of data separately. The player can choose to reset progress on Easy, Normal or Hard modes, reset cutscenes, reset gems and currency, reset achievements, etc. This was appreciated by players, but it did take some effort, and I’m still not sure that it’s impossible to put your data into an invalid state by selectively deleting parts.

Anyway, it’s important to think about your saving system as you plan new features for your game, and not at the last minute. The saving system in Find Matt’s Cats became a mess of spaghetti code as new features kept getting added. It hurts me when I need to make changes to it – which I will need to do as I have more content planned for the game.


Simple Features Were Not So Simple

There were several examples of fun ideas that I only implemented because I thought they would be easy, but I should have cut them early on in the game’s development when I realised they may complicate things.

One such idea was the option to replace the game’s mascot with different cats and other animals.

The mascot appears in many different poses, and sometimes wears hats and other accessories. They appear in every level, and several menus. To support other types of mascots, I had to draw every type in every possible pose, and code their hats and accessories to be disabled if the mascot had horns or big hair, etc. And the player can change options during a level – so the mascot had to update correctly if the player changed it! This all turned out to be a pain, and still doesn’t work correctly sometimes. It should have been massively simplified.

Another example was menu animations.

My past games were usually animated at 30 frames per second, and menu animations were often non-existent due to the performance limitations of Flashplayer. This game was animated at 60 frames per second, and runs much better, so I wanted menus to be smooth and fun – buttons bounce when hovered over, there’s more transitional animations, and the player has a lot of options for customising the interface. The level select menu itself is even a playable level! And since I want to release this game on mobile later, I had to make sure that menus were friendly for both mouse and touch controls – and some keyboard shortcuts too!

Players generally enjoyed how the interface turned out, and this stuff was worth doing, but it was a lot of extra (and often frustrating) work! And not all of the visual effects were necessary.



Music Issues

My games usually have music created by a single artist – Ziyan Su, previously known as Phyrnna. She wasn’t available to work much on Find Matt’s Cats, so she only made 3 tracks this time. And due to the poor planning of the game’s content, I wasn’t sure until the very end exactly what sort of music I would need. My games generally have one main music track for each biome, but in this game the levels in each world often had very different vibes from each other, so a bigger variety of music would be needed.

I ended up using a lot of stock music tracks from various artists
– for example, you may have noticed Kevin MacLeod in the credits. My initial concern was that this would make the game’s music feel cheap, but in the end my music choices were fitting, and players enjoyed the wide selection of tracks. No one complained about stock music being used.

The issue was that I had to learn about how Content ID worked and make sure that none of these tracks got flagged when people made videos of the game. Turns out that it’s complicated – even if music is free to use, it has to be in the Content ID system or else some troll might claim it as their work. And often the licenses require that the artist be credited in the video description – which in the case of gaming content generally means the name of the game has to be mentioned in the video title or description, which wasn’t always done and caused issues for a couple of content creators.

Another downside was that I couldn’t distribute a soundtrack for the game, and just had to tell players “go find all the tracks one by one – they’re all free somewhere”.

Anyway, I would suggest always commissioning music if you have the budget to do so, so you have complete control over distribution rights. But in this project I didn’t have anyone I was ready to work with, and I didn’t know what tracks to ask for anyway.


Too Many People Were Involved

Between the extra musicians, fan artists, and translators, there was a LOT of people that I needed to contact, credit correctly, send Steam keys to, and pay. And a lot of them were not professionals, but hobbyists. So this caused a lot of headaches and awkwardness. Some people would be slow to respond (or disappear off the face of the Earth), emails would end up in spam, and a lot of this boring stuff just took up way too much of my time.

In future I need to organise this better and be much more selective about including people in a project.
I should probably try to keep a tidy spreadsheet with everyone’s relevant details, and make sure I have more reliable contact method than just email.

Translations were a bit messy because I left them a bit late – I should have finished the script earlier. In my hurry, I invited too many people to help out with some languages.

The game features a gallery of art made by fans, and I wanted to use this art to make some beautiful Steam trading cards too. I almost forgot this, but developers actually make a small amount of money from these trading cards when they are bought and sold by players. It’s not a lot, but over a decade, it can start to add up. I didn’t want to take advantage of fan artists, so I had to sort out fair payments for everyone. The cards turned out great, but it would have been less work to just use my own existing art!


Contacting Content Creators

Because this game was aimed at a broader, more casual audience than my other games, I felt pressure to reach potential players that were not familiar with my other work. I spent more time trying to market the game than I usually would…

Me and Ronja created a spreadsheet of all the content creators that have played my games in the past, along with over a hundred that have played hidden-object or cozy games and may be interested in this one. We collected contact details and I made a detailed information page about Find Matt’s Cats to email to everyone, along with a free Steam key.

Well, I think this was largely a waste of time. I think a lot of my emails ended up in spam folders, and the only content creators who responded were ones who already knew who I was. Websites for distributing Steam keys like KeyMailer feel like ransomware and are horrible to use, for both developers and content creators.

Most content creators who were interested in playing Find Matt’s Cats would either just buy it, contact me through social media (mostly Twitter), or someone in their audience will suggest it and gift it to them.

I should mention that it was worth being generous with Steam keys, and even tiny content creators were helpful – not so much for marketing, but for playtesting. I got a lot of helpful feedback watching videos of the first few levels of the game, and these helped me smooth out some design wrinkles.

In future, I think I will just write quick messages to my existing contacts, and leave it at that.


Marketing That Worked

The most effective way of collecting Steam wishlists was to publish a demo for the game, and then take part in Steam’s Next Fest. Find Matt’s Cats did reasonably well with the Next Fest algorithm – above average for a small indie game. This was a good chance to get feedback from players too. I kept the demo simple – it’s just the first 10 levels of the game – just enough content to gather some feedback on every mechanic in the game.

Another great way of collecting wishlists was making News/Announcement posts on my other Steam games, and mentioning I was working on a new game at the end of each post. The cross promotion option didn’t lead to a lot of traffic – the posts had to be mainly news about the other games.

But essentially… the easiest way to get attention on Steam… is to already have some successful games on there. No surprises there.


YouTube Stuff

I fairly recently started making text/image posts on YouTube (I didn’t know that was a thing). My posts seem to get a lot more engagement there than on other platforms! So it’s definitely something to consider if you have a YouTube channel.

Me and Ronja put quite a lot of effort into making YouTube videos about the game, in the style of in-game cutscenes, and also some silly live-action shorts. Some of these flopped while others got a lot of attention. Generally videos landed between 5k and 30k views. I think this is a viable way of marketing a game – but it’s hard work! You need to make a lot of videos to figure out what works, and constantly come up with catchy ideas that will do well with the algorithm. And it’s not enough for the video to get lots of views – it also needs to contain a call to action and actually get people interested in the game! So while our videos helped build hype for the game, I’m not sure it was worth it, considering the amount of work that went into them. But it can be more efficient if you overlap it with other jobs – for example, livestreaming a game while playtesting it.

2 Left Thumbs made a video about Hidden Cat games and briefly mentioned Find Matt’s Cats in it, and that resulted in way more Steam wishlists than my own videos. He’s very good at making marketing content, and it goes to show how much skill is required to make engaging videos that actually sell products on YouTube.



Other Marketing Efforts

As always, I share my development progress on my social media – Twitter, BlueSky, Facebook, Discord, and Newgrounds. I post art, level previews, funny dialogue – and talk about new features I’m working on. This helps me gauge interest in different features, and I also just enjoy sharing whatever it is I’m doing. Generally Twitter has still been the best platform for reaching out to other developers, content creators, fan artists and other helpful contacts, but it’s also the platform that wastes the most of my time and causes me a lot of stress. Discord has been the best platform for interacting with the most dedicated fans, fostering a fan art community, and collecting bug reports and other feedback – thankfully Ronja manages that one, and it causes her stress instead of me.

I spent some time posting on Reddit, and this worked to an extent. I found some small communities that were interested in exactly this sort of game – r/wimmelbilder and r/isometric to name some – and this lead to some wishlists. The larger subreddits are quite restrictive about self-promotion, and the more general subreddits require much more catchy posts to get any attention on. Overall, I think promoting yourself on Reddit is worthwhile so long as you don’t spend too much time on it, or if you just enjoy posting there. People were overall very polite.

I posted the Find Matt’s Cats demo on Newgrounds! This went fairly smoothly – it’s the same as the Steam demo, with a few music tracks removed to reduce the file size. It generated some modest hype and won a cash prize. Definitely worth doing if your game can run in a browser. (Ruffle doesn’t run quite as smoothly in a browser, but the hardware requirements are lower there, so it gave me some helpful insight into its capabilities)


Finally: I Didn’t Get to Play it!

Something that has bothered me throughout the whole project is that I don’t get to play any levels made by other people!

With the other games that I’ve made, the hardest difficulty option is always fairly challenging, even for me, so I at least get to experience the challenge aspect of those games. With this game – there’s nothing like that. I don’t remember exactly where everything is hidden, but I know all the tricks, and there won’t be any interesting surprises for me.

Originally, Ronja was meant to create some levels, but the process ended up being quite complicated as development progressed, and it was too much for her.

So I think this game won’t feel finished until I create an in-game level editor powerful enough to create content that entertains me.

My work continues…

One thought on “Lessons Learned from Find Matt’s Cats

  1. Scott

    Very insightful stuff here 😲 but Hidden Cats and Dogs Alpha 1.0 in EBF Collection when? (Jk jk 😆 (unless……….?)

    Reply

Leave a Reply to Scott Cancel reply

Your email address will not be published. Required fields are marked *