Plumbee engineering

Stardust particle effect editor

| Comments

TL;DR: We made an open source app to create and edit particle effects for Flash, try it here.
Github repository links:
Editor
Playback/loader library
Enhanced Stardust library

Our games at Plumbee require top quality graphics, and this poses many artistic and technical challenges. The highest quality animations and effects can be made with professional software tailored to make these - e.g. After Effects or 3D Studio Max. While we can import these to our game as movie files, they have a big file size and cannot be changed at runtime.
These two shortfalls prompted us to explore the use of runtime-generated particle effects in our games. Currently one of the best particle effect engines for AS3 is Stardust. It solves the two problems mentioned above, but there is no GUI tool for it that artists can use to make particle simulations. This makes the process very slow. A programmer has to make the changes based on the artist’s instructions and needs to recompile the app every time they want to see the results. And for artists to make the best effects they need to tweak the simulation parameters a lot.

The Stardust animation editor tries to solve this problem by creating an application which can be used to create these particle effects.

Features:

  • Fully open source: MIT/Apache 2.0 license.
  • Able to create all 2D initializers in Stardust and most actions. 3D effects are not supported.
  • Runs in the browser, no installation needed.
  • Changes to the simulation are updated in real-time, allowing fast iterations.
  • Ability to save and load simulations. The savefiles are simple .zip files.
  • Visualize the zones used by emitters and deflectors.
  • Set simulation properties: blend mode, particle creation rate and pattern, etc.
  • Able to use a sprite sheet to create animated particles.
  • Able to specify a path for the emitter.
  • Able to use multiple emitters.
  • Use a color/background image to better visualize the simulation in its final environment.

Event Logging for Analytics

| Comments

Introduction

Sometimes it’s easy to overlook the wealth of useful information generated as users interact with an application. At Plumbee, we have a highly scalable infrastructure, capable of logging many events. We use this abundance of data to detect patterns and trends which emerge as we apply analytic tools.

Using analytics on event data, we are able to constantly refine and improve our games. Here are some examples of the approaches we have taken:

  • We use data about which games generate the most spins from users to optimize the order of games in our lobby.
  • Our analytics team looked at the order of client events generated by button presses in the game lobby screen. This allowed us to determine the likelihood of a user coming back to a game based on what they did previously in that game. For example, we found better user retention when they clicked the “Collect coins” button and used the free spins feature. This analysis allowed us to tailor a tutorial to guide them along this path.
  • We employed A/B testing to determine if our starting coin balance for new users was high enough to ensure a great experience when they first play. To make this analysis, we looked at events generated by a user’s first session, including how many spins they were able to make before running out of coins.

Facebook Mobile Forum 2.0

| Comments

For the second year running we were invited to the London Mobile Forum organised by Facebook. With around 60 mobile development professionals from many different companies and 10 discussion topics to choose from, it was a great opportunity to get to know the London mobile dev community, share experiences and learn from each other.

Event format

The event was a one day affair with two sessions - one in the morning and one in the afternoon. Each session starts with five speakers presenting brief overviews of topics they would like to discuss. After that, each of the attendees chooses which of the five discussions they wish to join. The group discussions take around 45 minutes and are moderated by the person who introduced the topic.

Each session ends with the speakers sharing the outcome of their discussion with the whole audience and leading a Q&A panel which gives the wider group an opportunity to ask questions and share their comments on the topic.

How we do Canary Deployments

| Comments

Introduction

Testing is one of the most important parts of the development process. However, it is difficult to reproduce all real-world scenarios by simulating user behaviour in a sandbox environment. Even when software is thoroughly tested in the traditional way, there may be specific problems that appear only when real users use the software in the production environment. To improve our confidence in the system beyond what testing can provide, at Plumbee we have implemented a mechanism that allows us to push software changes to a small fraction of the user base in a controlled way - commonly known as Canary Testing or Canary Deployment. The name “canary” is used with reference to the canaries that were often sent to coal mines to alert miners about toxic gases reaching dangerous levels.

Our requirements for canary deployment are:

  1. The upgrade to a new version must occur with no downtime
  2. It must be possible to run both the old version and the new version of the software in parallel - also known as blue-green deployment
  3. It must be possible to run tests against the new version in the production environment
  4. It must be possible to control the percentage of the user base that sees each version
  5. Each user’s experience must remain consistent throughout the upgrade
  6. It must be possible to roll back the upgrade easily when required.

Meet Jessica Karotz

| Comments

Karotz - or as it used to be known Nabaztag - are small electronic devices that you can control programmatically. They contain a camera, speaker, microphone, a collection of LED lights, two rotatable ears, an RFID reader, and a WIFI antenna.

Plumbee’s Karotz is called Jessica. We use Jessica for build state notification: Jessica performs a different action after a success or failure of a build in our continuous integration server, Jenkins. There is a plugin available for Jenkins that sends build state notifications to Karotz, but we cannot use this since we run Jenkins as part of the Cloudbees service, rather than managing it ourselves.