Wdrożenie Java i Steam JVM

10

Obecnie zastanawiam się nad moimi opcjami tworzenia gier i wdrażania w Steam Greenlight. Naprawdę podoba mi się Java z libGDX, szczególnie ze względu na jej wieloplatformowy potencjał Androida i rozumiem, że możliwe jest wdrażanie gier Java na Steam. Czuję się też bardzo dobrze, gdy muszę stworzyć jakieś opakowanie, aby moja gra Java mogła wywołać interfejs API Steamworks w C ++.

Moje pytanie dotyczy tego, na jakie problemy z wdrażaniem mogę się natknąć. W szczególności z instalacją środowiska JRE na komputerze klienckim. Widziałem wielu instalatorów Steam sprawdzających środowisko uruchomieniowe .NET. Czy powinienem wykonać podobne sprawdzenie i zainstalować środowisko JRE?

Czy są jakieś rażące powody, dla których wdrożenie Java na Steam byłoby koszmarem we wdrożeniu i utrzymaniu w porównaniu do czegoś takiego jak C # przy użyciu Monogame?

spectacularbob
źródło

Odpowiedzi:

15

Jako osoba, która niedawno wydała grę libGDX na platformie Steam, w przeciwieństwie do platform .NET i DirectX, Steam nie zapewnia w Twojej aplikacji opcji automatycznego sprawdzania i pobierania wymaganej wersji tych bibliotek.

Uciążliwe jest zmuszanie użytkownika do instalowania Javy jako biblioteki systemowej, ponieważ większość nadal postrzega środowisko JRE, zwłaszcza Oracle, jako coś w rodzaju dziury w oprogramowaniu reklamowym / bezpieczeństwie i nie chce mieć go zainstalowanego na swoim komputerze. Wciąż istnieje piętno w stosunku do aplikacji Java na pulpicie, więc trzeba uważać na użytkownika.

To, co polecam, to użycie aplikacji packr libgdx , która automatycznie spakuje twój słoik i zasoby odpowiednim, prywatnym OpenJDK, który jest otwarty do używania i dystrybucji z twoim oprogramowaniem. Alternatywnie możesz to zrobić ręcznie, chwytając nieoficjalną kompilację OpenJDK , której używają w packr i dołączając ją do twojego projektu.

Ja osobiście wybieram tę ostatnią opcję, ponieważ pobieram najnowszą wersję i pakuję wszystko, łącznie z dystrybucją do Steam, wszystko zawarte w skrypcie budowania stopni mojego projektu.

Dołączenie własnego środowiska JRE / JDK jest lekkie, dodaje jedynie 80 MB do gry i jest nieinwazyjne. Zapewnia to również, że wersja Java, z którą uruchamiana jest aplikacja, jest zawsze potrzebną wersją, zamiast powodować konflikt z tym, co ma system.

Edycja: 13 marca 2017 r

Od nieco ponad roku korzystam z OpenJRE Azul zamiast nieoficjalnych kompilacji z Alexkasko. Są szeroko stosowane i obsługiwane nawet w środowiskach korporacyjnych. Dodatkowo obsługują Java 8 i nowsze wersje, gdzie w momencie mojego przełączenia nieoficjalne wersje repozytorium kompilacji utknęły w Javie 7.

Odkąd się zmieniłem, istnieje także repozytorium open source , które nadal udostępnia wersje openjdk / jre zbudowane przez społeczność, jeśli chcesz z nich korzystać. Obie są dobre.

nhydock
źródło
1

Myślę, że sprawdzenie środowiska wykonawczego użytkownika jest całkowicie OK, biorąc pod uwagę, że język tego wymaga. Myślę, że w .NET, Java, Python, Lua lub innych językach programowania, które wymagają środowiska wykonawczego, po prostu dlatego, że gra nie może się bez niego uruchomić.

Jeśli masz obawy związane z UX, nie martw się, instalator JRE nie jest zbyt nachalny, a wiele gier ucieka od instalacji środowiska uruchomieniowego, a nawet wielu zależności.

Jeśli chodzi o kwestie prawne, nie wierzę, że znajdujesz się w szarej lub czerwonej strefie prawa. Zgodnie z często zadawanymi pytaniami dotyczącymi licencji można po prostu rozpowszechniać środowisko Java wraz z oprogramowaniem, zgodnie z pozycją:

Czy mogę rozpowszechniać Javę wraz z moim oprogramowaniem?
Tak, możesz dostarczyć Javę do swojego oprogramowania, pod warunkiem przestrzegania warunków licencji na kod binarny Java

To powinny być wszystkie informacje potrzebne do podjęcia świadomej decyzji.

DripDrop
źródło
2
Jeśli użytkownik musi najpierw zainstalować środowisko JRE, nie uzyskasz certyfikatu Steam OS. Źródło: t.co/cEboMGAR2O Możesz połączyć to z OpenJDK.
Benedikt S. Vogler
W przeciwieństwie do innych środowisk wykonawczych, Java nie radzi sobie dobrze z wieloma instalacjami. Jeśli użytkownik ma zainstalowaną Javę 7 i potrzebuje tej wersji dla jednej ze swoich aplikacji, a ty uruchomisz instalator Java 8 ... to po prostu zepsułeś tę aplikację. Dystrybucja docelowego środowiska JRE jest w tym momencie znacznie lepszą opcją.
Cypher
0

Niektórzy użytkownicy mogą nie mieć zainstalowanej Java i nie sądzę, że Steam ma natywny sposób sprawdzania / instalacji Java, ponieważ byłoby to irytujące dla użytkownika, a tylko niewielka część gier na Steam wymaga Java.

Spróbuj dołączyć przenośne środowisko Java Runtime Environment, aby zawsze mieć spójną kompilację Java do uruchamiania gry, jestem pewien, że jest kilka takich, które będą odpowiadać Twoim potrzebom.

Syd Lambert
źródło
0

Rozwój Java może być koszmarem, jeśli chodzi o wdrożenie; ale istnieją narzędzia, które to ułatwią.

Na przykład możesz użyć narzędzia takiego jak Launch4j spakować swoją ostateczną grę; opcjonalnie możesz powiedzieć mu, aby zawierał JRE (lub nie), aby utworzyć w pełni samodzielny plik binarny.

W ten sposób nie obchodzi Cię, czy lub jakie środowiska JRE zainstalował klient; po prostu spakujesz aplikację i wyślesz ją. Minusem jest to, że twój końcowy plik binarny będzie znacznie większy.

ashes999
źródło