I’m starting to recover a bit of energy, though the unseasonal coolness I’ve been enjoying for the past week is supposed to end tomorrow so we’ll see how that lasts. I’ve cut a few distractions out from my daily routine at least temporarily so that I can focus on getting things done, and I’m feeling better for it. Sometimes even the things we enjoy can become traps, habits we get stuck in even when they’ve ceased to be beneficial. Sometimes it helps to take a break from the many stresses of procrastination and laziness so that I can spend some time relaxing with work.
Anyway, the detail editor is starting to come together!
Here you can see I have a test detail selected – the red dot there shows where the detail lies in world space, or where it interacts with the 0-distance axis the player character occupies, and the line sticking out shows how it projects into the foreground. I can select and drag around both simple and complex effects, though some of my test particles have stopped rendering for reasons which I have yet to uncover – I should probably go back and work on that soon, since it will be hard to be sure how well the editor works without being able to see the real-time results.
There are two panels up top. The top one is the main control panel, which is probably sized a little bit too small but will include all of the controls for modifying each detail’s distance, color, alpha, and other parameters. It’s going to require both a basic version, for simple details like the one I have selected here, and an advanced version for particle effects and other animated details. I don’t think either of those will be too difficult for the most part, with one exception which I’ll get back to in a moment. First I’d like to talk about the panel underneath the main control panel, which has the distance filter slider: This is already up and running, and allows me to filter out selectable details based on their distance. Right now there’s only a few in the scene, but this means that if I want to just work on background elements I can just slide the red arrow down to the center point and only background elements will be visible, which obviates the need for separate foreground/background editors.
Now, the tricky part I alluded to before is the particle behavior controls. Similar to the game entities I’ve been working on for the past few weeks, particles can have a set of assigned behaviors, though particle behaviors are far more primitive. Basically, each particle behavior is just a method of mapping one value to another value – an obvious and common example is mapping the lifetime value to the alpha value, saying that each particle lasts to a maximum lifetime of 10 seconds before respawning, we can then map the value 8 in lifetime to the value 1 in alpha and the value 10 in lifetime to the value 0 in alpha, so that over the last 2 seconds of its life it fades evenly from 1 to 0 before respawning. This is the most obvious example, but a whole lot of interesting effects should be possible in this framework – almost certainly anything I’m planning on doing in this game. Anyway, since an unlimited number of these behaviors are possible, and since the complexity of each behavior is itself variable (one source parameter can be linked to multiple targets), this could be a fairly complex undertaking. Hopefully my experience with solving a similar problem in the Entity Editor will be helpful.
I’m so pleased to finally feel like I’m making progress again, even if it’s not astounding progress, and even if it’s still, perhaps, just re-creating the detail editor I had to discard to accommodate my new level detail paradigm. I’m feeling excited about the project again – even if making it something other people will want to play is still distant, the path from here to there is coming into sight again, and it’s a huge relief.