This is my second commercially-released game. I had a few different goals for it; first, as always, I was looking to expand my portfolio. I wanted to gain more exposure for myself and for my game company. I wanted to explore the special considerations of developing for mobile. I wanted to try out the Behavioral Pattern design architecture. And finally, this particular game is one that I have started at least three times before, each time abandoning it when other, more critical projects came up. It felt good to finally finish a game so long in the pipeline, and especially since having ZWOLYA GAMES now means that "finishing" includes officially releasing it for sale.
I've already talked a lot about the other points in various blog posts, so I'll just do a quick summary here. Alien Cow Farm was a game built for PC and a Steam release, and by the time it was done, I had sunk too much time and effort into it to sell it there for free. As a result, it didn't sell very many copies. In contrast, almost all games on the Google Play Store are free to download, so I'd say that's mandatory if you want to get any downloads at all. It's a lot easier to get someone to try something out for free. The good news is that I can still make money through advertising within the game, thanks to a Unity plugin that was surprisingly easy to set up and use. And because I'm never one to miss an opportunity, I added my own ad for Alien Cow Farm into the rotation, to try and draw more people to that game as well. My expectations have been tempered a bit as to how successful I'm really expecting Undersea Odyssey to be, but the more people who take a look at this one, the more are likely to see my future games as well.
I don't have a lot more to say about Behavioral Pattern coding. The summary is that I found that trying to use it in any non-trivially-sized game doesn't work, trying to force it doesn't work, and even when it works, it overcomplicates things and often results in a ton of one-off subclasses. I've worked with people who prefer projects organized that way, but I just can't work like that. I found that the Behavioral Pattern works best in isolated cases, like the infamous DestroyOnContact script that can just be dropped onto literally anything, but again, the more complicated the behavior you're trying to replicate in a generic script, the more problems doing so is going to cause.
In terms of special considerations for mobile, I haven't encountered any of the things I was warned to watch out for, like framerate or rendering issues. This is most likely because I made a 2D game, which is obviously not as taxing as a 3D one would be. I did have problems with playing audio, long BGM tracks in particular, but it's not clear whether this was due to the mobile platform or just Unity's general bad track record with sound. In any case, I was able to bypass Unity completely by using the phone's native audio player, and I learned a lot about that and writing Java in Unity in the process.
To talk about the development in general, this game took approximately a third of the time to get a first release out than ACF did. I'd like to say that was because I could reuse a lot of code from my previous false-starts, but that wasn't really the case in the end. Really it's because this game is so simple...not that that's a bad thing, as I've profiled that a lot of the most popular mobile games are, playing to that strength with a single easy-to-use, addictive mechanic. After the time spent creating art, I'd say the next biggest sinks were creating the Shop Menu buttons and implementing the third-party APIs.
Those APIs were probably the most frustrating part as well. There's a decent amount of documentation for both Unity Ads and the Google Play Games Services plugin, but sadly it's all outdated by several versions, and doesn't do a good job of telling you when to change your test mode settings and enable things for real as you get close to release. It just blows my mind because creating games in Unity and releasing them to the Play Store is not an uncommon thing...so why isn't there a definitive step-by-step list, including optional sections for if your game includes other optional functionality?
I think my meager art actually worked well for this game, because the simplicity mixed with specific small details like the creatures' angry eyes sells the cartoon-humor aspect I was going for. Read some of the sub descriptions in the shop and you'll see what I mean.
Finally...it feels a little weird to be writing a postmortem for a game that isn't officially done yet. I have four more releases planned in the future to put out all of the content I have ideas for, and the Play Store actually makes that surprisingly easy to do. I figured out for a previous game how to make saves compatible between versions, so really all that's left is to create the new art and build the level sections for each new one. Undersea Odyssey may be released, but it's far from done!