Help for an inventory system around ProfileStore/ProfileService

Hello! I am creating an open-world RPG, and I am using the ProfileStore(the upgraded version of ProfileService) for data and saving. I need opinions on how to go around this. Right now, I am thinking about 2 paths:

A. The inventory data is stored on the profile, which will be cloned as objects/folders inside a folder named “PlrInv” parented to a player when the player is loaded. This is so both the client and the server can easily just access the data, on which any changes on the “PlrInv” folder will be saved on the profile itself.

B. The inventory data is stored on the profile, which will be requested by the client when needed. Any changes will be directly saved to the data.

I think A will be easier and efficient, but I’m not so sure. Please give any advice/thoughts on this.

A. Is easier altough you also replicate that data to other players, which allows them to view your inventory

B. Should get modfied a bit - the server should send the data to the client upon joining, not when the client requests it; as for changes; you notify the client what happened, rather than sending all the data again

for ex. an array of tables with an id of what happened + the other data you need

-- player gets item
--            1 - Item added   how many   
--                         V   V
remote:FireClient(player, {1, {1, "item1"}})

-- player looses items
--          2 - Item removed   how many   
--                         V   V
remote:FireClient(player, {2, {1, "item1"}, {2, "item2"}})

But that’s if you really want to optimize the networking. You could get away with just sending everything every change (altough you shouldn’t)