Need help getting started with a complex "character" set up

Alright, I’ve been working on getting started with an idea I have for a game I’d like to attempt, and I need some help. Essentially, the game is a mix between a castle builder and a vehicle shooter. The player will build a castle by placing bricks in a grid, similar to many other builders, and the castles have towers, each holding a cannon on top. The castles themselves sit on a large flying rock and can move about (forward and backward, left and right, and can rotate), and will act as a sort of battleship. The cannons will be able to rotate left and right, up and down. What I want to do is have the rock’s controls be bound to WASD with QE for rotation, and then allow the player to select one of his cannons, which will be controlled with the mouse, like an FPS. The point of the game would be to attempt to destroy the opponents flying castle while trying to avoid the same fate. The bricks would be physics actors which would react to the cannonballs fired from the cannons. I realize that this is quite complex, but I’m hoping it is at least feasible.

I’m thinking the rock itself would be the main “character” which the player would control, with the cannons being similar to turrets on a tank. The main problem I’m foreseeing is actually finding a way to spawn the character will the brick layout saved in the grid, and attaching it to the rock. I think I would be able to parent the bricks to the rock so that changing momentum while flying wouldn’t cause the rocks to fall (since they are physics based), but I don’t know the best way to set it up. Also, I would have the bricks start with physics off, and have the cannonballs turn on the physics of any bricks they get close to in order to avoid calculating physics on everything at once.

I’m not sure what the best way to go about trying to set this up will be. Any ideas or advice would be appreciated. Oh, and I’m starting this project as a way for me to gain some programming experience, so I want to do as much as possible in C++. That said I’m not against using Blueprints in conjunction with scripting if that makes what I am trying to do more achievable.