Skytail

Game Information
Gumption (internal codename) now Skytail, is my last work with Coatsink. It’s an adventure game focused on battling monsters with telekinetic abilities.
On this project my work has been more on the VFX side than the technical artist role because I had the pleasure to work with Coatsink’s technical director, which is a wonderful technical artist.
Here’s a summary of the things I’ve done during the 6 months of production until the end of my contract.
Companion Food VFX + Shaders
On exploration levels there’s a game mechanic for bonding with your companion where you can cook and feed wild food to it. I was in charge of making the shader for the different cooking stages of the fruits, the smoke and firepit where you cook them.
Food Shader
A simple shader that modifies the diffuse and emissive to represent the different cooking stages. When uncooked it desaturates the diffuse color of the fruit, when fully done the shader leaves the diffuse untouched but lerps the diffuse from the shiny regular TK gradient map to a more garish and saturated one, when burned it multiplies a noise sampled using triplanar coordinates and makes the emissive dull.
Fire Pit and Fire Orb – VFX + Shader
To cook food, you need to ignite first the fire pits on the exploration levels with a fire orb. The fire orb and by extension the flames on the fire pit are particle systems with an Embergen flipbook animation stylized with a anisotropic Kuwahara filter with a custom shader that adds the color layers and movement.
The shader works by using the four scrolling noises on the RGBA values of the texture to linearly interpolate from the base color on the flipbook to three layered colors, another noise texture cuts parts of the fire to break it down a bit. For the displacement movement it’s just a simple script that passes the normalized direction and the magnitude of the vector to the shader and displaces the vertices using UV’s as a mask.

Critters: Fauna alive with Shaders and Particle Systems
Critters are small creatures players can interact with in different ways on open areas, these vary on size, detail and how you interact with.
Bugs
Bugs are little dust particles with eyes that avoid the player, these work by spawning particles on a sphere volume and then spawn other layers using sub emitters, blinking was achieved by using a flipbook with a custom curve to make them change frames quickly. Textures were generated using Substance Designer.
Sprites
Sprites are magical particles that follow the player’s telekinesis projectiles, these are simple particles with trails that feature a custom particle shader for the scrolling noise. The telekinesis projectiles have a particle system force field that attract the sprites to the player generates ofensive proyectiles.
Floaters
Floaters are magic creatures that can be crushed to make them split into parts, after a while they reform and regain their original shape

The shader works like this:
- Create two gradients with UV Channel 2, one pushes the geometry inward using normals and the other inflates the mesh using normals as well.
- Separating mouth, left eye & right using Vertex Colors RGB Channels, displace by hardcoded vectors inside shader.
- Add wobble using a scrolling 3D Texture sampled using Object Space Coordinates, displace eyes and mouth using said texture, but instead of sampling using Object Space Coordinates we use the reconstructed object space centroids using UV Channel 0 & UV Channel 1
Sprocket
The sprocket is type of critter that when crushed flies towards the sky in firework type of movement.
Level Progression VFX
Teleport Platform VFX
Trial Entrance Gate VFX
Shield VFX
Shield Parry VFX
Shield Break VFX & Shield Shader
Companion Health + Ultra Charge Meters VFX
Health Capsules
Health Pickups
We can divide the Crush VFX into different parts:
The breaking pieces are animated using a custom shader. We store the centroids of the pieces on the tangents using a for each piece loop in Houdini. By using the centroids on the shader, we can push the pieces from the center of the object outwards and then make them fall with “gravity” per piece using a 0-1 value on the particle material (this is controlled using the custom data tab on Unity’s particles).

Health Obtained VFX (Unused)
Ultra Meter
The base design of the ultra meter is a cylinder with a custom shader. An alpha mask is displaced using noise to give the liquid effect and the base color is shaded using two colors with a lerp function.

The electric arcs are generated using a Substance designer node graph. Using a randomized seed for the noises and using substance player I generated a bunch of frames and then composited them as a flipbook using Unity’s VFX Tools package. Then the electric arc is rendered on top of the base render pass using an additional render pass.

The wavy overlay that appears when you enter ultra mode is another additional render pass with alpha blending. It’s rendered on top of everything because our concept artist wanted ultra mode VFX to break out loose from their containers, like a sorta of uncontrollable energy.

Shield Health Meter

Toys
Toys are interactable objects that don’t have any purposes in terms of gameplay and story progression, they’re just there for the diversion of the players while they explore the levels with their companion.
Chimes
Cannister

Lantern

Orb Launcher VFX
Muzzle Flash

Why can some pieces look unfinished?
On September 2025 I was told by Human Resources that I would not get a contract extension, that essentially meant that I was going to be laid off on the 30th of November 2025.
Now, if you’ve been following the news, Coatsink is about to make 55% of their jobs redundant due to the current state of the games industry. This meant that I was not given time to polish or even finish some of the remaining VFX that I had on my list.
Production plan was to end VFX production on the 30th of November, then have some extra weeks to polish things up, but layoffs negotiations for all of my friends at Coatsink started on my last week of the project, thus my morale was so low and my focus was so inexistent that I just couldn’t finish everything that I wanted to before leaving the studio.