Category Archives: Engineering

League Champion: Sylas

I was one of two engineers on Sylas, a uniquely challenging character for League with the core mechanics of copying ultimates from other characters. This required refactoring many systems and scripts in the game to support spell copying, and a much larger “working group” than usual as we needed designers of other characters to weigh in on how certain interactions would work, such as stealing ultimates with passive interactions, or ultimates that transform the character (e.g. Nidalee).

League Champion: Pyke

I was the primary engineer on Pyke, collaborating daily with artists, a game designer and a sound designer to ship another awesome champion for League. We had the ambitious goal of making a support that could kill without being overly frustrating to play against. I was personally involved in every axis, providing feedback and pitching ideas with all disciplines, and developing tech primarily for design needs (while juggling Live support and lending a helping hand to other champions in the pipeline). Pyke was slightly light on tech needs, so I got to (more than usual) help design with ability prototypes, and drove some of my own gameplay ideas through to ship! — namely, the gameplay clarity of having an enemy’s border change colors when they become executable.

League Champion: Ornn

I joined the Champion team as the engineer on Ornn just as his production kicked off (design mostly locked down). It was my first professional venture in being the sole engineer on a product with a bunch of non-engineers. I loved it. As much as I could while ramping up on Champion team process and culture, I built relationships with my new colleagues and helped ship awesome by providing feedback and pitching ideas for Ornn’s art, sound, and animation. Most of the tech implemented for him was to enable his unique interaction with the shop and his allies’ items, along with developing a heuristic-driven algorithm to predict item purchases for players in a miniature shop UI we built for him.

Chronobreak

Technically my second project shipped at Riot (first one shipped functionality for another team that didn’t use it… goodbye months of effort), Chronobreak was an ambitious project to make it possible for Esports games to recover from bugs by going back in time without a full remake. This meant making the wild server deterministic, and working with the Esports org to create tools that matched their needs in one of the most stressful and choatic moments of an Esports broadcast — the moment a bug hits and all viewers have little-to-nothing to watch until it gets resolved (and historically, a full remake happens and competitive integrity is damaged).

I was one of the three engineers that developed Chronobreak from start to ship, along with three others that came and went during the ~year-long project. I was responsible for:

  • Determinism-breakage detection, by making an optimized reflection system and tooling to store the majority of gamestate, detect differences from one game to another, and deliver understandable reports to help debug divergences
  • Developing the UI/UX of the tool used for recovering games by Esports ops, including paper design iteration, being the communication bridge with their org, setting up playtests, and gathering feedback to iterate with
  • Integrating needs for the tools into the server-process launcher and build pipeline
  • Shared task of developing the tools for recovering games

For a deep dive, our tech lead wrote a series of articles on it: https://engineering.riotgames.com/news/determinism-league-legends-introduction

And here’s a clip from the first time it was ever used!