Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Multiplayer w HTML5

WebSockets -> to jest to co ratuje skórę chcącym zrobić multiplayer w HTML5. Do tej pory:
for (i do nieskonczonosc)
setTimeout("zapytaj serwera czy się nie ruszyl");

Inaczej mówiąc musieliśmy co chwile pytać biednego serwera czy coś się może nie zmieniło. Komunikacja jednostronna -> żądanie przeglądarki <- odpowiedź serwera. Wyobraźmy sobie 100 graczy i ciągłe pytania do serwera -> masakra.

WebSockets zmienia sytuację:
-> żądanie do serwera
<- żądanie do przeglądarki
Inaczej mówiąc komunikacja dwustronna! Koniec z odpytywaniem. Serwer sam nam powie kiedy ktoś się ruszył :)

http://pclab.pl/art43313-27.html
Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Multiplayer w HTML5

Trafiłem na minę. Chciałem aplikację po stronie serwera pisać w PHP. Okazało się jednak, że websockets i Apache/PHP to nie jest taka jasna sprawa. Znalazłem kilka rozwiązań -> dość niszowych, żadnej konkretnej bibiloteki. Nie wiem jak z wydajnością. Drugim rozwiązaniem jest modne ostatnio node.js.
Są 2 opcje : implementacja websockets w PHP/Apache lub postawiony obok apacha node.js.

konto usunięte

Temat: Multiplayer w HTML5

Skorzystaj z node.js. Wydajność będzie większa.
Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Multiplayer w HTML5

Witam ponownie,
mam następne ciekawe pytanie. Czy lepiej używać jednego web workera dla wielu rzeczy czy raczej rozdzielać na więcej web workerów? Chodzi głównie o graczy i liczenie ścieżek ruchu, czy każdy gracz powinien mieć swojego web workera czy może 1 web worker na wielu graczy. Ciekawi mnie wydajność obu podejść. Kiedy robiłem 1 web worker na 1 gracza to zauważyłem, że chrome ma limit około 20 web workerów (nie wiem jak jest z najnowszą wersją).
Maciej Sikora

Maciej Sikora Programista
aplikacji
internetowych

Temat: Multiplayer w HTML5

Sam sobie odpowiem na pytanie. Lepszym rozwiązaniem jest używanie mniejszej ilości web workerów, zauważyłem, że bardziej wymagająca dla przeglądarek jest komunikacja między wątkami niż operacje, które się w nich dzieją. Przy dużej ilości wątków komunikacja 1 do wielu jest bardzo zasobożerna.
Co do multiplayer to niestety muszę stwierdzić, że nie da się w wątku wywołać socketa, jest to duża niedogodność.Socketem musi zajmować się główny wątek. Różnica międzu ajax polling a socketem jest znacząca, przy sockecie delay jest niezauważalny. Polecam używanie biblioteki socket.io.

Następna dyskusja:

onGameStart 2012 - konferen...




Wyślij zaproszenie do