How to Build an Online Multiplayer Game with Scala 3, ScalaJS, and Kafka



Attendees will develop a streaming and scalable system from scratch. The workshop will cover the modeling and development of a streaming application using Scala 3 and technologies like fs2, Kafka, and ScalaJS.

Attendees will build a multiplayer web game with ScalaJS, capable of reacting to real-time Kafka events.

The objectives for those attending this workshop should be:

  • Gain experience in managing data streams
  • Learn basic concepts of event-sourcing
  • Deepen knowledge about functional domain modeling with the tools that Scala 3 offers
  • Learn the basics of using asynchronous message systems.
  • Understand how ScalaJS works and how to integrate 3rd party JS libraries.
  • Build end-to-end reactive systems through hands-on experience.
  • Have fun!

Xebia Functional is providing this workshop, which means that at least 2 XF representatives will support the attendees with the following:

  • Introduction talk
  • Requirements document to build the system
  • Continuing support to answer questions and solve potential blocks.
  • Day 1 recap talk
  • Demos and examples


This is an intermediate-level course. Participants should have a basic knowledge of Scala 3 syntax, some notion of messaging systems, basic knowledge of docker, and SBT experience.


  • Introduction
  • Project presentation and requirements
  • Infrastructure provisioning
  • Server Project:
    • Functional Domain Modeling
    • Streaming framework and Kafka consumers/producers
    • Server lobby business logic
  • Day 1 conclusion
  • Client Project:
    • ScalaJS setup: JS framework for DOM manipulation and UX
    • WebSocket setup
    • Async communication with the server
    • Game business logic
    • UI improvements
  • Demo
Ignacio Navarro

Xebia Functional

Fede Fernández

Xebia Functional

Are you interested in this workshop?

Buy now for Madrid