Skocz do zawartości

[Java]Tworzenie gier Multiaplyer Online


Krzy100f

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ę

Odnośnik do komentarza
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.

Odnośnik do komentarza
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.

Odnośnik do komentarza
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 :)

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