Advertisement

cascading world updates through interconnected clients to lessen server bandwidth load

Started by November 23, 2014 01:47 AM
1 comment, last by wodinoneeye 9 years, 11 months ago

Lets say that your server hands out a list of clients to the clients and allows one client to update a few clients each.

If a client stops receiving world updates, it notifies the server and becomes a client that receives updates from the server directly (or connects to another client on the list). This is assuming that most world data sent to clients is duplicated because of the lack of a way to broadcast the same update to a group of clients in range of each other.

Since bandwidth on and off an ISP's network is a bottleneck on the internet while alot of intranetwork capacity exists between clients on the same ISP network, this could reduce congestion with very little impact on latency.

Though how would you insure that clients upstream don't tamper with the data?

Since bandwidth on and off an ISP's network is a bottleneck on the internet while alot of intranetwork capacity exists between clients on the same ISP network, this could reduce congestion with very little impact on latency.


If you have enough players that you will actually find multiple players who are close to each other on the same ISP network, AND close to each other within the game world, this may reduce congestion at the ISP interconnect point.
Unless your ISP is playing games and are trying to put the squeeze on services that their subscribers want to access in order to extort additional rents, that's very unlikely to be an actual choke point for your game, though.
And, if an area in the game world has 100 players close to each other (hence, should get the same updates,) chances that more than two of them would be on the same ISP subnet are, shall we say, not very big.

how would you insure that clients upstream don't tamper with the data?


I suppose you could sign it using a private key on the server, and the clients would use the known public key to verify it. That's kind-of heavyweight for game data, though.
enum Bool { True, False, FileNotFound };
Advertisement

1) Are there cases of a severe difference between useable upstream bandwidth vs downstream (ratios like 1:10 etc...) and any possibly prioritization of the client to ISP given to downstream which might make reliable delivery more troublesome (as in retransmits) If the update data flow is significant, it could possibly hit such choke levels the ISP have for typical users (any games have flows that big ??).

2) Issue of those intermediate Clients which the update data passes through, now being a liability - and what mechanism is needed to detect their possible malfuction (or even evaluate them as being acceptable) and THEN if needed to switch paths AND do it fairly quickly. This is impacted by how important timely delivery of the world update data is (like this client mutiplexing/replication would be for slow/ less-significant/background data and direct-from-Server to all Clients would still be kept for important timely delivered events.

The clients subsets dont have to be on the same local/close subtree to still be used to offload the Servers bandwidth for widely replicated data...

The use I have been interested in for this kind of thing has been Server AI farmed out to Clients. Real AI can take huge amounts of CPU resources (like MANY magnitudes more than is used now) and might be a major chokepoint (Server expense for game companies) to future MP games having much significant AI advancements.

--------------------------------------------[size="1"]Ratings are Opinion, not Fact

This topic is closed to new replies.

Advertisement