COMMAND & CONQUER: rIVALS

Command & Conquer: Rivals

Platform: Mobile (Android/iOS)

Tools Used: C++/LUA custom engine

Duration: 1.5 years

Team Size: ~80

Role: Software Engineer

I joined the C&C team back in August of 2018. After making the move up from Los Angeles, to San Francisco, I was excited to dive into both a brand new mobile game, as well as a completely new tech stack. Up till then I had solely used Unity for my game development, but for this team, there was a custom built in-house engine instead. The majority of my time was spent on the UI side, developing the toolkits that the rest of the team used in order to build out UI features for the game. I was also exposed and dove into the game’s networking stack, fixing issues related to multiplayer and error handling. My main accomplishments were:

  • Developed and built out a UI toolkit (buttons, popups, menus, etc) that standardized the look and feel of the game, while also increasing development velocity. No more creating a new button object for every new menu.

  • Built a data driven local notification system, with built in rules to reduce the amount the game spammed a player’s phone.

  • Unified network error handling across the game. New features could take advantage of this error handling without additional work.

Programming Choices:

The benefit of working in a custom built engine is that you have access to the source code, and if any questions arise, the people that built the engine are a quick slack message away. The downside is that certain pipelines and code are not finalized or polished, and work in unexpected ways. On this team, tribal knowledge ruled. My job was to allow others to perform their jobs without having to rely on tribal knowledge. The biggest area that needed attention was the UI system. At a high level, the system worked. There was a state machine flow that controlled transitions from one menu to another. Performance sensitive code was written in C++, and data was marshaled to the LUA layer where most of the visual aspects were written.

The component level however, was missing. There was one standard button class, but it branched off into a new button layout every time a new menu was made. There was no concept of popups, or animation transitions. Menus were not designed to be data driven. Everything was hard coded. I spent about 5 months, implementing and designing UI components. How do animation transitions work? Do we allow users to skip them? How do we handle multiple popups? These are the questions I asked. The final product was a robust UI system that increased our dev velocity, and also made the visual look of the game consistent.

Command & Conquer: Rivals © 2019 Electronic Arts Inc.

Command & Conquer: Rivals © 2019 Electronic Arts Inc.