Download

LightHunter MegaJam Project breakdown

It took some time for me to get back to the forum and Unreal community. I was already on my way to quit on this idea, but since I have a follower (YAY!) there is no way back!
I promised to post a project breakdown and here it is!

First of all here is a complete walkthrough for the project:

https://www.youtube.com/watch?v=uoY2NPpHISM

Packaged game download link:

https://www.dropbox.com/s/sfjcin6dqi7cpop/AV_LightHunter.zip?dl=0

And some artstation screenshots:

https://www.artstation.com/artwork/3WJlE

Now let’s get right to it!

Light platforms:

https://www.youtube.com/watch?v=uokoQTElmYg

This effect is a combination of 2 materials and some BP programming:

Button Sphere material

https://i.imgur.com/iLmHKBd.png

https://i.imgur.com/0rVpnWb.png

Opacity masking makes the most work here. The mask consists of two multiplied pieces: distance to nearest surface node lights up surface intersections and animated by panner and sine noise adds life to the effect:

https://i.imgur.com/zSyy4H6.png

Also I added opacity multiplier (just masking was not enough) and camera depth fade, so the effect will not interrupt gameplay:

https://i.imgur.com/Npmovrl.png

I used the same material for the reverse time effect, so I added a static switch parameter for the color:

https://i.imgur.com/BO5ixBG.png

Platforms material

https://i.imgur.com/00GGU8m.png

https://i.imgur.com/o5bvZCv.png

And again masking! First there is a primary sphere mask and a secondary sphere mask with a smaller radius. Secondary mask is inverted and cutted out from the primary by multiplication, the result is we have a sphere edge with controlled thickness as a mask. This edge is used for burning emissive in the places where button sphere intersects with platform. The primary sphere is used to cut off the platform. If the button sphere intersects the platform, it starts to send parameters to the platform dynamic material - SphereCenter and SphereRadius:

https://i.imgur.com/BW0sA3I.png

There is a second masking group here. As soon as button sphere overlaps a platform, timeline animation for the dynamic material starts. “If” node is looking for which pixels of the noise texture are lighter then 1.1. With ShowAmount = 0 all pixels in a noise texture are in 0 - 1 range. With ShowAmount = 0.11 some pixels will become 1.11 wich means they are visible for the “If” node! And there is additional “If” mask which moves with 0.1 delay and is multiplied by main mask that gives more burning emissive edge lines:

https://i.imgur.com/ruKrqn7.png

Final mask multiplier is camera depth fade. Platforms should not block the view:

https://i.imgur.com/0zTlt7d.png

Sphere mask edge is also used as input for world position offset, so it looks like platforms are building from outside world and not just appearing:

https://i.imgur.com/BrDEgki.png

Base color and emissive. Unlike opacity masks, emissive masks have to be added to work together:

https://i.imgur.com/UiYwBTd.png

That’s it for today, will continue tomorrow. Thank you and have a nice masking!