[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4688: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4690: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4691: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4692: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3823)
descentchampions.org • View topic - Who hosts matches?
Page 1 of 1

Who hosts matches?

PostPosted: Thu Jul 14, 2016 4:01 am
by birdseye
So, I do think about ladders from time to time, but I find it confusing with little mention here about hosting. D1/D2 should be played P2P, so that you don't have dodgelag. This is especially important in D1 as there is no afterburner.

When you guys play DCLs, how do you handle who hosts? It is really massive advantage to be the host, but I don't hear mentions of how people handle this. Perhaps I am missing something that can kindly be pointed out?

Is there any real P2P version coming sometime? Or an ability to spawn an external server ala D3 so one person doesn't host?

Re: Who hosts matches?

PostPosted: Thu Jul 14, 2016 4:14 am
by Behemoth
I've kinda been wondering the same thing myself.
I asked Drakona a while back about the p2p option in retro and i remember someone (not sure if it was Drak or not), told me it's not true P2P. Can i get some clarification on this as well please?

Re: Who hosts matches?

PostPosted: Thu Jul 14, 2016 9:46 am
by Drakona
Short answer, 1v1 D1 and D2 are P2P and always have been, in every version of the game. DescentR, D1x, Rebirth, Retro, and heck, probably in XL too. To my knowledge, there has never been a D1 or D2 server for the game. Writing one would require deep rearchitecture of the program, deeper, I think, than even Diedel has done. ;)

Longer answer, Rebirth ran the game client/server in a networking sense. Not in an owning the world sense. Basically the person hosting the game acted as a proxy for all the players. Each player's packets went to the server, and then the server forwarded them on to the other players. This is not different from the normal way the internet works, it just happened to always force the game host to be in the path your packets take from player A to player B. The server did NOT judge whether you hit or missed someone -- you and the other player still did that in a P2P way. The server did NOT give you better information about where someone was if your ping was low and theirs was high -- your packets still had to get all the way to them through their high ping to score a hit.

Retro goes back to the p2p networking for anarchy, but sometimes runs client/server like Rebirth between individual players. If you and another player can't make a direct connection, your packets go through the game host on their way to each other. You can tell this is happening because it puts a P by their name for 'proxy'. Doing this induces some lag, which is why we try to avoid that, and why Retro will keep trying to establish a direct connection. Still, playing through a proxy is better than not being able to play at all, which is why it does that.

(This is a simplification. Full technical details available in the Retro 1.3 changelog (Changelogs! I should do changelogs! Lazy Drak!!))

Anyway. The client/server networking architecture is literally meaningless in 1v1. There's no "going through the server" with packets -- you send yours straight to the other guy and vice versa. However, under the Rebirth client/server networking architecture, in an anarchy game, hosting the game gave you the advantage of low ping to other players. Everyone else had to deal with the lag induced by packets going through the server, but your packets always go direct to everyone. So your ping to everyone is still symmetric individually, but is lower than everyone else's, on average. Hence, in the Rebirth era, people insisted that someone located geographically centrally and with good internet host the game. In the Retro era, it doesn't matter who hosts.

At no time in no version of the game could you have "low ping to the server" in the D3 and modern game sense. D1 and D2 have never worked that way. Lag is always symmetric between two players; you always essentially act as each other's 'servers' for the purpose of adjudicating hits. The extreme fairness of this (compared to the D3 model) is, if I recall correctly, one of the reasons D3 never seriously caught on in the ladder scene.

What this means is that in any version of the game, it has never mattered who hosted 1v1. The connection is the same either way. The only privileges the host has are in things like choosing game settings, choosing who to allow into restricted games, stuff like that. In the mines, the lag is literally identical for both players. (Lag is round trip and has to be symmetrical -- even if their packets get to you faster than yours get to them (which doesn't really happen), you see their ship lag by the amount of their lag to you, and your shots lag to them by the amount of your lag to them, so it really is the round trip that effectively counts for lag leading. Loss is different, since it affects one-way connections. That might not be the same for both players and can become unfair, so keep an eye on that. That's why Retro gives you one lag number and two loss numbers).

Anyway. There has literally never been a version of the game where one instance 'owned the world'. Even in Rebirth's deduplication algorithm, designed to eliminate powerups that had spawned, both players ran it and both eliminated weapons that they concluded were 'extra'. There was no server. So it has never mattered who hosted 1v1.

The one exception to this that's worth mentioning is, in Retro, if you're in observer mode, it's the game host's version of the world that you're watching.

Re: Who hosts matches?

PostPosted: Sat Jul 16, 2016 2:02 am
by birdseye

Re: Who hosts matches?

PostPosted: Sat Jul 16, 2016 4:05 am
by roncli