Skocz do zawartości
Krzy100f

[Java]Tworzenie gier Multiaplyer Online

Rekomendowane odpowiedzi

Witam.

Ostatniego czasu piszę gierki w Javie i postanowiłem spróbować stworzyć gierkę multi(online).

 

Dowiedziałem się że korzysta się z dwóch rodzajów protokołów UDP i TCP.

I teraz pytanie, którego użyć do których rzeczy ?

Pytałem na innych forum dostałem dużo informacji jak działają ale jak to wykorzystać w grach ?

Więc dlatego zwracam sie do was ;).

 

Z góry dziękuję

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

TCP zawsze dociera do odbiorcy, więc używasz go do przesyłu ważnych danych, UDP nie zawsze, ale za to jest szybsze, więc używasz do danych które są przesyłane co co chwilę.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To wiem, ale bardziej mi by chodziło o przykłady. Podobno TCP działa do 5GHz, więc on może zastąpić większość elementów.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Lol "działa do 5 Ghz" ?

Przykłady, TCP łączenie, UDP przesyłanie pozycji.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Takie dostałem informacje XD(pewnie błędne). W każdym razie, przykłady!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Podobno TCP działa do 5GHz

co?

 

TCP zawsze dociera, ale może dotrzeć w kawałkach, zawsze w dobrej kolejności. Np. wysyłasz 'Hello World!' oraz 'Siema' Może dotrzeć tak:

'Hell'

'o Wor'

'ld!Sie'

'ma'

Spowodowane jest to tym, że dane w TCP przesyłane są strumieniami. Aby temu zapobiec zazwyczaj dopisuje się na początku długość wiadomości (najczęściej 4 bajtowy int) i łączy je u odbiorcy.

 

UDP jest szybki, ale pakiet możne nie dotrzeć wcale lub w innej kolejności. Pakiet zawsze dociera w całości więc nie występuje "dzielenie" pakietu tak jak w przypadku TCP gdyż tutaj dane są wysyłane datagramami.

Wysyłasz 'Hello World!', 'Siema' oraz 'Witam'.

Wiadomość może dojść tak:

'Siema'

'Witam'

'Hello World!'.

 

@EDIT A no i w przypadku 39dll bodajże nie trzeba się przejmować dzieleniem wiadomości w TCP. Jeśli się mylę to poprawcie mnie.

 

@EDIT2 Przykłady? Google: java socket tutorial.

 

@EDIT3 No i nie zapominaj, że jak chcesz UDP to u klienta muszą być odblokowane porty. Jeżeli to nie wchodzi w grę to użyj UDP Hole Punching.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przykłady wykorzystania , czyli np. który do czego można wykorzystać. Nie chodzi o kod =.=. A zasadę ich działania doskonale rozumiem(póki co),

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tcp do rzeczy które są stosunkowo rzadko wysyłane i muszą dotrzeć, np. chat.

Udp do rzeczy które są wysyłane często i utrata jednego nie wpłynie na rozgrywkę (można je zignorować) np. pozycja gracza. Należy przy tym pamiętać, aby numerować pakiety. Jeśli stara pozycja przyjdzie później niż aktualna to należy ją zignorować.

 

Jak piszesz shootera to oczywiście najlepiej użyć obu. Do rozgrywek partyjnych typu kólko i krzyżyk, statki, szachy wystarczy TCP.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
A zasadę ich działania doskonale rozumiem(póki co),

Wygląda na to, że jednak nie - gdybyś doskonale rozumiał zasadę ich działania, nie zadawałbyś powyższych pytań. ;)

Ja Ci powiem jedno - to jest Twoja decyzja! Ty tworzysz grę, Ty wybierasz. Możesz oczywiście żywcem skopiować czyjąś pracę ale w ten sposób wstrzymujesz swój rozwój, nic kreatywnego nie zrobisz.

Jeśli wiesz, jak działają TCP/UDP, to pomyśl, do jakich czynności zastosować jedno, a do jakich drugie. I zrób tak, a jeśli po testach uznasz, że lepiej byłoby inaczej, zrób inaczej :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×