Ahri third-person AoE ability

Summary

A collaborative project with Siri Forsell (character animation) and Filip Kull (Concept art, VFX for sprint/basic attack).

Ahri Winter Wonder skin by Jenna VanPelt | Rigging by Matheus Lima

Village test environment by Aleksandr Ivanov

Premise:

Siri had already done the character animation, meaning I had to work with it as-is. I'd coordinate with Filip as we'd come up with a theme, then lock into what each of us wanted to do.

Context:

A third-person, PvE, action multiplayer game.

Planning and concepting:

As I wanted to try my hands on a complicated material, I settled for making an AoE ability. Our primary reference game was Genshin Impact, as they have a lot of big splash damage abilities. The animations and ability visuals were very inspired by Neeko from League of Legends, as her ultimate ability is a similar jump-slam.

The theming and early concepting were mainly done by the amazing Filip, who started working on the project a week before me.

Below is a gif of FILIP'S CONCEPT as he and Siri were working together, before the "slam" part was added:


Once I got introduced into the project, we had settled on the idea of a "slam" attack of some kind, which would allow for a cool windup, anticipation and impact.

As Northern Lights is space themed, I thought it would be interesting to do fake depth in one of my materials also, which turned into the starry ice beneath the character.

The Ice Material:

The biggest challenge in making this ability, came with the design and functionality of the ice material. I wanted a single material for both states of the ice, with a lot of modifiable parameters for animation and general ease of iteration. Because of that every texture is greyscale, which would allow me to modify all colors directly in-engine.

Solving depth and refraction:

The first challenge was to find a way to fake depth and parallax. Initially I had some problems with curved space, as applying the same offset to the entire surface despite viewing it at an angle, would cause the UVs to "bend". This is clearly illustrated here, showing my first and second iteration of the material, wherein the second has solved curved UVs and refraction:

The solution was to divide the Z-value of the camera (the camera depth) into the offset, which reduces the offset value for pixels far away and vice versa for ones that are close:

This value can be set or animated to "push" the UVs further away from the camera, which increases the tiling and the speed at which the texture moves in relation to the camera:

By combining Texture Samples and giving them varying degrees of offset, a multi-leveled parallax effect was achieved:

The dimming of the emissive which occurs as the stars move below rougher patches, is done by multiplying the emissive with the inverse of the Ambient Occlusion

The refraction was quick to add once I had this setup figured out, as it was simply a matter of multiplying the offset value with the AO texture:

The exact same technique was used to create animated "northern light"-like moving energy swirls beneath the surface, by panning textures and pushing the UVs away from the camera:

Developing the look:

The part that took the most amount of time for me when making this material, was creating the textures. As I am yet a seasoned Substance Designer user, a lot of research time and experimentation went into achieving something that looked stylized enough to fit the character.

The colors also had to be iterated on quite a bit, as the initial idea was a very snow-heavy theme, but our reference environment had a lot of bright snow in it already, making it difficult for the effects to stand out. Since I wanted to stick to the rules of the League of Legends universe, I looked to their styleguide for references and solutions.

Color Palettes:

The base color I have settled on is a light blue, which is what is predominantly seen on the character. From here I could branch into color categories from the styleguide, such as Frost and Arcane.

Shape Language:

The colors were in the crossing between Frost and Arcane, so I wanted a shape language to match: The northern lights, a well-known phenomenon that is commonly associated with both of these themes, granted the almost magical look to it and it occurring mainly towards the colder parts of the globe:

Ice material shapes:

Some liberties were taken in regards to designing the ice. I initially looked at Song of Nunu, which is a third-person action game set in the same universe, which has a lot of ice in the environment. Granted the graceful aesthetics of the character and the northern lights however, I settled on making the ice crack like flower petals, instead of making it more chaotic:

Transitioning between the states is done by a single float, being fed into a lot of linear interpolate nodes. By animating the material parameters and lights in blueprint, we can get a snappy transition where the depth "bounces" lightly on impact before settling in:

For more information on the texture creation process, please check out the blog post I wrote on some of the more interesting techniques I used: 

LINK TO POST

Northern light shapes:

The northern lights were a lot faster to design, as it mostly consists of scrolling noise and gradients, something that could be done with a single texture and some gradient nodes in Unreal. I created a material function capable of outputting both the colors and the vertex animations needed to achieve this look, so I could apply it to a few different mesh particles and ribbons:

The above material function was used on two mesh particles and the ribbons following the character, shown here in isolation:

Player focus and brightness values:

When the northern lights were initially implemented, it created a lot of noise in regards to where the player should look. They had a lot of movement and were too bright. The camera follows the player, but I felt compelled to look at the ground.

Since there is no PvP component to this game, the ground outline was less important than it is in League of Legends. I decided to bring down the brightness values on everything but the hand-trails, also putting stars on the player's hands and making the player emissive:

Full PBR decal:

Taking inspiration from my first project, I reused a material function that pushes the vertices of a mesh onto other objects, by using distance fields to create an offset vector. The built-in decal system does not support PBR, which is solved by taking this approach:

Grounding the effect:

The last thing that binds the effect to the environment is the lighting. In the blueprint for the ground object, there is a constant ambient light, as well as an animated light, with a light function that simply scrolls some noise in the XY-plane in worldspace, to create wavy-looking patterns on walls and the character, if cast in the dark:


Particle systems breakdown:

Below is a brief overview of each of the particle systems in isolation:

A subtle energy trail during buildup, made from disc- and "souler-coaster"-shaped meshes with scrolling textures:

Ribbons and small stars trailing from the wrist-bones:

Flower-like snowflakes to accentuate the petal theme of the ice material:

A simple system with a single emitter for the upswirl of energy, made it a little bit easier to time things in the animation sequencer:

To get the erosion to animate nicely (albeit not in the cheapest way) I had used both vertex- and particle colors, along with a gradient in UV space. I've done this on a few different materials as it's a fast way to iterate the look, but this is one of the nicest examples to illustrate it with:

I put the "northern lights" mesh particles on the ground, in the same system as some simple sprite bursts, to have a "ground takeoff" particle system. I am not quite happy with the shape and animation of the cylindrical outline, as well as how it dissipates. But I ran out of time to make it more dynamic and it works okay from the animated camera perspective:

There is a bit more happening here than just the Northern Lights material function, as the upwards-shaped mesh particles are actually sitting flat on the ground. Two things are happening:

- In the particle system; I randomly rotate both of them a little on the Y-axis, so they do not always appear at the exact same angle.

- In the material; To give them the upwards curving look and allow for the "dropping" animation as they fade out, I pushed up the vertices by some amount, multiplied with a gradient in the UV space, so that one end of the mesh remains grounded:

The rotating, glowing stars showing on the character's hands, using two counter-rotating sprites with animated erosion and scaling:

Gently rotating and ascending stars, to highlight the influence of the character's motions when ascending and dropping:

A little bit of extra "northern light" ribbons to accentuate the downwards motion and residual energy:

I've reused energy upswirl emitter for the system that leads into the flashframe - creating an energy cone as the player smashes into the ground. This was separated into its own system to make it easier to place and animate in the animation sequencer, as it was important for the leading edge to follow the movement of the player:

For the flash frame, ground impact, refraction and residual energy, I packed everything into a single system:

The most interesting part of this effect are the little energy swirls which occur around the center. These are randomly rotated meshes with a scrolling texture:

If I had more time:

Performance:

- Split the ice material into two

- Reduce the star depth offset to a single texture sampler with a cellular mask, instead of three different samplers

- Use RVT texture blending instead of transparency

- Bake the colors instead of using only greyscale and look-up-textures. It's nice for iteration, not for performance

- More efficient materials in general, I did lots of shortcuts for faster iteration speeds

Look:

- Create proper meshes for the ground material, which can protrude instead of needing to offset like a decal

- Work more on the shapes and movement of the northern lights; the cylinder mesh for the outline is much too visible

- Better light/dark look consistency; if cast in a poorly lit area, the ground material becomes very dark on the edges

- More unique textures; To save time, I some effects textures from my previous work. It fit the theming well but I had to do some workarounds to accommodate the look in a few places.

Legal:

I am part of The Game Assembly’s internship program. As per the agreement between the Game Industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 23rd. Any internship offers can be made on May 6th, at the earliest.