Sponsored By

Postmortem: Traps for Friends - our attempt at fair IAP multiplayer

Two years ago, we decided to improve the lack of turn-based PvP on mobile. How can we make a multiplayer game fair and IAP-based at the same time? That was a tough question that I hope we solved well.

Ivan Mir, Blogger

February 17, 2015

7 Min Read

Two years ago, we decided to improve the lack of turn-based PvP on mobile. At the end of 2013, we founded ComboCats Studio to create a turn-based gaming platform where you could easily add new games and have a single account between them.

Traps for Friends was a “test” game to build the platform and see how some of the ideas would work. It’s a game about building a castle, setting up traps, and then trying to steal the opponent’s treasure while she is invading to steal yours. The process for defusing traps is based on rock-paper-scissors-like mechanics: the heroes have different weaknesses and immunities against different kinds of traps. At first glance, you’re playing with pure luck. But like in a regular RPS, you can play psychological games by trying to predict which hero your opponent will choose or set up traps of one type only to cause confusion.

How can we make a multiplayer game fair and IAP-based at the same time? That was a tough question that I hope we solved well.

Traps for Friends - Splash


What we think went right

From the beginning, we wanted to have an “Adventure Time” feel of a magical world that lives on its own. But we felt that it’s not only about the visual style.

We analyzed the art of many other games, and what we didn’t like in many of them was a half-broken 4th wall, where the characters are posing and looking directly in the camera. So we tried to make our heroes act more natural, as if they are just minding their own business in their world and looting castles for life. We also tried to make their personalities realistic and not exaggerated.

There’s also no assistant character at the start to help you click through the UIs for the first time. Sure, it might make the first user experience less personal, but we think this kind of forced interaction can interrupt player’s immersion. It’s like a store assistant suddenly asking you if you need any help while you’re minding your own business.

To make the game more alive, we created small spirits to inhabit the backgrounds. These spirits sometimes appear to run and fly through, or they just peep out from screen borders to take a look at what’s happening. The backgrounds are animated too: the flames burn, the eyes rotate, etc.

Traps for Friends - Floors

[Click for high resolution]

What we think went wrong

Because of the chosen style, animations were hand drawn frame-by-frame. That’s fine for a small game, but not when you have 10 characters and 15 traps with different actions for each. Joint-based animations would have saved us a lot of time.

And maybe it’s just me, but I underestimate the work required for UI, even with fully prototyped wireframes, every time. It was hard to build it correctly from the start; new elements and features just kept popping up, and the layout needed to be changed over and over, distracting the artists from their current tasks.

Game design

What we think went right

We didn’t want any time locks or match limitation in any of our products. Pay-to-win, of course, was not an option either. That leaves fewer options for small multiplayer games.

Our monetization idea was based on a weekly top score and a “visual ladder.” Your activity in the game isn’t just a row in the score table; you have a whole menu dedicated to it. Your castle stands in the neighborhood of your friend’s castles. And if you get a huge score by paying or playing a lot, then everyone sees your awesome customized castle at the top of the world.

If you’re not aiming for the world top, you still have a friend’s top. All your opponents can see your castle, avatar, and score in the “VS. Screen” before each match. Your game performance gives you money to improve your castle and score to rise to the top, but neither the castle nor the score have any influence on your matches.

There is also a survival game mode where you’re trying to pass as many floors as possible in an infinite castle. It’s basically a single player infinite runner, and you can cheat in this mode by using revives. Survival mode gives you a higher score than PvP matches, and it doesn’t affect other players.

This way, monetization aims for the players who want to gain visibility and status. And since the score is slowly degrading over time, you need to play or invest on a regular basis to maintain your positions.

[Click for high resolution]

What we think went wrong

Game content can’t be extended much except for new castle and floor designs. Of course, we planned more complex games for our platform (like turn-based strategies), but investing that much time and having little space for updates isn’t good.


What we think went right

If you’re still not sure about using Unity for your next project, then just calculate the time required for your team to produce the functionality that is already available in many popular Asset Store and Prime31 plugins. Unity may not be the best engine by design, but it has an amazing community that has created incredible amounts of code and content that you can reuse in your games.

Unity has had its native 2d tools for over a year, but 2d Toolkit still rocks. It has a smart camera, great UI (we used it for very complex menus), tilemaps, and different kind of sprite tools, and it also supports atlases for different resolutions.

Traps for Friends - UI

[Click for high resolution]

What we think went wrong

After reading how awesome Node.js is, we picked it for our servers. But it turned out that many Node.js packages are still unstable. For example, we lost up to a week due to Socket.IO bugs. Any other more mature solution could have saved us from these kinds of issues.

We hired an experienced backend programmer, but still a year-old JavaScript code base does not look good compared to other languages. It’s hard to read through callbacks even with the use of promises. In the end, going after the hype was just not worth it.

The client code is good enough to extend and maintain but still too coupled for some tests. We used monkey testing, with a bot clicking and scrolling everything it finds (and it found a lot of bugs!). But next time I’d like to try one of the MVVM frameworks for Unity.

But where’s the game?

Unfortunately, it will probably never be released.

We were developing Traps for Friends in Kiev, Ukraine by a mixed team of Russians and Ukrainians during last year’s upheaval. Then, the Russian government annexed Crimea, and the war started. This has led to colossal currency falls, so we lost our investors right before the soft launch and couldn’t find any others. No one in Russia and Ukraine had money in the middle of the crisis, and American and European investors weren’t too willing to fund a company from a region near an ongoing military conflict.

Well, we just found ourselves in the wrong place at the wrong time!

Read more about:

Featured Blogs

About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like