That’s quite a broad subject that would probably take up a thread on its own, sadly.
An example that I still think would be helpful for you - especially because you seem to be using prefabricated instances - is to take a look at Egomoose’s placement system guide. This guide includes information on how to save information like this. Again, that’s found here.
Storing a table isn’t particularly difficult. In fact, that’s one of the datatypes they expect you to use when calling ::SetAsync - references to that can be found here. Though it should be noted that, ideally, you should be using ::UpdateAsync as defined here.
That being said, I have seen people have issues with it. Though, the common pitfall for beginners here is that they don’t realise that you have to serialise the data found within the table. For example, you can’t save Vector3 or Color3 types, so you have to serialise those to a format DatastoreService will accept.
In the case of Color3 types, examples of serialised data could be a table containing each component or a hex triplet string etc.
You will be best served by Roblox’s own documentation when looking for more information on Datastores. Though, I’m sure there may also be some good tutorials in Resources > Community Tutorials if you needed a bit more help.
Either way, I would recommend taking a look at the following create.roblox.com articles available:
- “Saving Data” tutorial found here
- “Data Stores” walkthrough guide found here
DatastoreServicedocumentation here- “Usage Guide for Data Stores” information found here
P.S. If you’d prefer to read through example code, or use someone else’s library, a good example of a wrapper around DatastoreService is ProfileService - that can be found here.