Déploiement Java et Steam JVM

10

J'examine actuellement mes options pour le développement de jeux et le déploiement sur Steam Greenlight. J'aime beaucoup Java avec libGDX, en particulier pour son potentiel Android multiplateforme, et je comprends qu'il est possible de déployer des jeux Java sur Steam. Je suis également très à l'aise de devoir créer une sorte de wrapper pour que mon jeu Java puisse appeler l'API C ++ Steamworks.

Ma question concerne les problèmes de déploiement que je pourrais rencontrer. Plus précisément, avec l'installation de JRE sur la machine cliente. J'ai vu de nombreux installateurs Steam vérifier le runtime .NET. Dois-je faire une vérification et une installation similaires pour le JRE?

Existe-t-il des raisons évidentes pour lesquelles le déploiement de Java sur Steam serait un cauchemar à déployer et à maintenir par rapport à quelque chose comme C # en utilisant Monogame?

spectaculaire
la source

Réponses:

15

En tant que quelqu'un qui a récemment publié un jeu libGDX sur Steam, contrairement à .NET et DirectX, Steam ne fournit pas d'option avec votre application pour vérifier et télécharger automatiquement la version dont vous avez besoin de ces bibliothèques.

Il est gênant pour l'utilisateur de leur faire installer Java en tant que bibliothèque système, car la plupart considèrent encore le JRE, en particulier Oracle, comme une sorte de trou de publicité / sécurité et ne veulent pas l'installer sur leur machine. Il y a toujours une stigmatisation envers les applications Java sur le bureau, vous devez donc être attentif à l'utilisateur.

Ce que je recommande est d'utiliser l'application packr de libgdx , qui emballera automatiquement votre pot et vos ressources avec un OpenJDK privé approprié, ouvert à l'utilisation et à la distribution avec votre logiciel. Alternativement, vous pouvez le faire manuellement en saisissant la version non officielle d'OpenJDK qu'ils utilisent dans packr et en l'incluant avec votre projet.

Personnellement, je fais cette dernière option car j'ai téléchargé la dernière version et tout emballé, y compris la distribution sur Steam, le tout inclus dans le script de construction gradle de mon projet.

Inclure votre propre JRE / JDK est léger, ajoutant seulement environ 80 Mo à votre jeu et non invasif. Cela garantit également que la version de Java avec laquelle vous exécutez votre application est toujours la version dont vous avez besoin, au lieu d'entrer en conflit avec celle du système.

Edit: 13 mars 2017

Depuis un peu plus d'un an , j'utilise OpenJRE d'Azul au lieu des versions non officielles d'Alexkasko. Ils sont largement utilisés et pris en charge même dans les environnements d'entreprise. De plus, ils prennent en charge Java 8 et versions ultérieures, où, au moment de mon changement, les versions non officielles du référentiel de construction étaient bloquées sur Java 7.

Depuis que j'ai changé, il existe maintenant un référentiel open source , qui continue de fournir des versions construites par la communauté de openjdk / jre, si vous souhaitez l'utiliser à la place. Les deux sont bons.

nhydock
la source
1

Je pense qu'il est tout à fait correct de vérifier le temps d'exécution de l'utilisateur, étant donné que la langue en nécessite un. Je pense que dans .NET, Java, Python, Lua ou d'autres langages de programmation qui nécessitent un environnement d'exécution, simplement parce que le jeu ne peut pas fonctionner sans lui.

Si vous avez des soucis d'UX, ne vous inquiétez pas, le programme d'installation JRE n'est pas très intrusif, et de nombreux jeux s'en tirent avec des installations d'exécution, voire plusieurs dépendances.

En termes de préoccupations juridiques, je ne pense pas que vous vous trouviez dans une zone grise ou rouge de la loi. Selon la FAQ sur la licence , vous pouvez tout simplement distribuer l'environnement Java avec votre logiciel, selon l'article indiquant:

Puis-je distribuer Java avec mon logiciel?
Oui, vous pouvez fournir à Java votre logiciel à condition de respecter les termes et conditions de la licence de code binaire Java

Cela devrait être toute l'information dont vous avez besoin pour prendre une décision éclairée.

Goutte-à-goutte
la source
2
Si l'utilisateur doit d'abord installer le JRE, vous n'obtiendrez pas la certification Steam OS. Source: t.co/cEboMGAR2O Vous pouvez le regrouper avec OpenJDK.
Benedikt S. Vogler du
Contrairement à d'autres environnements d'exécution, Java ne gère pas très bien plusieurs installations. Si un utilisateur a installé Java 7 et a besoin de cette version disponible pour l'une de ses applications, et que vous exécutez le programme d'installation de Java 8 ... alors vous venez de casser cette application. La distribution du JRE ciblé est une bien meilleure option à ce stade.
Cypher
0

Certains utilisateurs peuvent ne pas avoir Java installé et je ne pense pas que Steam ait une façon native de vérifier / installer Java car cela serait irritant pour l'utilisateur et seule une petite minorité de jeux sur Steam nécessite Java.

Essayez d'inclure un environnement d'exécution Java portable afin que vous ayez toujours une version cohérente de Java pour exécuter le jeu, je suis sûr qu'il y en a autour qui répondront à vos besoins.

Syd Lambert
la source
0

Le développement Java peut être un cauchemar en ce qui concerne le déploiement; mais, il existe des outils pour rendre cela plus facile.

Par exemple, vous pouvez utiliser un outil comme Launch4j pour emballer votre jeu final; facultativement, vous pouvez lui indiquer d'inclure le JRE (ou non) afin de créer un binaire entièrement autonome.

De cette façon, vous ne vous souciez pas si ou quels JRE le client a installés; il vous suffit d'emballer votre application et de l'expédier. L'inconvénient est que votre binaire final sera considérablement plus grand.

cendres999
la source