PERSONAL PROJECT

Halo Fan Project

This was a concept and technical test I built in Unreal Engine. The video shows a WIP version of my UI and player customization system that uses a single material with a UV atlas for all the pieces and merges the models at runtime which allows character models to remain performant in games with high player counts.

Performant Customization

For this project, I used Blender to place the second UV of every armor piece into one of 16 slots (Helmet, Visor, Arms, Chest, Knees, etc). I then made separate materials in Unreal Engine for each slot so they had proper metallic, roughness values, etc, and made one master material that layered all of them.

At runtime when it merges the meshes into one, I can reference which pieces the player has selected as well as what colors they’re wearing and I can send the relevant textures and color codes to a dynamic material instance of that master material. The master material will know what material properties to use for each part of the mesh based on the secondary UV channels of each mesh.

Comparison

A big team game mode in a first-person game with 16 players = possibly 15 players on screen at once

Each player has 15 customizable body parts

Each mesh uses a draw call for the mesh and 1 for each material on it

Using separate meshes for body parts with 1 material each:

15 meshes * 2(mesh and material) * 15 players = 450 draw calls just for player models

Using the layered material above where we combine meshes and layer materials into one:

1 mesh * 2(Mesh and material) * 15 players = 30 draw calls for player models