Voronoi-based Client-side Lag Compensation and Interaction Offload
Massive multiplayer, and even more so megaserver, architecture is a war of tradeoffs. There are plenty of problems and much fewer solutions. When scaling to the numbers involved in a megaserver, there are new problems and variations on the old ones. Peer-to-peer is generally treated as a non-starter, and rightfully so, in discussions regarding multiplayer games. When the topic is broached, peer-to-peer is normally and regretfully seen as some kind of silver bullet panacea answer to all the gaming industries problems. It is not. It should not be, however, a taboo. WebRTC does enable the offloading of chat and voice to the browser. Peer-to-peer does have its place in the gaming world, albeit a highly restricted place. So, then, Lag compensation techniques, along with the N-squared interaction and the Never-trust-client problems are the topic of this post.
Client-side prediction is a thorn is the side of player in many-a-game. Many players complain of being shoot while behind cover, around walls, after jumping etc. It is not an ideal solution. Scaling a game into hundreds and even thousands of players in an area only makes this problem worse. With Pikkoserver and other player-server migration technologies hitting the playing field, this is a thorny problem nearing its blooming season. (Couldn't help the pun, forgive me.)
“A VON is a fully-distributed overlay network that allows neighbors to be discovered on a Voronoi-partitioned virtual space. Each node in VON has a coordinate point and specifies an Area of Interest (AOI) within which the node is constantly aware of all AOI neighbors. Nodes are allowed to move continuously in space and connect with new AOI neighbors. For simplicity, we assume a 2D space but note that VON is generalizable to 3D spaces. To discover new AOI neighbors, each node organizes the coordinates of itself and its AOI neighbors in a Voronoi diagram.”
The vastlib is defunct(an assumption) and used for another purpose, but the Voronoi-based Overlay Network is none-the-less interesting in the context of the N-squared interaction problem. The authoritative server could offload much of the workload of keeping track of player interactions to the peer network if workable safeguards could be constructed. The advent and adoption of the WebRTC protocol world very helpful in this new world of WebGL browser games with ported game engines like Unreal 4 and Unity 5.
One of the main risks involved with trusting the client with this task is that some will certainly cheat to know the location of other players. The solution, though simple, is a tradeoff. Radar. If you willingly give the players what they want rather than keeping it from them, the value of a hack is negated. Is it more valuable to the game to have a shot a discrete peer-to-peer task offloaded to the client-side and the resulting reduction in server traffic or to have the near-space location of players be hidden from other players?
Of course, then, there is the problem of aim bots. This has been dealt with, to varying degrees of success, with techniques that revovle around the sight location at time of firing checks and invisible mobs to reveal and ban users of this type of software. Another answer, if applicable to the genre (i.e. Scifi) is target locking, a hybrid of tab targeting and twitch targeting. Once targeted manually the target tracks the NPC or player. This, again, helps to negate the value of cheating and further reduces the needed interchange of information between clients and authoritative server.
Further, confirmations, like those of Bitcoin, could be used to enforce a certain level of honesty. This, backed up by the revocation of peer-delag services to those found to manipulating their location data, or an outright banning.
(Much is on the topic spatial publish subscribe: SPS)