Scrap Run

Scrap Run was a “game chill” project, meaning it was made in a week but intended to be done on top of everyone’s full time jobs. We had no 3D artists on this project, so it was made using assets from the Unreal store. My role was primarily implementing and optimizing assets, replacing blockmesh assets with arted ones and doing set dressing, and creating VFX.

A lot of my effort on this project went into updating the premade assets to make them more usable. I added dynamic elements such as wind effects, flickering lights, and the vibration of machines with vertex painting and either world position offset or time varied emissiveness in the shader. Any patterned materials also needed to be converted to use world position offset so that they tiled smoothly over the geometry built by our level designer. And last but certainly not least, the assets came relatively unoptimized, so I needed to reduce texture sizes and draw calls to reduce our vram usage.


Unreal Pipe Tool

My pipe tool was made with geometry script in Unreal. It allows the user to easily make pipes or tubes of any shape and size. It has controls for adding flanges and sections that are thinner or thicker for variety, as well as material controls and the ability to bake the model into a static mesh. The pipes are constructed using splines to control the location of each corner, and then a polygon is swept along a generated path based on user controlled size, smoothness, and corner size parameters.


Marvel Snap Foil Shader

This was my attempt at recreating the foil finish shader used on upgraded cards in Marvel Snap. The built in noise textures available on ShaderToy are not ideal for this kind of effect, but I’m happy with the result I achieved despite the constraints. The effect is made with a pallet function that takes in a value and spits out a color from a customized version of the color spectrum. That’s run over the image and offset by time, the UVs, and some noise, as well as the base color of the image to make sure that edges stay visible as the color and noise shifts across the image.


Force Field Shader

I made this effect for a side project being run by an industry friend of mine. It was made by creating a hexagon grid and animating the size of the cells over time. Then a bit of scrolling noise is added around the edges to add variety and hide the seams at the corners. The whole effect is placed in world space to keep sizing consistent, and scaled based on the normals of the object so that scaled cubes could be used to make force fields of any size. Finally, an optional flicker effect is added so we could show a damaged field that was needed for a puzzle.


Volumetric Ice Shader

This material was made as a recreation of the ice from Destiny 2. It uses the camera vector and surface normal to fake depth, with the effect getting stronger and the color being altered by a basic tiling noise included with Unreal. The same noise is offset and used to adjust the surface normals to fake additional surface detail and add some snow into the recessed areas.


The Wilderness

The Wilderness was a joint test between me and a level designer to see what we could do with procedural content generation in Unreal 5.2. The terrain was made from scans of real world mountains in Washington, and all of the grass, rocks, and trees were placed procedurally. I created the PCG graph to include features like varying tree density based on height and the slope of the terrain as well as different types of blueprints that could be placed in world to exclude specific areas from the generation so we could add authored content there.


Taking Thyme

Taking Thyme was my first game jam project, and I worked primarily a level designer. However, the game is set at night and some sections are primarily lit by moonlight, so I added a large full moon to justify that style of lighting. The moon is a real sphere and not part of the skybox, so it required some extra work in the material to maintain scale and facing regardless of where the player stands.