In a small scale multiplayer online game (MO or casual), one of methods that is used for communicated between peers is having just one member from P2P group takes care sending and receiving of all game play related messages for all members. This method is called P2P Networking for Super Peer (Super Peer or host).
In P2P Networking for Super Peer (Super Peer or host) method, each peer doesn't send their message to all members within the same P2P group directly during the gameplay. Instead, all messages get sent only to one designated super peer (a.k.a host) who directly passes them to all other members in the same P2P group.
In the assumption that member A in P2P group has better internet connection than the other then client A is most likely to be the best candidate for Super Peer in terms of performance. The amount of data receiving traffic for client A (Super Peer) and other clients will be equal but the amount of data sending traffic for client A will be square of other clients' amount.
Since this has a large dependency on the internet connection speed, when none of members in P2P group has high speed connection, it would even make the gameplay experience worse and more lagging. Thus when you apply P2P Networking for Super Peer (Super Peer or host) method, you need to carefully choose who will carry out the role of Super Peer as considering the quality of internet of all peers.
Here are some of ways to decide who should be Super Peer.
Peer using a direct internet connection not through a router.
Peer with fast uploading speed.
Peer using well performing client that results to have fast frame rate per second. If you are making a game that Super Peer is supposed to handle physics simulation then this becomes crucial. For more details, please refer to Proud.CNetClient.SetApplicationHint.
ProudNet has functions that automatically calculate everything listed in above. Please refer to Proud.CNetServer.GetMostSuitableSuperPeerInGroup and Proud.CNetServer.GetSuitableSuperPeerRankListInGroup for more details.
21.1Things you need to consider about the performance rate of Super Peer.
One of the purposes for using Super Peer method is having a client to help server handling excessive wire traffic by doing some of jobs for the server. In a game that physics calculation result matters a lot to its game play then it is much effective for Super Peer to handle the physics operation on behalf.
ProudNet uses frame rate to measure the performance rate of Super Peer. In order to apply this feature, you need to follow the steps listed in below.
During the process of selecting Super Peer, you need to set Proud.CSuperPeerSelectionPolicy.m_frameRateWeight or use Proud.CSuperPeerSelectionPolicy.GetOrdinary().
The Frame rate measured by App through Proud.CNetClient.SetApplicationHint needs to be passed on to Proud.CNetClient.
21.2Things you need to consider about wire traffic of Super Peer
Comparing to other peers, Super Peer has significantly larger wire traffic per second. In normal circumstances, wire traffic per second for home internet ranges between 30kb and 200kb. Moreover, there are many ups and downs in traffic as well. So when Super Peer is on home internet, wire traffic needs to be controlled..
We recommend you to check on 11. Traffic auto-control function (Throttling) in the case like this.