The first progression target is deliberately small: start in the hub, enter Level 1, finish the run, return to the hub, and find Level 2 unlocked.
Keep the rules data-driven
Each ranked map is represented by a map-definition data asset with its identity, campaign order, ranked seed, map version, level reference, and progression metadata. The hub doors read those definitions and the saved completion state instead of embedding a separate unlock rule for every level.
A reusable C++ door actor owns the progression checks and level travel. Blueprint presentation remains responsible for meshes, materials, open and closed animation, lock feedback, labels, audio, and effects. That keeps the gameplay rules in one place while leaving the visual treatment flexible.
Complete, save, return
The finish flow records the current map as completed, saves the result, and returns to the hub. The first slice uses full map travel because it is simpler to package and validate than streaming all of the early levels into the hub.
The acceptance test is the loop itself: Door 1 begins unlocked, Door 2 remains locked until Level 1 is completed, and that unlocked state survives a restart. Once that pattern works, adding later levels should mostly be map, data-asset, and door setup rather than new progression logic.
