Including Ads in your mobile games
A couple of weeks ago we released Airport Mania: First Flight XP for free. It has passed “ages” since the original release, so Reflexive Entertainment (the copyright owner) decided that it might be a perfect time to let it go free for everyone Taking advantage of the situation they thought it could be a great opportunity to get in touch with “in-game advertising”. In the end, people would decide whether it would be better playing for free + ads or just the original experience for one buck.
So we as developers had to think how to integrate the ads into the game. There was several assumptions to be considered:
- Between each level we should show a screen with 2 ads simultaneously, a small banner at the top plus another bigger on the middle of the screen. The bottom side would be reserved for a Continue/Resume button. It was important (not critical though) that users had to wait X seconds on this screen, or what it is the same, do not allow them to skip the ads. We shouldn’t be naive at this point because although the main goal consisted in experimenting with in-game advertising, earning some coins out of the ad prints was also in everybody’s mind. The following screenshot shows what I tried to explain:
- After each X levels, we should show a full-screen-ad or a movie-ad instead of the regular small banners mentioned above.
- In the case that it isn’t possible to retrieve ad-contents (by any reason) we should show offline/custom ads included within the game assets.
- Be independent of the ad-network, so that we could easily change it in the future.
- Supporting both iOS & Android since the game run on those platforms.
Choosing the best ad-network wasn’t our work. We just had to think the best way to integrate it into the game. One of the things you learn when entering the problem is that you can either use an integrated “all-in-one” solution (which basically is “platform” that allows advertisers, publishers and developers work altogether) or you can use the specific tools that each ad-network provide to developers directly. In practice, the latter involves that if you implement your in-game ads with an specific SDK and you want to move to another ad-network in the future, you will have to re-write some good code with the new SDK to support it. Even although most of these SDKs are very similar in terms of usage, it doesn’t look like a good idea… 😛
So we decided we wanted to look at the first option. How many “integrated” solutions were at our disposal ? What of them were supposed to be the best? Honestly, we don’t know what’s the best. There are a lot of solutions and you can assume each of them has its positive and negative points. These are just a few examples, not necessarily the best, but they’re quite well known: AdMarvel, adwhirl, mobclix, InMobi, smaato, …
As a developer integrating the all-in-one solution, you should consider the following issues:
- Ad-networks: How many ad-networks will I be able to use?
- Reliability: Is it capable of feeding ad-content anytime & anywhere? If it’s not the case, you could at least take advantage of the situation and prepare yourself to show offline ad-content (aka custom ads). Those could be ads presenting other titles of your company or whatever. The lack of ad-content usually depends on the ad-network, but the all-in-one solution may play its part too, so be aware of that!
- Features: Does it support Android? iOS? Windows Phone? Is it able to provide custom-sized ads and full-screen ads? And movie ads? The control panel (server side) is up to the task and easy to use and setup?
- Friendly API: If I want to write some behavior not initially planned on the SDK, or I want to support some specific type of ad that only a few ad-networks provide, does the API help me doing so or it just does the opposite? (putting things harder than they should)
- Tech Support: Do I have a phone number or an e-mail for technical support? Are the company behind the all-in-one solution fast and efficient answering my questions? If I have an specific problem with the ad-network that I’ve chosen to provide the ads, does the technical support get in touch with them to solve the issue faster?
Finally, we ended up using the AdMarvel platform, plus millennialmedia (aka Millennial) as the ad-network. AdMarvel is an Opera Software company, so we expected a good SDK free of issues, though it wasn’t the case :-P.
And here’s our brief experience using AdMarvel (I will be telling only the negative points since I don’t think the positive are worth telling now):
- You cannot simply set MAX and MIN banner sizes within your app or set the appropriate sizes in real-time. Sizes are fixed prior to app initialization and they cannot be modified/scaled later, even if you get access to the banner view. This means that whether you receive a banner that is wider than you expected it will show shrinker, or stretched otherwise.
- If you want to add a custom effect to the banner, like for example glowing it up while pressing with the finger (as it was a regular button in the game) you will find yourself into serious trouble. You need to figure out the view’s hierarchy in order to retrieve the proper banner view, then its position and size in screen coordinates.
- The lack of useful callbacks makes your life harder. There are a lot of events you cannot control because of that.
- You have no control over the movie ads. For example, you cannot force users to see the whole video. Barely you can’t interact with them in any way.
- There’s no way to know when a Millennial’s fullscreen ad has been closed (note that fullscreen ads are also know as “Interstital”).
- On iOS, fullscreen ads are surprisingly slow to render :-S
- The SDK documentation is mostly useless from a developer point of view.
- And there are surely more things that I’m missing right now…
- All the above means that AdMarvel still has a lot of room for improvement, but in the end it worked out
And finally, if you have had better experiences using other solutions, drop a comment and let us know!
Thanks in advance!