Jump to content

Idea: Check if host is properly port forwarded


Recommended Posts

My idea:

When one hosts a game, he/she should be able to see if that game is reachable from outside the LAN. When hosting in the lobby, a notification should show up immediately. When privately hosting, a messege should show up if the partner failed to connect.

How:

When a new game is created in the lobby, a bot should try connecting to it and inform the client via XMPP in case the connection could not be established.

Furthermore:

Quoted from fcxSanya:

If we will use ICE for #2305 (UDP Hole Punching / NAT Traversal) (which is the current plan), then I think local ICE agent also can notify user when candidate negotiation with a peer fails (what itself should happen much more rarely than now).

This way, users that host games outside the lobby could still receive similar notifications when their partner fails to connect to them.

Why:

1. I see a lot of people creating games in the lobby, sitting there and waiting for someone to connect while in reality their games are unreachable. Right now they can't know exactly if they are unreachable. Maybe there are just no players that want to join their game? The only way to know this is to ask a friend to connect to your game so that you can confirm it is a connection issue. But, when I was checking my ability to host, my friend wasn't available so I decided to use those port checkers which did not work. We need a way to know if things are configured right.

2. It can happen even to experienced users. For example: One has configured port forwarding for his/her Wifi adapter in the past but decided to host a game through his/her Ethernet adapter. The IPs and MACs are actually different but he/she forgot to reconfigure the router. It happens to all of us and it would be nice if the needed information was displayed to us immediately.

Possible downsides

A case where host is unreachable to the bot while reachable to other clients?

Related question:

Why are services like 

http://www.canyouseeme.org/

http://portchecker.co/check

not able to recognise a 0AD host?

Edited by yoreei
Added information from the comments. Cleared writing and formatting style. Fixed minor errors.
  • Like 2
Link to post
Share on other sites
On 21.02.2016 at 4:42 PM, yoreei said:

A bot should try connecting to a newly created game. If the connection was successful, the bot should add it's IP to a list of reachable games. The client then downloads this list and checks if it's IP is listed. It then displays to the user if his/her game is reachable.

The list of reachable/unreachable games may be useful by itself (to indicate the host status in the lobby games list), but to notify user about an issue with his host, bot can just send him a XMPP message. Also the game itself can send such a message when it fails to connect to someone.

If we will use ICE for #2305 (UDP Hole Punching / NAT Traversal) (which is the current plan), then I think local ICE agent also can notify user when candidate negotiation with a peer fails (what itself should happen much more rarely than now).

  • Like 3
Link to post
Share on other sites
On 2/23/2016 at 10:24 AM, fcxSanya said:

The list of reachable/unreachable games may be useful by itself (to indicate the host status in the lobby games list), but to notify user about an issue with his host, bot can just send him a XMPP message. Also the game itself can send such a message when it fails to connect to someone.

If we will use ICE for #2305 (UDP Hole Punching / NAT Traversal) (which is the current plan), then I think local ICE agent also can notify user when candidate negotiation with a peer fails (what itself should happen much more rarely than now).

Indeed, the list could be useful for telling the users which hosts are reachable. I don't know much about networking, but is it possible that a wildfirebot isn't able to connect to a user's game and misleadingly labels it "unreachable" for users that can actually connect? Are there such circumstances in which some factor (country, filters, etc) makes the idea of "a central cerver deciding which host is reachable and which is not" a bad idea? 

Otherwise, the XMPP messege is a much better aproach to notifying the user. I will add it in the main post.

I have a too basic understanding of NAT Traversial but I think I managed to understand what you were saying. Maybe this type of notification can be used for when a user creates a game outside of the lobby. That way, he/she could still know if something has gone wrong without the need to connect to or use the Wildfire services.

Edited by yoreei
Link to post
Share on other sites

Implementing this would require changes not only on the client side but on the server side too. If someone were to do this for himself only, he/she could use his/her own server/server side platform/etc. However, if this were to become part of the game, understanding of the current platform and code on the server is required. I am not able to find the code or other information regarding the server software for 0ad though. Am I looking at the wrong place, or is this purposely hidden?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...