Heads up: since we’re going to be heading out for the night, just wanted to give some context up front.
Riot Reinboom here to bring a quick update on the state of pathing and upcoming changes (read: revert) to it. :)
In 5.22 we did a hefty rebuild of one of the systems that guides pathing (particularly through minions), with some tweaks in 5.23.
Our goal was to make pathing through minions more predictable, with a specific focus on champions that could get ‘stuck’ while passing through. We also wanted to ensure we had full transparency on both sides of the ‘code’ fence - a player knows why they got stuck on the minions and we, as developers, could peek under the hood to see what’s going on.
**So why did these changes go out?**
If you think of the League of Legends game (note: not things like the client) as large ‘layers’ of functionality, you will get three major layers.
* Engine: The thing that comprises the fundamental building blocks to build everything else. This has been cleaned up pretty extensively (and we’ll continue doing work here!) over the last couple years. You can think of the Engine layer as the foundation that we’re building everything on top of.
* Game: The ‘house’ we’ve built on the foundation of the Engine. You can think of each Game system in League like an individual room in the house, with one for, say, pathing, or another one for minion AI, etc. Since most systems are self-enclosed (to a degree), we’ve basically been going from room to room to clean up where possible.
* Content: Maybe the… interior decoration and furniture in the house? These are the individual things you interact with. Champions. Items. Maps. This isn’t much actual code, but more scripts. Stuff built with the tools provided on the layers before it. This is still messy, but we’re not really talking about content today.
Pathing sits in its own very isolated system within the ‘Game’ layer, and that system is a bit of a mess inside itself. Pathing also has some of the largest implications for how you play the game. When doing cleanups to the system, due to the risk of disruption and unknowability, we targeted preseason to keep it all (somewhat) contained.
So we did.
**Did anything work with this?**
From an implementation standpoint, yes! In natural pathing situations, the new system appropriately identifies whether or not a unit should be stuck or not, or could get stuck if it goes a certain direction. In other words, it’s *knowable* and predictable. A minion wall will act like a minion wall. If you jump to an area with lots of units around, you will be held there more surely.
**But there were things that didn’t work.**
Knowable doesn’t necessarily mean better, and more-so it doesn’t necessarily mean understandable when it interacts with other systems like pathfinding. Sure, minions make walls appropriately now, and stuck detection works. That said, behavior like that sucks when the shortest route the pathfinding system gives you is the longer way around. Additionally, from a direction standpoint, knowing that you’re definitely going to be trapped is annoying when your expectation is simply not to be trapped at all. Blegh.
In other words, we have a predictable system that isn’t playing nicely with other systems, and when it does work it’s a little more frustrating than we’d like.
**So what we're doing**
We presumed things could go bad. We haven’t done fundamental (and I mean, very fundamental beyond light tweaks) work on pathing in... 5 years?
The new system was built with the assumption that it might cause issues with the old. As such… **we'll be switching it back to the old behavior in all of its unknowable glory** while we work on and dig more into the pathing system.
This will be in 5.24 for everyone, but we’ll test it first on EUW to make sure nothing goes crazy.