Implementação de Java e Steam JVM

10

Atualmente, estou considerando minhas opções para desenvolvimento e implantação de jogos no Steam Greenlight. Eu realmente gosto de Java com libGDX, especialmente pelo potencial Android multiplataforma, e entendo que é possível implantar jogos Java no Steam. Também estou muito confortável em ter que criar algum tipo de invólucro para que meu jogo Java possa acessar a API C ++ Steamworks.

Minha pergunta é sobre quais problemas de implantação eu posso encontrar. Especificamente, com a instalação do JRE na máquina cliente. Eu já vi muitos instaladores do Steam verificarem o tempo de execução do .NET. Devo fazer uma verificação semelhante e instalar o JRE?

Existem razões gritantes para a implantação do Java no Steam ser um pesadelo para implantar e manter vs algo como C # usando o Monogame?

espetacular
fonte

Respostas:

15

Como alguém que lançou recentemente um jogo libGDX no Steam, diferentemente do .NET e DirectX, o Steam não fornece uma opção ao seu aplicativo para verificar e baixar automaticamente a versão necessária dessas bibliotecas.

É intrusivo para o usuário fazê-lo instalar o Java como uma biblioteca do sistema, pois a maioria ainda vê o JRE, especialmente o Oracle, como algum tipo de falha de adware / segurança e não deseja instalá-lo em sua máquina. Ainda existe um estigma em relação aos aplicativos Java na área de trabalho, por isso é preciso ter consideração com o usuário.

O que eu recomendo é usar o aplicativo packr do libgdx , que empacota automaticamente seu jar e recursos com um OpenJDK privado apropriado, aberto para uso e distribuição com seu software. Como alternativa, você pode fazer isso manualmente, pegando a compilação não oficial do OpenJDK que eles estão usando no packr e incluindo-a em seu projeto.

Pessoalmente, faço essa última opção, pois tenho o download da versão mais recente e empacotado tudo, incluindo a distribuição no steam, tudo incluído no script de construção de notas do meu projeto.

A inclusão de seu próprio JRE / JDK é leve, adicionando apenas 80 mb ao seu jogo e não é invasiva. Isso também garante que a versão do Java com a qual você está executando seu aplicativo seja sempre a versão que você precisa, em vez de entrar em conflito com o que o sistema possui.

Edit: 13 de março de 2017

Há pouco mais de um ano, uso o OpenJRE da Azul, em vez das versões não oficiais da alexkasko. Eles são amplamente utilizados e suportados, mesmo em ambientes empresariais. Além disso, eles suportam o Java 8 e superior, onde, no momento da minha troca, as versões não oficiais do repositório de compilação estavam bloqueadas no Java 7.

Desde que mudei, agora também existe um repositório de código-fonte aberto , que continua a fornecer versões criadas pela comunidade do openjdk / jre, se você desejar usá-lo. Ambos são bons.

nhydock
fonte
1

Penso que não há problema em verificar o tempo de execução do usuário, pois o idioma exige um. Eu acho que em .NET, Java, Python, Lua ou outras linguagens de programação que exigem um ambiente de tempo de execução, simplesmente porque o jogo não pode ser executado sem ele.

Se você tiver preocupações com a experiência do usuário, não se preocupe, o instalador do JRE não é muito invasivo e muitos jogos se adaptam às instalações de tempo de execução ou até várias dependências.

Em termos de questões legais, não acredito que você esteja em uma zona cinza ou vermelha da lei. De acordo com as Perguntas frequentes sobre licença , você pode simplesmente distribuir o Java Environment com o seu software, de acordo com o item afirmando:

Posso distribuir Java com meu software?
Sim, você pode fornecer ao Java seu software, desde que respeite os termos e condições da licença de código binário Java

Essa deve ser toda a informação que você precisa para tomar uma decisão educada.

DripDrop
fonte
2
Se o usuário precisar instalar o JRE primeiro, você não receberá a certificação do Steam OS. Fonte: t.co/cEboMGAR2O Você pode empacotá-lo com o OpenJDK.
Benedikt S. Vogler
Diferentemente de outros ambientes de tempo de execução, o Java não lida com várias instalações muito bem. Se um usuário tiver o Java 7 instalado e precisar dessa versão disponível para um de seus aplicativos, e você executar o instalador do Java 8 ... então você apenas quebrou esse aplicativo. A distribuição do JRE direcionado é uma opção muito melhor neste momento.
Cypher
0

Alguns usuários podem não ter o Java instalado e eu não acredito que o Steam tenha uma maneira nativa de verificar / instalar o Java, pois isso seria irritante para o usuário e apenas uma pequena minoria de jogos no Steam exige o Java.

Tente incluir um Java Runtime Environment portátil para que você sempre tenha uma compilação consistente do Java para executar o jogo, tenho certeza de que existem alguns que atendem às suas necessidades.

Syd Lambert
fonte
0

O desenvolvimento Java pode ser um pesadelo na implantação; mas existem ferramentas para facilitar isso.

Por exemplo, você pode usar uma ferramenta como Launch4jempacotar seu jogo final; opcionalmente, você pode dizer para incluir o JRE (ou não) para criar um binário totalmente independente.

Dessa forma, você não se importa se ou o que JREs o cliente instalou; basta empacotar seu aplicativo e enviá-lo. A desvantagem é que seu binário final será significativamente maior.

ashes999
fonte