Singleplayer 3D Platformer
Platform: PC
Engine: Unreal Engine 4
2016

Scrapped is a 3D platformer that features attraction/repulsion mechanics, hazards, and collectibles. The game stars an adorable, expressive robot named C23, and is set in an expansive junkyard. It took the team of 15 developers seven months to take the demo from concept to release. The game was green-lit on Steam on May 12, 2016 — a mere 13 days after its debut on April 29.

Although I fulfilled a number of roles in our small team, my primary position was that of Lead VFX artist, where I created nearly all of the visual effects seen in the final demo, including particle systems, advanced shaders, and scripted art assets. In addition to VFX, I worked on the Level Design team to prototype, layout, script, and test levels. I, along with the rest of my team, participated in early prototyping and concept work, and I worked closely with the project’s Game Designer to establish the first iteration of gameplay mechanics.


Demo Reel


VFX

As Lead VFX artist, I designed the majority of the VFX assets in the game, including the most important and technically challenging effect – The QTec Beam, one of the many prominent effects tied to the primary game mechanic. Because QTec abilities are so central to the gameplay of Scrapped, their appearance went through the most rigorous iteration and optimization of all the VFX in the game.

Scripted VFX

QTec Beam / Beam Snap

Static QTec beam
QTec Beam snapping
QTec Beam FX in action

The most complex, and arguably the most important effect in the game is the QTec Beam, which appears between C23 and QTec devices when the player activates C23’s attraction or repulsion powers. The repulsion version is red and appears to push C23 away from the QTec device, while the blue attraction version appears to pull C23 towards it. When the player moves out of range while the Beam is still activated, a snapping effect terminates the Beam, instantly conveying to the player why the beam turned itself off.

Design

The Beam effect went through quite a few iterations to find the right balance between conveyance, aesthetics, and subtlety – as it needed to clearly communicate gameplay, look interesting after thousands of times using it, but without interfering with gameplay or visibility.

Implementation

Early versions of the Beam effect were made with UE4 Cascade, the built-in particle system editor – but Cascade lacked the fine-tuning controls that would be necessary to convey such a complex effect. Directly extending the Cascade engine module in C++ would have been a waste of time on a project of this scale. I settled upon UE4 Blueprint as a nearly ideal compromise between performance and finely-tuned control over behavior – and I could iterate much more quickly on the Beam’s design than with a pure C++ implementation.

The final blueprint-based version of the Beam consists of a series of half-sphere meshes that move directly from C23 to the active QTec device in a straight line. The meshes dynamically resize themselves based on a number of factors including Beam polarity (push vs pull), distance along the Beam, and overall length of the Beam.

Critically, the Beam effect can rotate and stretch dynamically as C23 and/or the QTec device moves. Early Cascade-based implementations looked identical when compared at a specific distance, but increasing or decreasing the length of the beam distorted the effect and interfered with conveyance, and in the case of very short distances, would cause the beam to be nearly invisible due to the thinness of each mesh. The half-spheres in the final Blueprint version do not deform when the Beam scales, and the distance between each remains constant. The beam instead scales by fading the half-spheres in and out as needed to make any given length.

An additional issue that the Blueprint version solved was the effect’s latency – the Cascade version always required a few milliseconds to warm up before it could display – which could be fine for a purely aesthetic effect, but was unacceptable for an effect that was so closely tied to gameplay. The Blueprint version allowed for nearly zero-latency toggling of the effect between repel, attract, and off at runtime.

Scoreboards

Player score being tallied

At the conclusion of each level, players receive a score based on the number of lightbugs they were able to collect with C23. I created dynamic material to illuminate the sequence lights around the edges of the billboard face, and scripted it as to indicate the completion percentage of the past level, in sync with other visual and audio cues.

Particle System VFX:

QTec Emitter

QTec Activation

C23’s QTec powers don’t actually do anything without a QTec device nearby, but players still need an indication of what their powers will do – and I designed C23’s QTec emission effect to achieve that.

The red ‘repel’ ability emanates outward, while the blue ‘attract’ ability culminates inward.

The effect went through many iterations in order ensure the effect was readable and interesting, but not distracting, as it was an effect that players would see constantly.

QTec Launcher

C-23 using a QTec Launcher

The QTec Launcher pulls C23 inside from the back, and launches them from the front when the player activates their QTec ability.

Similar to the QTec Emitter, the effect needed to clearly convey what would happen if it was used, without being too distracting to see what they were doing.

Flying Sparks

Sliding Sparks
Sawing Sparks

I made two variations of a ‘flying sparks’ effect: one for when C23 slides down a metallic surface, and another for the large saw hazards.

C23’s sliding sparks spray faster and further as their speed increases. Additionally, by rotating each emitter based on animation data, they also help indicate to players which direction and how hard they are banking.

The saw hazard sparks help the player to quickly identify which direction the hazard is traveling, and how fast it is going, while the intensity of the effect helps convey that the saws are indeed a deadly hazard.

Scrapfall (Waterfall of Scrap)

Three Scrapfalls over a scenic vista

Early in the game, it is established that scrap gets dumped into the junkyard through a number of large metal pipes. One of the ways the team wanted to keep the world around the player feeling dynamic and alive was by having an effect like this – assorted chunks of scrap metal falling from the very kind of pipes that dumped C23 into the scrapyard at the beginning.

I took advantage of UE4’s new particle-mesh cascade module in order to make an effect that would look great from any distance, allowing us to use the effect in many different places in the level.

Ambient Dust

Floating dust motes in the final area

We wanted players to take a moment to bask in their victory when they arrive at the final area, the outer edge of the scrapyard. To make this final area feel more atmospheric, I created an ambient particle effect – dust motes gently floating through the air, made to accompany cozy lighting and music filled with quiet anticipation and wonder.