I currently have a some what complex serialize system, that converts blocks from their CFrame to a grid based system, and stores their position via coordinates. With this, I’m able to save a ton of space and not have to worry about data limits. However, I am now delving into blocks and parts that aren’t as simple as a 3x3x3 block.
For example, a sign. When placed on a top or bottom surface its simple, and I can save using my current system as necessary. However, when it’s on a side surface, I obviously can’t just do my standard all pos values / 3 to get the grid position. What’s my best course of action?
Example of storing block info would be like so
coords[x][y][z] = BlockId
and so if a sign placed on its side occupies x y z of 0 0 0, then
coords = signId
but I can’t just store the signs id, as when it loads, it’d just place the sign in the centre of that position.
Should I just scrap this whole serialize system, and just straight up save blocks full cframes?? Problem I fear with this is reaching data cap way too easily. Just a flat plate as show in my screenshots takes up 0.4% of the data store, and players can buy multiple slots, 15 total, so 15*0.4 is 6% in just flat grass.