What’s up guys it’s me Jeremy!
The new missile system that Riot is using for projectiles went live on Patch 5.12, and
it was actually a pretty huge behind the scenes update that didn’t really change anything
for the average player, but it gave Riot a ton more control over how projectile abilities
actually work and allows them to get way more inventive with future abilities.
It’s honestly really cool for Riot to put so much time into a feature that most players
won’t really understand or appreciate, but overall it should actually be a really awesome
update that both fixes a ton of spaghetti code bugs in the process, so we’re gonna
break down the changes in a less technical way and talk about how it has made life way
easier for Riot’s codemonkeys, and also has given a ton more creative freedom to the
gameplay designers.
And if you enjoy the video definitely hit that like button because if this video hits,
let’s say ratings, then I’m gonna , and let’s get started.
So the easiest way to explain the changes to the missile system is to compare it to
how the system used to work.
Riot actually provided a kind of super complicated flow chart of what they called the ‘execution
flow’ for missiles, which is basically the different things they can configure and the
order those things happen in.
From looking at this mess, you can definitely start to see why League gained such a reputation
for having spaghetti code, and this confusing process was a huge reason why missiles were
so buggy in the old system.
It starts out as a group of common missile types, which basically groups similar missiles
together.
The way those missile function, let’s something like a Morgana Q, is controlled by the group
they are in, alongside extra functionality for other differences.
Sometimes these extra bits of functionality are shared between other missiles or even
just copy-pasted, which makes it really confusing to the point where Riot just started color-coding
similar projectiles.
An example they gave about this particular image was the pink code, which was the functionality
for how missiles figure out when they were actually colliding with something.
Unfortunately, all of that functionality isn’t in one tidy place on the system, it’s all
over the place, so if you wanted to change one missile you’d have to tweak it in a
bunch of different ways and hope that you didn’t miss anything.
The very top box of the diagram represented the base missiles.
These are the super simple ones, that fly towards a position or a tracked unit and they
only active once they are done moving.
So that counts for everything like auto-attacks, turret shots, and some skillshots like Ziggs
Ultimate or Corki’s Q since they don’t do anything until they reach the end of their
travel.
It’s pretty straight forward because they only have to check a few things - like where
was the projectile target, how should the missile move to get there, and then check
to see if the target was still there by the time the movement was finished.
Then it can apply the damage or whatever, it’s pretty simple.
The next box is for what Riot calls the ‘line missiles’ which are pretty much all of the
skillshots in the game.
Morgana’s Q, Ezreal’s Q, Ashe’s Volley - basically abilities that travel along a
set path and affect anything they collide with along the way, not just at the end of
their movement like the base missiles.
It might sound like it wouldn’t be that much more complicated, but the abilities themselves
that use these missiles tend to be a lot more varied, and that adds a lot of complexity.
Like for example, Sivir’s Q is thrown out, can damage anything as it travels, and then
it returns to the caster.
That’s a whole bunch of other factors that Riot had to put through the missiles system,
and the more features a missile has, the harder it was to make it work.
Unlike the base missiles, you couldn’t lump all of these abilities together because they
were so different - but at the same time they were actually based on the base missiles functionality
by default, so changing the base missiles could then break the line missile group.
Essentially that means if you wanted to change Zigg’s Ultimate, you’d have to be careful
that you didn’t break Lux’s Q, Zyra’s E and every other ‘line’ skillshot in
the game in the process.
It didn’t stop there either - the group at the bottom was specially made for three
special circle missiles - Diana’s Q and W, and Ahri’s W. They were based on line
missiles, with the key difference that they travelled in a circle.
As far as the functionality goes, they pretty much worked the same way as line missiles,
but that also means they were linked to base missiles and could be fucked up accidentally
too.
On the surface, players only saw issues with this spaghetti code in the form of bugs in
game, so it didn’t really affect people all that much when Riot rewrote the system,
but it actually made things way less buggy, way more consistent and way easier for them
to develop awesome new missiles.
The rewrite of the missile system had four goals - first up, all the different types
of functionality should be grouped together in the code so that it was easy to understand
and make changes.
Second up, each type of function for the missiles shouldn’t be dependent on each other, so
making changes to the code in one should only alter that specific function without effect
anything else.
It was also important that it’s easy to understand what missiles should be doing in
general, and also any kind of special functionality that they create for a missile should be separate
from the main system, so that it’s not going to mess with the more basic projectiles in
the game when you want to do something clever.
That meant there would be a main execution path - or basically the functions that every
missile shares, and then special cases on the side.
The main execution path just consisted of all the different bits and pieces that make
up a missile, and it’s pretty simple.
Stuff like how they move, how they collide, if they can track a target or not, how they
are designed to behave, how they are seen and how they are heard.
This was the original list of criteria for the new missile system’s functionality,
but it was later updated since a lot of these things were pretty closely linked - like for
example, there’s no point having target tracking separate to movement since they are
basically concerned with the same thing - either there is no tracking and the movement just
behaves like it was coded, or there is tracking and the movement is just towards the target.
This took away all of the stress of having different ‘classes’ of missiles like base,
line and circle - you just code the ability using whatever functionality it needs based
on how the gameplay designers wanted it, and you’re good to go - no messing around with
defaults and potentially creating new bugs on other abilities in the process.
Take something like Ezreal’s Q for example - it should move in a straight line, it should
collide with any enemy or neutral unit, and it shouldn’t track anything since it’s
a skillshot and has to be aimed.
Tie that in with stuff like the sound effects and particle effects for the ability, and
you’re left with a functioning ability!
Not only did this update make the missile system less intimidating, but it also made
bug-hunting way easier since it a bug with one ability would probably not require messing
with the missile system at all.
The same goes for bugs with general functionality - Riot gave an example of a bug that really
pissed players off for a long time, missiles that wouldn’t collide with a target and
would just travel straight through someone.
When the system was a crazy mess, finding a solution for this would be like finding
a needle in a haystack, but after cleaning up all the collision functionality and putting
it all in one place, it was way easier to see where the issues might be.
Riot just had to reproduce the bug, and look at what specific scenarios in the collision
code were having problems.
Then they just fix those up, and there you go - no more abilities not hitting what they
are supposed to.
The part of this that is really relevant to League players outside of the knowledge that
there should be less bugs, is that it’s leading to improvement missile designs for
reworks and future champions.
Say you are designing a super cool telepathic champion, and want to make an ability that
tracks the mouse instead of a target - like he fires out a psychic blast and it follows
your mouse for a few seconds, so you can try steer it into people like a Sion Ult.
With the new system, Riot won’t have to set up a new missile class in order to get
that different movement working, they can just tweak the missile to flow right and then
change the tracking of it to focus on your mouse movements.
Job’s done, no screwing around with the old classes or hunting down bugs that it would
cause in older abilities.
Riot shared a bunch of their own little examples which are really cool displays of what the
system could do - not real concepts, just a bit of silliness to really demonstrate how
powerful the new missile system was.
One of the examples was a looping effect on auto-attacks, they gave it to Draven to make
his spinning axe do a little loop before it flew into the target.
They tried a similar thing with Varus too, and with only a few small tweaks, they can
change that loop movement into his arrow tracing a little heart shape.
The last example they shared was probably a little more functional in terms of making
interesting new abilities - they made it so that Ashe’s Volley would fire of in all
directions, and then curve around in a hexagonal shape.
Obviously that doesn’t mean they are actually going to update Ashe’s Volley to behave
like that, but if they ever wanted a champion that could move projectiles in more interesting
geometric ways, the new missile system can do it in a quick and easy way.
Anyway that just about wraps up everything we wanted to say about League’s New Missile
System, changes like these make the game a ton better, so it’s crazy to think how underappreciated
they can be just because players never really get a chance to see how it changes things
under the surface.
Big props to Riot for taking the time to update things, and from what they have said it seems
like it’s really helped to get troublesome old bugs out of the game, as well as making
designing new abilities a way less daunting idea.
And it looks like that’s gonna be it from me, if you enjoyed the video drop a like,
subscribe if you want, thanks for watching, and I’ll see you guys next time!