KATY PERRY POP

www.katyperrypop.com/

Platform: Mobile (Android/iOS)

Tools Used:  C#, Unity, Jenkins

Duration: 1 year

Team Size: 25

Role: Software Engineer

I joined Glu Long Beach in early 2015 to work on the Katy Perry mobile game. My role was that of a front end engineer, with all my work taking place within the Unity Game Engine. Given the small team size I was able to work on a variety of different aspects in the game development pipeline. A few of the things I worked on are:

  • Investigated and developed a chat API for the core code
  • Optimized the animation system which reduced game load times by over 50%
  • Developed tools for artists and designers which assisted with faster delivery of new content for live builds
  • Maintained the Jenkins build system, daily builds, and prepared builds for App Store Submission
  • Implemented and optimized new "juicy" UI into the game
  • And more!

Programming Choices:
The hallmark feature of Katy Perry Pop is that it is a server authoritative game. No cheaters allowed. This presented some interesting challenges when implementing energy regeneration with a possibility to overflow past the maximum. I will attempt to offer a glimpse into how I fixed these issues here.

In the most basic version of a server authoritative game, the client waits until the server approves the player's actions. This "waiting" however is unreasonable for mobile games, where network connection may be slow and unreliable. All features that I implemented required sending some sort of rest call to the server, but managing an asynchronous validation system with energy proved to be difficult.

In KPP, the player acquires energy through pick up, regeneration, leveling up, and by purchasing from the store. Only by purchasing from the store can the player go past their maximum. Because syncing all these acquire methods is difficult, I decided to make the client "dumb" and the server "smart". The client had no perception of maximum energy, nor how much to award. Instead the server would do all the appropriate calculations and send up the items to the client. This prevented having to do multiple calculations, and kept the client code short, as there wasn't a variety of cases to always be checking against.

However, the server has no concept of energy being picked up. If it is rewarded, the server automatically awards it to the player. For this, I decided to make spawned energy rewards go through a pick up animation, so that the player could still receive positive feedback instead of the energy just being incremented in the main energy UI bar.

Katy Perry Pop © 2015-16 Glu Mobile Inc. All rights reserved.

Katy Perry Pop © 2015-16 Glu Mobile Inc. All rights reserved.