dev blog

Why we struggle with Fairy King 2

Details

Published: 05 March 2017

Hits: 556

We presented our alpha-version of Fairy King 2 for AirConsole at Basel Fantasy in May 2016. Now the time has passed on and we are already in February 2017. So what happened?
We discussed the feedback for Fairy King 2 and one of the main problems was the stuttering movement of Fairy King. Well, there is a technical reason behind: We want to publish it for AirConsole. This is some kind of service where your game is hosted on a website. You can open this page on your computer screen or with the browser of your TV screen. The page will show you a session ID and everybody in the room can join the game on a smartphone (via website or app). The smartphone will work as 'controller' and the website will work as 'screen'. All actions from the users will then go over the internet to the AirConsole server network and the result is sent to the screen in your room. Even though all devices are connected via the same local network, all messages have to take the way through the internet. This results in a high latency. The engineers at AirConsole did a lot of work to reduce this latency. Some details they explaned on their website (direct link: https://docs.google.com/presentation/d/1t40cmrv7NT45rRwsJUXqZC2uOmZBS0Cbs9jG1J_Jdzc/edit#slide=id.gd83ddb292_1_17).
Ok, but then we have the next limitation: You cannot send more than 10 messages per second per device (https://developers.airconsole.com/#!/help). This can be assured by a rate-limiter developed by AirConsole. We wanted to use the same kind of control as we did it for Fairy King 2: The movement with the finger on the smartphone screen directly moves the player over the screen. For this we just calculate the relative coordinates of the smartphone screen and send it to the server where it is adjusted for the TV screen. This menas that our updates of the position on the screen will be updated only 10 times per second. This gives you a feeling as if you would play a game with 10 fps. That's not what players like...
Now there are different approaches to solve this problem: If you record the path of the movement of the finger on the smartphone screen, you can create nice and smooth movements on the TV screen. No more stuttering, but a large delay. That's not the right way for an arcade game... Another solution would be to interpolate between the position updates. This also leads to smooth movements, but you still have the delay. You can only interpolate a path between already sent positions.
What we really need is a prediction or extrapolation, where the next position update will be. This allows continuous movements of the Fairy King without stuttering. But extrapolation is always just a guess which can go extremely wrong. This makes you feel as if Fairy King would not follow your movements on the smartphone screen, and this is very frustrating.
We like the idea of AirConsole and the multiplayer possibilites it would give for Fairy King 2. And this is the reason why we could not publish Fairy King 2, yet.