Autor Wątek: [C++/UDP] Multipayer 2 osobowy, Publiczne IP  (Przeczytany 2144 razy)

Offline szmyrcyk13

  • Użytkownik

# Wrzesień 27, 2013, 01:11:53
Witam!
Nie jestem nowym użytkownikiem, kiedyś już tu gościłem, lecz z mojej głupoty poprzednie konto zostało zablokowane.

Do rzeczy: pracuje od ok. roku nad poważnym projektem gry multiplayer 2 Osobowa w allegro 2D.
Niektórzy mogą pomyśleć że słowo "poważny" nie idzie w parze z "Allegro", na razie nie chcę za dużo zdradzać.
Ekran dzielony na pół, są dwaj gracze, do przesyłania danych mam zamiar używać protokołu UDP.
Ogólnie rzecz biorąc nigdy nie miałem styczności z programowaniem klientów/serwerów.

Problem polega na tym aby połączyć ze sobą komputery które nie posiadają publicznych adresów IP.
Jak to zrobić? Może ktoś już borykał się z podobnym problemem?
Wszelakie formy pomocy mile widziane. Nie musi to być kod, pomysł też się liczy.
Pozdrawiam serdecznie! Może wrzuce screena jak uzyskam szybką i konkretną odpowiedź.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline yarpen

  • Użytkownik

# Wrzesień 27, 2013, 01:31:59
Jezeli w ogole nie maja to nie beda w stanie sie polaczyc (o ile nie sa w tej samej sieci). Poczytaj o NAT relay.

Offline Shelim

  • Użytkownik
    • Homepage

# Wrzesień 27, 2013, 01:35:59
Jezeli w ogole nie maja to nie beda w stanie sie polaczyc (o ile nie sa w tej samej sieci). Poczytaj o NAT relay.
A negocjacja Nata, mając serwer pośredniczący (potrzebny tylko na potrzeby samego łączenia)?

Offline MaxGarden

  • Użytkownik
    • Profil na warsztacie

# Wrzesień 27, 2013, 01:38:43
Hole punching, ale i tak wypadałoby mieć jakieś globalny serwer, który by pośredniczył w nawiązaniu połączenia. Bez serwera obie strony muszą znać swoje zewnętrzne IP, co jest mało wygodne.

Offline szmyrcyk13

  • Użytkownik

# Wrzesień 27, 2013, 01:40:49
Kurcze właśnie problem polega na tym że aplikacja musi robić jako server i klient jednocześnie, bez udziału dodatkowych serverów. Zastanawia mnie fakt jak oni to zrobili w hamachi...

Offline koirat

  • Użytkownik

# Wrzesień 27, 2013, 01:49:35
Wiki
Cytuj
Hamachi uses a server-assisted NAT traversal technique, similar to UDP hole punching.

Offline szmyrcyk13

  • Użytkownik

# Wrzesień 27, 2013, 01:54:30
Ok dzięki za dziś , poczytam o hole punching, mam wrażenie że to jedyne sensowne rozwiązanie.
Dziękuję jeszcze raz, choć jeśli ktoś ma jeszcze jakieś pomysły - bardzo mile widziane.
Pozdrawiam i ide spać :)

Offline Xion

  • Redaktor
    • xion.log

# Wrzesień 27, 2013, 15:24:05
UDP hole punching to hack nałożony na inny hack, czyli na NAT jako taki. Wątpię, żeby udało ci się go zaimplementować, jeśli wcześniej nie miałeś w ogóle do czynienia z programowaniem sieciowych.

Jest jakiś specjalny powód dla którego nie chcesz mieć osobnego serwera?