GUIDE: The PSEditor

In light of DraonCC’s apparent abandonment of maintaining his tutorial for using the PSEditor (his website actually 404’s; not calling him out, just pointing out the need for this) I’ve decided to write up a tutorial for this mystical and alien software provided to us by Crate.

Video Guide - Coming Soon!

PDF Version of Tutorial - Click here!


So, you want to start using the PSEditor, huh? Great! Well, the first thing to understand about it is what it can and cannot do. It can create Particle § Effects (FX), which I’ll henceforth be calling PFX or pfx. It uses existing textures (.tex), shaders (.ssh), and some neat manipulations to enable the creation of a seemingly limitless number of 2D and 3D effects which, for the most part, are used in skills in the game (projectiles, areas-of-effect, explosions, buffs, etc.). It cannot (to my knowledge) create or manipulate 3D models (or meshes, .msh, as in Grim Dawn terminology).

What else can the PSEditor do? Well, it can crash every couple hours for no reason…

Before you get started, you should extract the gamefiles via the Asset Manager. There are many existing tutorials on how to go about that already, so I won’t describe those steps here. When you’ve done that, navigate to [Grim Dawn Installation Directory]/resources/fx/ and copy the folders within there to [Grim Dawn Installation Directory]/source/ (create this folder if it doesn’t exist yet).

Here’s my source folder:

You won’t have all the folders I do, since I’m a super awesome modder involved in a ton of other various non-PFX projects. The two red arrows point out the folders you really want for this, the green arrow points out a folder you probably want, and the blue arrow points out a folder I made myself that contains the PFX I’ve created in the PSEditor, so I can keep what I make and what GD already has separated. You may also want /fxtrails/ but I haven’t had a use for it yet. /meshfx/ seems relevant but unless you’re doing really funky stuff you shouldn’t need it at all.

From there, open up the PSEditor executable found in your [Grim Dawn Installation Directory]. You’ll be greeted with this amazing user interface:

Looking good.

You should then go to File>New in the top left, and be prepared for the program to freeze for about a half minute…

Great design, Crate.

When the editor unfreezes, you’ll get a window with a truly daunting number of buttons and options:

On the bottom, righthand side of this window, click ‘Create New’. You’ll have made a new Emitter, which is probably now tossing a crapton of ugly debug checkerboards at you. Hoorah!

My first recommendation is to give this Emitter a name. Call it whatever you want, in the ‘Emitter Options’ “Name:” field. Try to make it something descriptive unless you have the memory of a god:

Alright, let’s take a moment to actually look at what we’ve got presented to us here on this window.

I’ve scribbled out Shader selection because for the vast majority (99%+) of pfx files you create, you won’t need to bother with it.

At the top of this window is a ‘Run System’ button that ‘plays’ every Emitter that has ‘Render’ ticked underneath its ‘Emitter Life Span’ setting. ‘Run System’ essentially begins the operation of your rendering-Emitters as they would appear in-game. Pretty useful. ‘Render’ is essentially an on/off switch for a particular Emitter, controlling whether or not it actually emits any particles during the pfx’s runtime. This is mostly useful for debugging work-in-progress pfx’s, though sometimes you may wish to create a pfx with several Emitters, then make a pfx with all but one of those Emitters rendering, and save them as different files. Whether an Emitter is used during gameplay is dictated by the ‘Render’ checkbox.

‘Emitter Life Span’ and ‘Particle Life Span’, pointed out above, are two very different things not to be confused. When you create a new Emitter, they are both 10.0 (seconds). I’ve changed them to 1.0 seconds in the above image, and would usually recommend you do the same while you’re testing each new Emitter you create. An Emitter emits Particles for as long as it’s alive (Emitter Life Span) and those Particles are displayed for its own lifetime (Particle Life Span). What this means is that, in the above image, a Particle emitted when the system starts running disappears one second later, and a Particle emitted when the system finishes running also disappears one second later, meaning we can have particles for up to (Emitter Life Span + Particle Life Span) 2 seconds in our current example.

Still following along? Good, because each of these images is only going to get more complicated.

Let’s pick a texture:

Clicking the ‘Pick Texture’ box will open up a dialog box allowing you to choose a texture for this Emitter to emit as a Particle. I’ve chosen /FX/textures/runeritualcircle01.tex for this example. Click ‘Run System’, and we’ll see what happens as a result…

WTF is all this dusty crap? Well, at least we’ve gotten rid of those pesky checkerboards now…

Let’s tick ‘Looping’ and ‘Orient Vertically’ before we move on. (Also zoom in a bit to see what’s going on.)

‘Looping’ is a very useful thing for Emitters because it makes them run their entire emission pattern over and over. But, you may ask, why bother with having an Emitter Life Span field for Emitters that are on loop? A looping Emitter plays its emission pattern from start to finish, and then repeats from the start again. We’ll start to see in the next post (because I’ve hit the image limit) how to time things in an Emitter’s emission pattern.

An example of a pfx that has both looping and one-time Emitters is Maiven’s Sphere of Protection; it has an initial flash (one-time) on cast followed by the sphere itself, which is on loop. A loop continues until the game stops calling the pfx file, which is primarily controlled by database (.dbr) files.

‘Orient Vertically’ makes an Emitter orient its emitted Particles along a flat plane. This is useful for stuff that you want to have appear differently based on the camera angle. An example of a pfx that Orients Vertically is Sigil of Consumption (which, as you may have figured out, this tutorial will make a very basic version of). An example of a pfx that does not Orient Vertically is Curse of Frailty (or basically every other buff/debuff in the game). Choosing to have something not Orient Vertically will make that particular Particle appear to always be facing the camera.

In the next post, we’ll begin changing the emission pattern of our Emitter, so that it goes from a jumbled mess of nonsense sigils to a defined, interesting sigil upon the ground.

2 Likes

This post is dedicated to timing operations in an Emitter’s emission pattern. If you haven’t yet, I’d recommend reading the above post for some basic instructions on setting up an Emitter within the PSEditor for Grim Dawn.


Right now, our particles are all over the place. That’s no good! It’d be nice if we could make them all appear relatively on top of one another…click on ‘Emitter Size’.

Another window will appear, featuring a very nondescript line with two endpoints dictated by a pair of squares. Click+drag those squares to the bottom of this box (it can be tricky to get them to the actual bottom (0.00); you may need to bring a box close to the bottom, then reclick and redrag them down a little more again). The Emitter will update in real time as you make this change.

Can you see what’s going on here? We’re describing the size (in this context, it might make the most sense to suggest this size as a VOLUME) of our Emitter (which is presently in the shape of a Sphere, as defined by ‘Type’ above ‘Looping’. We don’t need to change the Type for now). Particles appear at random anywhere within the Emitter. If we shrink the size of this Emitter down to a minuscule proportion of what it was (or, in this case, zero) we can get our Particles to overlap one another more cohesively! Now we’re really getting a familiar-looking Sigil! It’s a little bright, though…

Close the Emitter Size window, then click on ‘Emit Rate’. Also change the lifespan of our Emitter to 0.1 seconds. This means that it will only exist for a brief time, spit out a ton of particles, and then disappear, whereupon it won’t emit anything else.

Right click the black line of the Emission Rate window, forming another manipulable square. Move it and the ending-square to the bottom of the window, and the starting-square to the top of the window. This further shortens the time our 0.1-second Emitter will actually emit stuff; an Emission Rate of 0.00 means no Particles will be Emitted at that timestep. Note that the X-axis is always going to be ‘Time’ in these windows, and the Y-axis will always be whatever you’re modifying to occur at that timestep.

Close the Emission Rate window (or don’t; you can leave these things open if you want and edit them as you go, but things can get kinda cluttered).

Good, our particle system isn’t quite so bright anymore…but pale white is such a bland color. This is a demonic sigil! Let’s make it devilishly purple! Click on Color/Alpha in the Particle Options section of the window.

Particles in Grim Dawn abide by an ARGB (not to be confused with an ARPG :p) color-coding system. ARGB stands for Alpha/Red Green Blue. As such, there are four lines in the window above, each one corresponding to [A]lpha, [R]ed, [G]reen, and [b]lue (R, G, and B will appear directly atop one another at first, and Alpha will be at the top).

You can manipulate these lines as you see fit. Get creative! Feeling like you want to work for Crate? Make a rainbow sigil perfect for that Ponycorn mastery Grava keeps teasing us about

When you’ve finished, you should have a decent looking sigil. Unfortunately, it’s incredibly freaking small (0.5 meters). To fix this, click on ‘Size’ in the Particle Options.

Here, the Y-axis corresponds to the number of meters your particular particle will be stretched to. But wait! This axis tops out at far too small a value! At the top of the Particle Size Curve window, click in the leftmost textbox and enter in a new radius for your sigil. Then click on ‘Set’. This will automatically scale up the Y-axis for your particle. You can make a particle shrink or grow (or both) over its lifespan. More ways to get creative!

We’re nearing the end of our tutorial, and have merely but minutiae left to touch upon. By manipulating Emitter and Particle effects over a varying span of time for multiple Emitters, you can create incredibly complex and visually stunning particle systems to use in-game! At this point, if you feel comfortable with the PSEditor’s user-interface, I’d start poking around in Grim Dawn’s existing pfx files and seeing how they work. Recolor some Particles, make Emitters last longer or shorter, change their emission rates! Add new Emitters to existing pfx files and save them as your own work (hehehehe…)!

I’ve touched up my sigil a bit:

I’ve made the Particles emitted last a fifth of a second longer, and I’ve also made those emitted toward the end of the Emitter’s lifespan float up slightly. I think it looks much better. If you’ve Oriented Vertically, Velocity will bounce a Particle up (you can make it fall with ‘Gravity’ in Particle Options, which can go negative as well). Otherwise, its direction will be random.

When you’re satisfied with what you’ve got, go to File>Save As. Then select your output folder (you made one of those in /source, right?), add a ‘’ in the directory, and type out your pfx’s name (and suffix it with .pfx!). Then click ‘Accept’. You can name it whatever you want, though I try to keep things descriptive and akin to Crate’s standardization for naming:

Congrats! You’ve saved your first pfx file to your computer, and can now use it in a mod! There’s some fancy Asset Manager/database management stuff you need to do to actually link things up correctly, but that’s beyond the scope of this tutorial.

Keep experimenting! Keep tinkering! Keep thinking of ideas! There’s a lot of really cool stuff you can do in Grim Dawn’s PSEditor, though - as with anything in Grim Dawn Modding - you may need to get creative in a roundabout implementation of your idea.

Who knows, maybe you could even make a particle system to simulate a Whirlwind-style AoE buff! I doubt that’s possible, though…

[Reserved - Will be detailing what each individual button in the PSEditor does. Stay tuned!]

My judgment? Very sexy. Thanks for this!

Tutorial edited for correctness as well as for grammatical purposes. Also added a PDF version of this tutorial, downloadable in the first post. :slight_smile:

Interesting read, I may come back to this later on should I decide to jump into the PSEditor.

I’ll be skimming through this in a bit, maybe yours contains info mine is missing. In the meantime I fixed the broken link in my post and copypasted the markdown my guide was generated from into the OP on the thread of my guide: http://grimdawn.com/forums/showthread.php?t=40477

any fix for a blue screen with no red blue or green lines … iv had this issue since may when i first started modding and couldnt do any effect work because it just doesnt show anything… it shows its running but thats about it… iv tryed about 5 differant OS and nothing works

Follow the tutorial. The screen does not start with the axes and only adds them once you create your first emitter.

Ceno, is it possible to make an effect the color black (or close to it)? For some reason I can’t seem to do this, but I imagine that the riftgates use particle system and they have black in them. I haven’t really tried this yet, can you open the rift gate particle system in the PS editor?

You can open riftgates in the PSEditor, sure. particlesystem/ui/pfx_riftgateactive(02).pfx

As for making effects black…I don’t actually know. In theory making all the colors 0.00 in value but maintaining some opacity should make an effect black, but in the preview in the PSEditor it just makes the effect invisible. I don’t know how it’d appear in-game.

You can use the particlecombine shader to create black particles

Hi!
I have some troubles with save new .pfx

When I choose “Save As” standard Windows save dialogue opens:


When I try save my file next error appears:

Any ideas to fix it?

The save function only works for the folder called “source” inside your working directory for some reason. Save as is only used to allow you to give it a name. Simply use “save” instead.

Same way

UPD.
After restart PSEditor it’s works.

How does one even load particles in the program? I have a “source” folder in my working directory with the extracted vanilla particles, but my PSEditor shows up empty.

Press “Create New”, on the right.

Then read the tutorial here. :wink:

But I’m not trying to create a new particle, I’m trying to edit the vanilla ones.

Particle or effect?

A particle is (usually) just a texture, so for that you’d want to use an image editor. An effect is many different particles.

Can you show me your source folder hierarchy?

Well for now I’m trying to edit the “Ring of Steel” effect (the pfx file) to make the freezing transmuter to look more unique.

Here is my folder hierarchy (I’ve also tried with the source being in the “Grim Dawn” root folder with no success):