Jestem zainteresowany tworzeniem RPG w trybie multiplayer jako gry wyłącznie z przeglądarką, z niewielkimi lub bez wymagań wtyczek. Po wykonaniu wielu badań dotarłem do następującego planu. Zdaję sobie sprawę, że niektóre technologie, o których tutaj mowa, nie są przyjęte we wszystkich przeglądarkach (w szczególności w IE), ale jestem gotów to zaakceptować w tej chwili.Przeglądarka sieciowa dla wielu graczy - czy wydaje się to realnym rozwiązaniem?
Ponadto - zdaję sobie sprawę, że MMO jest szczytnym celem, do którego należy dążyć w każdym przypadku, ale w przeszłości robiłem wiele mniejszych projektów w podobnym kierunku, mam wrażenie, że chcę to naprawdę dobrze idź w końcu.
Więc heres szorstki zarys, chciałbym usłyszeć od rażących problemów każdy może zobaczyć w tym układzie:
KLIENT: WebGL/Javascript (prawdopodobnie three.js). Użyj lokalnego magazynu przeglądarki do przechowywania zasobów gry, przyjmując, że usunięcie pamięci podręcznej przeglądarki spowoduje ich usunięcie.
WIADOMOŚCI: wiadomości kodują między klient/serwer przy użyciu google protocol buffers, dla wygody i rozdrabniania. Dostarczenie wiadomości nastąpi za pośrednictwem WebSocket.
GAME SERVER: działa na szczycie gevent w python (wydaje się być dobrym rozwiązaniem do czynienia z wieloma concurrents). Zostanie zbudowany przy użyciu sharded wzór, na podstawie projektu here:
DB SERVER: MySQL do bazy danych, PHP działającego pomiędzy nimi serwera gry i DB.
SZCZEGÓŁY: zamierzam mieć serwer aktualizacji gry indywidualnego klienta około 15-20 razy na sekundę i używać przewidywania po stronie klienta, aby wypełnić luki. Klienci mogą wysyłać kluczowe dane wejściowe/wiadomości do serwera w obszarze 30 fps. Wolałbym wybrać doświadczenie, które jest jak najbardziej zbliżone do czasu rzeczywistego, a nie turowe. Moją główną obawą jest protokół TCP oparty na WebSocket, czy to wszystko uniemożliwi?
Czy to rozwiązanie wydaje się realistyczne?
wiele dzięki,
Ah! Cóż, to jedna rzecz, której nie wiedziałem od razu, 5mb jest dość ograniczającym czynnikiem, więc tak, w takim razie byłaby jakaś transmisja strumieniowa.Jeśli chodzi o PHP, pomyślałem, że sensownym rozwiązaniem byłoby pobranie części obciążenia z bazy danych z serwera gry, aby mógł skoncentrować się na obsłudze klienta tak szybko, jak to możliwe, i po prostu okresowo odpalać fragmenty danych napisane do DB, bez zobowiązania do formatowania i zapisywania tych samych danych – bharling
Tak, spróbuj spojrzeć na CouchDB, obsługuje połączenia REST od razu. – Anders