Dodawanie gry wieloosobowej do gry HTML5 [zamknięte]

15

Jestem zainteresowany stworzeniem gry, w której obecnie mam doświadczenie w trybie współpracy, jestem jednak ciekaw najlepszej metody implementacji tego w HTML5.

Gry tworzyłem przed użyciem prostych gniazd C, a także z biblioteką Net dla SDL.

Jakie są moje najlepsze opcje, aby to zrobić w środowisku opartym na kanwie?

Obecnie wszystko, co mogę wymyślić, to albo rozwiązania AJAX / bazy danych (o wysokiej częstotliwości odświeżania), albo w jakiś sposób implementacja serwera PHP, który prowadziłby dane przez gniazda.


Ogólna rozgrywka byłaby typem platformówki 2.5D, więc obaj klienci musieliby być stale aktualizowani o pozycje gracza, pozycje wroga, pociski, dane środowiskowe itp.

ciebie
źródło
1
Gdy websockets ( en.wikipedia.org/wiki/WebSockets ) zostanie sfinalizowane (i zaimplementowane itp.), Prawdopodobnie byłby to dobry sposób, do tego czasu uważam, że AJAX (bez X, bez XML wymaganego do tego) byłby prawdopodobnie najlepszym sposobem (wciąż chyba niezbyt dobry sposób).
Elva
Wygląda na to, że obsługa gniazd sieciowych szybko spada ...
the_e
Czy chcesz postawić czy grać? Jeśli chcesz zrobić grę; nie zawracaj sobie głowy html5.
@stefan: dlaczego nie jedno i drugie? to, że nie zostało jeszcze sfinalizowane, nie oznacza, że ​​nie mogę z tym pracować!
the_e

Odpowiedzi:

12

Socket.IO oferuje system zbudowany na kilku innych warstwach (w tym websockets, flash, techniki komet) z pełnym wdzięku wyborem.

Node.js jest jedną z opcji uruchamiania po stronie serwera.

Vincent Scheib
źródło
5

Zobacz tę odpowiedź :

Możesz jednak użyć Flasha, jeśli jest dostępny, aby zapewnić skryptowi awarię, dopóki WebSocket nie będzie powszechnie dostępny. Gimite's web-socket-js jest tego darmowym przykładem. Jednak podlegają ci te same ograniczenia co Flash Sockets, a mianowicie, że Twój serwer musi być w stanie wypluć zasady międzydomenowe na żądanie do portu gniazda i często będziesz miał trudności z serwerami proxy / zaporami ogniowymi. (Gniazda Flash są tworzone bezpośrednio; jeśli ktoś nie ma bezpośredniego publicznego adresu IP i może wyjść z sieci tylko przez serwer proxy HTTP, nie będzie działać).

Ricket
źródło
3

Kometa ” jest prawdopodobnie terminem parasolowym, którego można by tutaj użyć. WebSockets będą jednak bardziej pożądaną opcją (gdy będą zadowoleni, że jest to bezpieczne).

casr
źródło
3

Node.js jest odpowiedzią. Użyłem go do opracowania strzelanki wieloosobowej w czasie rzeczywistym, a od początku do końca zajęło to około miesiąca. Przedstawił kilka wyjątkowych wyzwań, takich jak konieczność minimalnego opóźnienia, a wszyscy gracze muszą pozostać zsynchronizowani w innym, aby koncepcja mogła zadziałać.

Zarówno strona klienta, jak i serwera są napisane javascript i dzielą między sobą klasy / logikę. To zaczyna się liczyć podczas próby naprawy błędów, ponieważ nie musisz implementować wszystkiego dwa razy.

Gra została uruchomiona przez około 2 miesiące bez ponownego uruchomienia i rozegrano tysiące meczów.

Socket.io jest implikacją gniazd i używa node.js, jednak w tym momencie jest zbyt rozdęty dla gry. Istnieją inne implementacje websocket na github dla node.js, a także przykłady gier, które go używają.

onedayitwillmake
źródło
2

Zawsze możesz po prostu użyć AJAX i jakiejś kolejki komunikatów. ActiveMQ jest dobrym przykładem. Uruchamiasz ActiveMQ na serwerze, a następnie JavaScript może wysyłać i odbierać wiadomości. Po prostu spraw, aby każdy gracz miał unikalną nazwę i wysyłaj wiadomości do drugiego gracza.

Brendan Long
źródło
2

Możesz spróbować użyć http://easywebsocket.org/ , jest łatwy do wdrożenia i jest rozwiązaniem bez serwera opartym na websocket :)

Pierre-Loic Doulcet
źródło
2

Pracujemy nad platformą dla wielu graczy, która może być dla Ciebie interesująca. Możesz zobaczyć nasz projekt na www.16cubes.com - zapewniamy prostą warstwę javascript do komunikacji peer to peer. Opiera się on nieco na zasadzie komety, a my planujemy przejść na korzystanie z gniazd sieciowych, ponieważ staje się to nieco bardziej znormalizowane. Z drugiej strony udostępniamy niektóre funkcje z półki .. takie jak automatyczne dopasowywanie przeciwników, czat w grze, zaproszenia do znajomych z Facebooka jednym kliknięciem itp.

Mamy demo kółko i krzyżyk. Prawdopodobnie możesz uzyskać lepszy pomysł, jeśli go zobaczysz. I tak, możesz też grać anonimowo. Rejestracja nie jest wymagana, jeśli nie chcesz. Istnieje mniej niż 10 javascript API, na których musisz kodować, i jest on dostępny na stronie www.16cubes.com/documentation

Aktywnie szukamy informacji zwrotnych, więc daj nam znać zarówno dobre, jak i złe


źródło