Personally, I’ve been using a savegame object when saving out variables. I’ve used this to save a few thousand variables as well. In order to manage a large amount of variables, it may be best to use a UStruct to organize them, especially if you have an array of objects (such as actors standing on tiles). You can quickly bind these variables into a struct and write them out to your savefile.
Edit: Another thing you can do, when doing things such as foliage or other procedural items is to use a seed. You can load the seed then ‘generate’ the procedural objects again from it, as long as the seed places the objects in the same location.