Quoting trindermon,
reply 2
without being rude about this, direct connection in this day and age is worlds most idiotic design decision, its like the developer isnt even aware of the really real world.
What exactly is idiotic about it and how do you propose to solve it? The NAT facilitator that Stardock built is actually designed to meet your demands (not having to forward any ports).
First, excellent question, and i admit its a sweeping statement; but from a first principles pov, its a true statement. Just to set position here, i am a Security Consultant / Network engineer and have been for over 15 years, so i fall in to the bunch of people that is ok with configuring my own router (but i sitll think its retarded).
Peer to peer gaming was largly popular and functional in a environment that does not exist thesedays except for a segment of users are are able to configure equipment. a huge percentage of all houses in the UK that use a ADSL service use a routed solution. these means at least 1 itteration of hide nat. in any peer to peer situation this can complicate matters at a base level. This would be a none issue if the networking component of the game was robust, in specific's the NAT facilitator;
i am making a number of assumptions here about how the networking in the game works but you basiclly directly fire UDP between the folks in the game session, and i am attempting to understand how the nat facilitator functions at a base lvl, more infomation would be nice. the bottom line is if the games design at a first principles level is peer to peer, then the facilitator no matter how eligant, is a cludge to a flawed design. (again not to say it isnt a eligant one).
In environment and world where you are almost certainly going to be passing through one form of many to one, or hide (however you prever to express it) NAT, then any direct connect is a issue, the one good exception is torrents, and thats largly because its pretty eligant in design.
That arguement that direct connect makes the session faster than a properly designed client server model is in my opinion conjecture at the best, especially if the client server model is well thought about from a efficency point of view.
In the direct model, even at a base level its not machines are sat there doing nothing, they are all rendering / performing disk reads writes / NA other tasks / id say realisitcally given the environment we live in today a 150 ms round trip time to a deadicated environment is preferable to having a architecture that at a first principles lvl is not robust. In a environment were each client has to sync with each other your exponentially (spelling) increasing the risk of failure with each client added, a C/s mechanism has its issues as well ; but general robust nature is not one of them.
how would i make it different? i dont know man,
but id always look for the most robust of solutions and the fact remains for about a zillion reasons any direct connect solution is not one.
/Theo