2011-10-04 11 views
7

Muszę zaimplementować prostą wycieczkę w grze klient-serwer w Javie. Niestety, dopiero zaczynam od programowania sieciowego i mam pewne problemy z wyborem odpowiedniego rozwiązania.Gra typu klient-serwer w Javie z apletami

Załóżmy, że tworzę grę w szachy, w której dwaj klienci mogą łączyć się z serwerem, uwierzytelniać się przy użyciu swojej nazwy użytkownika i haseł oraz odtwarzania. Klienci muszą być zaprogramowani jako aplety (thin clients), ale nie wiem, co powinienem użyć jako serwer.

To znaczy, czytałem o kilku różnych możliwościach, takich jak RMI, gniazda, serwlety, ale wciąż nie wiem, który z nich pasuje do moich potrzeb. Jestem nieco zdezorientowany, ponieważ nie do końca rozumiem, w jaki sposób komunikacja zostanie przeprowadzona.

Czy powinienem utworzyć serwer wykonywalny, który działałby cały czas na serwerze i czekał na graczy? Wydaje mi się to dziwnym sposobem. Lub jest jakiś prostszy sposób to zrobić, np. czy mogę stworzyć serwlet i umieścić go na serwerze Tomcat, aby serwer działał tylko wtedy, gdy są jacyś gracze? Czy ten serwlet może komunikować się z apletami (klientami) i na odwrót? *

Byłbym bardzo wdzięczny za wskazówki.

Odpowiedz

3

mogę zrobić aplet i umieścić ją na serwerze Tomcat tak, że serwer będzie działać tylko wtedy, gdy istnieją gracze

instancja

Tomcat byłoby tak czy inaczej, w przeciwnym razie gracze nie mógł połączyć się to.

Co można zrobić, aby zapewnić serwer, który uruchamia nową instancję gry, gdy gracze się łączą. Sam serwer musiałby zawsze działać.

Jeśli chodzi o technologię, sugeruję, aby używać tego, co jest dla niego wygodne. Nie przejmuj się jeszcze wydajnością, ale spróbuj już zacząć.

Więc jeśli masz już pewną wiedzę z technologią komunikacyjną, spróbuj tego użyć. Po prostu pamiętaj o ograniczeniach i weź je pod uwagę (np. Formaty wiadomości, komunikacja push/pull itp.).

0

Jeśli szukasz środowiska aplikacji Netwrok w Javie, możesz rozważyć przeczytanie o Apache MINA. Dokumentacja twierdzi, że "pomaga użytkownikom łatwo tworzyć aplikacje sieciowe o wysokiej wydajności i wysokiej skalowalności". i obsługuje różne transporty, takie jak TCP/IP i UDP/IP za pośrednictwem Java NIO. Podsumowanie funkcji można zobaczyć here.

Moje osobiste doświadczenie z MINA jest do tej pory dobre i stosowane w różnych projektach. Jedna implementacja przypomina twoją sprawę, nie jest to gra multiplayer, ale wymaga wielu apletów łączących serwer. Uważam, że MINA bardzo dobrze radzi sobie z wieloma sesjami. Robi to bardzo zgrabnie. Co więcej, jest bardzo łatwy do skalowania i utrzymywania kodu. Łatwe dodawanie filtrów i definiowanie protokołów.

Nie ma. dobrego tutorial available to jump start i początkowa konfiguracja jest bardzo łatwa do zrobienia.

Jednak, jak każdy nowo powstający projekt opensource, ma również swoje problemy. Są to: społeczność internetowa jest niewielka, a dokumentacja, choć szybko się poprawia, jest bardzo ograniczona.

Oficjalny user guide obejmuje większość podstaw i jest dobrym punktem wyjścia, jeśli chcesz dowiedzieć się więcej.

0

Zależy od tego, na jaką grę grasz.Aplety są zwykle dobrym wyborem do prezentacji animacji (całkowicie w Javie) i dostępne z poziomu przeglądarki. Przykłady z rzeczywistego świata skierowałyby się na Flasha w celu prezentacji klienta.

Jeśli twoja gra to gra typu skręt (szachy, karty itp.), Możesz wdrożyć swoją logikę w postaci serwletów lub serwisów internetowych lub ajaxów, z odpowiednim użyciem html lub baz danych do przechowywania sesji na żywo po stronie serwera . Jeśli Twoja gra jest bardziej zaangażowana pod względem komfortu użytkowania (na przykład przykład typu Need For Speed), tworzenie niestandardowego serwera ma więcej sensu.