Livecadia

Play games remote but live at the Luna Park

About Elaut

When you set foot into a Luna Park, chances are high that the claw machines and coin pushers you see are manufactured by Elaut. Elaut group started off as a Belgian family business specialized in amusement and arcade games. Nowadays they are an international player in a highly competitive market. Therefore, they are constantly researching and developing new games and concepts.

 

Elauts challenge

Livecadia is one of their new concepts. With Livecadia players can remotely play physical Luna Park games through an app on their phone. Therefor Elaut needed an online gaming platform to connect the physical devices – like claw games and coin pushers – allowing the players to control the commands of the machines.

Cloudway got the challenging task to provide the platform. What did we provide?

  • We’ve built the architecture.
  • We provided logging and monitoring.
  • We made sure there was a connection with the service desk.
  • We’ve connected the physical gaming devices to the cloud.
  • We designed the communication interface between the browser app and the Elaut game devices.
  • We’ve built in a system of fraud detection.

Latency was one of the critical components for this platform.

 

Approach

 

Architecture

Livecadia is a start-up, so they were looking for a platform with a low base cost. But at the same time Livecadia should be able to scale to hundreds of devices and thousands of players. That’s why we mainly chose for AWS Lambda as compute resource. AWS lambda is a serverless computing service offered by Amazon Web Services. You upload your code to AWS Lambda and the service takes care of it, scales automatically based on demand, and you only pay for the computing time actually used to execute your code.

Lambda is used behind API Gateway to provide a RESTful API towards the frontend applications. It is also used to contain all the different steps (business logic) in the game flow step functions.

For longer running tasks or for processing of camera streams, we use Fargate. For example, to provide an HLS spectator stream by streaming the camera images to Kinesis Video Streams.

 

Logging and monitoring

For logging and monitoring we mainly used a combination of Amazon CloudWatch and S3 (Simple Storage Service).

  • CloudWatch: This is an AWS monitoring and observation service that allows you to monitor various resources, collect logs and optimize performance of both AWS infrastructure and applications in real time.
  • S3: Amazon S3 is a cloud storage service that provides object storage. It allows users to store and retrieve virtually unlimited amounts of data from the Internet. S3 is designed to be scalable, secure, and highly available.

The collected logs include application logs from the platform, machine logs, streaming process logs and frontend logs. They are used to search, for example, streaming session with high latency or failures. This way we can detect malfunctioning streaming processes.

 

Connection to service desk

In case of operational events, incidents or problems a connection to the service desk was needed. Elaut already had a service desk setup. We needed to integrate the Livecadia platform with the service desk. We did so in two ways:

  1. A ticket is created when the system automatically detects an issue, using metrics and alarms. All related information is consolidated on an extra management screen in the portal.
  2. A ticket is created when an issue is reported by a customer.

In the first case, when an issue is detected automatically and it’s related to an active game session, all information from the following sources is consolidated:

  • all details of the game session: player, machine, tenant …;
  • logs of the frontend application (browser);
  • all game commands, both of the machine and the player;
  • the recordings of the game session.

This allows the service desk members to pinpoint issues should they happen.

 

Physical gaming devices connected to the cloud

As mentioned before: latency is a critical component of the platform. For example, when using a claw machine remotely you want to see what you’re doing at the time you’re doing it. How did we manage to get it near real-time?

Every gaming machine is connected to a controller. The controller is linked to the camera of the machine. When a user is playing a game, there is a direct peer-to-peer connection between the website running in the browser of the user and the controller. When playing, the video frames are directly sent from the machine controller to the user. This allows us to provide a low latency video stream to the user (< 150 ms).

Communication during the game sessions between frontend (browser) and machine are done through MQTT.

 

Communication interface between the browser app and the Elaut game devices.

We were responsible for designing how the browser app and the Elaut gaming devices would communicate with each other. We made this design upfront resulting in just a few changes needed over the development of the project by AppFoundry and the customer.

 

Fraud detection

We chose to use as much peer-to-peer communication with limited processing to optimize the latency. That’s why we had to create asynchronous security and fraud detection to ensure that the players are not cheating the system. If fraud is detected, corrective actions are taken.

To increase the security a player has access to only one machine at a time and always in the context of a specific game session.

 

Conclusion

This Elaut reference case was a technically challenging, but therefore a very interesting project to work on. We’ve implemented a real co-creation culture among various stakeholders: Refleqt and AppFoundry. Because of this smooth collaboration we enjoyed working together a lot. We are very keen to start similar technologically advanced projects.

Do you have another technologically challenging project on which we can help?

Read more

Related cases