im also not understanding why both server AND client will need to be modified .. to me, it would seem like the script just has to tell the server "Ask player A to send a UDP packet to player B over port 6112 and visa versa) or something along those lines... And the server should already have permission from player A and B to make that request. We gave the server permission when we installed the client, no?
OK its like this:
- In order for a player to join a game, they must be able to send data to the host.
- To punch a hole, the host must first send data to the client.
- To do this the host client must already know that the player is trying to join and what their IP address is.
- Until the hole is punched, the player cannot notify the host that they are trying to join or what their address is. ------------------------------------------------------------------------
The problem is that the server game list is a one sided mechanism --> It gives the joining player the hosts details, but it does not give the host the joining player's details.This is why the required mods are:
1) Modding the server to notify the host of a joining player's address
2) Modding the client to respond to this notification by sending data to the joining player.
------------------------------------------------------------------------
This could *theoretically* be done using only client mods by having the joining client send the host their details via the server using the "/m" messaging. i.e. by automatically sending a specially formatted message, and having the host client monitor incoming messages and respond to these specially formatted ones by attempting to directly contact the joining player.But all of this comes back to the fact that things that are quite straightforward when you are writing a program, become very complicated and time-consuming when you are trying to reverse engineer them into and existing one without any source code...
as for port forwarding .. yes it is "easy" if:
1) you have login/password to your router
2) you have a dynamic IP address
3) your ISP will allow the ports to be forwarded
1) Yes, this is a must have.
2) are we talking about a dynamic internal or external address?
A dynamic or static external address - i.e. anything to do with your ISP - is not relevent in any way.
Having a static local address - i.e. the address that your router specifically assigns to your computer - is necessary only to support the port forwarding rule you want to set up.
As this rule is "send port 6112 to THIS address", then if your address changes the rule is no longer valid, as it still forwarding the port to you previous address.
... but if you have access to the router to forward the port this is not a problem, it's a minor detail - really just part of setting up the rule.
3) In any normal setup your ISP can not stop ports from being forwarded, it is nothing to do with them. It is only about what your router does with packets once your ISP has already sent them to you.
No ISP that I am aware of tracks individual client port firewalling in such a way, this would exponentially complicate their own job, harware requirements and expenses for no benefit to them. Maybe if you are trying to play from the pentagon this might be an issue ... lol IDK.
ISPs may entirely block certian ports or traffic, which would stop you from playing at all, but if it's just a hosting issue, then its between you and the router you're connected too.
I hope this is helpful. Let me know if I can help further.