chrysaora 🎐
banner
chrysaoravioli.bsky.social
chrysaora 🎐
@chrysaoravioli.bsky.social
Making whatever, whenever.

📺 YT • • • https://www.youtube.com/@chrysaoravioli
I swear this week has been crawling. Mini-vacation is coming up and I desperately need it to recharge. I honestly can't wait to mess around with this stuff at 100% brain juice. Just need to get over the next two days and I'm freeeeee (for a little bit).
November 20, 2025 at 4:06 AM
I don't have any interesting breakdowns for the Niagara System since most of the code is very sloppy for now.

Instead, here's an image of my "version control".

I don't know how to set it up so I'm just packaging the plugin every week or so and zipping up the contents to a backup hard drive 🫡
November 19, 2025 at 4:15 AM
Should've proofread because holy moly, issue issue issue.

If it isn't obvious, this problem kept me up way too late yesterday so my brain is a little shot tonight. But, I'm super happy that I resolved it so that I can inch ever closer to my ill-defined goal.
November 18, 2025 at 4:38 AM
Remapped Atlas parameters are sent to the material via Custom Primitive Data.

Before, I was using Dynamic Material Instances but it's a pain to set up the code per material instance. Custom Primitive Data instead only needs one node that applies to every material that shares the same index!
November 6, 2025 at 3:27 AM
For now, the collision mesh is separate from the visible mesh because Niagara builds the UV map from the collision mesh. Having a combined mesh means creating separate logic that I don't feel like implementing 😄

The paint UVs are fairly easy to create thanks to Blender's Data Transfer modifier.
November 6, 2025 at 3:21 AM
Anyways, lots of features I still want to support. With luck, the plugin will be solid and then, I can finally move on to actually prototyping a few gameplay ideas with it.

Progress is slow and incremental but it's kinda wild that I've stuck with learning UE5 since March 2024. It's just too fun.
November 5, 2025 at 4:51 AM
My system assumes that collision and static mesh are bundled together, great for modular paintable actors.

But what if it's a large paintable mesh with multiple corresponding Static Meshes? Well, the system just doesn't support it yet. So, I'll be working towards this "sender/receiver" option...
November 5, 2025 at 4:47 AM
[ #NinjaGaiden4 Tech ]

Dodge Offset causes the final hit of the rapier's YYY combo to bug out. I don't even know if it's some weird root motion or motion warping error but it's neat to see that the hitbox is independent from the animation.
October 25, 2025 at 3:04 AM
[ #NinjaGaiden4 Tech ]

Using Dodge Offset, it's possible to infinitely loop between standard and Blood Raven combo strings.

In this example, I am looping between the dual swords' XXXXX string and the Blood Raven XXX string.
October 25, 2025 at 3:02 AM
[ #NinjaGaiden4 Tech ]

By using Dodge Offset, you can retain your offset combo even after an Obliteration Technique.
October 25, 2025 at 3:02 AM
This can also be combined with other weapons. Since all weapons have a Blood Raven XXY combo, I can loop their finishers.
October 23, 2025 at 4:34 PM
Some more screenshots. Loving the PC version so far.

It'll be pretty interesting to compare this to the Ninja Gaiden 2 Black. I do feel that NG2B's lighting looks "better" but I appreciate that NG4's look is more stable and avoids some of the gathering artifacts that Lumen occasionally has.
October 22, 2025 at 5:17 AM
Hit masking using a single channel is somewhat working! Still a few bugs to work out but it works a majority of the time.

Hit a wall? Then it only affects the surface at that particular angle.

Hit a floor? Then it only affects floors within a certain depth like Splatoon.
October 19, 2025 at 10:39 PM
Hey, actually not too hard!

Converted the entirety of the wall normalization code from the material graph into Niagara using a single HLSL node.

Now, I've got perfectly packed Floor depth values and Wall normals in the alpha channel of my position map. On to depth masking experimentation!
October 15, 2025 at 3:40 AM