Adding Particle Events to Specific Animations (Specifically Recall but the method is applicable for any animation) This does not show you how to create idle particles, only particles that show up in animations like Dance, Recall, Joke, CAS_Effects, etc.
This post overall is very complicated as we cover a LOT of things, so if you feel confused about something, always refer back to the terms at the top of the page. Don’t be afraid to go try it out and experiment since that is how most of us have learned. Should you need help, ask for it on the Runeforge-Discord server.
Note: This is a dictionary, if you are here you may already have each tool. If not, down below you can find all nessecary programs we use to edit bins.
An code editor of your choice, we recommend Visual Studio Code:
If you choose Visual Studio Code, you need the Python extension aswell!
Other editors work aswell, aslong as they can edit .py (Python) files.
As we continue to learn more about particles as a community through experimenting, this post will constantly be updated.
This is a comprehensive dictionary for the most common terms that are used in particles for League of Legends. We will cover most of the basics so that hopefully you can gain an understanding of how you can manipulate the visuals of particles towards your desires.
Container. Think of this as a neighborhood. A Q_Mis
for example.
This is what defines all of the particles (vfxemitter) listed under the ability. Anything outside of this will not be seen while the ability is in action.
Best term to search for specific abilities.
Particle or particle system within a container (vfxsystemdefinitiondata).
Think of this as the different houses within the neighborhood. This can be sparkles, a trail, indicators, mesh, etc.
Another way by which you can search for specific abilities should “vfxsystemdefinitiondata” names be hashed.
Example, particleName: string = “Graves_Skin18_recall_Hit"
These can be renamed for organization purposes.
This is just like vfxsystemdefinitiondata just that it’s actually on the end of the system rather than the beginning.
A name given for a vfxemitter which can be renamed as desired. Good to rename for organization purposes.
Examples include, “Flash"
, "Burst"
, "ground_decall"
, "bokeh_dots"
Their names can be random sometimes but it’s always named to make sense to whoever originally made the particle.
Defines what texture will be used. Always in .dds format.
Most of the time they are perfect squares (1024×1024, 512×512, etc). It is also not uncommon for particles especially to not match a perfect square ratio. Some champions have two combined 512x512 texture sheets like Braum, making it 512x1024.
Typically found directly underneath a texture: string
.
This is a texture which is multiplied over the texture it is listed under. If you know about the multiply
blending mode in Photoshop, this is exactly what is happening.
This is ideal for being used over completely white textures in order to give a color. Useful for rainbow effects and scrolling textures!
If a texture is seamless, what this does is that it tells that texture to move horizontally, vertically, or both. (listed here are the different types of scrollrates that you can find).
The values listed next to scroll rate define how quickly a texture moves.
Followed by an SCB or SCO mesh. This defines what mesh will be used in an emitter.
scb: Mesh
sco: Mesh with joints and materials
Mesh with full skeleton and materials (standard file types for League champions). Used for animated meshes (Ivern's root, Swain's bird) if found in particle folder.
This determines the actual size of your champion in-game. Default value changes per champ. This will be located in the skin#.bin in data/assets/characters/champion/skins
Controls how an object is viewed on screen. Assigning a texture to a material applies the texture to all objects within that material.
Most older champions usually just have one material but you can actually add more if desired. Materials can be useful for when you want to have multiple pieces on a champion’s skin using different texture maps.
Recall assets are nearly always hidden meshes. Anything that won’t be visible on the champion throughout the game will be listed as hidden. Through the animation bin under skin0 (or desired skin), you can actually tell these meshes to appear during certain animations. You can find more on that in the animation tips (will be added later).
Just like in photoshop, this determines how an emitter is projected over the environment.
For regular texture files.
Blending modes are different for SCB/SCOs and SKN/SKL.
Having miscrenderflags
will change how meshes render. Usually inverts faces for blendmodes 1 and 3.
This is a color code which is typically followed by four values. { 0, 0, 0, 1 }
.
The first three numbers are RGB values which can be calculated by dividing the color’s number with white (255).
Say for example I have R = 144.
144 divided by 255 = 0.5647058… My first value will be that number.
Repeat the same process for the other two values in order to get my desired color.
0 = Black, 1 = White.
The final value after RGB is the alpha.
1 is opaque and 0 is Full opacity.
You can use Marcius’s program, Hacksaw to make recoloring fast and easy!
Doing math won’t be required at all. This is just useful information to help you understand how these values work!
Shader which gives a highlighted appearance to an object.
fresnel color = A color value given to a fresnel. Similar to birthcolor, this is followed by RGBA values.
This is a texture image which typically displays a varying amount of gradients. The emitter using this pulls a specific gradient using a number value from the image as opposed to the other types of coloring.
Determines the amount of particles that emit from the emitter.
Adjusting the rate on Evelynn’s sparkles. If the value is increased, more sparkles will appear. If the value is decreased, less sparkles will appear.
Gives a list of RGBA values, rotation, position, AND/OR times. Given RGBA values which define changes in color. Times which relate back to RGBA by defining when each value change occurs within the emitter’s lifetime.
IF these values are related to position, the particle will change position during its lifetime.
IF these values are related to rotation, the particle will change rotation during its lifetime.
You will be able to tell what these values are related to by reading what follows after dynamics: pointer =
This is a map which defines how an ability, effect, or mesh appears.
It is typically a black and white texture. White represents what appears first while black is what appears last.
Sometimes this can also use a green, red, and even blue texture. Each erosion pattern is defined by their own color channels. So X has it’s own erosion pattern as well as the green. The full on green or red appears first while the darker shades appear last.
As it is specifically used in League, this defines distortions for anything behind the actual effect. Commonly used for explosions and puddles. Has a shockwave or airy appearance.
Always found directly underneath a texture: string
to define how many frames the animated texture will cycle through.