Ben Esler
VFX Artist


The game consists of 2-4 players fighting with boomerangs in a arena that transforms during combat. I joined the team as a Technical Artist to optimize and organize project. Along with automating the process for modeling the platforms and creating effects for the arena.

While I was given the project files, the team was taking a short break to recharge. This was great since I didn’t need to worry about anyone checking files out of PerForce. Initially there were 17 folders at the root of the project, with several redundant folders for FX and meshes. Many of the files didn't follow any naming conventions either. When I was done there were only 5 folders in the root and everything followed the naming standard from Unreal Engines Documents.

During the restructuring, I checked each mesh and texture. For meshes I primarily checked polycounts and collisions. For textures I looked at the size, number of channels, if they had gamma correction, and where assets were being referenced to see if there were any unnecessary assets. One that stood out was 4 flower textures that only differed in color. They were 4k with rgba and would take up maybe 4% of screen space. These were replaced with a single 128 grayscale image and a material that had several material instances for the original unique colors.

Original 4 4096x4096 rbga textures, replaced by 128x128 greyscale

The original arena platforms looked fine at the beginning of gameplay but were visually noisy once they moved. They also had no visual effects for when they moved up and down. This was a significant issue on a pattern where every other platform dropped and the player couldn't tell which platforms were about to fall. I made a Houdini asset that would read a flat ngon with UVs and generate a game ready mesh. This was great since we reused the tops of the original meshes to save time.

36 game ready meshes generated in 15 minutes

Baked into the meshes was information for the effect I made where the shader has the platform fall apart. Each platform is a single mesh and each chunk within it the is addressable in the shader using a second UV set. Causing few draw calls and not needing the use of physics or bones to animate. This added readability for the player, showing whether a platform was going to fall or rise.

When looking at the code that controlled when and what platforms dropped, it was hard coded and not accessible to the designer. I asked the designer if they would prefer a database for all the different movement patterns. All the platforms in the editor would have a visual index number to be referenced in the database. They only needed to change the database to update patterns instead of having to wait on a programmer for every iteration. They were fairly ecstatic about this idea and only took an hour to make a working version of it.

Original Arena_BP

Revised Arena_BP
New platform reference and data table for Designer

Site programmed in Python with Django framework