A team was planning a major module restructure — splitting a monolithic gameplay module into 12 smaller, domain-specific modules. The C++ side was well understood. The risk was the Blueprint side: hundreds of Blueprints referenced reflected properties and functions from the module being split. Moving a UCLASS to a different module could silently break every Blueprint that referenced it.
The risk
Unreal's Blueprint system creates a binding surface between C++ and visual scripting that is invisible in source code alone. A class can have dozens of reflected properties and functions used by Blueprints that live in content directories, not in the source tree. Restructuring modules without understanding this surface is how teams end up with a refactor that compiles cleanly but breaks half the game's Blueprint logic.
Mapping the surface
Before writing a single line of refactoring code, the team ran Blueprint exposure analysis across the module being split.
# Analyze Blueprint-facing surfaces in the target module
gamibase analyze-blueprint-exposure --module GameplayCore
# Cross-reference with class hierarchy
gamibase hierarchy --module GameplayCore --depth 3The analysis surfaced 47 classes with Blueprint-exposed members, 183 reflected properties, and 94 reflected functions. More importantly, it identified which classes had the densest Blueprint binding surfaces — these were the classes that needed the most careful handling during the split.
Planning the split
With the exposure map in hand, the team could plan the module split around the actual binding surface instead of guessing. Classes with heavy Blueprint exposure were grouped together to minimize cross-module reference changes. Classes with no Blueprint exposure could be moved freely. The refactor plan went from a guess-and-fix approach to an evidence-driven plan.
- 12 classes with heavy Blueprint exposure grouped into 3 modules to preserve binding stability
- 23 classes with no Blueprint exposure moved freely based on domain boundaries
- 12 classes with light exposure flagged for manual review of specific reflected members
- Module dependency graph validated before and after each phase of the split
The outcome
The refactor was completed in two weeks with zero Blueprint-related regressions. The team estimated that without the exposure analysis, they would have spent an additional three to four weeks debugging Blueprint breakage discovered in QA. The structured evidence from Project Intelligence turned a high-risk refactor into a planned migration.
Run Blueprint exposure analysis before any module restructure that touches reflected C++ code. The five minutes it takes will save days of downstream debugging.
Blueprint exposure analysis is available in Gamibase Pro
Get started