Realtime game server

Zsolt MolnarZsolt Molnar | | Freelance
Cover image for Realtime game server

As a developer contractor, I had the exciting opportunity to work on a real-time gaming server for Merigo. Merigo develops an innovative gaming platform that delivers a seamless and exhilarating multiplayer gaming experience. We utilized Elixir as the backend language and gRPC as the communication protocol to achieve real-time gameplay.

What is gRPC and How Does It Work?

Before we dive into the development of Merigo, let's have a brief understanding of gRPC. gRPC is a powerful framework that facilitates remote procedure call (RPC) communication between clients and servers. It enables clients to directly invoke methods exposed by the server, making it feel like calling a local function. The communication between clients and servers is made possible by gRPC's client library and Protocol Buffers, a consistent data serialization standard.

Protocol Buffers allow us to explicitly define the procedures, inputs, and outputs that the gRPC server exposes to the clients. Based on this interface specification, the gRPC client libraries are automatically generated for various programming languages.

Additionally, gRPC uses the HTTP/2 protocol as the underlying communication mechanism, providing features like bi-directional data streaming and enhanced performance compared to HTTP/1.1.

Choosing Elixir and gRPC for Merigo

When building Merigo's real-time game server, we carefully evaluated different technologies for our requirements. Elixir was an excellent choice due to its concurrent and fault-tolerant nature. Elixir's actor-based concurrency model and lightweight processes make it well-suited for handling many concurrent game sessions without sacrificing performance.

With Elixir as our backend language, we opted for gRPC as the communication protocol. The decision to use gRPC was influenced by its efficient binary serialization using Protocol Buffers, which significantly reduced data transmission overhead, making it ideal for real-time gaming applications.

Real-Time Communication with gRPC

To achieve real-time communication between players and the game server, we leveraged gRPC's bidirectional streaming feature. With gRPC's bidirectional streaming, the game server and clients could send and receive messages simultaneously, enabling efficient and responsive gameplay.

The game server exposed gRPC endpoints, allowing clients to send actions, such as player movements and firing shots. The server processed these actions in real time and broadcasted the game state updates to all connected clients.

Conclusion

Working with Merigo was a thrilling and challenging experience. Building a real-time multiplayer game server with Elixir and gRPC proved successful, providing the speed, concurrency, and responsiveness required for an immersive gaming experience.

We achieved seamless communication and synchronization between players using gRPC's bidirectional streaming and Elixir's concurrency capabilities, creating a captivating and dynamic multiplayer gaming platform.

I am proud to have been a part of the team that brought Merigo to life, and I look forward to seeing how the platform evolves in the ever-changing landscape of online gaming.

  • elixir
  • NodeJS