One thing I’ve learned over the years while running a solo project like BombSquad is the importance of automation. If I can write a script to save myself 5 minutes of time each day, that adds up fast. When that’s multiplied by 10 or 20 things that need to get done every day it can mean the difference between actually making progress on the game vs. being mired down in daily busywork (or simply letting things fall out of date)
So on that note, I’ve been working to automate a few things and I thought it’d be useful to share:
Python API Docs. A few years back I wrote a script to generate documentation for BombSquad’s Python API (for modding purposes, etc.). However this required me to manually run the script and copy results into a page here. Hence, it fell out of date constantly. I’ve now automated this process to run nightly on my latest code. Wheee!
Change Log. I’ve now got a single detailed change-log that lives with my source code and is used to automatically update the change-log page on this site and elsewhere (as well as release notes on app stores, etc). This will hopefully result in fewer “bug fixes and polishing” app release notes, as well as providing a useful reference for modders.
Translation notices. First off, a huge thanks to all the volunteers who have helped translate BombSquad to 27(!!!) languages. The game would not be what it is without your help. To this end, I’d love to make the translation process smoother for those who want to help out. So as of BombSquad 1.4.133 you can now opt in under settings->advanced to be informed at launch if the language you are using contains new untranslated phrases. Hopefully this will be useful!
Its been.. oh.. about 3 years, so I figure its time for a blog update.
If you’re wondering where I’ve been: for the past few years I’ve been working with my good friends at Limbic, blowing stuff up as the resident vfx-guy and working on some fun games. (Check out Zombie Gunship Revenant on iOS if you get a chance). It was a great opportunity and I learned a number of good development practices from some really smart folks (wheee I can actually use git now!). The downside, of course, was that it kept my time on BombSquad rather limited. I’ve been able to make minor additions and fixes the past few years but I simply didn’t have the time to commit to major updates or platform releases or things of that nature. (cough cough iOS cough). Despite all this, however, I’m happy to say BombSquad has been doing quite well this whole time. In fact, I’ve hit my highest ever daily player counts within the past few months.
So recently, after wrapping on some big projects at Limbic, I decided the time was right to bow out and hit the gas again on BombSquad. Just as with Pixar, it was bittersweet to say goodbye, but I’ve learned over the years that I work best when I can just focus on one thing that I’m passionate about. And so here I am, back on BombSquad.
I’m super excited to get this ball rolling again, though it’ll take a little time. I’m currently in the process of dusting everything off, making some sorely needed optimizations so my busy servers don’t bankrupt me (good problem to have!), getting some anti-hacker measures in place (seriously guys; play fair or get banned), and indulging in a little fun making new characters/maps. Soon, however, I’ll be making announcements about my bigger plans. (And before you all swamp me with the same question: yes, iOS is one of them.)
I wanted to ramble a bit on this topic since it has been (and continues to be) quite a learning-experience for me. Perhaps this will be useful for other developers to hear.
Last year, in preparation for releasing BombSquad on Google Play, I switched the game from paid to free on all platforms. This is something I had long been planning on doing once the pieces were in place (in-game store, tournaments, etc.), so it seemed like a good time to take the plunge.
As developers, we all hear about how F2P is the future, and admittedly everyone’s mouth waters a bit when they read SuperCell’s latest earnings report, but from my perspective there were several less-obvious incentives to going free as well. One of these was exposure. Being a solo dev with no marketing department, I liked the idea of eliminating the barrier-to-entry for new players. I’d rather someone try my game and not pay for it than not try it at all due to it’s price tag; especially as it becomes harder and harder to stand out in the crowd. I also liked the idea of potentially being able to support myself by adding to the game over time instead of being forced to abandon it once the rate of new users slowed. I started writing BombSquad 10 years ago as a hobby and still love adding to it, so anything that lets me continue doing that (while also continuing to buy groceries) is good by me.
Of course going free is a little scary as well. There is the potential to torpedo player goodwill with over-aggressive monetization, pay-to-win mechanics, or excessive pay-walls. There is also the other end of the spectrum where the game gives players little reason to spend, in which case your game won’t make money regardless of how popular or well-received it is.
But free doesn’t have to mean evil. It can work well, and I wanted to try it. So I did.
It’s now been a bit over 6 months since I flipped the switch to free, and in this time I’ve learned just how tricky it can be to find a comfy spot in the center of those two extremes. I’ve also gotten inch by inch closer to said comfy spot. If I were to go back in time a year to give my past-self advice, this would be it:
Keep in mind that free-to-play is a *lot* of work, especially adapting an existing game not explicitly designed for it. If you are a solo developer or a small team and you just want to focus on gameplay, carefully consider whether the extra time wiring up IAPs, balancing economies, and incentivizing players to purchase is worth the extra effort vs. simply releasing a paid game.
Give yourself plenty of time for tuning purchases. Don’t slap a few unlockables in a week or two before release and expect amazing things. Consider a lengthy soft-launch.
Incentivized ads are worth looking into, and provide a safety net in case your IAPs are ineffective.
Play F2P games. This seems obvious, but I am guilty of not doing this nearly enough before I switched BombSquad over. I knew all the F2P concepts ‘on paper’ but until recently I feel like I had not played enough to really ‘get’ them. A recent Boom Beach binge worked wonders for this. The best games don’t kick you in the face; they’re fun without purchasing but just a *bit* more so if you do. If I were starting over converting BombSquad to free today I would definitely rethink a few things.
Lastly, get down and dirty with analytics. When I am balancing a game I tend to do it more by ‘feel’ than by numbers, but when it comes to virtual currencies and economies it really helps to crunch the data. On this topic, I’d like to give a shout out to the folks at Google who are going to be rolling out their new Player Analytics features in the developer console in the next few days which makes a lot of this easier for mere mortals like myself. I’ve been fortunate to get to work with them in recent months as they’ve been putting it together, and it’s been quite helpful in identifying and correcting shortcomings in my in-game economy. As a particular example, their sources & sinks report showed that most players were easily earning more tickets in the game than they were able to spend, meaning few had any incentive to purchase ticket-packs. Adjusting my numbers to bring these two back in line had a substantial positive effect on my revenue and put the game on much more sound financial ground. So if you’ve got a game on Google Play, integrate Play game services and give Player Analytics a whirl. Yay for buying groceries!
It’s been a while, so it’s time for another modding example..
I just released BombSquad 1.4.7, which adds a big new feature under the hood: you can now now create new co-op mode games, complete with their own online high-score lists and star rankings. (previously you could add teams and free-for-all games but the co-op section was a bit hard-wired)
First, a few little caveats:
At this time, adding co-op mods will disable your ability to play co-op tournaments (you’ll see an error at the score screen saying ‘please remove all game modifications and try again’). I’ll try to fix this in the next update or two. Pull your mods out and restart to get tournaments working again.
Currently you have to restart the game to pick up new or changed mods. This can be annoying to do repeatedly, so I’ll try to add auto-(re)loading in the future.
Anyway, let’s do this.
I feel that examples are the best way to learn, so lets just grab one and dive right in.
Download this script, drop it into your BombSquad mods folder (Settings->Advanced->Show Mods Folder), and launch the game. Under ‘co-op’ you should now see ‘Ninja Fight Custom’.
This mod is pretty much identical to the ‘Ninja Fight’ mini-game included with the game. It simply sets up a few timers to spawn ninjas and then measures the time it takes you to kill them all. The script is heavily commented so you should be able to see what’s going on, add more ninjas, or whatever else you want to do.