RED Games Apple Arcade multiplayer brawler 2019

LEGO Brawls is an action-packed competitive multiplayer platformer/brawler for iOS, Apple TV, and OSX, and a marquee launch title for Apple Arcade. You and up to seven other players will customize your minifigs and LEGO-inspired item loadouts, then battle for control over iconic LEGO environments in real-time online brawls.

“LEGO Brawls is one of Apple Arcade’s must-play titles.” — TheGamer.com

Development overview

I was senior engineer in charge of gameplay implementation, building on a new networking technology called Quantum. I designed the core software architecture and implemented the majority of gameplay features using a true entity-component system (ECS) with a deterministic-rollback network strategy.

Quantum and Apple Arcade presented key technical and production challenges since both were still under early development simultaneous with LEGO Brawls’ production. I had to navigate the API changes, bug workarounds, and incomplete documentation that naturally occur with beta/WIP products and services while adhering to a tight production schedule with an absolutely immovable deadline. I partnered with our QA Manager to implement a team-wide development process designed to mitigate these risks by isolating feature implementations, encouraging code reviews, and tightly integrating QA and dev.

Lessons learned

I’ve used Unity since its 2.x release cycle but its GameObjects and Components have never been a true ECS, just a system loosely inspired by one. Quantum is a true modern ECS, which gave me the opportunity to come up to speed on that style of code architecture. I expect that experience to come in handy in the future as Unity itself has begun transitioning to a true ECS architecture.

I also learned how to structure code and game state to run in a truly deterministic simulation, which requires much more stringent separation of logic and state and more careful attention to the structure of the state data. Working in that environment got me thinking about new ways to architect lightweight, high-performance code.

There were numerous day-to-day production challenges on this project which directly impacted things like build stability and speed of implementation. As de facto engineering team lead I steered the team through the adoption of a git flow-inspired process for branch and release management and integration of both on-site and external QA teams. That adoption was not without its growing pains, including team members lacking strong git foundations, communication challenges around ownership of non-mergeable files, and general institutional inertia. This was a formative learning experience in how to evangelize process evolution to an established team.