Dota 2
182 个评价
Dota 2 Particle Creation: Golden Halo
由 Wyk 制作
This a detailed step-by-step guide on how to create a Golden Halo particle effect in Dota 2.

This tutorial will be kept as newbie friendly as possible but it is advisable that you have a basic understanding of how the Dota 2 Workshop Tools, Particle Editor and the Particle Systems work in general.
   
奖励
收藏
已收藏
取消收藏
Introduction
This is a detailed step-by-step guide on how to create a Golden Halo particle in the Dota 2 Workshop Tools.

The tutorial will be kept as newbie friendly as possible but it is advisable that you have a basic understanding of how the Dota 2 Workshop Tools, the Particle Editor and the Particle Systems in Dota 2 work.

I will write this tutorial in a narrative fashion so I can jot down some of the thought process that goes in to the making of particles in Dota 2. This might lead to a large amount of text that explains things but I will make sure to highlight all the important points.

So let's get started.
Understanding What We Want To Create
Before we even get to the Tools, the first thing we need to do is think of what we are trying to create. It is important to break down what we want to make so we can better graph out the method on how to achieve the intended effect.

Generally most of the particles you see in Dota 2 are comprised of many many particles put together into one Particle System. Multiple children particles are created and combined together to achieve a full fledged particle effect. In this tutorial, we will cover how to make a single particle effect. Once you have an understanding of how to do this, creating many and putting them all together is a relatively simple process. I will probably write a guide at a later date discussing complex Particle Systems.

For now I want to make a Golden Halo - a single particle effect.

Particles in most cases are powered by particle textures that define the visual look of the particle to a great extent. Particle textures come in various shapes and forms - sprites, ropes, meshes, streaks, cables and etc. These are used in conjunction with the particle functions to generate the particle effects we want.

Dota 2 comes with a ton of stock particle textures that you can use to create your particles with or you can always create your own particle textures as per your need. You can refer to my guide on how to create particle textures for more information on how to do that.

For the particle I want to create, I realize I will need two particular kinds of particle textures.
  • a sprite that will emulate the light ball and glow that are present in a halo
  • a rope that will emulate the ring of light itself
Both the things I need to create will make use of relatively simple textures and I am sure I can find those in the stock files that come with Dota 2. So I will not be creating any custom particles.

Now that I have an understanding of what I want to do, let us proceed and open up the Particle Editor.
Getting Started
First and foremost, you need to have the Dota 2 Workshop Tools installed and running.

You can access the Dota 2 Particle Editor from the toolbar at the top of the Workshop Tools. It is the button with the "fire" icon.



Once you have booted the Particle Editor, you should see something like this.



Expand the image and I will briefly explain what the UI consists of.
  • On the top left, you see a tab called Functions. This is the tab where you can add new functions that will together define your particle system. This tab is currently empty but it will get populated with options once you get started.
  • Next to the Function tab, you see a tab called Properties. Every function has a bunch of settings that show up on the Properties tab when you select that particular function. It is these properties that we will be editing to achieve our desired effect.
  • Next to the Properties tab, you can see the Viewport. A preview of your particle will be shown here as you work on it. The viewport comes with some timeline controls at the top. Hover over them to see what they do. It's pretty straight forward.
  • Next to the Viewport, you will see the Controls tab. This is where you see the list of Control Points affecting your system. Control Points are basically used to control the transformations and position of your particles. Control Points can also be used attach particles to a certain point or multiple points on an entity. Each particle system can have up to 64 Control Points so we can use them to get pretty dynamic results.
  • Under the Controls tab, you can find the Preview tab. This is basically the tab that has all the settings which control the preview in the Viewport. You can load a model from here so you get a better understanding of how your particle looks on the model, turn on and off helper grids, draw axes, names and more. Go through it to see what is available.
  • Under the Preview tab is the Undo tab. As the name says, when you mess up, this tab can be really handy.
  • At the very bottom you can find the Current Assets tab that has two sub-tabs. One tab that shows all the particle systems available on your tools and the othe tab that shows the currently Open Particle Systems. Having this here can save you the pain of constantly tabbing to the Asset Browser. However you can close this if you want more workspace (especially if you are on a single screen)
Now that you got familiar with the UI of the Particle Editor, let's create a New Particle. You can do this by going to the File Menu at the top or by pressing Ctrl + N.



Once you've created a New Particle, you should see the Functions tab populated with the available functions. The Viewport should now also have some white text at the top that shows some information about your particle system.

But as you can see there a couple of errors / warnings on the Viewport that read "No Content Found" and "Mod Mismatch". To fix these up, you just need to save your file so the content file is generated.

Go to the File Menu (or press Ctrl + S) and save your particle system with any name you want. By default it will save your particle in the root of the particles folder of your addon. It is advisable to leave it there unless you know for sure you want it in another sub-folder.

dota_addons > your_mod_name > particles > your_particle_name.vpcf

Once you save it, you will find both the warnings have no disappeared and we can get started on creating the particles.

Let's do that.
Creating The Particle - 1
I will guide you through all the steps of making the Golden Halo particle in good detail but I would also advise at this point that you read up on the Functions in the Particle Editor if you have not done that already. This will help you get a basic idea of what these functions do and maybe help you follow the guide better.

Now the first thing we need to create your Particle Effect is some particles. Obviously. So let's get some of those.

Particles are emitted by an Emitter (so easy) .. and the Dota 2 Particle Editor comes with a few types of emitters. You can access the Emitter tab by clicking on the + Icon next to the Emitter text in the Functions Panel.



For this particular particle effect, I will pick "emit instantaneously" as I want the particles to be emitted once instead of constantly being emitted. I will control those emitted particles to get the effect I want. You can select other emitter types to read up on them. A lot of the options on the particle editor come with a little description that gives you an idea of what they do.

Once you've created the Emitter, you will now see that it shows up under the Emitter section of the Functions tab and selecting it will open up its properties.



I'll make just a small change here. I will set the number of particles I want the emitter to emit to 16. Should be enough for what I am trying to make.

num to emit = 16

NOTE: A lot of the numbers I might use in this tutorial may seem like I magically know them and you don't. But that is not the case. I only know them because I have an idea of how many I generally would need for a particular effect and that I have done similar systems before. This is a lot of hit-and-trial so go wild with it without any fear. You'll get the hang of it over time.

When you edit any property from the default value, it will change color to cyan. This is very handy to keep track of all the changes you made to a particular function.



All good but you might have noticed that there is a new error on the viewport. A big !!! Icon must have shown up with the warning tag that reads "System will not end on stop" .. How do we fix that? Simple. We make the system stop on end. This is generally done on pretty much all particle systemts. We do this by decaying the particles so they slowly die out ... in other words, get them to decay.

We can control the lifespan of the particle by adding an Operator. Click on the + Icon next to Operator and you will find a lot new tab with all the possible Operators. There are a good number of them, so don't be overwhelmed.

Let's just look for what we want. At the top of this new tab you can see a "filter name / description" input column. Just type "decay" in here and it will now only show you operators by that name. Less scary.

Now there are so many operators to decay a particle. So which one do we go for? In this case, I will pick "Lifespan endcap timed decay" so I can control the time at which my particles decay.

Once I select this Operator, I want to make a small change to the properties.

decay time = 0.25

I like numbers that are multiples of 4 as you might have noticed so I went with 0.25 which is 1/4 (quarter of a second) to define the time at which I want my particles to decay.

As soon as you set a lifespan decay on your particles, you can see that the warning we had has now disappeared.

Perfect. Now we have particles being emitted in our system .... err ... wait .. but they don't show up in the viewport. Why?

Because they are invisible. The particles are being emitted but there is nothing defined yet on how the particles should be rendered. So let's fix that shall we?

First let's do the ring that makes up our halo. To render this, we need to add .. well .. a Renderer.

Click on the + Icon next to the Renderer in the Functions tab and add a new "Render Rope" function.

Before you close the tab, you can see there are various other renderers as I have mentioned before. But as I have analyzed, I will be using a rope to get the ring effect that I want.

Perfect. Now that we have a renderer defined, our particles should show ..... errr .. wait .. They don't. Don't panic. It's cool. We know what we're doing.

NOTE: In most cases, when you render a sprite, the particle should show up right away in your viewport. But we are rendering a rope in this case and ropes work slightly different. We need to define a path / position for the rope before it shows up. So let's do that.

How a particular particle is born (or in other words initialized) in to the system is controlled by the Initializers. So let's give birth to our rope by using one of those.

Click on the + Icon next to the Initializers and add a new one. But which one? That's the question. We want a ring right? So let's search for ring in the filter input column and see if anything shows up.

Viola! "position along ring" sounds exactly like something we want. So let's add this initializer and see what it does.

HEY!! WHAT THE ... !! You said particles will show up once you set a path. We did. They still DON'T. WHAT SSDSLDKSasd ... Hang on ... We still know what we're doing.

As you can see the position of the particles is set and initialized but the viewport is still empty. We need to make small change.

We did set "position along ring" but as you can see in the properties tab, the radius of the ring is 0. Now we can't see a ring with zero radius, can we? NO. So let's bump that up. 10 sounds like a good value.

initial radius = 10

AND WE HAVE OUR PARTICLES. They look nothing like what we want them to .. but we have them.



We did define the position to be along a ring and it does seem like they're in a ring shaped form but they're not neatly distributed. So let's fix that.

In the properties of "position along ring", enable "even distribution" .. it does what it says. It evenly distributes the particles along the ring.

And we have our beauty.



We now have our particles in a ring shaped form, but they are balls of light and a beam of light to make a halo as we wanted. This is where the particle textures will come in.

Currently the rope has a default texture and that does not work for us. So go to the "Render Rope" properties and change the texture by clicking on the "Magnifying Glass" icon. This will open up the asset browser from where you can pick all the available particle textures - both stock and those that you might have custom added.

Because I want something that has beams of light, I'll search for "beam" and see if anything shows up.

There's quite a few of them but I think I'll go with "beam_hotwhite.vtex" because it seems to come close to what I want.

texture = beam_hotwhite.vtex

Now we should have something that looks like this.



That's cool but it is still not a full ring. So how do we fix that? By distributing the particles better along the ring. Let's go back to "position along ring" properties.

Here you can edit the "even distribution count" value to get us our full circle. I think a value of around 12 is giving us our smooth circle. So I'll go with that.

even distribution count = 12

Creating The Particle - 2
NOTE: Before we proceed, experiment with lower values to see what this option actually does so you get a better idea.
  • If you enter a value of 1, it's just particles at the same dot.
  • If you enter a value of 2, it's particles in a straight line between two dots.
  • If you enter a value of 3, its particles in a triangular form and so on
Get it? Cool. Now set the value to 12 and let's proceed.

We have our ring. But the ring is white. So let's spice things up a bit.

There's multiple ways to add color to particles, but for this case we'll go with altering the color of the entire particle system because we want the halo to be Golden more or less.

So go to Base Properties of the particle system and change the color to something yellow-ish. You should have something like this when done.

color = yellow



While we are at it, let us also increase the radius of the entire system to around 12 so our particle texture has some breathing space and not get cut off.

Also change the max particles from 1000 to 16 because we are only emitting 16 as we set earlier.

radius = 12 max particles = 16



Perfect. The issue with our particle now is that it looks a bit flat. It does not look at light. Let's tweak that a bit.

Go to the "Render Rope" properties and expand the "Color and Alpha Adjustments".

In here, enable "use additive blending". You can see immediately that all the particles now blend in to each other additively and look a whole lot better. It's not flat yellow anymore. But has some variation.

Now we can tweak the brightness of the additive blending a bit by increasing or decreasing the "overbright factor" .. I like how it looks at 2. So I'll go with that.

use additive blending = enable overbright factor = 2



Now that looks a whole lot better. But let's tweak it a little bit more.

There are a lot of rays jutting out right now. I don't want that many. So I want to fade / cull out a few. I can do this by editing the "maximum number of quads per render segment" property.

It's currently set to 128 which is a bit too much. I think around 3 works good for me.

maximum number of quads per render segment = 3



As you can see, it is far fewer number of rays now. I like it. You can also additionally edit other options like "adding self amount" or adding a "scaling factor to input radius" to get different kind of effects but I am happy with what I have. We'll come back later to it if it needs any tweaks.

I have the ring setup so now lets move on to add the flare / glow effect that makes up the rest of the halo. We'll do this using a sprite to acheive this.

Add a new Renderer - "Render Sprite".

The default texture is clearly not working for us so let us find something that might. Open the texture search panel and search for something like "yellow" that is more in sync with what we have going.

There's some good flare choices but I want to go with "aircraft_yellow" flare because it is pretty circular, has a reddish glow tint which varies from the yellow we have going and would blend well overall.

Right now it looks really ugly because our texture has a black background and that shows up on every particle.



We can fix this easily by additively blending the sprite to get rid of the black. So let's do the same we did before.

Go to "color and alpha adjustments" on the Render Sprite and enable "use additive blending".

As we can see, the blended version of the particle is really dim, so let us brighten it by increasing the "overbright factor" to around 2 or 3 depending on what you like.

use additive blending = enable overbright factor = 2



That looks beautiful. Let's make some more tweaks to refine it further. There are some seams where the particle meet on the ring and the rays are not evenly distributed. I will use a couple of initializers to fix this.

I will remap the particle count and tweak the values until I get what I want.

Add a "Remap particle count to scalar" initializer.

output field = Alpha only active within specified input range = enabled

Now time to hit and trial the input min and max values and see where my seam gets covered. It seems a min of 15 covers up the seam. And because I want the effect to add up only in that particular part, I will set the max value to 16.

input min = 15 input max = 16



Nice. The only thing that is bothering me now is that one part of the halo seems to be more bulgy because more particles are blending in that region. So I want to even that out a little bit. Time to remap the particles a bit more.

Add another "Remap particle count to scalar" initializer.

output field = alpha input max = 4 // seems to be getting the job done output is scalar of initial random range = enabled



There we go. We have our particle.



Conclusion
What we created today is just a single and simple particle effect. Many such particle effects nested together form one particle system that you generally see in the game.

I wrapped up this particle for fun by adding it as a Space Halo on our beloved Space Cow. You can preview it here.

For now this is it but hopefully it gets you started.

In the future if I get the time, I will create a tutorial that deals with more complex Particle Systems.

In that I will try to explain how Nested Particle Systems work (by creating a complex spell effect), how you can attach the particles to models, more extensive talk on Control Points, how you want the particles to interact in the game world and how to implement these particles to your custom mods.

Until then (whenver that is) ... Have a great day. Keep smiling.

You can always reach out to me on my Facebook Page[www.facebook.com] or Twitter for any queries.

- Wyk


36 条留言
gavovo 2023 年 3 月 1 日 上午 5:05 
THX! I'm a beginner in SteamVR Workshop and that was extremely helpful . Could you make a tutorial for creating a campfire? Flames?
Would be great!
EruL 2021 年 10 月 1 日 下午 12:32 
Thanks! this is very helpful
乐在其中 2017 年 8 月 28 日 上午 4:33 
666
旭日东升 2017 年 8 月 27 日 上午 6:44 
6666
小先生 2017 年 8 月 27 日 上午 5:07 
good
Twistzz 2017 年 8 月 26 日 下午 11:25 
thx
Dyventure 2017 年 8 月 26 日 上午 9:54 
NIce
XMU周杰棍 2017 年 8 月 26 日 上午 9:10 
6666666:steamhappy:
Halb 2017 年 8 月 26 日 上午 3:34 
1:steammocking:
Rain Candy 2017 年 8 月 25 日 下午 6:54 
ty :steammocking::steammocking: