Distribuzione JVM Java e Steam


10

Attualmente sto prendendo in considerazione le mie opzioni per lo sviluppo del gioco e la distribuzione su Steam Greenlight. Mi piace molto Java con libGDX, soprattutto per il suo potenziale Android multipiattaforma, e capisco che è possibile distribuire giochi Java su Steam. Sono anche molto a mio agio nel dover creare una sorta di wrapper in modo che il mio gioco Java possa chiamare l'API Steamworks di C ++.

La mia domanda riguarda i problemi di implementazione che potrei incontrare. In particolare, con l'installazione del JRE sulla macchina client. Ho visto molti installatori di Steam verificare il runtime .NET. Devo fare un controllo simile e installare per JRE?

Ci sono ragioni eclatanti per cui la distribuzione Java su Steam sarebbe un incubo da distribuire e mantenere rispetto a qualcosa come C # usando Monogame?

Risposte:


15

Come qualcuno che ha recentemente rilasciato un gioco libGDX su Steam, a differenza di .NET e DirectX, Steam non fornisce un'opzione con la tua applicazione per controllare e scaricare automaticamente la versione necessaria per quelle librerie.

È invadente per l'utente farli installare Java come libreria di sistema, poiché la maggior parte di essi continua a visualizzare JRE, in particolare Oracle, come una sorta di buco di adware / sicurezza e non vuole averlo installato sul proprio computer. C'è ancora uno stigma nei confronti delle applicazioni Java sul desktop, quindi devi essere rispettoso dell'utente.

Quello che consiglio è di usare l'applicazione packr di libgdx , che impacchetterà automaticamente il tuo vaso e le tue risorse con un OpenJDK appropriato e privato che è aperto per l'uso e la distribuzione con il tuo software. In alternativa, puoi farlo manualmente afferrando la build non ufficiale di OpenJDK che stanno usando in packr e includendola nel tuo progetto.

Personalmente, faccio quest'ultima opzione poiché ho scaricato l'ultima versione e impacchettato tutto, inclusa la distribuzione su Steam, tutto incluso nello script di build graduale del mio progetto.

Includere il proprio JRE / JDK è leggero, aggiungendo solo circa 80 MB al gioco e non è invasivo. Questo assicura anche che la versione di Java con cui stai eseguendo l'applicazione sia sempre la versione di cui hai bisogno, invece di essere in conflitto con ciò che il sistema ha.

Modifica: 13 marzo 2017

Da poco più di un anno uso Azul OpenJRE invece delle build non ufficiali di alexkasko. Sono ampiamente utilizzati e supportati anche in ambienti aziendali. Inoltre, supportano Java 8 e versioni successive, dove al momento del mio passaggio le versioni non ufficiali del repository di build erano bloccate su Java 7.

Da quando sono passato, ora esiste anche un repository open-source , che continua a fornire versioni di openjdk / jre create dalla comunità, se si desidera utilizzarlo invece. Entrambi sono buoni.


1

Penso che sia assolutamente corretto controllare il runtime dell'utente, dato che la lingua richiede uno. Penso che in .NET, Java, Python, Lua o altri linguaggi di programmazione che richiedono un ambiente di runtime, semplicemente perché il gioco non può funzionare senza di esso.

Se hai problemi di UX, non ti preoccupare, il programma di installazione di JRE non è molto invadente e molti giochi scappano con installazioni di runtime o anche dipendenze multiple.

In termini di preoccupazioni legali, non credo che tu sia in nessuna zona grigia o rossa della legge. Secondo le Domande frequenti sulla licenza , puoi semplicemente distribuire l'ambiente Java con il tuo software, secondo l'articolo che afferma:

Posso distribuire Java con il mio software?
Sì, puoi fornire a Java il tuo software purché tu rispetti i termini e le condizioni della licenza del codice binario Java

Dovrebbero essere tutte le informazioni necessarie per prendere una decisione consapevole.


2
Se l'utente deve prima installare JRE, non otterrai la certificazione del sistema operativo Steam. Fonte: t.co/cEboMGAR2O È possibile raggrupparlo con OpenJDK.
Benedikt S. Vogler,

A differenza di altri ambienti di runtime, Java non gestisce molto bene più installazioni. Se un utente ha Java 7 installato e necessita di quella versione disponibile per una delle sue applicazioni, ed esegui il programma di installazione di Java 8 ... allora hai appena rotto quell'applicazione. La distribuzione del JRE mirato è un'opzione molto migliore a questo punto.
Cypher,

0

Alcuni utenti potrebbero non avere Java installato e non credo che Steam abbia un modo nativo di controllare / installare Java poiché ciò sarebbe irritante per l'utente e solo una piccola minoranza di giochi su Steam richiede Java.

Prova a includere un Java Runtime Environment portatile in modo da avere sempre una build consistente di Java su cui eseguire il gioco, sono sicuro che ce ne sono alcuni in grado di soddisfare le tue esigenze.


0

Lo sviluppo di Java può essere un incubo per quanto riguarda la distribuzione; ma ci sono strumenti per renderlo più semplice.

Ad esempio, puoi usare uno strumento come Launch4jimpacchettare il tuo gioco finale; opzionalmente, puoi dire di includere JRE (o meno) per creare un binario completamente autonomo.

In questo modo, non ti importa se o quali JRE sono stati installati dal client; impacchetti la tua app e la spedisci. Il rovescio della medaglia è che il tuo binario finale sarà significativamente più grande.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.