This script is located in ServerScriptService but doesn't add the Value although adds everything else
local DataStore = game:GetService("DataStoreService")
local ds = DataStore:GetDataStore("Tiles")
game.Players.PlayerAdded:Connect(function(player)
local leader = Instance.new("Folder",player)
leader.Name = "leaderstats"
local tiles = Instance.new("IntValue",leader)
tiles.Name = "TilesColored"
tiles.Value = ds:GetAsync(player.UserId) or 0
ds:SetAsync(player.UserId, tiles.Value)
local ye = Instance.new("BrickColorValue",player)
ye.Name = "colorval"
ye.Value = math.random()
end)

3 comments
You should not use the second argument of the Instance.new constructor. It is deprecated and bad practice (it was deprecated because it was bad practice).
I also recommend wrapping your data store request in a pcall.
Instance.new() second argument wouldn't matter in this case, none of these Instances are being rendered so changing their properties afterwards isn't making a difference. It's possible that one of your datastore lines is hanging, you should add prints before and afterwards. You can't assign math.random() as a brickcolor, you can do BrickColor.Random() instead