Arena Brawl

Introduction

As this is the project I am currently working on, everything is a work in progress, but I have already learned a lot that I would like to showcase.

The goal of this project was to finally get a game working in multiplayer. While I had already made multiple multiplayer prototypes, I could only play them in my editor rather than with other people, which made developing very hard.

Networking

These prototypes still taught me important multiplayer concepts like replication, network authority, and which parts of my code to handle where.

For this game, I decided to have players host their own lobbies, as dedicated servers would have been an additional expense and challenge.
Since this is just a small game and the main focus is not competitiveness, I decided to forego the additional security provided by dedicated servers in favor of faster development speed.

Steam & Sessions

To avoid repeating the same mistakes, I got my game running in multiplayer over Steam as quickly as possible.

The first thing I did was set up a Steamworks account and get a development build of my game onto Steam. I could give other people access to my game so multiple people can have it running at a time, but there is still no way to connect them.

This is where Steam Sessions come in: when a player clicks the host button in the server browser, they open a Steam Session, enter the lobby level, and become the host of their session. Any other player can now open the lobby browser and find the session.

Once at least one player joins each team, the host can start the game, and all players are transported to the selected game map.

Game Loop

After all players are connected, they get spawned into their teams, starting the first round.
When a player dies, the game checks if any of their teammates are still alive. If so, the round continues; if not, the other team gets a point.

Another round is started until one team wins by reaching the previously set point limit. A victory screen is displayed, and after a short delay, all players are sent back to the main menu.

With this working, the game can be expanded in various ways.
You could add more classes with unique abilities and weapons, more game modes with additional objectives besides fighting each other, and more maps with obstacles and points of interest - the possibilities are endless.

Conclusion

There are already plans for where I want to take this project, but I am still exploring different options. For now, I am happy with where the game stands and excited to see where it goes in the future.

I am glad that I finally managed to overcome the hurdles of getting a game onto Steam and connecting multiple players to one game, which also opens the door for future projects.