• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

You were disconnected (on multiplayer)

Status
Not open for further replies.

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,180
I would not imagine wifi connectivity makes much of a difference as both the TCP connection used and wifi transport protocol likely have error detection and resend capability.

In any case that would result in a "waiting for host" or "waiting for player" dialog to appear until the TCP connection times out.

What is being described could be a corrupted packet, however the chances of one is borderline impossible and certainly nowhere near as reproducible as this.

More likely is a simple OOS error as a result of both clients not running deterministically. This can either be caused by the map doing things that are not deterministic or by the WC3 installations not being identical.
 

Cokemonkey11

Code Reviewer
Level 29
Joined
May 9, 2006
Messages
3,516
I would not imagine wifi connectivity makes much of a difference as both the TCP connection used and wifi transport protocol likely have error detection and resend capability.

TCP has both error detection and ARQ. Wi-Fi is more complicated. It has FEC, but also (like ethernet) uses some form of CSMA - in fact, it doesn't use CSMA because WiFi transceivers cannot sense while transmitting. Instead, contention is rather complicated - control messages are used to produce a sort of dynamic multiplexing, a form of CDM.

But on top of this is warcraft 3's battlenet protocol. Keep-alive packets seem to be used, and they very keen to drop non-responsive hosts. If you're on a weak Wi-Fi signal and contending with others, occasional delays on the order of ~1-2 seconds are not uncommon - and bnet doesn't like this.

In any case that would result in a "waiting for host" or "waiting for player" dialog to appear until the TCP connection times out.

Rather unfortunately, wc3 custom games seem to use the same timing rules for keep-alive and reconnect as battle.net - typically once I get disconnected from battle.net, I also lag out for the full 'waiting for host' duration.

What is being described could be a corrupted packet, however the chances of one is borderline impossible and certainly nowhere near as reproducible as this.

No way. This happens consistently.

More likely is a simple OOS error as a result of both clients not running deterministically. This can either be caused by the map doing things that are not deterministic or by the WC3 installations not being identical.

OOS might be the problem, but it isn't related to map or installation. I can reproduce this even on a melee map.

At some point I'd like to just get a Wireshark capture and see what's *actually* happening when I get disconnected, but I can't be bothered and usually just plug in my ethernet cable while playing wc3.
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,180
But on top of this is warcraft 3's battlenet protocol. Keep-alive packets seem to be used, and they very keen to drop non-responsive hosts. If you're on a weak Wi-Fi signal and contending with others, occasional delays on the order of ~1-2 seconds are not uncommon - and bnet doesn't like this.
BattleNet has nothing to do with it. You can be booted from BattleNet and still continue playing for hours in the same session. The only thing it mean is that your BattleNet functionality (whispers, friend list etc) is all disabled. Additionally if you were playing a ranked game you would probably be evicted/forfeit as the server would disconnect you however that is not the issue here.

Rather unfortunately, wc3 custom games seem to use the same timing rules for keep-alive and reconnect as battle.net - typically once I get disconnected from battle.net, I also lag out for the full 'waiting for host' duration.
Not true, I have lost connection for upwards of 30 seconds (from router to ISP) and still managed to stay in the game once it was restored. As long as packets start arriving reliably it will keep you in the game.

Most people disconnect from online games due to either a crash or congestion. For example, if a functioning microwave or malfunctioning power equipment is nearby it can drop the wireless bandwidth to practically near 0 due to interference. You then disconnect from everything due to a combination of TCP timeout and insufficient bandwidth. This can also occur by overloading the network such as someone maxing out upload and download while you try to play.

OOS might be the problem, but it isn't related to map or installation. I can reproduce this even on a melee map.
You are not Knno, who claims that it affects every map except DotA. Seeing how a lot of WC3 distributions were optimized for DotA Allstars that means there is a good chances that the clients could not be deterministic with each other.

At some point I'd like to just get a Wireshark capture and see what's *actually* happening when I get disconnected, but I can't be bothered and usually just plug in my ethernet cable while playing wc3.
Except does that truly show what is happening? In your case it could be something as stupid as the wireless network drivers behaving incompatibly with WC3. All it would take is one minor behaviour deviation from common LAN drivers and WC3 could not be able to recover from errors correctly. For example when and how errors are thrown inside the driver stack could be the cause.

How does WC3 behave in the case of a total network failure? With LAN you seldom unplug the cable while the game is running. With Wireless it could intermittently loose connection (possibly sub-frame?) in which case network disconnection errors propagate around the stack and could potentially result in unusual network errors being pushed to processes. Maybe WC3 gives up in response to a network failure (cannot recover connection), which would reflect the behaviour you describe perfectly.

In any case one really should not try to game with wireless. There is a reason people have said that wireless networks and gaming are not recommend since the early days of local wireless networks.
 

Cokemonkey11

Code Reviewer
Level 29
Joined
May 9, 2006
Messages
3,516
BattleNet has nothing to do with it. You can be booted from BattleNet and still continue playing for hours in the same session. The only thing it mean is that your BattleNet functionality (whispers, friend list etc) is all disabled. Additionally if you were playing a ranked game you would probably be evicted/forfeit as the server would disconnect you however that is not the issue here.

Yes, of course, I am just using the comparison because often when I get disconnected on wifi it happens in the game + bnet at the same time.

Another possible option is that my ISP is filtering my traffic and dropping connections that look like I'm serving, but I don't think that's reasonable when I can play 100% fine on an ethernet connection.

Not true, I have lost connection for upwards of 30 seconds (from router to ISP) and still managed to stay in the game once it was restored. As long as packets start arriving reliably it will keep you in the game.

Most people disconnect from online games due to either a crash or congestion. For example, if a functioning microwave or malfunctioning power equipment is nearby it can drop the wireless bandwidth to practically near 0 due to interference. You then disconnect from everything due to a combination of TCP timeout and insufficient bandwidth. This can also occur by overloading the network such as someone maxing out upload and download while you try to play.

How can you say that it's not true when I'm providing a personal experience? When I lag on wifi I get dropped from the game, 100% reproducible.

You are not Knno, who claims that it affects every map except DotA. Seeing how a lot of WC3 distributions were optimized for DotA Allstars that means there is a good chances that the clients could not be deterministic with each other.

Good point, I didn't consider that he could be using a pirated wc3 copy.

Except does that truly show what is happening? In your case it could be something as stupid as the wireless network drivers behaving incompatibly with WC3. All it would take is one minor behaviour deviation from common LAN drivers and WC3 could not be able to recover from errors correctly. For example when and how errors are thrown inside the driver stack could be the cause.

Yeah, this is a really good point - actually I would bet this is the real problem. I recall hearing something about intel wifi drivers having issues (I think related to power-saving?) - it might even be just a bad NIC ;(

I sort of hope that's not it though, because that's not something I can reasonably fix in my free time.

How does WC3 behave in the case of a total network failure? With LAN you seldom unplug the cable while the game is running. With Wireless it could intermittently loose connection (possibly sub-frame?) in which case network disconnection errors propagate around the stack and could potentially result in unusual network errors being pushed to processes. Maybe WC3 gives up in response to a network failure (cannot recover connection), which would reflect the behaviour you describe perfectly.

Yeah, in this case a wireshark capture would be useful. I'll keep that in mind.

In any case one really should not try to game with wireless. There is a reason people have said that wireless networks and gaming are not recommend since the early days of local wireless networks.

That is silly, backwards thinking. Some of the best gaming I've ever experienced was on university industrial wireless connections.
 
Status
Not open for further replies.
Top