In Beta and testing away…

These things always take longer than expected, but we’re down to the last stretch here at Hyperbotic Labs, where fine CrowdGame(tm) games are laborious hewn and polished from solid blocks of freshly-mined code and at least 50% post-consumer recycled modules. We’re liking what we’re seeing, but the real test will be when it’s finally in the App Store and you get to see it and let us know what you think…

To that end, over the past months, we’ve been ramping down the process of adding new features and ramping up the process of testing every scenario and feature. Inside a modern trivia app such as CrowdGame Trivially, there are a surprising number of moving parts, some machined down to tolerances of less than a micron and whirling around at hair-raising speeds, all with the goal of providing a seamless, responsive, and enjoyable trivia experience for as many as 11 simultaneous players. All of the major pieces – trivia databases and updates, in-app purchase, native and HTML/CSS graphics, the care and feeding of avatars, HTTP networking between players, and associated cloud-based infrastructure – need to work together at speed and also gracefully handle situations such as when the user suspends the app, when the network connection fails, or an in-app purchase hiccups for some reason.

One of the especially tricky aspects of the testing regime involves “stress testing” the app when a full complement of players are joined. First, a little background…

For the previous version of Trivially (v1), we field-tested it at up to 12 players, and de-rated it down to 6 players for the production version, for reliability. For this new version of Trivially (V2), the player network has been completely redesigned around HTTP and WebSockets, for an awesome and interactive HTML/CSS/CoffeeScript (Javascript)-based remote experience. In other words, where V1 players had to install a dedicated app (“Trivially Remote”) on their iOS devices in order to participate. V2 players have it easy: they just navigate to a web page and start playing.

This web-based approach for players significantly reduces the “friction” associated with the game: it’s a lot easier to explain to the average person who just wants to play: “just hit this particular web page and you’re in”.

And the new design is much, much more robust, reliable, and responsive, so much so that we feel comfortable shipping the production version with an 11 player limit, up from the 6 player limit of the previous version. Based on our tests with a 1st generation (i.e, slower) iPad using experienced test pilots under strict supervision, we think we could go quite a bit higher (please don’t try this at home, for Pete’s sake!), but a worldwide avatar shortage has forced our hand to ship with a more pragmatic 11 player limit.

So how do you stress-test the app with 11 players? It’s pretty straightforward: you line up 11 devices, join them to a Trivially game running on an iPad, and hit “Start Game”. Ideally, you’d have a couple of helpers around to hit the buttons on the remotes before the bell rings (if you have any children at your disposal: they are especially good at this, as they tend to do things you don’t expect, which improves the test “surface area” – a good thing). During the test, we monitor the health of the app via the iPad’s iOS “console”, accessible via the Apple XCode developer tool while looking for missed answers and any other indicators of sluggish or lagging communications. We also test these mini-scenarios:

  • Hit pause on the iPad, or on a remote, while a question or answer is displayed on the iPad… do all of the remotes respond instantly?
  • Suspend or terminate the app on the iPad… how do the remotes respond, and how quickly?
  • Close the browser window on one of the remotes… does the avatar disappear immediately from the avatar “stage” on the iPad? Re-open it immediately… does the avatar recover its “session” as expected?
  • Close the browser windows on all of the remote players at the same time… in how responsive a manner are the avatars removed from the Trivially “stage” on the iPad?

For some of these tests, we’ll line up as many physical devices as we can, of as many different vintages as possible, to account for variations in processor speed and other hardware capabilities. It’s fun to watch all of those little screens changing in unison as questions are posed and answered on the Trivially screen on the iPad.

For the full-on stress test, we will often run a special form of the test using several browser instances on a Mac laptop to masquerade as multiple players; these kinds of players often interact “faster” than iOS-based ones, which ups the stress ante a bit (again, a good thing).

As part of the Beta test, we’ve been distributing test builds to friends, to get their feedback on the game and to help shake out rough edges and bugs. We send our many thanks for those folks; through their help the game has significantly improved in big and small ways. I thought it would be appropriate to end this post by sharing a photo taken by our friend Mike Swanson, who has been really helpful with his advice, feedback, and bug-detecting skills. Mike is a pretty competent iOS guy in his own right, which means that he of course maintains a stable of iOS devices at his disposal, which he thoughtfully aimed at Trivially for a little stress testing of his own. If you look carefully at his photo, I think you’ll count 8 devices. (Thanks, Mike! – love the photo!)

With any luck, this new version of CrowdGame Trivially will be available in the Apple App Store very soon, and you’ll get to give it a spin… and let us know what you think!