Jump to content
  • Advertisement
Sign in to follow this  
ryeguy

How does the networking model in RTS games with ranking work?

This topic is 2444 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

In every single RTS game that I know of, a player is the host. This leads me to believe that the server is running on the player's computer. Yet, the results are reported to the battle.net (for example) servers and they are never tampered with. How is this possible? It would seem like in order to ensure the validity of match results the match would have to be analyzed on battle.net's servers, but that would defeat the whole purpose of having players as the hosts. Not to mention that wouldn't be a sustainable model for Blizzard - they'd need so much cpu power they'd have to charge a monthly fee like an MMO.

Share this post


Link to post
Share on other sites
Advertisement
the results are reported to the battle.net servers ... Blizzard - they'd need so much cpu power they'd have to charge a monthly fee like an MMO.
In Blizzard's Starcraft 2, the games are not hosted on your PC -- they are actually hosted by Battle.net's servers!

But yes, alternatively you could have your servers analyse the replays for discrepancies. If this is too computationally expensive, you could only analyse a random percentage of replays (like drink-driving random tests), or you could run the analysis on the players CPUs -- e.g. every player in a multi-player game analyses the replay and all submits a report (all reports from a match must be the same for rankings to count).

Or perhaps there's no need to analyse replays at all -- is having the players agree on the outcome (by all submitting identical results) good enough?

Share this post


Link to post
Share on other sites

It would seem like in order to ensure the validity of match results the match would have to be analyzed on battle.net's servers, but that would defeat the whole purpose of having players as the hosts.


All players should come to the same conclusion. This means that you can simply take a vote on what the outcome was, and if some particular player votes differently from others more than a very small percentage of the time, something's probably wrong with him/her.

Also note that RTS simulation really isn't all that expensive; especially one without rigid body dynamics and 2D maps like StarCraft or WarCraft or whatever. Honestly -- I imagine they can run 1,000 parallel matches on a single server machine. All the CPU power in the modern games goes to rendering, and perhaps opponent AI (which doesn't come into play on Battle.net controlled matches).

Share this post


Link to post
Share on other sites

In every single RTS game that I know of, a player is the host. This leads me to believe that the server is running on the player's computer. Yet, the results are reported to the battle.net (for example) servers and they are never tampered with. How is this possible? It would seem like in order to ensure the validity of match results the match would have to be analyzed on battle.net's servers, but that would defeat the whole purpose of having players as the hosts. Not to mention that wouldn't be a sustainable model for Blizzard - they'd need so much cpu power they'd have to charge a monthly fee like an MMO.



You can do a few things if one of the hosts is a normal player.
You can have all players in the session subject what they think is the result of the match. Then have the ranking server decide on what is the majority point of view.
Only allow a player to submit a game for ranking once every X minutes.
Look for patterns in the data from specific players. If they are always playing and winning against the same players make it so their scores eventually count for less and less.
Spot patterns like duplicate IPs, or similar ranges for players in the same match.
Have regular reports of the game during playing. If the intermediate reports look fishy then ignore the results.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!