What I’d do is try to compress the data as much as possible. For example use prefabs instead of storing raw data. Don’t store strings but numbers representing strings that can be converted later on. Instead of storing “Wood” for the material store for example the number 1, etc.
For prefabs, if there’s multiple objects with the same properties such as colour, material, etc where the only difference is the size or position, you can store them as one entry and have a unique ID to represent it.
Example of before and after:
Before (247 characters):
player1Data = {
objects = {
{ cframe = .., size = .., color = { 255, 255, 255}, material = "wood" },
{ cframe = .., size = .., color = { 255, 255, 255}, material = "wood" },
{ cframe = .., size = .., color = { 255, 255, 255}, material = "wood" },
{ cframe = .., size = .., color = { 255, 255, 255}, material = "wood" }
}
}
After (192 characters):
player1Data = {
prefabs = {
{ color = { 255, 255, 255 }, materialID = 1 }
},
objects = {
{ cframe = .., size = .., prefabID = 1 },
{ cframe = .., size = .., prefabID = 1 },
{ cframe = .., size = .., prefabID = 1 },
{ cframe = .., size = .., prefabID = 1 }
}
}
And these are just simple improvements, you can do much more than this by for example compressing the R, G and B values of the colour into one integer (using some math tricks); Or simply shortening the variable names as Roblox stores all the data in raw JSON.