Multiplayer isn't easy: A Journey in Development

Hey everyone!

As some of you may know, I’ve been working with Digiplay Gaming on Brawlbots, a multiplayer shooter built in Unreal Engine 4. This has been a unique experience for me, network replication and ensuring game-play balance is no small feat.

Challenge #1: Connecting Players and Playing Audio

With the code base I’m working from, a lot of work has been done for me and I’m thankful for the time saved. However, I still felt like I was thrown at the deep end as the first thing I wanted to do was connect two different devices (as this game is intended to be cross platform) or at least two devices on the same platform. And while my initial tests did show that it was plug and play (as advertised), trying to get an Android player and Windows player to connect was next to impossible. Whether this was because the builds weren’t consistent or some other issue I’m not aware of, I was a little disappointed.

Next, was the hurdle of replicating functions and data between players. Weapon firing and UI sounds were already handled, but I wanted to add an announcer that tracks match state (what team captured the flag, player kill-streaks, players dropping in/out, etc) as well as some BGM. At first, I thought there was a hurdle as my previous research said that audio replication was difficult. But surprisingly, looking at an example from the code base, I just needed to create a Custom Event that played a sound that replicated to all (the server and the clients). This will help with connecting player actions to the announcer VO as the replicated event can be called as part of an interface event or delegate call.

Something that seems hard, is actually easy.

Something that seems hard, is actually easy.

This feels like a lot. And refreshing the look is gonna take a lot of work.

This feels like a lot. And refreshing the look is gonna take a lot of work.

Challenge #2: Split-screen, GUI and UX

As this project has a multiplayer emphasis, there is an emphasis on low barrier to entry and making USPs clear and exciting. My frame of reference for multiplayer shooters are games like 007: Agent Under Fire, Team Fortress 2 and Resident Evil 6 (don’t @ me). All but Team Fortress 2 feature split-screen play allowing friends to get together and compete with each other or other players online. And I think split-screen can be a USP, so building the infrastructure for multiple local players was going to be hard. Thankfully I had some idea of how to handle this in Unreal thanks to Deadly Golf, a very unique game I made while at Full Sail. However, the code base was intended for one player connecting to other single players through LAN/WAN. And so for now that will be on hold. However, getting the GUI to show up on each section of the screen was much easier.

Speaking of the GUI, designing a good HUD when there’s a lot of data to track (current player health, ammo, player/team in the lead, mini-map, score) is not easy. However, the base HUD is very utilitarian, all dark images and white text. A good GUI delivers clear information and looks good doing so. Unfortunately, making the HUD more appealing requires a lot of TLC from artists and I am not much of one, so for now, taking advantage of Unreal’s UMG that can resize elements based on screen resolution is gonna go the long way for small devices like smartphones to (hopefully) game consoles or high resolution PC players.

On the subject of consoles, designing input for game-pads is different that keyboard and mouse as there’s a limited number of buttons and there is an implied default control scheme for shooters. It’s a good thing Deus Ex was retooled for the PS2 port.

The concept of Brawlbots is fast and frantic arena shooting, so intuitive controls is a must. That being said the code base implements leaning controls and did not implement this for game-pad users. So the question is, do we retain these controls or do we ditch them to ensure a level playing field? That is a question for play-testers and community feedback.

As development continues on Brawlbots and other projects, I will do further write ups on my experience developing mechanics and the journey of discovery they will lead me on. Perhaps one day I will transition from high level game designer to low level game designer.