How do Welcome to Bloxburg save plots?

Some shower thoughts dominated my entire mind. I’ve searched and nothing really screams the answer :tired_face:

How do Bloxburg saves their player’s plot? :house_with_garden:


I know how to datastore things but It’s very questioning how Bloxburg or RoVille saves things since I’m thinking;

You have a part and you basically will datastore the (Color3, Material, CFrame) but how do they place it on different plots? You save the CFrame so if you load it on a different plot it will go to the plot where you saved the part on. It’s seriously confusing how it’s being performed :sob::sob:.

I might just not explored the whole CFrame functions but can y’all explain it to me thoroughly (ain’t looking for the code), maybe there’s sort of api that does that… please?

Here’s my beautiful “made by professional” sketch to visualize what’s happening:

1 Like

Loading and saving plots can be simple, but it can also be very difficult. It all depends on the degree of customization and the parameters you allow the user to have. I’ve never created a plots system, but if we take Bloxburg as an example, I personally would have created some kind of handle to save and load data, probably with modules so that new objects could be added easily.

On a side note, I’m not sure that script support is the right category for this, #development-discussion seems better to me.

3 Likes

Generally for this you save the positions of any plot objects relative to the plot itself rather than the world. The ToObjectSpace() method can be used for this.

1 Like

I would save the plot as one giant Union, then just change the CFrame to the other plots when loaded in. You don’t really need to save the CFrame if the plot is just one big piece.

1 Like

One method could be that, they calculate the Position as distance from the edge.

Every plot is the same size.
Lets imagine we placed a wall about 8 studs from the left edge of the plot.

when the Player leaves, the game saves the 8 studs distance from the LEFT edge of the plot.
thus, on loading the plot, we simply can do

Wall.Position = NewPlot.LeftBorder.Position - Vector3.new(0,0,8)
1 Like

Here’s a method:

  1. Put everything inside a model
  2. Insert a part and make it the PrimaryPart of the model
  3. Use Model:PivotTo(CFrame)

When you call PivotTo, every building inside the model will move along with the PrimaryPart

Hope this helps

4 Likes

you could use CFrame1:ToObjectSpace(CFrame2) to find the part’s position relative to the plot’s position when saving it, then use CFrame1:ToWorldSpace(CFrame2) to get the position to place it at when loading it.

here is the devhub link for this

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.