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?
Odpowiedzi:
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.
źródło
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.
źródło
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 ......
źródło
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.
źródło