Mobile Indie Spotlight Episode #2 : Slyway
In this episode we have the honour to host Valerian MOQUAY, an indie developer from Paris and his app Slyway. Slyway is a puzzle game featuring two endearing characters: Kurt, a teenager who loves to play music, and Sly, his old teddy bear.
The goal of the game is to help Kurt find the shortest way to Sly, while collecting three stars. The player must slide against the walls to reach Sly, all with a limited number of movements and even sometimes with a timer. Slyway is available on Google Play. The game includes several interesting game mechanics, beautiful graphics and has been changed a lot since its initial release based on data collected by monitoring users’ behaviour.
🎙 Valérian can you share a few words about you and Guaranapps?
My name is Valérian MOQUAY and I am a computer enthusiast for a long time. I started programming since I was a teenager. After studying computer engineering, I worked for 10 years in a French pay-TV group before founding Guaranapps at the end of 2016, in order to focus on several personal projects mainly around video game development.
🎙 What is the story behind Slyway game? How did the idea of a baby looking for his bear came up?
Slyway was co-created in partnership with a childhood graphic designer friend, Adrien Chartie, based in Montreal. All the game development was done remotely between France and Canada. Adrien did all the graphics and animations, while I did the programming, level and sound design.
As it was our first real experience in game development, we started with something relatively simple: develop a mobile puzzle game using sliding gestures. We were targeting the mobile market and therefore we wanted a character that would be visible on a small screen. After testing many designs we finally chose a baby because his big head is perfect for showing funny expressions.
The impact of the game’s name to the profile of the audience
The game universe was built around Kurt (the baby) and the goal of the game was to help him reach his bear. At the beginning the game had a different name and it was called Get Teddy. Even if the name was revealing a cute aspect, it made the game look like it was targeting young children which was not the goal. The levels are quite challenging and the game was designed for older players. Therefore, to address the right audience, the game was renamed to Slyway and different skins were added to support the new concept.
🎙 Are you considering any further changes in the concept of the game?
Yes, we are also considering a more radical solution that involves adding completely new characters and giving the players the choice of the avatar. Measuring the most chosen character we will be able to choose a more universal character to highlight in our communication.
“One thing that we learned about free to play games, is that you have to constantly pay attention to the behaviour of the players and their expectations in order to improve your game”
For the moment, the game is available only on Android, but an iOS port is already planned for the end of the year. The initial version of the game was released in August 2017 under the name Get Teddy, while the name change happened in June 2018.
- 5.6k downloads
- 30–240 DAU
- €0,04 ARPU
- ~20% retention in week 1
An initial small spent was made in a Google AdWords campaign to acquire players in order to be able to perform some A/B tests. Other than that, no other marketing activities took place since the game is still in tuning and adjusting mode, for improving the retention and ARPU. Once metrics are improved, a marketing budget will be used to market the game and start growing the user-base.
🎙 Which engine did you use to build Slyway?
As I work under Linux, I prefer open source softwares and therefore I chose Godot Engine. I tried Unreal Engine and Unity3D but unlike these softwares, Godot Engine is open source under MIT license without any royalties. It produces small binaries and it’s stable, easy to use and easy to modify. I personally customised the engine to add assets protection in an apk and also implemented plugins for different libraries that I used, including a plugin to design the levels of the game directly in the editor.
Some libraries used within the game:
- Google Admob is used for ad monetization.
- Firebase Remote Config is very useful for changing different settings in the game on the fly without having to re-publish an update. It is also also very convenient for A/B testing.
- Firebase Analytics is used to gather metrics and monitor users’ behaviour in order to improve the game.
- Firebase Dynamic Links are used in two ways: a) to have the ability to make an offer on consumables, such as coins, with a simple link posted on a social network or with a QR code and b) to allow invitations between players.
- Firebase Cloud Messaging is currently used as part of the sponsorship feature, to notify the acceptance of an invitation and reward the sponsor. However, FCM will be used in the near future to promote limited special offers within the game and as a retention mechanic for promoting special events and daily rewards.
- Firebase Performance Monitor is used to monitor any performance issues.
- Google Play Game Services are used to manage cloud saves and achievements.
- Crashlytics is used to analyse stack trace details in case of a crash.
A personal owned analytics server is also used for gathering data and for keeping logs for further analysis, but when the user base grows, BigQuery will be most probably used.
The music in the game was composed with LMMS open source software. The music of the first world has changed several times, especially in an effort to remove the cute aspect of the first versions and make a music that helps concentration. For sound effects free samples without royalties were used. The music of the game is publicly available under Valerian’s account on SoundCloud.
Beta Phase & Soft Launching
🎙 How did you launch the game?
As this was our first game, we were not aware of good practices. So, after a close beta version, in which we had mainly involved our friends and family to identify bugs and get suggestions, we released the game in all countries at the same time.
After learning about the benefit of soft launching, we did a soft launch with the use of a marketing campaign, targeting countries with low user acquisition rates such as South and East Asia (India, Philippines, Bangladesh, Indonesia) and Maghreb (Morocco, Egypt, Algeria). The main goal was to acquire some users and gather metrics on gameplay mechanisms, such as determining the most challenging levels.
Level mapping and re-ordering — Measuring & understanding the data
On the early version of the game (when the name was Get Teddy), the levels were ordered sequentially on a grid and there was no map. The player had to unlock all the levels in order and that seemed to affect retention and stickiness to the game.
By measuring and analysing data on three important metrics:
- the number of level retries
- the median time spent in a level
- the use of clues
it became obvious that some levels were very difficult for players to complete and that was affecting retention.
🎙 So what did you do when you realised that players were getting stuck?
We decided to re-arrange the levels on a map. This way, we could keep the most difficult levels optional for the hard core players and add rewards on the paths to challenge them. It has been proven that putting a reward after a level with high difficulty, keeps players motivated to solve the puzzle.
We also added a skip functionality to prevent players from getting stuck.
To get an idea of the first game experience and the retention induced by the map arrangement, we started measuring the rate of players who were reaching each level. After a few months and having the time to have enough data to analyse, we found that the challenging games were introduced to the user too late. In fact, many players only play 3 to 5 levels while real puzzle gamers quickly want a challenge or they get bored. To resolve this, we modified the map again to remove too easy levels at the beginning of the map.
What is complicated for a puzzle game is to find the right balance between difficulty and retention
Currently, we are still A/B testing various map configurations to optimise the first game experience.
The importance of onboarding the user
At the beginning, during the development of the beta, there was no onboarding tutorial. A false perception was in place that the rules could be explained by the level design. For example, the first level was designed to be won with a single move and next levels were easy to resolve. By observing the first testers it was obvious that some mechanics were not well understood, especially the movement rules.
Many early players were getting stuck and frustrated when they were faced with the first challenge, because they had wrongly interpreted the rules. For example, some early testers thought they could change direction during a movement. Therefore, they had the impression that there was a bug because their movement was not taken into account.
Introducing a tutorial — Teaching users the rules
🎙 What did you do eventually to properly onboard the users?
In order to resolve the misconceptions explained above, tutorials were added to make sure that when the players start playing, they already have a good understanding of the rules.
Detecting the type of improvements needed when onboarding the users, is complicated because there is no reliable way to measure that with game events. You must be physically present next to a new player and observe his reactions to understand. Each time a new tutorial is implemented or an existing tutorial gets modified, a new set of players/testers must be found because any person who already knows the game is biased enough in order to properly evaluate the relevance of the new tutorial.
A lot of iterations were made in the process, to establish tutorials that could be adapted by a wider audience. By observing the early testers it became obvious that most people do not read the texts and therefore illustrating and highlighting the actions in an interactive way was important. Finally, to avoid annoying experienced players, a skip functionality was added to the initial guidance.
Using a narrative video — Making users stick and go further in the game
🎙 Why did you include a narrative video at the beginning?
A narrative video was introduced at the beginning of the game to present the story to the user and increase engagement in the concept of the game. The data show that 62% of the players skip the initial narrative video. However an interesting fact when reading the data, is that 30% from those that don’t skip the video, go much further in the game compared to those that skip it.
🎙What is your monetization strategy. How do you make money?
Our monetization strategy is based on ads and In App Purchases (IAP). IAP are mainly used to show the solution of a level and remove ads. We have experimented with many advertising formats so far and the most profitable we found are interstitials, then banners and finally rewarded videos.
The main disadvantage of ads, is that the players who play offline have the same gaming experience as the ones who paid to remove them. To avoid this, we added a self-promotion banner when there is no network connection, since we can not display an ad.
We also plan to A/B test more radical solutions such as forcing non-premium players to play with network connection or adding an offline tolerance (only 1 or 5 minutes offline allowed).
Of course, these solutions can have an impact on retention, so we will A/B test these scenarios to find the right monetization/retention ratio.
Finding the balance between ad intrusiveness and retention
In addition to banner ads, which are permanent, interstitial ads are loaded after a certain number of level retries or level loading.
🎙 What did you find when A/B testing the frequency of ads being shown?
In order to find the right interstitial display frequency, we A/B tested different values: every 3, 5, 10 and 20 level retries.
The results showed us that daily retention was better with a frequency of 10 and strangely a frequency of 20 was worse. Long-term retention was better with frequency of 5 and unlike what was thought, advertising revenue is not linearly related to frequency. For example frequency of 5 is the most profitable frequency of all (63% more profitable than 10). Profitability on frequency of 10 and 20 is quite similar.
Another interesting thing to note is that no premium purchase was made with the highest advertising frequency. Finally we decided to set the ad frequency to 5 since it was the best balance based on data findings between retention and monetization.
Initially we also had a mechanism to avoid displaying ads during the first retries and level loading, in order to improve the first game experience. However, after an A/B test, we realised that this approach had no impact on retention, so we removed it.
A/B testing the impact of Ads Vs IAP
After several tests on the number of coins given for rewarded videos, it has been proven that high rewards significantly impact IAP. Therefore a decision was made to keep the number of coins given in exchange for watching a video, low.
At the moment, alternative ways for using rewarded videos without conflicting too much with IAP are under consideration, like adding a door, on the level map (for extra optional paths), that can be unlocked by watching a video. That door will be presented only to non-premium players.
Taking some ad money prior the user abandons the app
By looking into the data, it seems that an important churn takes place before the first interstitial ad is shown to a user. In a future release there is a plan to force an ad display during the first launch of the game if the player goes back to the home menu too quickly, because there is a good chance he won’t come back again in the game.
🎙 We see that you have several different options for IAP (coins, bulbs, time, premium pack). How did you ended up with this approach and which one converts better?
In the first version of the game (Get Teddy), we had only one consumable, bulbs, used to showcase the first movement in a level or reveal the solution of a puzzle.The only way to get more help was to purchase a bulb pack. That choice made the game progress difficult.
When we updated with Slyway version, we introduced a virtual currency, coins, used for everything (revealing a solution, skipping a level, buying a skin, timer removal) and we added the possibility for the player to be rewarded with coins when solving a level. The objective was to lower the difficulty of the game and help users move further within the game. However at the end of the day, consumable sales fell, also amplified by the overly generous alternative for rewarded videos.
Introducing a hybrid system for IAP
🎙 How did you manage to boost IAP again?
To fix the system we introduced a hybrid system where consumables can be won in the game, like coins while others can only be owned via in app purchases, like frozen timer to remove wait delay and bulb to reveal a complete solution. With this adjustment we managed to start selling consumable packs again.
The pricing policy we have currently in place for IAP is aiming to offer an affordable range, starting from less than one euro to less than ten euros. However, we are considering adding products at higher price ranges for whales. As the types of consumables have changed many times, it’s difficult to say which consumable converts better, but it seems that the bulb packs are the most popular followed by premium and frozen timers.
Skins — Moving away from IAP and getting into soft currency
🎙 What is the purpose of the skins within the game?
At the beginning, we started providing skins for the characters that could be bought with IAP. One attempt was with Halloween skins which were sold individually and in packs. Unfortunately, none of them were sold (however at that point of time we had only a fewer players). Therefore, we decided to use skins as rewards and collectables, that can be exchanged for coins. Based on that new approach, we added several new skins.
However, the data we collected, showed that players preferred to keep their coins for solutions rather than spend them on skins. In order, to force players to exchange their coins for skins, we added a mechanism that requires a skin to unlock levels.
Today we are re-thinking our use of this feature and we will probably unlink it from the gameplay to make the introduction of new characters easier.
Monetizing and driving engagement through scarcity
🎙 We noticed some levels have a timer while at the end they make the user wait a certain amount of time prior being able to play again. What is the concept behind this?
We have some timed levels. While playing, the user can use his coins to gain more time in order to find the solution in that level. When the timer expires, the player must wait a certain time, or use coins to replay, or use frozen timer, which is an IAP consumable, to remove the timer. This mechanism is a simple way to increase the challenge and make the player use his coins or make an in app purchase.
Introducing scarcity in terms of time and game access, is a well known game design technique that can be found in many apps and games nowadays. By investing in user’s impatience, several monetization opportunities can get revealed. You can read more on that technique in a another article here.
Keeping users engaged with unpredictability and variety of rewards
🎙 What kind mechanisms do you use to keep users engaged and progress further within the game?
Everything in the game happens around the level map. We evolve user feelings with increasingly rewarding chests that are positioned at the end of each alternative path. Furthermore, gifts regularly appear on the main path. This creates a surprise effect and gives the player a short-term goal. We also use secret passages containing hidden levels. It’s a kind of content reward which stimulate the exploration instinct and excites the player’s curiosity.
Driving user engagement through unpredictability and variety of rewards is a well known technique in gaming theory.
Finally, the feeling of progress is reinforced with the progressive introduction of game items, by adding new mechanics and new worlds, and with unlocking of new map themes.
However, this may change when we will be testing a new level map arrangement. We plan to merge all worlds and introduce items more quickly to focus on the first game experience rather than the feeling of progress.
Another example of the use of unpredictability and variety of rewards within the game is in the skins section, where a user can play on the slot machine using coins and win a random skin.
A/B testing and game design
🎙 A/B testing seems to have played an important role in the evolution of the game design. What other highlights you would like to share around this?
As we saw in the monetization strategy discussion before, A/B testing helped a lot on making solid decisions around the game design and game mechanics used, based on actual data.
Some highlights of A/B testing areas we focused within the game included:
- Testing frequency and placement of ads
- Level difficulty and map variants
- Pricing for the in-app game currency. A/B tests helped setting the right amount of coins for revealing a puzzle solution, for removing the timer, for sending out invitations and for watching a rewarded video.
- Waiting time for level replay (5, 15 and 30 minutes). For the moment the 5min delay improves the daily engagement, but it is worse in retention: 10% instead of 16.5% for the 15min.
After each change, we measure the impact on daily engagement, short or medium term retention and ad/IAP income. The goal every time, is to find the right balance between retention and income.
Contextual metrics with Firebase
As Firebase allows us to add custom event measurement, we add contextual metrics. For instance, when we performed A/B tests on invite rewards, we logged invitations sent and opened invitations. An interesting take away from data collected is that a high reward case did not generate more sendings, but a higher opening rate.
🎙 What are the next steps?
The main next steps will be improving retention, optimising IAP, testing some ad mediation SDKs and the IOS port. All worlds will be merged into a single map and new game items will be introduced earlier within the game. The main idea is to keep the user excited and engaged. Other additions will include introduction of daily rewards, exclusive packs and offers, push notifications for re-engagement and many other mechanics.
Slyway was my first game and it was a really great experience. I hope to be able to create others games soon.