Broomsmith is a VR spellcasting and item repair experience set in a magical workshop. Players harness the powers of magical creatures to clean, paint, and restore a variety of magical items to boost their WELP ratings.
The Problem
Standard Unreal Blueprint render target pixel reading caused frame hitches in VR. I needed an async GPU readback that could be callable from a Blueprint.
What I Did
I wrote a C++ Blueprint Function Library class called UCleaningAnalyzer that performs render target pixel analysis asynchronously on a background thread, then returns the result to the game thread via a delegate.
🔗 View on GitHubThe Result
Frame hitches during cleaning analysis were eliminated entirely. The system handles multiple simultaneous render target reads without impacting VR frame rate, and is fully extensible. Any new repairable object just has to pass its render target in and receives a normalized progress float back. This system is used to read both the cleaning and painting progress of our meshes.
Creating Joystick Walking
Though I utilized the Unreal VR Template pawn in Broomsmith, the pawn was missing some key features. The pawn only had teleportation instead of joystick movement. I implemented character movement and a paired footstep function that would calculate 2D Distance and play back a footstep if the distance was greater than a set threshold.
The Problem
Blueprint.
The Problem
Blueprint.
The Problem
Blueprint.
Overview
Process
🔗 View Sprint Board