Major contributions
- A plugin that adds support for creating multiple physics actors for a single static mesh. I called it Multi-Complex Collision, and you can read more about it below.
- Backporting array texture streaming from Unreal Engine 5 to 4.27
- Tool to inspect data of individual triangles on meshes in the viewport (requested by the art team in order for them to debug issues with content in our custom art pipeline)
- Setup workflow for creating custom editor tools with hotkey support using blueprints
- Replicated variable viewer (request from the gameplay programming team to find classes with unnecessary replicated variables)
- Separate FOV for FPS meshes using custom render matrix
- Minimap texture generator
Multi-Complex Collision
This is a plugin I developed that solved our problem of wanting to have bullet penetration on large, complicated environment meshes. It is needed because complex traces don’t enter and exit a physics actor multiple times: it’s the first entry point and the last exit point that counts. For simple meshes this is not a problem but for large meshes like many of our environment meshes, it causes issues. For performance and workflow reasons, we wanted to keep the meshes as is. This meant we had to look for another solution to get more granular control over the physics actors that get created.
This is what the plugin looks like inside a static mesh editor. The tab in the bottom right shows information about the data the plugin manages. The different wireframe colors in the viewport represent the different physics actors that will be created in-game. In this case, two physics actors will be created to represent complex collision for this mesh. One of them uses the BlockAll
collision preset (i.e. it isn’t pierceable); the other uses the PierceableStatic
preset.
To support this system I made a custom mesh import using the FBX SDK, reading special metadata to create the appropriate physics representation. It supports these two custom properties that are read from the objects inside the FBX:
Collision ID
: Used to group meshes into the same physics actor. In the example above, the red cubes are assigned one ID, while the blue cubes are assigned a different ID.Collision Preset
: Represents the name of a collision preset inside Unreal.
With this setup, and some additional tooling in Blender, environment art has a flexible and convenient way of creating different types of complex collision actors for their scenes. All of this without affecting rendering performance at all! Now, there’s still a lot more complexities going on behind the scenes to make this plugin work. Unreal wasn’t exactly designed to support a system like this, so there were a lot of cases where I had to think outside of the box. Still, I’m surprisingly pleased with how the plugin turned out, and I’m happy it works as well as it does!