Case Study: Join the Pack – ShiVa Engine

Case Study: Join the Pack

Juan Belón Pérez from xixgames just released his new mobile title “Join the Pack”. Faced with the sudden gain in free time, he agreed on an interview with us, where he gives you insight into the genesis of this beautiful herding game and reveals some of his networking secrets along the way. Enjoy!


Hello Juan, your latest game “Join the Pack” has finally been released after years of work, congratulations! Ever since you posted early screenshots with your very distinctive art style on the ShiVa forum, we kept an eye on your project. But for everyone else who is not familiar with the game, please describe Join the Pack to our readers!

Join the Pack (JtP) is an animal herding game where you play as a shepherd dog. It features low-poly art, easy to learn but hard to master gameplay, and lots of different mini games. We designed it in a way so that everyone can enjoy the game: Social players can bring all their friends into the game and send messages to make them happy. Gamers who seek a challenge can try to get all the items, do all the missions, or challenge their friends and compete with them. Even casual gamers who just want some quick fun during a short metro travel can enjoy this title. And it all plays inside a beautiful environment with a smooth progressive flow and no ending, thanks to the level generator.

“Join the Pack” is different from a lot of popular games – it does not have guns, the graphics are minimalistic, the overall style is cartoony and the gameplay revolves around herding animals. It is nice to see something off the beaten path, especially in the mobile space where the majority of developers appears to be merely cloning the popular titles of the day with birds in them. How did Join the Pack come about?

JtP was the next logical step after “The Legend of Kuzu”, another ShiVa game I made for OUYA that people really loved. It all started with another project called “Farm Care” that I am currently developing. Naturally, I had to do some research into Steering Behaviors and complex AI Behaviors to realize the mechanics of the game. I also drew inspiration from the cow herding mini game you can find in Zelda: Twilight Princess and the cartoony Nintendo style in general.


JtP was mainly developed by just one person, Juan Belón Pérez, with 3D models made by my friend Miguel Díaz, who also made some of the scenes. I have been really lucky to have him on the project, since he is a ShiVa master and one of the few people who can bring an idea to life from “nothing”.
Thanks to ShiVa, the project is working on a lot of different platforms (currently iOS, Android, Windows Phone, BlackBerry). I used the native C++ code translator to be able to integrate vital parts of the game like Facebook and image processing.

At its core, Join the Pack is a social game. Apart from the obvious Facebook integration, you also have a system where users can send each other messages inside the game. You have obviously spent a lot of time thinking about networking and server code – please share some of your experiences with us!

Everything in JtP is connected. Once you enter the game, it checks the Facebook connection, profile and friends, and tries to keep your profile updated and synced in an efficient way, one level at a time. It uses the ShiVa XML features and http calls in conjunction with native code for each platform.
The Facebook integration is done with Parse. It is missing from the Blackberry and Windows Phone right now because unfortunately, there is no Parse support for those platforms. As a concession, the game is cheaper in those markets, although sending and receiving messages from other users still works.


JtP uses 3 different servers:

  1. A PHP server syncs player profiles containing scores, messages, and friends. It also decodes and downloads images from Facebook profiles.
  2. A Parse SDK server is used to store data from users and to analyze it with big data tools.
  3. A PHP + JS + NoSQL server handles user messages. When the load of the server reaches its limits, we can switch to a secondary one and from XML to JSON. The whole system is designed to work with more than 1M users.

Servers are neither easy nor cheap, and I found this to be the easiest way to integrate the p2p communication and have a clear/transparent functionality between devices. For instance, the game calls a function to store the new high score on the server, so other players (friends) can compete. This function is written in Lua and converted to native C++ code or, depending on the platform, another native code bridge. The function checks whether the user is connected to Facebook, and depending on the type, stores the score either in the Parse cloud or the NoSQL database. The server responds, crossing the bridges backwards to ShiVa, where the message is checked again and processed, making changes in the game, filling HUD components, creating 3D objects and so on.

Looking back at your Join the Pack development, where did ShiVa help you the most, and what where the challenges you had to overcome?

It is really easy to work with different platforms in ShiVa. You only have to use the platform exporter once, then you can update the native code and the STK package with each new version. Other engines make you waste a lot of time testing a build on different platforms by re-processing all the assets each time you switch between platforms and packaging when you build. Not so with ShiVa, where it is all just one click.

The social parts were integrated spending more time with the SDKs than the engine itself. I use other engines too, but choose ShiVa whenever I need something that runs fast and looks the same on all the platforms. With other engines for example, there were a lot of problems on the PSVita because of shaders, something that will never be the problem with ShiVa because the shaders are managed by the engine on its own.

Contrary to the Free to Play trend in mobile gaming, you decided to release your game as a paid product. Why did you make that decision?

In my experience, the best platforms for our paid products were Apple, followed by Amazon, Sony, Google Play, BlackBerry and Samsung. I only charge for games when the quality is great. I really dislike the f2p business model, but it is the preferred by the players nowadays… you can read my thoughts on this in a Gamasutra article I wrote.

Even today, there are a lot of games that are still using the paid model, like The Paper Fox, Monument Valley, Tengami, or Leo’s Fortune. And there is a dedicated section in AppStore with only paid games (pay once, play forever). But the market demands the opposite. In fact, we at xixgames are developing a lot of f2p titles as a market economy test, and it makes me sad that games hacked together in 6 hours often get 10 thousand times more downloads than others that took months or years to make. You can make a game in 6 hours, it is really simple, downloading a template and changing a few things, but that game is empty, with no soul or art… When you buy JtP, you get not only the art, but a quality indie product that is not just another birds clone, something innovative and fun!

Finally, where can we get Join the Pack, how much does it cost, and are you planning on porting the game to other platforms?

The game costs 2,99$ or the equivalent in your country (2,99€) for Android and iOS, and a little less for Windows Phone and BlackBerry. You can see all the download links on our web page.

Thank you very much for the interview! We wish you all the best with Join the Pack as well as your future endeavours!

Thank you for your interest in the game and your help as engine, community and support all in one.

xixlogo2About xixgames
Juan Belón Pérez lives in Spain and has published 21 games for 10 different platforms under the xixgames brand. Other than gaming, his services are available to private clients and enterprises (500-5k employees) all over the world with more than 200 projects done not only in multiplatform game development, but also web design, analytic programming, tech consulting and more.

  • slackBanner