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...

CAGD 370 Blog Post 5 - Final Sprint and Postmortem

  The Final Prototype is officially done! And this final sprint has definitely been the most intense yet. While not perfect, I’m very happy with the game that me and my team have made, and I feel a lot of motivation to start a brand new project! But before I get ahead of myself, it’s a great time to reflect on the last two weeks and this project as a whole. To start off our final sprint, I once again made adjustments to the pole vaulting. I made the impulse of the vault scale with how close you got to the pole, which meant that not only could the player not get an immense movement boost from a standstill, but also that there was now a “sweet spot” to aim for to get the most vertical height out of the vault. To help players seek out this sweet spot, I also took the time to create a charge-indicating progress bar next to the player that would fill up the closer they got to the sweet spot. The bar progressively fills as the player approaches the sweet spot After this, my lead de...

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...