Data saving large, player made instances

I’m wanting to find the most resourceful way of saving large, player made instances, without fear of reaching data store caps.

This is just the starting island, which has 1,232 blocks in it. If I store the block ID, its position/rotation, and any other info, then I fear I’d reach caps really quickly.

I am using an ID system for blocks, to decrease the characters. And I was only planning on saving rotation on blocks that can actually be rotated a certain way. But even with all this taken into account, i still fear it’d take up a lot of space.

You can compress the JSON encoded table with this and then decode if you are that worried.

Seems like its not support luau.
You can use this instead:

This will compres string to another low-length string.
and you can decompress low-length string to string.

I believe each block can have it’s position rounded because they all look like the same size to me. So for each clock save a table for it, in my opinion it should look like this:

local SaveTable = {
    BLOCKNAME = CFrame.new(BLOCK CFRAME WITH POSITION AND ROTATION MATRIX ROUNDED)
}

And correspondingly to load data you can try:

for BlockName, CooridinateFrame in pairs(Data) do
    local ClonedBlock = ReplicatedStorage[BlockName]:Clone()
    ClonedBlock.CFrame = CooridinateFrame 
    ClonedBlock.Parent = workspace
end

Each block will have approximately 20+ characters, so 1000 blocks would have 20000+ Characters. A since you can now store 1 million characters, 10K blocks wouldn’t even be a problem. If each block is 20 characters on average, then you can store 50K blocks.