KOOS Games

This was my first jab at creating my own start-up from a while ago, that's why you can see some business metrics.

Koos (”together” in Estonian) is a local multiplayer platform that lets users connect their phones to the browsers on their laptop/TV. The games are all well-known and fun to play so it doesn’t take you much time to get started.

The initial idea was to create an online board game so you could effortlessly spin up a social activity without having to bring a physical game. After having played Uno and Pictionary on the platform it was clear that easy-going social games were a lot more fun than board games in the given setting.

Problem

  • Existing local multiplayer games are mostly for consoles which are expensive
  • Existing mobile games focus on the single-player experience
  • No established browser-based local multiplayer gaming platform

Solution

  • Party games targeting a broad demographic
  • No dedicated device or a board required
  • Relatively cheap monthly subscription - no need to commit to a bigger purchase

Market

Employer view

Economics

Employer view

Current stage

  • ~20 games monthly
  • 3 games
  • Would You Rather
  • Pictionary
  • Trivia

Architecture

The graph below represents the services:

Employer view

The distributor was a single source of truth responsible for:

  • Creating game rooms and tracking their status (LOBBY; GAME_LOBBY; IN_GAME; INACTIVE)
  • Redirecting joined users to ongoing games
  • Providing a selection of games to the users
  • Mobile UI for navigating the game selection
  • Display UI to display the game selection/navigation menu

Routing

I used an Nginx Ingress as an API Gateway to route traffic to correct services as follows:

Employer view

Games

You can see the platform in-action in a Reddit post I wrote a while back.

Each game module persistently keeps track of its own game state to avoid data loss whenever a user leaves and rejoins. Additionally, each game has its own separate mobile and display UIs.

Platform Would you rather Pictionary

Backends

  • GCP managed PostgreSQL
  • Redis and Bull for time-based events
  • NodeJS with Koa
  • KnexJS for migrations, DB connections/transactions
  • Socket.io for bidirectional communication

Front-end

Infrastructure/Operations

Lessons learned

  • Always listen to what the users want, otherwise you’ll end up with a full-blown gaming platform with no users
  • Getting enough exposure is difficult when you’re targeting the end-user
  • Shared parts of code should be packaged as soon there’s a need for it, “I’ll do this later” doesn’t work out very well