Despliegue de Java y Steam JVM

10

Actualmente estoy considerando mis opciones para el desarrollo e implementación de juegos en Steam Greenlight. Realmente me gusta Java con libGDX, especialmente por su potencial Android multiplataforma, y ​​entiendo que es posible implementar juegos Java en Steam. También me siento muy cómodo al tener que crear algún tipo de contenedor para que mi juego Java pueda acceder a la API de C ++ Steamworks.

Mi pregunta es sobre qué problemas de implementación podría encontrar. Específicamente, con la instalación de la máquina cliente del JRE. He visto a muchos instaladores de Steam verificar el tiempo de ejecución de .NET. ¿Debo hacer una comprobación e instalación similar para el JRE?

¿Hay alguna razón evidente por la que la implementación de Java en Steam sería una pesadilla para implementar y mantener frente a algo como C # usando Monogame?

bobo espectacular
fuente

Respuestas:

15

Como alguien que recientemente lanzó un juego libGDX en Steam, a diferencia de .NET y DirectX, Steam no proporciona una opción con su aplicación para verificar y descargar automáticamente la versión que necesita de esas bibliotecas.

Es molesto para el usuario hacer que instale Java como una biblioteca del sistema, ya que la mayoría todavía ve el JRE, especialmente Oracle, como una especie de agujero de adware / seguridad y no quiere tenerlo instalado en su máquina. Todavía hay un estigma hacia las aplicaciones Java en el escritorio, por lo que debe ser considerado con el usuario.

Lo que recomiendo es usar la aplicación de empaquetado de libgdx , que empacará automáticamente su jar y recursos con un OpenJDK privado apropiado que está abierto para usar y distribuir con su software. Alternativamente, puede hacerlo manualmente tomando la compilación no oficial de OpenJDK que están usando en packr e incluyéndola en su proyecto.

Yo, personalmente, hago esa última opción, ya que descargué la última versión y empaqué todo, incluida la distribución a steam, todo incluido en el script de construcción de gradle de mi proyecto.

Incluir tu propio JRE / JDK es liviano, solo agrega alrededor de 80mb a tu juego y no es invasivo. Esto también asegura que la versión de Java con la que está ejecutando su aplicación es siempre la versión que necesita, en lugar de entrar en conflicto con lo que tiene el sistema.

Editar: 13 de marzo de 2017

Durante poco más de un año, he estado usando OpenJRE de Azul en lugar de las compilaciones no oficiales de alexkasko. Son ampliamente utilizados y compatibles incluso en entornos empresariales. Además, son compatibles con Java 8 y versiones posteriores, donde en el momento de mi cambio las versiones no oficiales del repositorio de compilación estaban atascadas en Java 7.

Desde que cambié, ahora también hay un repositorio de código abierto , que continúa proporcionando versiones de openjdk / jre creadas por la comunidad, si desea utilizarlo en su lugar. Ambos son buenos.

nhydock
fuente
1

Creo que está absolutamente bien verificar el tiempo de ejecución del usuario, dado que el idioma lo requiere. Creo que en .NET, Java, Python, Lua u otros lenguajes de programación que requieren un entorno de tiempo de ejecución, simplemente porque el juego no puede ejecutarse sin él.

Si tiene inquietudes sobre UX, no se preocupe, el instalador de JRE no es muy intrusivo y muchos juegos se saltan con instalaciones de tiempo de ejecución, o incluso dependencias múltiples.

En términos de preocupaciones legales, no creo que se encuentre en ninguna zona gris o roja de la ley. De acuerdo con las Preguntas frecuentes sobre licencias , puede simplemente distribuir el entorno Java con su software, de acuerdo con el elemento que indica:

¿Puedo distribuir Java con mi software?
Sí, puede proporcionarle a Java su software siempre que cumpla con los términos y condiciones de la licencia de código binario de Java

Esa debería ser toda la información que necesita para tomar una decisión informada.

Gota goteo
fuente
2
Si el usuario debe instalar el JRE primero, no obtendrá la certificación Steam OS. Fuente: t.co/cEboMGAR2O Puede agruparlo con OpenJDK.
Benedikt S. Vogler
A diferencia de otros entornos de tiempo de ejecución, Java no maneja muy bien múltiples instalaciones. Si un usuario tiene instalado Java 7 y necesita esa versión disponible para una de sus aplicaciones, y ejecuta el instalador de Java 8 ... entonces acaba de romper esa aplicación. La distribución del JRE objetivo es una opción mucho mejor en este momento.
Cypher
0

Es posible que algunos usuarios no tengan Java instalado y no creo que Steam tenga una forma nativa de verificar / instalar Java, ya que eso sería irritante para el usuario y solo una pequeña minoría de juegos en Steam requiere Java.

Intente incluir un Java Runtime Environment portátil para que siempre tenga una versión coherente de Java para ejecutar el juego, estoy seguro de que hay algunos que se adaptarán a sus necesidades.

Syd Lambert
fuente
0

El desarrollo de Java puede ser una pesadilla en cuanto a la implementación; pero, hay herramientas para hacer esto más fácil.

Por ejemplo, puedes usar una herramienta como Launch4jempaquetar tu juego final; opcionalmente, puede indicarle que incluya el JRE (o no) para crear un binario totalmente autónomo.

De esta manera, no le importa si o qué JRE ha instalado el cliente; simplemente empaque su aplicación y la envíe. La desventaja es que su binario final será significativamente más grande.

cenizas999
fuente