Hiya folks, Brian ‘Penrif’ Bossé, your local friendly Tech Lead of League here. I’m taking some time in between matches of TFT to wax philosophic about game engines and how we on League make decisions around what direction to take our custom game engine. Join me on a moderately long look at one dimension of game engine design, where League currently exists on that dimension, and where we’re taking the game from there. There are many different axes one could choose to evaluate a game engine against – performance, platform support, and graphics fidelity are all useful metrics. The particular dimension I want to look at in this article is how an engine captures the complexity of the games implemented on it. In the long, long ago, there wasn’t much complexity to capture in games. They were very simple, executed by small teams – often just one person – and over a small period of time. As machines got more capable and player’s expectations rose, complexity of implementation rose as well. The industry obeyed the guidance set forth by Daft Punk and made harder goals, better tools, faster iteration speeds, and stronger… something. Anyway, our industry has responded to that complexity in many ways, but few have been as effective as introducing higher level programming languages – scripting of various shapes and sizes.