Czy istnieje dobry powód, dla którego nie powinienem używać apletu Java do gry?

9

Chcę stworzyć grę opartą na przeglądarce dla wielu graczy. Zaletą korzystania z apletu jest to, że mogę stworzyć klienta i serwer w tym samym języku (java / closure / scala / etc). Wiem, że jest html5 i javascript, ale javascript po stronie serwera nie jest tak dojrzały, jak platforma Jvm i obsługa przeglądarki jest nadal nieco niestabilna.

Aplety nie wydają się być powszechnie używane (z wyjątkiem Runescape), ale czy istnieje powód, dla którego są nieodpowiednie, czy tylko z powodu złej reputacji, którą rozwinęli w dzieciństwie?

ryeguy
źródło
1
Może dlatego, że niewiele osób robi gry internetowe w Javie i preferuje Flash?
Kaczka komunistyczna
Java po prostu nie jest już tak łatwo dostępna w przeglądarkach (w porównaniu do Flasha, lub w każdym razie javascript) i istnieje duża szansa, że ​​twoi odbiorcy docelowi go nie zainstalują. Nadal możesz używać Java po stronie serwera, jak tylko chcesz, niezależnie od technologii po stronie klienta, nie rozumiem argumentu, że „javascript po stronie serwera nie jest tak dojrzały jak platforma jvm”.
falstro

Odpowiedzi:

9

Oczywiście nie są do tego nieodpowiednie, o czym świadczą RuneScape i Minecraft oraz inne mniejsze gry apletowe Java. Istnieją także biblioteki dla sprzętową akcelerację grafiki 3D ( lwjgl , JOGL ). To po prostu nie jest popularny język w społeczności twórców gier.

Musisz jednak wziąć pod uwagę obsługiwane platformy. Windows i Linux mają świetne wtyczki Java, Mac ma przyzwoitą (z mojego doświadczenia działa na pełnych obrotach w Safari), ale oczywiście platformy takie jak iPad i system operacyjny Chrome Google zostałyby całkowicie pominięte, ponieważ nie mają i prawdopodobnie nie będą kiedykolwiek mają na sobie wirtualną maszynę Java.

Ricket
źródło
Dodatkowo musisz pomyśleć o swoim rynku docelowym - gracze Minecraft oczywiście mogą poradzić sobie z przejściem na java.com i zainstalowaniem go, ale wiele „tłumu eksploratorów Internetu” może nie być.
Jari Komppa
Jednak Minecraft ma się dobrze, ponieważ użytkownicy ci mogą po prostu pobrać wersję wykonywalną, która zawiera JRE i nie wymaga takiej instalacji; to po prostu działa ™.
Ricket
2
Myślę, że java jest świetnym rozwiązaniem, jak uzyskać dostęp do GPU w przeglądarce bez zmuszania użytkownika do zainstalowania czegoś (80-85% użytkowników ma zainstalowaną Javę ... w tym także noob Explorer :))
Notabene
6

Używam Javy do pisania gier, a ja używałem C ++ do pisania gier i odkryłem, że Java jest w porządku, o ile tylko pamiętasz, jakie są mocne i słabe strony Javy. Dwie duże zalety dla mnie, programowania w Javie, to szybkość programowania i możliwość wdrażania / przenośności. Czasy kompilacji są znacznie szybsze niż w VC ++ (nie mogę jeszcze mówić w XCode lub Clang), co oznacza, że ​​mogę szybciej rozwiązywać problemy. Ponadto, ponieważ Eclipse stale się kompiluje, popełniam mniej błędów pisowni. Nigdy nie napisałem fragmentu kodu C ++, który „po prostu działa” na innym systemie lub kompilatorze. W Javie jest to norma.

Z drugiej strony Java ma kilka poważnych wad. Wydajność jest często podawana jako powód, dla którego nie należy używać Javy, ale odkryłem, że tak długo, jak kodujesz w określony sposób, Java może działać całkiem dobrze. Problem polega na tym, że określony sposób kodowania jest sprzeczny z tym, co wielu ludzi Java uważa za dobry projekt.
Sercem Javy jest „śmieciarka”, to system zarządzania pamięcią. Podczas pisania wydajnego kodu należy unikać dynamicznego przydzielania każdej klatki w dowolnym języku, a dotyczy to zwłaszcza Javy. Jeśli wyłączysz moduł wyrzucania elementów bezużytecznych z powodu niechlujnej nowości, możesz pożegnać się z płynną liczbą klatek na pożegnanie. Po drugie (i najbardziej irytujące) Java nie obsługuje typów danych użytkowników 1. klasy. Każdy typ danych użytkownika w Javie jest tworzony w zasadzie jako wskaźnik do klasy, przydzielany na stercie. Jest to okropne dla współbieżności pamięci podręcznej, że nie możesz mieć takich obiektów jak tablica obiektów Vector3 i mieć je jednocześnie w pamięci - możesz mieć tablicę wskaźników Vector3, ale to wcale nie to samo. Ogólnie rzecz biorąc, zamiast tego należy używać przesunięć w dużych tablicach typów pierwotnych.

Luther
źródło
3

Nic złego w apletach Java do gry internetowej. Napisałem grę typu roguelike open source ( Tyrant ) w Javie i działa ona bardzo dobrze jako aplet.

Niektóre duże plusy Java z mojego doświadczenia:

  • Przenośność jest doskonała - biorąc pod uwagę złożoność Tyranta, było dość imponujące, że udało mi się uzyskać dokładnie ten sam skompilowany kod, aby działał dobrze w systemach Windows, Mac i Linux.

  • Nie musisz się martwić o dziwactwa przeglądarki.

  • Przy odrobinie sprytu możesz sprawić, że ten sam kod będzie działał zarówno jako aplet, jak i jako samodzielna aplikacja komputerowa

  • Wydajność jest świetna przy założeniu nowoczesnej JVM.

  • Wszystkie zwykłe plusy Javy pod względem ogromnej gamy bibliotek / API typu open source itp.

Pamiętaj tylko o następujących kwestiach:

  • Musisz podpisać aplet / uzyskać uprawnienia uprzywilejowane, jeśli chcesz robić takie rzeczy, jak przechowywanie danych w lokalnym systemie plików lub dostęp do bibliotek rodzimych. Może to stanowić barierę dla niektórych użytkowników.

  • Czas uruchamiania jest nieco wolniejszy niż Flash lub JavaScript. Z drugiej strony wydajność jest lepsza, gdy JVM jest gotowy do pracy ......

  • Java jest językiem odśmiecania pamięci, więc czasami ma bardzo niewielkie przerwy w GC. Nie jest to naprawdę problem w przypadku gier casual / RPG / strategicznych, ale może być problemem w przypadku wysokowydajnych gier 3D FPS, w których próbujesz utrzymać stałą, wolną od jitterów klatkę na sekundę 120 FP ......

mikera
źródło
1

Jeśli planujesz, aby gra była bezpłatna lub chcesz zarabiać na tym samodzielnie, Java jest w porządku. Jednak nie ma ustalonego, szeroko rozpowszechnionego modelu sponsorowania gier, takiego jak Flash, więc zarabianie pieniędzy byłoby nieco trudniejsze.

Gregory Avery-Weir
źródło
Czy wyczuwam okazję? :)
Ricket
Nie jestem pewien, czy model sponsorowania stanowi dobrą ofertę dla twórców. Lepiej sprzedać swoją pracę za rozsądną cenę, niż wziąć grosze z witryny portalu, która zarabia pieniądze z reklamy.
Luther
Luther: dość prawda. To, że model został ustanowiony, nie oznacza, że ​​jest najlepszy.
Gregory Avery-Weir