Ephemera Postmortem

You must turn back now_480.png I went into the weekend knowing that I wanted to try out some of Unity's new functionality and ended up targeting the new Visual Effect Graph. I decided I’d do a lyric-video approach to free me up from worrying about game mechanics and letting me focus solely on the bits I wanted to learn. Feel free to check out my final result (https://ldjam.com/events/ludum-dare/44/ephemera) as well as another game I created music for (https://ldjam.com/events/ludum-dare/44/rude-bear-reassembled).

What went well:

Music

I wanted to have something that built in intensity towards a large climax and I think I achieved the target I was aiming for. I think I found a good balance of electronic and atmospheric sounds before hitting the guitars-and-screaming bit at the end. I’m not the strongest vocalist, but I think I got a passable performance. A few things I’d do differently in hindsight, but I’m happy with the result.

Learning

I had no knowledge of how the VFXGraph worked before going into the weekend and I spent a good 6 hours or so just reading articles and looking at how others have used it. I’m by no means an expert in it now, but I think if I started with a clear target I had in mind I could probably approximate it fairly well. It really is an awesome tool. They brand it as something for non-programmers to be able to get results that usually require programming, but I had the opposite experience - I have no business doing anything with visual arts and I was able to walk away with something cool looking.

Modularity

One of the great things about VFX graph is that you can expose parameters to be code-controlled very easily. Each element had (among other things) a spawn rate and an intensity parameter that combined to control everything from particle size, spawn rate, deformation speed, and color. This could all be controlled in Unity’s Timeline editor, through specific triggers I set up, or in response to the audio’s RMS levels. Sometimes all three. Super flexible. Intensity-Spawn-min-02.gif

Timeline

I had never used Unity’s Timeline editor before either, but I was able to use their Signal Receivers to lock specific actions to specific timestamps on the DSP level. I created a function to add or remove each text block and then could just go through the song and add triggers as needed. I don’t know how much I would use this in a game context, but it’s far more useful than I had expected.

What didn’t go well:

Setting up the Particle Systems

It could just be my lack of knowledge, but I had to do a LOT of duplication of VFX Components. I had hoped to be able to create a parameter that would let me swap out the text images as needed, but instead I had to recreate each VFX Component and update the Cache reference inside the Graph itself for every single chunk of text. This meant that I had 30+ separate VFX Graph objects. Once I started implementing text I was unable to make any real changes to how any of those systems worked or else it would be inconsistent with the rest of the project. Not to mention spending way too much time trying to solve this issue that could have been better spent elsewhere.

No interactivity

I had hoped to, at a minimum, let the player move the mouse around and affect the particles in the system. It definitely would have made things seem a bit more tangible. It’s definitely possible, but I ran out of time to get it implemented.

Conclusion

On the whole it was a very successful experience. I learned a TON and I’m really happy with the result. While I didn’t accomplish everything I would have wanted, I think I got a lot closer to that target than I usually do for Ludum Dare.