Najlepsze rozwiązanie dla gry wieloosobowej na Androida w czasie rzeczywistym [zamknięte]


11

Planuję stworzyć grę wieloosobową w czasie rzeczywistym na Androida (2-8 graczy) i zastanawiam się, które rozwiązanie dla organizacji wieloosobowej jest najlepsze:

  1. Zrób serwer na PC, a klient na telefon komórkowy, cała komunia przechodzi przez serwer (ClientA -> PC SERVER -> Wszyscy klienci)

  2. Używaj bluetooth, jeszcze nie korzystałem i nie wiem, czy trudno jest tworzyć gry wieloosobowe na bluetooth

  3. Zrobić serwer na jednym urządzeniu, a inne urządzenia łączą się (przez sieć, ale nie wiem, czy trudno jest rozwiązać problem z urządzeniami za pośrednictwem NAT?)

  4. Inne rozwiązanie?


3
Czy planujesz, że będzie to gra lokalna, czy chcesz, aby ludzie mogli grać z ludźmi przez Internet? Hostujesz maszyny do gier?
Tetrad

Wybieram małą grę wieloosobową, planuję stworzyć grę, w której ludzie spotykają się w pokoju, i mogę w nią grać (to temat mojej pracy: multiplayer na platformie mobilnej). Ale jeśli ktoś ma ciekawe rozwiązanie do grania w Internecie, jestem również zainteresowany.
piotrek

Odpowiedzi:


2

Zrzeczenie się; Nie zrobiłem wiele z Javą i platformą Android.

Jednak moje szersze doświadczenie z językami „.net” na platformach Windows Mobile wraz z platformą Windows polega na tym, że utrzymuję dobre 75–90% całego kodu wymaganego do utworzenia i utrzymania połączenia Bluetooth lub połączenia danych sieciowych / obsługiwany przez system operacyjny lub biblioteki, które byłyby potrzebne do uzyskania dostępu do sprzętu.

Jak dotąd wydaje się to prawdą również w przypadku Androida, ponieważ system operacyjny udostępnia metody tworzenia połączeń danych przez Bluetooth lub Internet, a także włącza / wyłącza odpowiedni sprzęt.

Wyobrażam sobie, że Bluetooth byłby preferowaną metodą połączenia, ponieważ byłoby to najtańsze do wdrożenia (bez serwerów). I pozwól na bardziej lokalne spotkanie / grę. Bluetooth jest dość łatwy w użyciu. działa podobnie do zwykłych gniazd sieciowych, gdy wiesz, z którym urządzeniem chcesz się połączyć.

Inne są poprawne, ponieważ Bluetooth v2.0 / v2.1 nie jest obecnie w stanie obsłużyć dużych obciążeń danych. Zmieni się to wraz z ostatecznym rozprzestrzenianiem się wersji 3.0 lub nowszej. i istnieją sposoby na obejście tego ograniczenia.

Na razie jednak istnieje prosta koncepcja, ale złożone rozwiązanie, które możesz wypróbować. Używam go od jakiegoś czasu, jest podobny do peer to peer, ale wymaga jednoczesnej gry na wszystkich urządzeniach. W ten sposób, jeśli połączenie zostanie tymczasowo utracone, spowolnione lub gracz zostanie z jakiegoś powodu upuszczony, nie będzie to miało wpływu na innych graczy. Dzięki temu użytkownicy, którzy zostali upuszczeni, mogą ponownie dołączyć do trwającej gry bez żadnych zakłóceń dla innych graczy lub własnej gry.

CON: Każdy gracz grałby w swoją własną, unikalną instancję gry, która byłaby połączona z innymi graczami, aby powstrzymać gry przed zbytnim zsynchronizowaniem się ze sobą.

CON: Kod pomocniczy może być obszerny / złożony i może być trudny do zrozumienia, w zależności od tego, co chcesz osiągnąć.

PRO: nie wymaga centralnego serwera ani urządzenia! Nie wymaga konserwacji $$$.

PRO: Ciężka wymiana danych miałaby miejsce tylko wtedy, gdy gracz (re) dołączył lub gra została zainicjowana. - Nawet to można zmniejszyć, upewniając się, że wszystkie gry zostaną wygenerowane, i postępuj tak samo przez wszystkich graczy. POTENCJALNIE zmniejszając zużycie energii, które występuje z powodu dużego obciążenia sieci.

PRO: Dane stają się mniej wrażliwe na czas, ponieważ urządzenia miałyby już wszystkie dane potrzebne do utrzymania gry bez innych graczy. Pozwalając Ci skupić się na rzeczywistych doświadczeniach gry dla indywidualnych użytkowników, a nie grupy graczy.

Brakowało mi czasu na wdrożenie pełnego dogłębnego silnika gry, który to wykorzystuje. Gry, które stworzyłem, ograniczały się do odtwarzania gier podobnych do Monopoly i Uno, które wydawały się działać wyjątkowo dobrze.

Najłatwiejszy był ten, który emulował Uno. Zasadniczo ułożyłem talie przegranych po wygraniu przez gracza, aby zapewnić, że gracz wygra wszystkie gry. Ponad 95% czasu nie mogłem powiedzieć, że nie grałem dokładnie w tę samą grę, co wszyscy inni.

Zacząłem budować grę podobną do Master of Orion II, ale sama gra była dla mnie bardzo ważna.


9

To w dużej mierze zależy od gry, ale niektórzy przyjaciele i ja myśleliśmy o tych samych problemach zaledwie kilka miesięcy temu, i oto, co ustaliliśmy. Znów mam nastrój za i przeciw.

Serwer komputerowy

Plusy

  • Wypróbowane i prawdziwe
  • Skalowalne

Cons

  • Musisz napisać „multi-serwer”, który może obsługiwać wiele gier jednocześnie. Prawdopodobnie wykorzysta nieco inną technologię niż telefon z Androidem. Nadal możesz korzystać z Java, ale czy nadal możesz korzystać z pakietów Androida?
  • Może być drogi w utrzymaniu i utrzymaniu
  • Możesz potencjalnie ściągnąć go z jednego dnia z wielu powodów. Fani mogą nie być zadowoleni, jeśli serwer przestanie działać zaledwie kilka miesięcy po zakupie gry.

Peer To Peer z jednym z nich pod kontrolą

Plusy

  • Serwery ad-hoc, na których przyjaciele mogą dołączać do innych przyjaciół, kiedy chcą
  • Niewielkie lub żadne koszty bieżące z twojej strony
  • Kod serwera zostanie zmieszany z kodem klienta, nie trzeba pisać osobnej aplikacji serwera.

Cons

  • Musisz napisać prostą scentralizowaną wyszukiwarkę. (Zrobiłem mój w php + mysql w kilkuset prostych liniach)
  • Serwery działają na telefonach. Telefony mogą być wolne. Czy wszystkie telefony docelowe będą mogły obsługiwać grę?
  • Co się stanie, jeśli telefon serwera zostanie odłączony?
  • Hakerzy mają łatwiejszy dostęp niż klient-serwer

Jeśli chodzi o bluetooth, spodziewałbym się, że będzie podobny do powyższej metody peer to peer. Nie sądzę też, żebyś miał problemy z NAT.

EDYCJA : Zależy to również od twojego doświadczenia. Zacznę od napisania kilku stosunkowo małych gier typu klient / serwer, aby najpierw zawiesić pracę w sieci. To trudny temat, za pierwszym razem łatwo go pomylić. Dostałem mój zaraz po trzeciej próbie. Postępuj zgodnie ze znanymi wzorami i nie próbuj niczego wymyślić.


Nie sądzę, że można tego dokonać przez bluetooth, wątpię, że obsługuje transmisje: AFAIK łączy tylko jeden host z drugim, ma bardzo niską maksymalną liczbę połączeń i jest wolny.
o0 ”.

4

Jednym z najważniejszych czynników, które należy wziąć pod uwagę, jest niezawodność. Telefony nie są bardzo niezawodne; w rzeczywistości prawdopodobnie powinieneś założyć, że w grze dla 8 osób ktoś może się rozłączyć (połączenie przychodzące, zły odbiór, gracz kończy pracę ...)

Mając to na uwadze, należy zrozumieć, że należy zminimalizować wpływ odłączonego użytkownika. W drugiej opcji telefon został zasadniczo skonfigurowany jako serwer. Jeśli ten telefon ma MIA, gra jest naprawdę skończona dla wszystkich graczy.

John omówił zalety i wady tradycyjnej architektury serwera <-> serwera. Jest to prawdopodobnie najbardziej odporny sposób na zapewnienie każdemu niezawodnego trybu wieloosobowego.

Możesz również rozważyć technikę na wzór symulacji krok po kroku. Można to zrealizować wyłącznie w trybie peer-to-peer. Ogólna idea jest taka, że ​​od każdego klienta oczekuje się wysyłania aktualizacji (serii poleceń lub ich braku) na każdym etapie symulacji. W kolejnym etapie symulacji polecenia każdego gracza są stosowane do logiki gry. Wiele gier RTS wykorzystuje tego rodzaju schemat sieci.

Technika może być trudna do wdrożenia i może być bardzo trudna do debugowania. Jest to z pewnością trudniejsze niż posiadanie bardziej tradycyjnej architektury klient-serwer. Oznacza to również opóźnienie między wkładem gracza a momentem, w którym gra odpowiada na dane wejściowe. Jeśli jednak jeden gracz odpadłby, pozostali gracze mogliby po prostu wykluczyć go z gry i kontynuować. Może także potencjalnie zmniejszyć ruch w sieci w porównaniu do innych programów.

Jeśli chcesz dowiedzieć się więcej o tej technice, zacznij od tego doskonałego artykułu na ten temat. W przeciwnym razie zdecydowanie odradzałbym schemat sieci, w którym pojedynczy telefon jest odpowiedzialny za sesję gry wieloosobowej, i sugerowałbym prostszą architekturę serwera <-> serwera.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.