Best Way to save open-world type game data

So i have been thinking of a better way to save game data rather than just using the save game system that comes with UE4. Since in my game there would be a building system so i need to save the data for them and also stuff that would spawn on runtime. how would i go about saving all this?. Is there a way i can do something in C++ to make it so that objects would automatically save if i have like a component on them. i dont want to approach the plugin route.