My game uses its own player position replication system. Players use the Fire server to send information about their position, etc. And also request a table with data from the server.
And I have a question, how much will it load if each player sends information 20 times per second?
The short answer is, it should be fine, if you will play around the times-per-second and see the best fitting number. The long answer, there might be better approaches for the thing you’re trying to implement.
Firstly, if the client is the source of truth anyway (the client sends the position to server, which can be any), maybe you can just do SetNetworkOwner() of the character you’re using, which will automatically send the position of the instance to the server from the client in the most efficient way.
Secondly, if you’re trying to make the game movement secure, and you are ready to face the delay consequences due to the ping, you may try it the other way around, as it is done in the most secure projects even outside of roblox: instead of sending the position to the server, send the player input to the server. And then, process all of the movement on the server side. It will be replicated to the clients automatically (but you need to set the character network owner to the server).