Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Is there really any point to making a client-server game authoritative?

Discussion in 'Multiplayer' started by PrimeDerektive, Aug 30, 2011.

  1. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,086
    In most client-server games I've played, like Gears of War, Halo, many PC titles with server browsers, the host is a player in said game.

    So what's the point? What keeps the host from cheating, and people who want to cheat from just hosting their own games?

    Also, if you're making an iOS game... to what lengths would the cheating party have to go to cheat? I imagine it'd be way more non-trivial than a PC game, right?
     
    Last edited: Aug 30, 2011
  2. justinlloyd

    justinlloyd

    Joined:
    Aug 5, 2010
    Posts:
    1,680
    If people can cheat, they will. You only have to look at the online high scores for Bookworm to figure that out with scores of ninety-nine billion but only a few seconds played. If you want your legitimate, casual players to feel they are on equal footing, you need to take your client security very seriously. It is a prime feature, just like installer, game play, marketing, graphics, etc. It is not a second class citizen. Not every game needs an authoritative server, not all aspects of a game need an authoritative server, but you should be prepared to provide for it if your game warrants it.
     
  3. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,086
    Yeah, I understand all that, but it doesn't really address my question (you're overlooking the client-server/host as a player bit).

    My point was: no matter how authoritative you make a game with client-server architecture where the host is a player, people can still cheat (the hosts). So what's the point?
     
  4. justinlloyd

    justinlloyd

    Joined:
    Aug 5, 2010
    Posts:
    1,680
    Speed of connection, speed of development and total cost of development

    Speed between clients. The bandwidth available between players is usually faster, as an average of what each player needs, than it would be if they used a data center that requires large bursts of low-latency data. FPS game server requirements are different to MMORPG game server requirements and are again different to a regular web server requirement.*

    Speed of development. It is usually faster to develop a client-server architecture as an encapsulated unit than it is to figure out all the wrinkles of a dedicated server architecture. It is not just the speed of developing the software either, but the speed of developing the workflow, the processes, the testing, the training of server personnel, the database and so on. It all adds up.

    Cost to developer of hosting dedicated servers, providing bandwidth and support personnel for the lifetime of the game.

    * Also, realise that if a company like Blizzard can engage two full-time engineers for a period of four months on the task of reducing the required bandwidth of each player by 10%, at which we can estimate that it cost Blizzard close to $200,000 to get that bandwidth reduction, how much does Blizzard save over the course of ten years with 12 million players when their bandwidth bill has been reduced by 10%? It's the same principal that a consumer product, say a Nintendo DS, will be given to a product optimisation engineer whose sole job is to reduce the component count in the device. It might cost Nintendo $50,000 to redesign the device and all the engineer will have done is remove 1 screw, reducing the total cost by a fraction of a penny in physical hardware, but now there's one less screw to put in the device during assembly, there is a little bit less training to be done for the support personnel to take the device apart. Multiply all those little savings by a few tens of millions of Nintendo DS units sold and suddenly you are talking real money.
     
    Last edited: Aug 30, 2011
  5. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,086
    Yep... so that covers the benefits of developing a client-server game.

    But what are the benefits of making it authoritative? Some players will still be able to cheat, as I pointed out earlier. At least making it non-authoritative would even further increase the speed of development. I see little to no benefit to making it authoritative.
     
  6. Kaiserludi

    Kaiserludi

    Joined:
    Jan 21, 2009
    Posts:
    94
    It seems, taht you have not understood the term "client-server". if a player is a host, then this is a peer to peer approach with a masterserver, not a client-server-approach, as there is no gameserver, just the masterserver and the clients.
    For such a p2p solution there really is no point in making the host authoritive, as you will gain nothing by it.
    In a client-server appraoch, the host is a gameserver on seperate hardware, which is not avaiable to the player and where no client is running on, that can be controlld by the player (only eventually serverside ai-clients, if your game needs those).
    So in a client-server approach making the server authoritive will make cheating very hard for the parts of the game, which are checked by the server, as you would have to hack the server therfor.
     
  7. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,086
    That is fundamentally incorrect. A networking approach in which the server is a player is still very much considered client-server so long as the server is in control of everything. The only time a network is peer-to-peer is when resources and workload are shared among peers and all clients are able to directly send data to other clients (which they cannot in Unity's player-hosted networking).
     
  8. the_gnoblin

    the_gnoblin

    Joined:
    Jan 10, 2009
    Posts:
    722
    Well, that might be just a different understanding of p2p term ).
    Besides that, I agree with Kaiserludi!
    Thoughts by JustinLloyd are also good :).

    ...Afaik, on iOS not a big % of people attempt to cheat.

    Both autoritative and non-authoritative options are OK - it depends on your game.
    If you're concerned with cheating (like authors of world of tanks for example) - you would go with authoritative solution.
    A big percent of cheaters can, I suppose, kill your game in some cases (as normal players would leave and play something else).
     
  9. duke

    duke

    Joined:
    Jan 10, 2007
    Posts:
    763
    Authoritative is a bit overused, I think. Never trust the client is a good mantra, but that doesn't mean reaching for the brute force approach. For example, a player can't move through walls, or move faster than a certain speed. Rather than the server taking all control and telling the client where he ends up when he presses forward, let the client do it, and the server check it, and only send a correction from the server if it's out.
     
  10. duke

    duke

    Joined:
    Jan 10, 2007
    Posts:
    763
    Oh and if you're letting players host their own games, you're pretty screwed.
     
  11. npsf3000

    npsf3000

    Joined:
    Sep 19, 2010
    Posts:
    3,830
    For a start you've got far fewer potential cheaters as only the host can cheat... and it's very easy for people to simply blacklist them as long as you have a simple 3rd party (e.g. dev controlled) user account verification.
     
  12. PrimeDerektive

    PrimeDerektive

    Joined:
    Dec 13, 2009
    Posts:
    3,086
    Haha, what makes you say that? You mean just from a cheating perspective?
     
  13. Kassem_m31

    Kassem_m31

    Joined:
    Apr 17, 2020
    Posts:
    25
    the real question is how tp do it without making the player unlock his port
     
  14. Munchy2007

    Munchy2007

    Joined:
    Jun 16, 2013
    Posts:
    1,731
    That's easy, just use a relay service like PUN for example.