· 13 min read

How We Built GameAnalytics (An Interview)

Editor’s note: A few weeks ago, GameAnalytics turned 5 years old. What better way to commemorate this landmark than by interviewing our senior frontend developer and SDK team lead, Nikolaj Pedersen. Nikolaj has been with us from the beginning and his work has been essential in the development of the tool that you know and use today. ?

Q. Nikolaj, you’re GA’s longest standing employee. How did it all begin?

The idea behind GameAnalytics originally came from a Danish game company (now called Cape Copenhagen). Back in 2010, they created an internal analytics tool and met with our founder, Morten Wulff.

Morten had previously founded a tracking company called TraceWorks and together they discussed the idea of building an analytics tool available for all game developers. However, Cape Copenhagen decided not to pursue analytics and instead chose to focus 100% on creating games. They were therefore not part of development going forward.

Morten ran with the idea and managed to procure financial backing. With the funds secured, he needed a team to start the development. I was part of that initial team of 3 developers, including the CTO (and co-founder) Christian Thurau and Julius Šėporaitis.

Christian Thurau
Christian Thurau… strategizing

The first years were spent at an office in Copenhagen (Denmark) together with a cartoon/media company affiliated with Morten Wulff’s brother. We had cheap rent and could borrow monitors/computers. Here is the first picture I took. You can see some props that were used in a children’s TV show (the office was filled with this kind of stuff).

GameAnalytics Copenhagen Office
Our first office in Copenhagen

The office was located across the harbor from Copenhagen’s city center (an old ship yard) and most of us had to take a small ferry across each day. Every winter the waters would freeze and the boat would not be able to sail for a period.

Frozen Water in Copenhagen
Sunny Copenhagen

But it wasn’t all bad – in the summertime we could jump straight in the bay to cool off.

During our initial development we used a free C++ version of Quake3 (IOQuake) with our tracking implemented. This was the first game sending any events to GameAnalytics. After lunch we would play to generate events. Christian Thurau was a former Quake3 esport player so he almost never lost any matches!

GameAnalytics - First Events
The first game events ever sent to GameAnalytics

Q. What were you working on before starting at GA?

I was hired by GA because of my master’s thesis project in game programming. My thesis was focused on creating an analytics visualization tool for displaying and replaying game sessions.

At University, our team created a co-op game called Apollo Descending in the Unreal Engine 3 and we had 7 playtester sessions. I implemented data logging for every player using the same principles which ultimately ended up in our core GA SDK code (including the threading and queuing functions).

Apollo Descending – Playtester Footage

I created what I called the Gplayer (using Google Maps and lots of custom Javascript), to visualize the data. The Gplayer showed a game level map (top down) and could replay a session showing the movement of all players, highlight key events and and statistics, and allow zoom (like Google Maps).

The GPlayer
Gplayer replaying a game session displaying statistics

After graduating I was trying to establish a game analytics company myself (while working as a frontend developer), along with a Professor from college whom I knew from my thesis. Sadly, we weren’t successful in securing any funding so the Professor decided to show my thesis to Morten Wulff. I then became the first employee of GameAnalytics.

Q. What are the main features you’ve worked on?

I started working on frontend and created the first version of our tool. This was based on Javascript (Backbone) and Python (Tornado). At that time I also coded the foundations of the analytics calculations that were performed on the web-servers.

v1 of GameAnalytics
The first (fully featured) iteration of GameAnalytics and the explore tool.

We later decided to switch entirely to using AngularJS (Javascript) and to move all analytics calculations to a backend written in Erlang. I worked on a range of frontend tasks over a period of 8 months leading to this updated version.

GameAnalytics Overview Dashboard 2017
GameAnalytics as it looks today… many iterations later!

It then became faster, prettier, more advanced and easier to work with.

Later I became the lead for our SDK development team and today I lead the frontend and SDK development at GameAnalytics.

Q. What would you say GA’s biggest achievements have been over the years?

A big achievement would be the fact that we are still free while providing a great service for all game developers.

Many competitors have perished over the years. One can speculate as to why this has happened (each perhaps with a different story), but one deciding factor is definitely the monthly cost of running a big data service; how it scales and the maintenance needed. We are very focused on cost reduction and strive to produce code that efficiently processes a lot of data with as few resources as possible.

I feel that we have been good at reinventing our tech stack to keep up with the changes in big data (backend) and user experience (frontend) while providing a very easy implementation (SDK).

On that note – we are working on some very cool stuff at the moment!

Q. What have been your main development challenges at GA?

Big data is the major challenge at GA. Processing billions of events each day while focusing on optimisation to keep it fast, cheap and stable is not exactly an easy feat. A big shout out to all our awesome backend engineers!

Personally, the biggest challenge was the creation of our first version. I had to code everything from backend metrics (Python) to chart rendering (Javascript), while under pressure to deliver within our funding limit. Initially we were not experts at analytics so we had to research everything (chart visualisations/metric calculations) while implementing as we went along.

For the next iteration we decided to transition to a full single-page application using APIs for all the data. At this point we had more frontend developers and a product designer. Working with them on this project was certainly a joy, but also a very time-consuming challenge.

Q. What are the main tips you’d give our users to get the most from GA?

It would be to use analytics early.

For new users

It’s all about getting started! Don’t expect to get it right the first time and ignore the analytics buzzwords you might not understand at first.

  1. Implement the SDK (it’s very easy!)
  2. Deploy your game
  3. Get a lot of information from default statistics

Even the most basic implementation of our SDK offers some very useful features, including automatic email reports showing your daily active users (DAU) and other core gaming metrics.

For current users

One of the best uses-cases is to harness analytics in order to measure and adjust your game balance for the benefit of the players. Some levels might be so hard, or some weapons so OP, that they skew the overall balance of the game. Even the slightest imbalance can cause players to leave.

You can determine the state of your game balance by tracking specific in-game events, such as levels played, number of deaths and usage of weapons. If you track your initial player flow (like a tutorial, or the first 10 levels) then you can use our funnel reports feature to investigate where users might stop playing.

Changing gameplay parameters (like weapons) can have unforeseen effects regarding game balance. However, having this tracking implemented from the get-go means you can assess and verify the game balance with each and every gameplay adjustment that you make.

Q. How do you think the gaming landscape has changed?

We have seen an increasing tendency for developers to launch their game whilst still developing and improving it. How this works is very different between PC and mobile games.

Mobile Games

Several big mobile game companies (like King and Supercell) have raised the bar – both in quality and marketing tactics. They dominate the charts with polished games that have a huge marketing budget. They get players through advertising and push these to other internal titles to increase the value of players with pre-established purchasing tendencies.

It is therefore getting harder to compete and create breakout Indie hits like Crossy Road.

This is comparable to the music industry (or in fact any rapidly developing market). Many great bands struggle to get recognition, whereas established artists remain visible due to marketing and brand recognition (even with mediocre/poor releases). A new band/artist needs both a brilliant album and social buzz in order to breakthrough. It is possible, but it’s more difficult.

Mobile game developers face the same problem – securing a feature on app stores is getting harder. That said, there is still room for unique and polished games. To increase the likelihood of receiving a feature it is important to optimise your game as much as possible prior to your global launch. Mobile players are growing accustomed to extremely polished games. They have now come to expect this level of quality along with a constant flow of rewarding gameplay. Even the slightest annoyance can make a player leave and create a negative review.

We are seeing more and more cases of soft launching mobile games in specific countries or territories for several months in order to polish the gameplay (and other tech systems) for a worldwide launch.

PC Games

On the PC there are several digital distribution stores, but the most popular is still Steam. They introduced a concept called Early Access, allowing developers to sell a game while still in development. The developer then receives some sustained revenue and important feedback from those players. We have also witnessed the emergence of many Kickstarter titles securing funding for successful game development campaigns, such as The Banner Saga and Wasteland 2.

Most Funded Games on Kickstarter
The most funded video games on Kickstarter

PC player purchase behaviour is quite different compared to mobile users. Players seem more at ease buying buggy, alpha versions of a game if they provide a unique experience and they feel instrumental in the creation of this vision. Players have a much higher appreciation for unique game mechanics and will tolerate frustration as they enjoy the challenge.

A good example is the delightful Astroneer which is currently in a pre-alpha version. It is attracting a lot of players, regardless of its limited features and many frustrating bugs.

Astroneer Game
Astroneer – buggy but beautiful

The consensus for mobile and PC games is to release early. Get valuable feedback from users while polishing and improving the game – based on data-driven insights.

Q. Where should developers focus their attention in 2017?

This is related to my earlier answer – always soft launch games and get user feedback.

Make sure your final global launch takes place after you have exhausted means of improving your game. Don’t decide this fact yourself. Game developers are too close to the creation and therefore often blind to even the most obvious game flaws. A second opinion is great, but the data from a select demographic of unbiased players is way better.

Today we have many social channels to voice our opinion (App Store, Steam, Twitter, Facebook). A premature mobile game launch will seriously affect your game installs, even if you patch it later to achieve a perfect experience. Ensure your game is the best game that it can be prior to your global release. Hopefully this will create a ripple effect, leading to many great reviews and positive recognition on social channels. If you’re one of the lucky few, this could even trigger a store feature.

During your testing and soft launching phases you should implement analytics and add more tracking as you go along. In software development, there is a common procedure of always adding test-case coverage whenever a bug is found. The same should apply when you log gameplay “bugs” from your players.

For example, if many users complain about a level being too hard then you should fix the level balance, but also implement tracking of progression using an analytics tool (if you have not already) to make sure it will not happen again. As mentioned – altering gameplay variables can have an unpredictable ripple effect on balance. Tracking the data will allow you to monitor the changes you make.

To recap:

  • Involve your users early with testing or a soft launch in a single region
  • Use analytics to gather actionable insights to empower your decision making
  • Continue to add tracking as you learn more in order to monitor how your game is balanced
  • Launch your game globally when you feel the players are happy

Q. What specific events/moments do you remember the most?

I could say the launch of some important feature, but that would not be true.

My fondest memory was during a team-building puzzle exercise with 3 other SDK/frontend developers. On that day our collaboration seemed natural as we divided tasks, communicated clearly and helped each other where needed. Each person was eager to solve puzzles but did not dominate the process. And we broke the all time record.

On that day I remember a feeling of being fortunate. As I realised the daily work at GameAnalytics had been almost the same. We seem to have a natural focus on solving problems and objectively discussing how to do it – without noisy politics or rockstar egos. Just nerds figuring out cool stuff to make GameAnalytics even better.

Geeks
Record-breaking “Viking coders”

Q. What do you think the future holds for GA?

We want to be the default analytics service for all game developers on all platforms and engines – whilst forever remaining free! We think it’s possible so we keep crunching.

As we journey towards that goal we will continue to implement emerging technologies to enable deeper and more flexible analytics features while improving our UI and accessibility. We are working with very interesting technology that will be shared with you all during 2017.

Q. Is there anything you would like to add?

I really want to praise all of you awesome game developers out there using GameAnalytics over the last 5 years. We never cease to be awed and excited when we play the result of your amazing talent and hard work. You guys are pushing us each day to work harder at providing the product you need.

Special thanks to Crossy Road, Drive Ahead!, Pou, and Zombie Catchers – to name just a few of the awesome games that have given us hours of fun. Several of you have been contacting our support with feature requests and bug reports. All these are registered and discussed by the team and provide great insight into what you guys need.

Thank you!
~Nikolaj

Nikolaj Pederson