Ever since I made mobs die by breaking into their components, the battlefield looks like this (with my old single-color sprites):
It is impossible to tell where are the living enemies and where are the dead ones. So I basically cannot do it this way, as “easy” as it is to just drop the same parts as they are made up of, especially since they fall away at exactly the right spots. Too bad.
Instead, I guess I am back to specifying each sprite separately:
And this drops a part (that I need to make a sprite for):
The obvious issue with this proof of concept is that I have a large amount of mobs and their death setups. Like every other mob-related thing, I have wa-a-ay too much finicking with every single mob:
Most of the stuff is common and reusable, so I will just do that for by making an asset they can reuse:
And this asset will designate a bunch of sprites as being in some group, like torso or legs:
The death setup then just needs to select what sort of stuff it wants to see:
And if the mob needs different parts, it’s super-easy to swap to a different group:
I “just” need to draw all the parts, which are the main sprites with an obvious breaking cut:
The problem is that I need to copy and recut the sprites whenever I make changes. This sucks a lot for efficiency, but I just can’t drop full parts from dead mobs. Compromises. Assets. Scope creep. Join today!
Anyway, this works out okay:
Now, I also specified all the physics stuff on a per-part and per-enemy basis, and I just don’t care enough to do it anymore. I will just put all these values in the same common asset and reuse for everyone:
And this makes for a nice noisy battlefield, which I really like:
It’s now way easier to tell apart broken parts from real mobs (animation also helps):
At worst, I can always tint them darker to be less “live”.
One final thing I’m looking at are my sprites for foreground and background objects, like the legs:
I’m actually painting the sprites for these rather than doing anything programmatic. I don’t really want to add more spritework to do. I need to change the other sprite every time I change the main one.
So my tinting sprite shader still has 2 unused channels. And I am in full control of what it does. So I’m going to use the blue channel (red is my flash and alpha is my opacity) for controlling fading/darkening, which will look like this:
In fact, I can manually tweak the amount for each channel I fade, so that I can easily and cheaply force a little red saturation tinge to it:
It’s a bit exaggerated, but I think it sells it really well. And now I only need one sprite per. Yay, workload reduction!