Gra w Javie - czy jest sens?

0

Witam serdecznie.

Jakiś czas temu poznałem język JAVA i mimo iż nie jestem mocno zaawansowanym programistą JAVY, bardzo lubię ten język.

Postanowiłem sobie - w ramach podnoszenia własnych umiejętności - napisać grę, coś w stylu 'HEROES of Might and Magic', z taka różnicą, iż w zamyśle miałaby to być gra sieciowa przeznaczona dla wielu użytkowników. Rozumie, iż muszę mieć serwer na którym będzie aplikacja zarządzająca poszczególnymi graczami, wysyłająca im odpowiednie dla nich dane, serwer bazodanowy z wszelkimi niezbędnymi informacjami i etc.

W związku z tym mam pytanie:

  1. Czy jest sens pisanie takiej gry właśnie w JAVIE? Chodzi mi o porównanie gry napisanej w JAVIE z np. analogiczna grą napisaną w którymś z kompilowanych języków (np. C++).
  2. Jak jest z wymaganiami pamięciowymi dla samej aplikacji gry po stronie użytkownika, a jakie wymagania pamięciowe i mocy obliczeniowej powinien spełniać serwer?
  3. Kwestie połączenia sieciowego aplikacji gry z serwerem. Jaką przepustowość minimalną powinno mieć łącze by gracza mogli swobodnie grać, bez przestojów i etc. ? Oczywiście niezbędny pakiet graficzny dla danego gracza będzie na jego własnym komputerze.

Z góry dzięki za wszelki rady i wskazówki co do dalszego rozwoju :)

Pozdrawiam :)

0

Sam jestem zwolennikiem javy więc pomysł uważam za bardzo dobry :) A patrząc na to trochę bardziej stronniczym okiem:

  1. Jest sens pisania tej gry w Javie. Co prawda będzie ona w jakimś stopniu wolniejsza niż jej odpowiednik w c++ ale do twoich zastosowań (gra herosopodobna) myślę że nie powinno być problemów z wydajnością. W kwestii porównania z c++ na pewno będzie ci łatwiej tworzyć i utrzymywać kod (standard javy obejmuje znacznie więcej technologii niż standard c++, że już o javadocu nie wspomnę)
  2. Wymagania - tu musisz mieć na uwadze, że gra będzie zużywać więcej ramu niż jej odpowiednik w cpp. Po prostu - narzut maszyny wirtualnej
  3. Kwestia wymagań sieciowych tak na prawdę zależy od ciebie - w zależności jak zaimplementujesz protokół klient-serwer. W praktyce robi się chyba tak, że po jego zaprojektowaniu bada się statystyczny ruch w sieci i na tej podstawie określa wymagania

Oczywiście dużo osób będzie gadać "a bo to JVM, wolne itp." ale musisz pamiętać, że nie takie były założenia javy. Jej założeniem było "wore" (write once - run everywhere), szybkie tworzenie kodu i łatwe jego utrzymanie

0

Dzięki :)

No właśnie wirtualna maszyna Java jest trochę wolniejsza ... Chciałbym, żeby ta moja gra pracowała równie szybko jak gry napisane w kompilowanych językach, no ale ja wolę pisać w Javie niż w C ...

Co do statystycznego badania ruchu w sieci, to trzeba będzie przewidzieć sytuację, kiedy ten ruch może bardzo wzrosnąć, więc będę musiał poszukać jakiegoś sprawdzonego rozwiązania. No ale do tego to jeszcze daleka droga ....

Fabułę wstępną już mam, teraz tylko trzeba zaprojektować bazę danych oraz zacząć projektować szkielet aplikacji .

Wszelkie rady co do tworzenia szablonu aplikacji, bazy danych, metod komunikacji, metod użytkownika i etc mile widziane :))

Pozdrawiam :)

0

Postanowiłem sobie - w ramach podnoszenia własnych umiejętności - napisać grę, coś w stylu 'HEROES of Might and Magic', z taka różnicą, iż w zamyśle miałaby to być gra sieciowa przeznaczona dla wielu użytkowników.

kalamita napisał(a)

No właśnie wirtualna maszyna Java jest trochę wolniejsza ... Chciałbym, żeby ta moja gra pracowała równie szybko jak gry napisane w kompilowanych językach, no ale ja wolę pisać w Javie niż w C ...

Java nie jest wolniejsza, jeśli robisz strategię turową.
Przykładem z którego możesz korzystać jest FreeCol. Dokumentacja jest na stronie.

0

@kalamita, obecnie JVM jest jakieś 5% wolniejszy niż kod w C++, jest taka zabawka zaszyta jak JIT Compiler, która zamienia bytecode na kod środowiska systemu operacyjnego. W dodatku jest to robione gdy JVM wykryje, że dany fragment jest często używany. Wydajność może być problemem przy grafice, ale też są już dobre biblioteki (choćby nowe OpenGL), które radzą sobie nieźle.

Co do projektowania to wypisz co ma robić każdy element. Później kazdy punkt rozbij na drobniejsze elementy i znowu opisz. Po kilku podejściach napisanie kodu przy dobrej dokumentacji będzie przyjemnością.

0
  1. Jest sens.
    Jako przykład zwykle jest dawany Jake 2, przepisany Quake 2 na Jave.
    http://bytonic.de/html/jake2.html
  2. Jak gra to pewnie grafika, przy Javie jest problem (przynajmniej był jak ja się w pisanie gier bawiłem), nie znalazłem nic co by obsługiwało DirectX pozostaje tylko openGL.
  3. Szczerze mówiąc nie mam pojęcia. Ale wątpię by jakieś specjalne wymagania, przychylam się do tego co poprzednik napisał.

Jednak jeśli to ma być projekt komercyjny jednak nie eksperymentował bym z Java. Jeśli nie to nawet polecam.

PS.
Ja używałem http://www.jmonkeyengine.com/

0

Drobna uwaga - gra w C++ wcale nie musi być szybka, mały przykład - http://wesnoth.org/ To cholerstwo wygląda nie lepiej niż HoMM 3, na starym Pentium III + 384MB się tnie momentami...

Podsumowując - zdecydowanie bardziej liczy się sensowny algorytm i implementacja niż język.

0

święta prawda Świętowicie :)

0
Koziołek napisał(a)

@kalamita, obecnie JVM jest jakieś 5% wolniejszy niż kod w C++

Nie siej propagandy z webcastów suna...

Ostatnie testy pokazują że JVM od Java 6 jest o połowę wolniejsza od C++. I to w trybie server po czasie przewidzianym na adaptacje JIT'a.

Suma sumarum jest to bardzo dobry wynik dla języka z JIT'em pod sobą. Java jest na pewno dobrym wyborem na serwer bo na pewno łatwiej będzie ci napisać wydajny soft serwerowy w Javie niż C++.

Co do samej gry tego typu to raczej wydajność nie będzie tutaj przeszkadzać. Bardziej zastanów się czy nie chciał byś skorzystać z jakiś frameworków wspomagających robienie gier. Java jest tu uboga w porównaniu do C/C++ lub C#. Tak czy owak pisząc grę w Javie będziesz się dużo odwoływał do bibliotek napisanych w C/C++ żeby mieć jakiś sensowniejszy dostęp do obsługi multimediów i peryferiów.

@Koziołek proszę Cię! tylko nie wyskakuj tutaj z JavaFX...

0

@walec51
Jeszcze Królik wpadnie tutaj ze Scalą i dopiero będzie się działo...

Świętowit napisał(a)

Drobna uwaga - gra w C++ wcale nie musi być szybka, mały przykład - http://wesnoth.org/ To cholerstwo wygląda nie lepiej niż HoMM 3, na starym Pentium III + 384MB się tnie momentami...

Wesnoth może biednie wyglada, ale jego mechanika jest znacznie bardziej złożona i skompilowana od HoMM3. Ponadto jest ciągle rozwijany. Nie mozna od twórców wymagać aby z każdą kolejna wersją cofali się w wymaganiach sprzętowych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1