Odpowiedź
Tak, sprawdź tę listę , aby uzyskać dowód. To są gry stworzone w Javie przy użyciu The Lightweight Java Game Library (LWJGL). Jest to framework niskopoziomowy, który zapewnia OpenGL dla grafiki wysokiej jakości i OpenAL dla dźwięków. Zapewnia również wejściowy interfejs API. Dzięki nim możesz dość łatwo zacząć poważnie tworzyć gry w Javie.
Obecnie piszę swoją drugą grę 3D jako projekt hobby w Javie i po prostu ją uwielbiam. Kiedyś pisałem swoje gry w C ++, ale po przejściu na Javę nie ma już powrotu. Obsługa wielu systemów operacyjnych w Javie może być bardzo łatwa, na przykład moja poprzednia gra Java, którą tworzyłem w systemie Windows przez rok, od razu działała w Linuksie i OS X z tylko jednym błędem, bez żadnej potrzeby kompilowania czegokolwiek na tych platformach.
Z drugiej strony, z Javą masz kilka problemów.
- Garbage collector. Jak powiedzieli inni, niedeterministyczne zarządzanie pamięcią jest problemem i musisz o tym pamiętać.
- Brak bibliotek zewnętrznych. Większość dostępnych bibliotek nie obsługuje języka Java. Z drugiej strony zawsze masz możliwość wywołania tych natywnych bibliotek również z Javy, ale jest to więcej pracy. Istnieją również porty Java lub gotowe opakowania dostępne dla popularnych bibliotek, na przykład używam JBullet – port Java biblioteki Bullet Physics . Z drugiej strony Java ma wbudowaną ogromną bibliotekę klas, co zmniejsza zapotrzebowanie na biblioteki innych firm, które nie są związane z grami. Brak bibliotek nie był dla mnie problemem, ale mogę sobie wyobrazić, że może być dla innych.
- Java nie jest obsługiwana przez popularne konsole do gier i nie ma łatwego przejścia na te z Javy jak wiem. Z drugiej strony Android, który jest popularną platformą mobilną, wykorzystuje jakąś formę Javy. Jest to również opcja, ale nie z wyjątkiem tego samego kodu Java, który działa zarówno na komputerze PC, jak i urządzeniu z systemem Android.
- Mniejsza społeczność. Większość programistów gier używa C ++ iz mojego doświadczenia często nie lubi Javy. Don ” nie oczekuję takiej pomocy od innych. Nie oczekuj pracy przy tworzeniu gier bez umiejętności C ++.
Odpowiedź
Niezupełnie. Tutaj po pierwsze, jest bardzo mało istniejących bibliotek dla Javy w porównaniu z praktycznie wszystkim , co jest dla C ++.
Po drugie, Java jako język po prostu nie nadaje się dobrze do tworzenia gier – mam na myśli, na przykład, jeśli masz do czynienia z buforami GPU, Java nie zapewnia funkcji językowej, która pomoże ci w upewnieniu się, że są one poprawnie zablokowane i odblokowane lub usunięte, co C ++ nie. Poza tym jest problem z wydajnością, a GC jest niedeterministyczna, co jest bardzo złe dla gry.
Nigdy nie widziałem żadnej gry nie-indie, która spędzałaby dużo czasu w język, który nie został skompilowany do kodu natywnego przed wykonaniem, a nawet gry niezależne, które to robią, są rzadkością.Więc teraz uważam, że po prostu nie da się tego zrobić.
Ponadto, jeśli będę teraz nadal uczyć się i ulepszać Javę, a później okaże się, że Muszę nauczyć się C ++, czy zmiana będzie trudna?
Tak, absolutnie tak. Java i C ++ są bardzo różne, pomimo ich powierzchownych podobieństw składniowych. Podczas nauki języka C ++ doświadczenie w Javie praktycznie nic nie znaczy.
Rozgrywka zamiast grafiki to realny wybór i widać to po sukcesie gier takich jak Terarria i Minecraft. Ale jeśli zamierzasz tworzyć grafiki srs, to nie będzie to wykonalne w Javie.
Komentarze
Odpowiedź
Więc naprawdę poważnie podchodzę do tworzenie gier, czy Java nadal jest opłacalnym wyborem? Wielokrotnie próbowałem nauczyć się C ++, ale nie lubię tego języka. Naprawdę nie wiem dlaczego, ale zwykle, kiedy próbuję się uczyć, nigdy nie rozumiem tematu.
Jeśli powodem wyboru języka Java jest to, że nie rozumiesz języka C ++, Twoje programy Java nie będą wystarczająco szybkie, aby zapewnić wysoką jakość grafiki. Używanie języka wyższego poziomu powinno być spowodowane tym, że czyni cię bardziej produktywnym, a nie dlatego, że nie możesz zrozumieć języka niższego poziomu.
Nie uważam, że pisanie gry w tym języku jest całkowicie złym pomysłem Java, zwłaszcza jeśli gra jest prosta, ale jeśli używasz jej jako podpórki, od razu napotkasz problemy z wydajnością.
Krótko mówiąc, czy Java może być traktowana poważnie, jeśli chodzi o tworzenie gier na poważnie. Obejmuje to ciężką grafikę, szybką grę bez opóźnień i być może łatwe przejście na konsole?
-
Ciężka grafika: Możliwe, ale w Javie / LWJGL zamierzasz robić to samo, co w C ++ / GL: zapisywać bajty do buforów GPU i / lub używać przestarzałe listy wyświetlania, takie jak Minecraft. Jeśli nie rozumiesz zarządzania pamięcią, też nie zrobisz tego poprawnie.
-
Szybka rozgrywka bez opóźnień: nie jest to łatwe zadanie w żadnym języku i jest większe prawdopodobieństwo, że strzelisz sobie w stopę w obie strony bez zastanawiania się.
-
Nie, Java nie będzie dostępna na konsolach.
Komentarze
- Na marginesie, co zastąpiło listy wyświetlania, kiedy były przestarzałe?
- @Suds: programowalny potok, jak sądzę.
- ha! już to omówiłem. VBO : gamedev.stackexchange.com/questions/22170/…
- Platformy mobilne mogą być uważam za konsole. Zdaję sobie sprawę, że prawdopodobnie mówił o wielkiej trójce, ale Android używa Javy i jest dla niej tworzonych wiele gier.
- @ Amplify91 tak, kilka gier jest napisanych w Javie dla Androida. Ale większość dobrze gry i prawdopodobnie wszystkie gry intensywnie graficzne lub wieloplatformowe są napisane w C ++ przy użyciu zestawu Android NDK.
Odpowiedź
Eksperyment Doświadczony programista z reguły zna wiele języków programowania – nauka dodatkowych języków programowania nie jest zbyt trudna, jeśli znasz jeden dobrze. Jednak zdecydowanie zalecałbym, aby C ++ nie był twoim pierwszym językiem, a prawdopodobnie też nie drugim.
Dzieje się tak dlatego, że C ++ uzyskuje dużą wydajność, nie wykonując żadnego znaczącego sprawdzania błędów w czasie wykonywania. Na przykład dostęp do elementu znajdującego się poza końcem tablicy w Javie zawsze generuje wyjątek informujący programistę dokładnie, co jest nie tak.W C ++ możesz mieć szczęście i nastąpi awaria natychmiast, ale bardzo często po cichu usuwa niektóre inne dane, a błąd nie pojawi się dużo później .
Proponuję na razie pozostać przy Javie (lub przełączyć się na C #, jeśli wolisz). Pozwoli ci to załatwić sprawy szybciej niż w C ++, a wydajność na pececie nie powinna stanowić problemu.
Pomyśl o nauce C ++ po ukończeniu kilku projektów w bezpieczniejszych językach. C ++ jest tym, czego będziesz potrzebować w większości profesjonalnych prac związanych z tworzeniem gier.
Zauważ, że z wyjątkiem C # / XNA, pobranie gry, którą napisałeś na konsolę jako minimum, wymaga założenia firmy z biuro i dysponujemy dużym budżetem na sprzęt programistyczny i inne wydatki.
Komentarze
Odpowiedź
Zastrzeżenie: To nie jest dokładną odpowiedzią na twoje pytanie. Próbowałem jednak (pokrótce) wspomnieć o kilku kwestiach, które mogą Państwa zainteresować.
Powodem, dla którego widzisz tak wiele na temat C ++ jest to, że C ++ jest nadal standardem branżowym – najpopularniejszym językiem dla konsol itp.
Java nie jest często używana. Minecraft to dość popularna gra, która rozrosła się dzięki Javie; ale graficznie nie jest taki wspaniały. Spiral Knights nie jest zły – również wykonany w Javie, ze znaczną grafiką.
Jeśli lubisz Javę, C # jest bardzo podobny pod względem składni, z tą zaletą, że może współdziałać z C ++ – tak niskopoziomowe rzeczy można zrobić w C ++, jeśli to konieczne. Unity może używać C # do tworzenia skryptów, a XNA to doskonały wybór.
Ponownie, Java nie jest szeroko używana. Jeśli chcesz styl i składnia, myślę, że C # będzie dla Ciebie bardzo podobnym, bardzo przyjemnym doświadczeniem w programowaniu.
Mam nadzieję, że spełnią się Twoje marzenia, po drodze to świetna zabawa 🙂
Komentarze
Odpowiedź
Stary, prosta odpowiedź na pytanie „Czy Java wykonalne dla tworzenia gier „to oczywiste tak. Do tworzenia gier można używać dowolnego języka programowania. To nie znaczy, że powinien .
Prawdopodobnie to, co Cię odstrasza od C ++ ( zarządzanie pamięcią niskiego poziomu, brak czyszczenia pamięci, konieczność zwracania uwagi na wskaźniki, struktury jako tablice itp.) to rzeczy, których powinieneś się nauczyć, jeśli chcesz wykorzystać komputer najbardziej wydajne zasoby .Twoje gry będą działały najlepiej, jeśli najefektywniej wykorzystujesz zasoby komputera.
Java robi pewne rzeczy (np. Sprawdzanie granic tablicy), dzięki którym działa wolniej. W ten zoptymalizowany kod przykładowego szumu Java Perlin, autor skomentował „(dostęp do tablicy jest o wiele wolniejszy niż dostęp do elementów członkowskich)”. Takie rzeczy są dość sprzeczne z intuicją pochodzącą z tła C ++. Ale w Java, takie rzeczy są.
Mówię, że przestań unikać pocisku, naucz się C ++ i używaj go.
Odpowiedź
To nie odpowiada na twoje pytanie; Wydaje się, że problemy z grafiką i konsolami są czymś, co bardzo musisz wziąć pod uwagę. GC wpływa również na wydajność. Ale o czym piszę:
Jeśli piszesz duże, złożone programy obiektowe, będziesz je pisać 5 razy szybciej w Javie niż w C ++. Również konserwacja będzie znacznie łatwiejsza. Przerzuciłem się (wprawdzie w przypadku oprogramowania innego niż gry) i moja produktywność gwałtownie wzrosła. C #, kolejna dobra alternatywa, jest trudniejsza do nauczenia niż Java, ponieważ jest go o wiele więcej. Kiedy się go zna, można pisać kod nawet szybciej niż w Javie; oferuje wiele sztuczek. Jednak znajduję te sztuczki może utrudnić konserwację. Jest jeszcze dokument Java, który pomaga z bibliotekami Sun i Twoim własnym starym kodem. C # nie ma nic podobnego.
Zrobiłem wielką, włochatą grę w Javie i uznałem, że język jest idealny, ale moja grafika była elementarna i nie była to strzelanka, w której jedna dziesiąta sekundy była wiecznością dla graczy. Spodziewam się również, że później wiele do tego dodam, podczas gdy myślę, że większość ludzi po prostu pisze zupełnie nową grę.
Odpowiedź
Powinieneś to zrobić w języku, który znasz najlepiej, dopóki nie będziesz mógł sobie pozwolić na formalną edukację (licencjat?) w dziedzinie informatyki, kładącą nacisk na projektowanie gier . Możesz użyć swojej gry, aby uzyskać stypendium, zwłaszcza jeśli możesz powiedzieć „Zrobiłem to bez formalnego szkolenia z języka Java”
Nowoczesne maszyny JVM, nawet ten z Oracle, ma wiele, wiele funkcji, które pozwalają rozwiązać problemy, które ludzie tutaj poruszali. Możesz użyć różnych modułów odśmiecania pamięci, aby uzyskać bardziej deterministyczne zachowanie tego modułu. Nie mam dużego doświadczenia z bibliotekami 3D – tylko trochę z Java3D – ale wydaje się, że nikt tutaj nie narzekał na nie. Analiza ucieczki umożliwia teraz eliminację blokad i znacznie szybszą / pomijalną alokację bardzo krótkotrwałych obiektów.
Problem polega na tym, że niezależnie od tego, czy wybierzesz Javę lub C ++, będziesz musiał nauczyć się, jak prawidłowo używać współbieżności i dobrze zrozumieć zarządzanie pamięcią. W końcu możesz równie łatwo zepsuć malloc
, jak w przypadku new
. Nie wiem, jakie są te narzędzia dla C ++, ale narzędzia do profilowania dla Javy są dość łatwe w użyciu, darmowe i zintegrowane z IDE. Możesz ich używać do śledzenia problemów z wydajnością i uczenia się .
Komentarze