Updated Design:
did you try that yourself? It is working for you?
Somehow client A needs to update PvPGN letting other war2 clients to know to join games using its external port identified in #3, if this occurs in the port setting of war2
Well, at least pvpgn knows everything about ports in realtime, also pvpgn shares that info to other parts of project, so there should not be a problem to request that info every moment we need.
Another question: if you host the game (war2 listening UDP on 6112 or w/e port) and then your script tries to bind/send something to that port on the same host. Will that work or returns error like "port is busy"?
this STUN idea doesn't work for symetric NAT
Not a big problem as for me. Maybe i'm wrong, but as understand, symmetric NAT is very rare thing. Even if such hole punching will not cover that several % of clients, other will be happy to have it working.
5. Client A sends periodic UDP traffic to the ext_ip and ext_port of all other players
6. All other players send periodic traffic to the ext_ip and ext_port of Client A
Do we really need both 5 and 6? As i understand, 5 is enough to let others connect to game hosted by client A.
I mean, P.6 requires started lat trick bot on all clients. But would be better if we require lat trick bot only on clients behind NAT.
Why i should start lat trick bot on my computer if my ports are open!
Another problem is potential vulnerability: we have to discover everyones' ip addresses to everyone. Now you can discover someone's ip only if he hosts the game or joins the game (tell me if i'm wrong).