Case Studies

Ludio

Share :

Platform for video-call based real-time social games and boardgames

try.ludio.gg/

Mission

The client and his partner found us 4 years ago, they had a raw prototype of a social game of Mafia with a bunch of outstanding game features. The UI didn’t see a touch of professional design, it was fully made by developers which means it wasn’t exactly pretty-looking or user-friendly.

Initially our goal was to take over the existing app in a poor condition and make it work to add more new functionalities. There was no roadmap for development, we were just building up new features like there’s no tomorrow without much consideration for design and architecture. Eventually the prototype turned huge and it became practically impossible to add something new or change anything anymore.

In a while we set a new goal to build a market-ready V1 of the app. Three full-time developers have been working to create the product using modern technologies and user-friendly professional design. It took us about a year to come out with the new advanced version, we definitely managed to overcome quite a few challenges on the way and we’re quite proud of the result!

Challenges

  • In the initial app that we call “prototype” business logic was chaotically scattered on the backend and frontend, as a result there was no single source of truth about the state of the game at any given moment. This led to frequent errors and it became highly difficult to support, clearly in V1 we had to fix this.
  • For V1 the client required the app to expand from being just one single game to become a universal platform for different types of social and board games. This meant a dramatic increase in the level of abstraction.
  • The prototype could only pull one game at a time because each new game would start on the same instance, but V1 was required to scale easily and able to run many different games simultaneously.
  • It had to be possible to create and edit games on the client side because there are too many games and variations to depend on the developer for each tiny modification to a game.

Solution & Value

  • We decided to build V1 from scratch based on a good understanding of intended functionality which allowed us to design an appropriate architecture and custom implementation. First of all, the new architecture was centered around having a single source of truth about the state of the game on the backend. This allowed us to implement quite complex business logic, improve quality of the project support and start working on new features again.
  • To allow for multiple types of game in one app we divided logic into three tiers: the base layer - atomic functionalities with players and conferences, the next level — specified for each type of game and the third layer — detailed customization of each game. Thereby we created a platform for constructing different kinds of social games.
  • To ensure that multiple games can be played simultaneously we made the app run a new instance for each game, thus isolating games from each other. As a result many groups of players can enjoy a game at the same time :)
  • As per client’s request we’ve built a game editor so each game is configurable and the admin/client can create as many games with different logic as required, anytime - no need to flood the developers with tickets for every tiny change request to any game!

Currently the product is stepping out to the market and the client actively collects user feedback. Thanks to the flexibility of the app most of the feedback is being put into implementation pretty quickly, keeping the client and users happy with the results!

Technologies: React.js, Node.js, Redux, Redux Saga, Nest.js, Jitsi, Daily, Linaria, PostgreSQL and rewritten Webext Redux. TypeScript, Webpack, Prettier and ESLint.

Share This Post :