Skip to main content

KEIS Sprint 3

  This sprint, I worked on some improvements to the enemy wave and damage system, some status conditions for the enemies, as well as some exciting VFX!


When I started working on the blood VFX, I knew I wanted to do something similar to ULTRAKILL’s rendition. I started with Unreal Engine 5’s directional burst niagara template, because it featured ribbon-like trails behind the particles that I knew I wanted. However, these ribbons were square on each end, and I wanted mine to taper off instead of just end abruptly. To this end, I duplicated the built in ribbon material so I could make some modifications. I found that by plugging a sphere mask into the opacity of the material, and then multiplying the radius by the particle’s relative age (a 0-1 value representing the percentage of the particle’s lifetime that has already passed). This worked pretty well, and gave my ribbons a more rounded, tapering look!


The second major problem I had to solve was getting the particles to leave bloodstains on the environment. After doing some research on different approaches to this, I settled on having my particles spawn decals when they collided with static objects. I began by creating a simple, 16x16 bloodstain alpha texture that I could use for the decal. After this, I set my ribbon particles to generate collision events. Then, I created a new emitter that would respond to collision events by spawning itself at the collision location, and attached a decal component onto it. This allowed my particles to create decals where they collided!


After fixing some of the stretching that occurs when a decal is projected onto a surface that’s not directly facing the decal, I wanted my particles to slowly “dry up” so that they wouldn’t just suddenly vanish into thin air. Thankfully, Unreal’s materials give you access to a node called Particle Fade Out Opacity, which is a float ranging from 0-1 that’s manipulated by the particle emitter itself. 0 represents fully faded out, and 1 represents not faded at all. I started by plugging this value into a 1-x node and multiplying it by the alpha of the base texture to get the opacity, but this approach made the entire decal slowly average out in opacity, then fade out all together, which I wasn’t satisfied with. After numerous alternative iterations, I settled on the simple approach of subtracting the fade-out value from the texture’s alpha, meaning that the more transparent parts of the texture would completely fade out before the more opaque areas. This gave my decal a nice “shrinking” effect that I thought passed pretty well for drying up!



There were some other things that I had wanted to try, like randomizing the texture of the particle, or adding a normal map to the material, but I didn’t get to a satisfactory point with either of those endeavors, so I decided to leave it on the back burner for now.


The next VFX system I worked on this week was a muzzle flash effect for our guns!



This one was very fun to make. It consists of two different animations. One shorter, triangular spike that starts fading out from the bottom center, and a longer blast effect that also fades out from the origin. By centering the long blast effect, and creating a ring of the smaller spikes around the side, I was able to create this effect. Finally, I added some sparks, because I thought that it looked more fun that way! Finally, I parameterized the color that fades in over the particle’s lifetime, and I want to go back and add parameters for the scale of the effect so that we can easily reuse this for other weapons. Note: pictures were used because I could not get the animated gifs from google docs to work


Comments

Popular posts from this blog

CAGD 373 Blog Post 4

This sprint I was assigned a modular set to create the basic interior rooms out of, with three different textures for the walls. (a Square Brick Texture, a Cement Texture, and a Metal Wall Texture) The actual modeling itself was as basic as it gets, I just made a few different shapes and sizes of wall along with a doorframe, with a couple floors and ceilings to complete the set. The interesting stuff this week was the textures, all of which I made in designer! The brick texture was probably the most complicated, and the one I’m most proud of. Starting with a brick generator, I used some gaussian spots to add some variance to the shape of bricks (using the spots to “cut out” chunks of the perfectly square bricks) and that worked pretty well! After that, I used a grainy looking noise map to fill in the black part of this mask to add in the noisy texture of mortar between bricks Next, to add some color variation to the bricks, I used a flood fill node, which was able to identify all the...

Idle WitchCraft Sprint 4

  This sprint, I started by implementing alternate success conditions for certain scenarios. This means that for some scenarios, there will be multiple different stat checks that can lead to different outcomes, and potentially different scenarios down the line. Two different outcomes of the scholar’s exam scenario. One for high intelligence, and one for high charm! This was an interesting programming challenge, as I had to figure out how to associate these alternate conditions with the data table that is currently holding all the scenario information. The interesting thing about these alternative outcomes is that they function as almost half a scenario. They have no intro dialogue, but they do have a unique stat check, outcome dialogue, and list of scenarios to unlock on success. Because of this, I decided that I would copy the current scenario into a new struct. That way, I could “swap out” certain pieces of data at runtime without having to fill my data table with duplicate inf...

CAGD 373 Blog Post 5

  Judgement day nears! And sadly I don’t have too much to show for this week as finals in other classes have swallowed up most of my time. However with most of them finally out of the way I’m clear to focus all my time towards this project over these next couple of days! The real meat of my texturing work this week is this Exterior Trim Sheet. I tried to group together as many models with similar-ish materials as possible so that I could get textures applied efficiently. Here I’ve created a trim sheet consisting of metal, tree bark, wood, a beige stone texture that worked pretty well for the pipes, and a separate, rougher metal texture for the motors found just outside the facility doors. I spent a lot of time compiling a list of all the models in our project along with reference images, so that way I could organize them into texture sets based on similar materials/texturing needs This plan should help to really accelerate the texturing pipeline over the next couple of days, so t...