How would I go about saving player data in a module script

currently I have a table that stores all my players data in game, for examples as you can see I have the completed status, and my ‘star collection’ status, which is just a way for me to store how many ‘stars’ a player has collected on each map. How would I go about saving this though? i have the module script in player scripts, and I don’t think I can communicate from my script to the player, and I believe I read through the datastore api that I can’t save a table like this because there are different value types like numbers and strings. How would I save the data then?

local mapData = {
levelOne = {
		level = "One",
		start = game.Workspace.start1,
		finish = game.Workspace.levelFinishes.finish1,
		mapName = "Grass lands",
		completed = false,
		star1 = false,
		star2 = false,
		star3 = false
	},
	levelTwo = {
		level = "Two",
		start = game.Workspace.start2,
		finish = game.Workspace.levelFinishes.finish2,
		mapName = "Desert",
		completed = false,
		star1 = false,
		star2 = false,
		star3 = false
	}
}

return mapData

You can use a data store for this. The values can be any type, it’s just the keys that can’t be both numbers and strings.

Well you just use a datastore and getasync’s

when you say get asyncs are you saying I will have to save everything in the table seperately? also how would I go about saving the data using data stores since I can’t communicate between the server and player in this case unless I used something like remote functions, which I hear is very risky because it can cause lots of errors going from server to client