From the lab

Prototyp Royale - Our own multiplayer game

Four Prototypers created an action-packed multiplayer game built with the game engine Flame by Flutter.

Tech used

  • Golang
  • Flame Engine
  • Flutter

Press to view video

Background

Four Prototypers set out to create their very own multiplayer game, complete with a server and full playability. After some deliberation, they decided to build a fast-paced action experience in the style of a space-shooter game that would be able to support several players simultaneously. They named the game Prototyp Royale.

Regardless of the obstacles, the team agreed to overcome them, even if it included dreaded latency issues or potentially laggy performances.

The Process

First, the team did extensive research on how game servers work. With these insights they were able execute the steps needed to implement a centralized game loop. In layman's terms, the Prototypers needed to ensure that the actions sent by players to the server would be broadcasted to each client, thus determining how smoothly and reliably the game played out. To accomplish this for both the server and game clients, the tasks were divided amongst the group's members in a way that allowed all to write code simultaneously.

The team decided to use Golang as the server language because of its excellent multithreading support and overall efficiency. For the game engine itself, Flame Engine by Flutter was chosen because it was cross-platform friendly and hassle-free, and because one of the team members had recently gone to a Flutter conference and enjoyed a keynote speech on the topic.

Prototyp Royale in action

The Challenges

Before embarking on the creative endeavor of building and optimizing a multiplayer game, the four co-workers had a hunch that the biggest challenge would involve latency. Once they had a basic server set up and a bare-bones version of the game running, the team realized that the latency between the server and the clients made the game feel slow and laggy.

While there are many ways to solve such a problem the group turned to some true and tested solutions. First, they performed optimizations in both the server and the clients. While it helped, it was not enough. Next, they let the server control the game while simultaneously letting the clients try to estimate what actions would be next, such as movements. This second attempt at a solution proved fruitful, giving the game a big boost in performance and making it more than just playable.

Result / Key takeaways

This was a fun project for the group, and it gave them newfound respect for game development. Initial concerns about the playability of the game over network traffic were in hindsight almost unwarranted, even if they did initially encounter some predictable and solvable issues related to latency. The group also enjoyed learning a lot about game server implementations and the game engine Flame by Flutter.

Future Actions

The server used seemed to be able to serve as a good foundation for any type of multiplayer game in the future.

As for improving the existing product, Prototyp Royale, the team believes that there are several methods and optimizations left to explore to maximize the performance of the game.

Prototyp Royale Intro menu