Rebellion of the Blob!

Senior Student Project

Team of 2

Roles: Graphics, Gameplay

UE4 | C++ | HLSL

A collectathon where you play as an ever hungry Blob which eats and grows from anything it can consume. Taking inspiration from games like Katamari Damacy and Donut County, the game presents a casual experience with a fleshed out physics sandbox where anything is edible.

Working with Tyler Davis, my primary responsibility was developing the look and abilities of the blob, along with managing the physics and performance costs that come with a city sized level comprised entirely of edible objects.

Key Contributions

Over the course of this project, I've worked to develop the slime effect used for the playable character. It's achieved using a ray marching shader that draws based on smooth unions between a base sphere and UE4's global distance field. This is combined with various invisible physics objects within the Blob to give it the appearance of momentum during movement, and dripping over ledges. After our first semester, I overhauled the effect to deform the Blob's mesh itself to fit the slime. This came to benefit lighting accuracy, performance, and maximum ability ranges.

Several props and windows are set to be breakable from blunt force. The foundations of the effect come from Nvidia's APEX destruction library, however I had to modify UE4's APEX api slightly to work for our needs. Chunks broken off objects in APEX continue to consist as the same entity, which would not have allowed us to manipulate and eat individual pieces. I dove into the APEX and the relevant parts of UE4's C++ source code to write additional functions we would need. Now, chunks are replaced with procedural mesh copies at runtime that can act independent of the base object.

The Blob's arms serve a wide variety of functions, often thinking for themselves independent of input. With our second semseter, these arms have been converted to pushing, sticking, and pulling entirely based on mass accurate forces and constraints. I handled the scripting for spawning and maintaining these arms and forces, giving the Blob the ability to shoot sticky arms that can attach and pull on any object in the game. Keeping these forces proportionally accurate as the Blob grew in size was unintuitive, so I spent a chunk of time reverse engineering some of UE4's constraint equations to maintain consistant behavior.

Rebellion of the Blob's world is almost entirely composed of objects that at some point in gameplay are edible. Keeping track of all these objects in a dynamic way, and minimizing their performance strain required a specialized system. Before play, the props are presorted into several lists based on various size-relative properties. These lists are then iterated through as the Blob grows in size, minimizing overhead when deciding what props need to respond or where to find references to them. By using linked lists we're able to add or remove props from this list at runtime with little overhead, which can happen in the case of destructibles.

This is the filter applied overtop the game, allowing us to lean further into the 50's scifi B-movie theme. It's utilized for gameplay as well, allowing true color through for any edible prop. By utilizing UE4's stencil buffer for the effect, we also gave edible props an X-ray pulse to better guide gameplay.