Dev blog 7th April 2017

Thoughts on the recent release and bugs you never knew about

It's been an exciting week for us. The bot and customisation release is the biggest we've done for a while. So far the reception has been very positive. We're seeing player numbers pick up, and crucially we have finally fixed the problem of not being able to play matches without other people being available. We now see a lot of one or two player matches taking place almost all the time, where previously those players would have been waiting forever for others to show up (or more likely, giving up and never trying again).

We are currently working on player/bot substitution, so that rather than starting a new botmatch, players will join an existing match, replacing a bot and playing with other humans. Similarly, if a player drops out, they will be replaced (until a substitute is found) with a bot. This will help matches to remain balanced and fun.

The first batch of customisations are also proving popular. This is encouraging for us because with a F2P future in mind, the customisations will become our primary revenue stream, enabling further development. We've got plenty more outfits to come, but are introducing them slowly so that we can refine the drop system without risking accidentally dropping the entire set in one go.

I mentioned in the last dev blog that we were close to feature complete for this recent release, but that I was expecting stuff to come up during testing. As a follow up, here's a few of the things that came up in testing:
  • Customisation selection stops working for a brief period after playing a match
  • Bots can sometimes start playing before the match begins
  • The player profile cannot be closed if an error message pops up while it's open
  • Keeper bot in practice alone ignored the ball
  • Bots will forget they were shooting if they do it while running over the halfway line
There's a pattern with most of these: they are intermittent or occur only under certain circumstances. This is the one of the reasons why we have these extended periods of testing. It's very easy to think that something is finished because it works as designed in the situations you expected. The other category is regressions; We made a change which broke something that previously worked. Regression testing is boring, time-consuming, unrewarding, but sadly necessary.

However, with our limited resources, things will slip through the net. Here's a few bugs that we didn't catch that are either already fixed, or will be fixed in the next update. You'll notice a similar pattern.
  • Game will crash in practice alone mode if the keeper bot picks up the ball while the player is KO'd
  • If a botmatch was started but no players ever joined and then the masterserver restarts, those bots are still present at the start of the next match (this resulted in a hilarious 9v10 match).
To a certain extent we can define our own release schedule, so we can choose to delay if we find something that must be fixed. I have great sympathy for my fellow devs working on the major titles that get slated for having things like bad facial animations at launch, because I know that they were all pulling all-nighters before the release date (that someone else defined) to fix the critical crashes and game breaking bugs that you *didn't* see.