Slime

Slime


I stumbled upon this slime and I couldn’t resist to make a project on it! I worked on the connection between the Blueprint system and the Niagara particles, and also spent time to give the slime its signature wiggle. This process helped me learn how diffrent systems work together in Unreal. 



Slime by DennisFan

Enviroment by luoxiaohei

Niagara system




Fireflies


I added some firefly particles to create a more magical and cozy atmosphere. To keep things optimized, I made sure the fireflies spawned around the slime’s position. 


Slime splash


I created particles that use the same wiggle I mentioned earlier to give them a sense of life and motion. When the particles die, a splash effect is spawned at their position. I set this up using a collision event in the Niagara system. The splash particles are driven by a shader that scrolls a texture, which is then eroded by another texture. This shader is applied to a plane mesh that rotates 360 degrees to give the illusion of an outward burst.


Clover


To save time I reused the firefly emitter and tweaked it to have the same kind of random spawning. To make the clover spawn on the ground I created a custom Niagara module that sphere traces against the global distance field to determine where the clovers should appear.


Offset shader


To get that proper slime wiggle I created an offset shader. I used a combination of scrolling textures that I then plugged into the World Position Offset to make everything wobble and move just right.


By using an offset shader, you can give the slime more movement without having to animate it manually. I also used this technique on the slime’s flower crown to add some extra motion and make it feel more alive.

Hello world
Hello world

Blueprint system


When the jump button is pressed I send the information to the animation blueprint. When the slime lands I spawn a Niagara system at the actor’s location. I then listen to the particles death events and extract the particle positions using a user parameter within Niagara. After obtaining the positions I randomize a flower to spawn at that position.

Animations & Rigging


For this project to even work, I had to rig and animate the slime. Animating a slime is the perfect way to dive into the fundamentals of animation, like squash and stretch, anticipation, timing, and more. 


I rigged the slime in a way that allows me to easily grab the side controllers to create squash and stretch effects and the same goes for the head

controller. 

If I had more time



I had so much fun working on this project, so I’m definitely going to keep developing it! My goal is to make the slime interact with water by creating a splash effect and have it spawn different types of flowers as it moves. If I were to iterate on its current state, I would make the flowers unfold as they spawn instead of just appearing instantly.



Conclusions  & Takeaways


This project was definitely the most complex one. Everything I had learned before laid the foundation for this project. My main challenge was working with the Blueprint system, which I initially found difficult and wanted to improve in. I also faced unexpected challenges with the mesh construction, which turned what seemed like a simple outline shader into a much bigger task than I had anticipated.