What is the very best thing about your VFX pipeline that makes you glad you are working with this pipe?
And which is the worst? The 1 thing that irritates you to no end…?
Best: VFX Integration into the game. In our pipeline we can read and write basically almost any value in the engine. For example, we can easily access things like player’s speed / health / status / direction… or anything regarding the world, or gameplay states, and then, we can act on it doing some kismet-like scripting to change parameters on particle emitters, materials, or anything. This happens at very low (almost negligible) cost.
Worst: Particle Engine is lacking a lot of industry standard features. For example, we’ve only recently gotten the ability to have 1 particle become an emitter over its lifetime. We still don’t have any kind of particle collisions.
Looking forward to hear about your joys and pains haha.
Hmm interesting idea.
Best: Would certainly have to be our custom tools that compliment the particle system and make it super easy to trigger and activate complex events.
Worst: Would definitely be where the tools run out, often at the edges of integration with lots of animations, getting the timing right in all the different circumstances can be a real pain.
Fascinating to hear! As if the challenges of realtime effects weren’t diverse enough, the tools and technologies at your disposal will differ from each workplace, which always makes for some quite interesting scenarios. As I student my world-view was sorely limited (wait doesn’t everybody use UE4??), but I’ve since come to embrace the chaotic nature of our profession x)
Pros: Extremely flexible and controllable. We have tons of buttons and knobs, which makes for quite a learning curve, but it does allow us to have finely-grained control over a lot of our particle behavior.
This is especially useful in optimization scenarios, where we can assign specific rules for when to stop rendering, when to stop simulating, when to stop spawning, etc etc. Caveats with this setup is of course that it gets confusing and bugs emerge, but overall I’m happy to have niche features that save your life in those edge-cases.
Cons: Emitter instancing and reuse. This is something I feel lots of engines do badly though, I’ve never found a convenient and intinutive system for instancing/referencing/cloning emitters.
If you have a “Small Fire” effect and you want to make “Big Fire” without having to start from scratch, most engines make this common situation needlessly complex. We have the ability to instanciate an emitter and then override certain parameters, but as soon as you create that relationship you’re very limited in how much you can change the base emitter without breaking instances of it. In the end we usually resort to simply cloning emitters so that changes don’t propagate unknowingly to other effects, but this creates a lot of extra work when doing optimizations or adding new features during production.
On League of Legends, we used to edit all our VFX files using Notepad++. Just over two years ago, we got a real-life GUI!
Best: Super intuitive and easy to implement hand-crafted VFX. Lots of Tech Art / Engineering support to get us new tools/features on a regular basis.
Worst: Our file system is a bit of a mess, making it tedious to copy/paste from a library of VFX. We’re working on fixing that, but with how many characters/skins we have, it’s a laborious process to overhaul the system. Who would have thought the game would include 130+ characters with 700+ skins??