Java- und Steam-JVM-Bereitstellung


10

Ich denke derzeit über meine Optionen für die Spieleentwicklung und die Bereitstellung auf Steam Greenlight nach. Ich mag Java mit libGDX sehr, insbesondere wegen seines plattformübergreifenden Android-Potenzials, und ich verstehe, dass es möglich ist, Java-Spiele auf Steam bereitzustellen. Ich bin auch sehr zufrieden damit, eine Art Wrapper erstellen zu müssen, damit mein Java-Spiel die C ++ Steamworks-API aufrufen kann.

Meine Frage ist, auf welche Bereitstellungsprobleme ich stoßen könnte. Insbesondere bei der Installation der JRE auf dem Client-Computer. Ich habe viele Steam-Installer gesehen, die nach der .NET-Laufzeit gesucht haben. Sollte ich eine ähnliche Überprüfung und Installation für die JRE durchführen?

Gibt es irgendwelche offensichtlichen Gründe, warum die Bereitstellung und Wartung von Java auf Steam ein Albtraum für die Bereitstellung und Wartung gegenüber C # mit Monogame wäre?

Antworten:


15

Als jemand, der kürzlich ein libGDX-Spiel auf Steam veröffentlicht hat, bietet Steam im Gegensatz zu .NET und DirectX keine Option für Ihre Anwendung, um die von Ihnen benötigte Version dieser Bibliotheken automatisch zu überprüfen und herunterzuladen.

Es ist für den Benutzer aufdringlich, Java als Systembibliothek zu installieren, da die meisten die JRE, insbesondere die von Oracle, immer noch als eine Art Adware- / Sicherheitslücke betrachten und nicht möchten, dass sie auf ihrem Computer installiert wird. Es gibt immer noch ein Stigma in Bezug auf Java-Anwendungen auf dem Desktop, daher müssen Sie den Benutzer berücksichtigen.

Ich empfehle die Verwendung der Packr-Anwendung von libgdx , die Ihr JAR und Ihre Ressourcen automatisch mit einem geeigneten, privaten OpenJDK verpackt , das für die Verwendung und Verteilung mit Ihrer Software geöffnet ist. Alternativ können Sie dies manuell tun, indem Sie den inoffiziellen OpenJDK-Build , den sie in packr verwenden, abrufen und in Ihr Projekt aufnehmen.

Ich persönlich mache diese letztere Option, da ich die neueste Version heruntergeladen und alles gepackt habe, einschließlich der Verteilung an Steam, alles im Gradle-Build-Skript meines Projekts.

Das Einbeziehen Ihres eigenen JRE / JDK ist leichtgewichtig, fügt Ihrem Spiel nur etwa 80 MB hinzu und ist nicht invasiv. Dies stellt auch sicher, dass die Java-Version, mit der Sie Ihre Anwendung ausführen, immer die Version ist, die Sie benötigen, anstatt mit dem System in Konflikt zu geraten.

Bearbeiten: 13. März 2017

Seit etwas mehr als einem Jahr verwende ich Azul's OpenJRE anstelle der inoffiziellen Builds von Alexkasko. Sie sind weit verbreitet und werden auch in Unternehmensumgebungen unterstützt. Außerdem unterstützen sie Java 8 und höher, wobei zum Zeitpunkt meines Wechsels die inoffiziellen Build-Repository-Versionen bei Java 7 stecken blieben.

Seit meinem Wechsel gibt es jetzt auch ein Open-Source-Repository , das weiterhin von der Community erstellte Versionen von openjdk / jre bereitstellt, wenn Sie dies stattdessen verwenden möchten. Beide sind gut.


1

Ich denke, dass es absolut in Ordnung ist, die Laufzeit des Benutzers zu überprüfen, da die Sprache eine erfordert. Ich denke, dass in .NET, Java, Python, Lua oder anderen Programmiersprachen, die eine Laufzeitumgebung erfordern, einfach weil das Spiel ohne sie nicht laufen kann.

Wenn Sie UX-Probleme haben, machen Sie sich keine Sorgen, das JRE-Installationsprogramm ist nicht sehr aufdringlich, und viele Spiele kommen mit Laufzeitinstallationen oder sogar mehreren Abhängigkeiten davon.

In Bezug auf rechtliche Bedenken glaube ich nicht, dass Sie sich in einer grauen oder roten Zone des Gesetzes befinden. Gemäß den häufig gestellten Fragen zur Lizenz können Sie die Java-Umgebung ganz einfach mit Ihrer Software verteilen.

Kann ich Java mit meiner Software vertreiben?
Ja, Sie können Java Ihre Software zur Verfügung stellen, sofern Sie die Bedingungen der Java-Binärcodelizenz einhalten

Das sollten alle Informationen sein, die Sie benötigen, um eine fundierte Entscheidung zu treffen.


2
Wenn der Benutzer zuerst die JRE installieren muss, erhalten Sie keine Steam OS-Zertifizierung. Quelle: t.co/cEboMGAR2O Sie können es mit OpenJDK bündeln.
Benedikt S. Vogler

Im Gegensatz zu anderen Laufzeitumgebungen kann Java mit mehreren Installationen nicht sehr gut umgehen. Wenn ein Benutzer Java 7 installiert hat und diese Version für eine seiner Anwendungen verfügbar benötigt und Sie das Java 8-Installationsprogramm ausführen, haben Sie diese Anwendung gerade beschädigt. Die Verteilung der Ziel-JRE ist zu diesem Zeitpunkt eine viel bessere Option.
Cypher

0

Einige Benutzer haben möglicherweise kein Java installiert, und ich glaube nicht, dass Steam eine native Methode zum Überprüfen / Installieren von Java bietet, da dies für den Benutzer irritierend wäre und nur eine kleine Minderheit der Spiele auf Steam Java benötigt.

Versuchen Sie, eine tragbare Java-Laufzeitumgebung einzuschließen, damit Sie immer über eine konsistente Java-Version verfügen, auf der Sie das Spiel ausführen können. Ich bin sicher, dass es einige gibt, die Ihren Anforderungen entsprechen.


0

Die Java-Entwicklung kann in Bezug auf die Bereitstellung ein Albtraum sein. Es gibt jedoch Tools, die dies vereinfachen.

Sie können beispielsweise ein Tool verwenden Launch4j, um Ihr endgültiges Spiel zu verpacken. Optional können Sie festlegen, dass die JRE eingeschlossen werden soll (oder nicht), um eine vollständig in sich geschlossene Binärdatei zu erstellen.

Auf diese Weise ist es Ihnen egal, ob oder welche JREs der Client installiert hat. Sie packen einfach Ihre App und versenden sie. Der Nachteil ist, dass Ihre endgültige Binärdatei deutlich größer ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.