Ik ben samen met iemand anders een multiplayermod aan het maken voor GTA 3 (ja ik weet het, die bestaat al, maar het is toch leuk om zelf iets te maken
).
Nou maak ik daarvoor gebruik van het UDP protocol.
Je hebt een centrale server die een lijstje bijhoudt van geconnecte users. Om te connecten stuur je een pakketje met commandbit 1 ('connect'), en als data je nick. Het serverprogje slaat dan je nick samen met de afzender-ip op in een lijst.
Als er dan een andere user connect stuurt de server naar alle mensen in deze lijst een pakketje met 'User x heeft de server gejoined'.
Dat werkt prima als ik het op localhost draai, maar ik krijg last van hele wazige problemen zogauw ik het over internet doe.
Users kunnen wel een connectpakketje naar mijn server sturen, en ik krijg dan ook keurig in mijn client (zelfde comp als server, localhost dus) te zien dat die user geconnect is, maar alle pakketjes die de server naar een user op internet stuurt komen niet aan. De pakketjes die hij naar de client op localhost stuurt wel.
Waarschijnlijk heeft dit dus te maken met firewalls en routers, aangezien het dus over internet 1-richtingsverkeer wordt, maar de betreffende users zeggen dat ze iedere mp-game gewoon kunnen spelen zonder extra instellingen op hun router, zoals SoF en Quake, die toch allebei met het UDP protocol werken.
Mijn vraag is dus: hoe zorg je dat je een UDP 'verbinding' krijgt door een router heen, zonder op die router een virtual server te maken?
Nou maak ik daarvoor gebruik van het UDP protocol.
Je hebt een centrale server die een lijstje bijhoudt van geconnecte users. Om te connecten stuur je een pakketje met commandbit 1 ('connect'), en als data je nick. Het serverprogje slaat dan je nick samen met de afzender-ip op in een lijst.
Als er dan een andere user connect stuurt de server naar alle mensen in deze lijst een pakketje met 'User x heeft de server gejoined'.
Dat werkt prima als ik het op localhost draai, maar ik krijg last van hele wazige problemen zogauw ik het over internet doe.
Users kunnen wel een connectpakketje naar mijn server sturen, en ik krijg dan ook keurig in mijn client (zelfde comp als server, localhost dus) te zien dat die user geconnect is, maar alle pakketjes die de server naar een user op internet stuurt komen niet aan. De pakketjes die hij naar de client op localhost stuurt wel.
Waarschijnlijk heeft dit dus te maken met firewalls en routers, aangezien het dus over internet 1-richtingsverkeer wordt, maar de betreffende users zeggen dat ze iedere mp-game gewoon kunnen spelen zonder extra instellingen op hun router, zoals SoF en Quake, die toch allebei met het UDP protocol werken.
Mijn vraag is dus: hoe zorg je dat je een UDP 'verbinding' krijgt door een router heen, zonder op die router een virtual server te maken?