Skocz do zawartości

Gra multiplayer, problem z połączeniem


Rekomendowane odpowiedzi

Witam, mam problem z przesyłaniem buforu i z samym połączeniem.

 

Stworzyłem 2 programy server i klient

 

W serverze

stworzyłem socket o nazwie soc

stworzylem server o nazwie serv

stworzyłem bufor o nazwie buf

 

W kliencie

stworzyłem socket o nazwie soc

stworzyłem bufor o nazwie buf

 

łącze sie z serverem i wszystko pieknie tyle ze moge wysyłać bufor tylko do servera. W żaden sposób nie mogę wysłać żadnej wiadomości z servera do klienta.

 

zależy mi aby w grze moglo grac nawet do 4 osob.

 

Moje pytanie to: Co mam zrobić aby gracz 1 lub kolejny dołączający do servera mogł otrzymac informacje np, o innych graczach, kto wykonuje ruch itp.

 

próbowałem robić cos takiego ze klient łączy się z serverem a server z klientem ale osoby które posiadają router nie mogą się połączyć więc to odpada.

z góry dzięki

Odnośnik do komentarza
Udostępnij na innych stronach

Właściwie to nie wiem czy powinienem tu pisać, bo ile razy coś próbuję z mp to nie wychodzi, ale.

Zrób sobie listę graczy. Przy odbiorze informacji jest zwracany socket klienta. Jeśli wysyłasz wiadomość z serwera do klienta, podajesz ten socket. (bo rozumiem, że w tym masz problem)

Tak samo listę graczy zrób u klientów. I prosty przykład. Wchodzi gracz A. Jest pusty serwer (no i on). Wchodzi gracz B. Od serwera dostaje listę graczy (aktualnie tylko A). A gracz A, dostaję informację od serwera o dołączeniu gracza B. A potem tylko zmieniasz ich koordynaty (wysyłasz ID gracza i resztę np. x i y), a u klienta lista_graczy[ODEBRANE_ID].x=ODEBRANE_X;

Odnośnik do komentarza
Udostępnij na innych stronach

Z tą listą i danymi sobie poradze, chodzi mi tylko o ten socket, jesli gracz polaczy sie z serverem, skąd server ma wiedzieć dokąd wysłać wiadomość żeby dotarła do gracza. Skąd mam wziąść ten socket.

rozumiem ze to wyglada tak:

 

Server::

tworze buffer

tworze socket

tworze server ( network_create_server )

 

Klient::

tworze buffer

tworze socket

łącze z serverem( network_connect )

 

Server::Networking::

Uzywam:

a=ds_map_find_value(async_load,'type'); //sprawdzam typ polaczenia i przypisuje go do zmiennej a

if a==network_type_connect //jesli gracz dołączył do servera to...

{

zeruje buffer

dodaje dane do buforu np. buffer_write(buf,buffer_string,'przesylane dane');

wysylam bufer uzywajac network_send_packet(!!!PROBLEM!!!,buf,buffer_tell(buf));

 

tutaj w miejscu PROBLEM nie wiem skąd mam wziasc socket

 

z tworzeniem list i innymi graczami sobie poradze tylko nie wiem jak wyslac wiadomosc z servera do klienta gdy klient połączy się z serverem oraz pozniej gdy server otrzymuje dane i rozsyla je do innych graczy

}

 

 

tzn. tak w skrócie tak, mam problem z socketem, mozesz napisac jak sprawdzic jaki socket ma klient ktory dolaczyl do servera

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...