Wildlife is one of the 10 largest mobile gaming companies in the world. But that didn't happen overnight. Our portfolio of over 60 games engages billions of players around the world — and that's possible thanks to incredible teams that focus on making Ads Technology.
Why do we care about advertising?
Let’s imagine that you have nailed it: you have the ultimate mobile game that will become viral and will have tons of downloads. Now, is it a business? Well, it could be… if you monetize it!
How to make money out of mobile games
You could think of a game as a system that acquires users (usually at a cost) and generates either money or churn:
To monetize a game you will most likely (a) sell your game in the store or (b) make it free and monetize it inside the app. Let’s talk about this later case: you could offer in-app purchases (ie: swords and gems), subscriptions (ie: pay recurrently and get goodies), or show ads.
But again, why caring about ads for mobile games?
This is a mega-competitive industry and a large part of the gaming audience is offered/expects to get the fun for free (this is so true that before being Wildlife Studios, our studio was named Fun Games For Free!). So ads are powerful because they are a way to monetize this large audience of people who is not willing to cash out money for it.
OK! I want to display ads. Now what?
Now the fun part starts! You have an iOS or Android application and you have selected certain spots where ads can be shown. It’s time to go to the SDK supermarket and choose between Admob, Facebook, Mopub, AdColony, Applovin, Ironsource, Applovin, UnityAds, Rubicon, Vungle, or…
You are starting to see it right? It’s not so easy to choose — and also very inefficient. Choosing a single network will allow you to monetize users for a certain region, demographics, and ad type but will totally fail to do so for others. Just to give an example, Facebook you could be very effective monetizing a 35-year old person from California but might just not have anything good for a 14-year old kid in Singapore which could be much better served by, let’s say, Ironsource.
This is why people use a mediation SDK which allows you to create a “waterfall” of networks, trying to maximize revenue.
A waterfall would look like this:
Here we introduced a key term on this business:
- eCPM: this roughly represents how much money you will get every thousand impressions
- Fill rate: the percentage of times you ask for an ad and you get one
As you can see, things start to get funnier, now you have a business to optimize. 😱
Ads Tech at Wildlife
As I've mentioned earlier, at Wildlife we have a portfolio of over 60 games that accumulate more than 2 billion downloads, so we built our own technology to efficiently monetize our games and operate the ads stack.
Here is a diagram of how this looks like:
It's worth mentioning that we have a world-wide business that never sleeps: when people in the US have gone to sleep, Singapore kicks in, and then Europe… The fun runs 24x7!
How mediation works
The mediation mission is to be “one SDK to rule them all”. It has to provide a simple, uniform, low-footprint, never-crashing service for games to monetize every opportunity. Behind the scenes, it implements the core waterfall caching strategies, integrates +20 SDKs from the networks we partner with, takes care of analytics processing, and A/B testing.
One more thing: it also has a rendering engine of its own. This is because our mediation is integrated with an in-house world-class Exchange service that executes real-time auctions on a set of OpenRTB partners. Some of these partners take care of rendering their ads and some delegate that task to our SDK. Check the next section to know more about RTB.
This is a critical part of our ads stack that requires a team of highly skilled developers. We currently write different versions of our SDK for iOS (Swift), Android (Kotlin), and Unity. For efficient communication between our SDK and our backends -normally implemented on Go- we favor the use of gRPC and protocol buffers.
In the latest times, we have been also becoming fans of reactive programming so we refactored a core part of our iOS SDK with extensive use of RxSwift (we have different languages and platforms but the same coding principles). Finally, testing a lib that will integrate into so many games is crucial and we take our testing culture seriously. Besides unit, integration, and UI tests, we have an extensive infrastructure for having test modes and crafted configurations for test automation.
Real-Time Bidding explained
The ad business is evolving into what’s called Header Bidding, Real-Time Bidding, or just Bidding. In this world, instead of going through each network in a waterfall fashion, we run a parallel server-to-server auction and select the winner using either a first-price or second-price algorithm. Here’s an example:
Here things start to become more “backend-ish”. If you love Golang you’ll find yourself at home. We care a lot about our technology and we can proudly say that there’s little legacy around: we’re completely cloud-based, our backend stack is based on Kubernetes, Terraform, Golang, gRPC, data pipelines run on managed Kafka, Spark, Flink, Airflow and if you keep looking around you’ll get into Redis, Postgres, Kibana, Datadog and that kind of stuff.
Operating an ads business is challenging. We have highly-skilled ops and biz dev team and we support their operation with tools that allow them to manage, analyze, and report what happens on each game.
Our UI for services is built on React and GraphQL. We have extensive RBAC (role-based access control) needs so we have partnered with authentication providers and implemented OAuth across the whole infrastructure. Internally, everything is based on REST micro-services that allows each part of the company (for example, User Acquisition) to seamlessly integrate with each other.
Last but not least… the inner circle of magic. This topic would need an article as extensive as this one and we can recommend you read our articles here at Wildlife's Tech Blog to learn more about what we do in Data Science. What we can say at this time is that, as we have seen before, there are a bunch of parameters and complexities to tune in order to have the best performance.
For example: is it better to have a long and dense waterfall at the risk of timing out and losing an opportunity or is it better to cluster smartly around some price points? Does your answer hold the same for any device in any location in the world? Those kinds of things are the problems that the Data Science team tackles in the context of ads optimization.
And sometimes the problem is just about the product. For example: is 100% fill rate the target? No! It would be very easy to have high fill rates by spamming the user with ads. That’s why we limit ourselves to how many ads we show per session. And what’s the optimal point? Is it something to A/B test? Well, there you go, more to optimize. 😀
Join the team!
I hope you enjoyed reading about what we do as much as we enjoy doing it! After all, having fun is part of our core business, and that's why we want to build games that will be remembered for generations.
We have opened our Buenos Aires office last year (photo below) and we are hiring! We have open positions for Senior and Jr. Managers, Mobile, Backend, Fullstack, and Data Engineers.
Are you interested? 🚀 Reach out here => http://lifeiswild.co/careers
See you soon!