Typically, networked games designate a server (or host player) as being authoritative over all state shared between the players. Clients still simulate their own state, but also continuously incorporate the authoritative state.
My game is set in a large world where every player can be at a completely different location, so it is inappropriate for one machine to have to handle possibly thousands of entities. To solve this problem, I'd like to only have each machine process the entities within a certain area around their player character. When the "simulation areas" of multiple players intersect, the states of each shared entity must somehow be synchronized.
How can I implement a system such that shared entities are synchronized? I'm also open to modifying the architecture I've outlined here.
NOTE: I'm not worried about cheating, as the game is not competitive.