Java和Steam JVM部署


10

我目前正在考虑为游戏开发和部署到Steam Greenlight的选择。我非常喜欢Java与libGDX的结合,特别是因为Java具有libGDX的跨平台潜力,而且我知道可以在Steam上部署Java游戏。我也很满意必须创建某种包装程序,以便我的Java游戏可以调用C ++ Steamworks API。

我的问题是我可能遇到什么部署问题。具体来说,是在客户端计算机上安装JRE。我已经看到许多Steam安装程序会检查.NET运行时。我应该为JRE做类似的检查并安装吗?

在Steam上进行Java部署与使用Monogame进行C#之类的部署和维护相比,有什么明显的理由吗?

Answers:


15

与.NET和DirectX不同,作为最近在Steam上发布libGDX游戏的人,Steam没有为您的应用程序提供选项来自动检查和下载这些库所需的版本。

让用户将Java安装为系统库是很麻烦的,因为大多数人仍将JRE(尤其是Oracle的JRE)视为某种广告软件/安全漏洞,并且不想在计算机上安装它。台式机上对Java应用程序仍然存在污名,因此您必须考虑用户。

我建议使用libgdx的packr应用程序,该应用程序将使用适当的私有OpenJDK自动打包您的jar和资源,该OpenJDK可随您的软件一起使用和分发。另外,您可以通过抓住他们在packr中使用的非官方OpenJDK构建并将其包含在项目中来手动进行操作。

我个人选择后一种方法,因为我已经下载了最新版本并打包了所有内容,包括分发到Steam,所有这些都包含在项目的gradle构建脚本中。

包括您自己的JRE / JDK是轻量级的,仅增加了约80mb的游戏空间,并且是非侵入性的。这还可以确保运行应用程序所用的Java版本始终是所需的版本,而不会与系统的版本冲突。

编辑:2017年3月13日

对于一年多一点,现在我一直在使用Azul的OpenJRE而不是非官方从alexkasko构建。它们甚至在企业环境中也得到了广泛的使用和支持。此外,它们还支持Java 8及更高版本,在我切换之时,非正式的构建存储库版本都停留在Java 7上。

自从我切换之后,现在还有一个开源存储库,如果您想使用的话,它将继续提供openjdk / jre的社区构建版本。两者都很好。


1

我认为,鉴于该语言需要一种语言,因此检查用户的运行时绝对可以。我认为在.NET,Java,Python,Lua或其他需要运行时环境的编程语言中,仅仅是因为没有它就无法运行游戏。

如果您有UX问题,请不要担心,JRE安装程序不是很麻烦,许多游戏都不需要运行时安装,甚至可以避免多个依赖项。

在法律方面,我认为您不在法律的任何灰色或红色区域。根据许可证FAQ,根据以下内容,您可以非常简单地随您的软件一起分发Java环境:

我可以随软件一起分发Java吗?
是的,只要您遵守Java二进制代码许可的条款和条件,就可以为Java提供软件

那应该是做出明智决定所需的所有信息。


2
如果要求用户首先安装JRE,则不会获得Steam OS认证。来源:t.co/cEboMGAR2O您可以将其与OpenJDK捆绑在一起。
Benedikt S. Vogler,2015年

与其他运行时环境不同,Java不能很好地处理多个安装。如果用户安装了Java 7,并且需要该版本可用于其应用程序之一,并且您运行Java 8安装程序...,则您只是破坏了该应用程序。此时,分发目标JRE是一个更好的选择。
Cypher

0

有些用户可能未安装Java,但我不认为Steam具有检查/安装Java的本机方式,因为这会给用户带来烦恼,并且Steam上只有少数游戏需要Java。

尝试包括一个可移植的Java Runtime Environment,以便您始终可以使用一致的Java构建来运行游戏,我敢肯定周围有一些适合您的需求。


0

就部署而言,Java开发可能是一场噩梦。但是,有一些工具可以简化这一过程。

例如,您可以使用Launch4j打包最终游戏之类的工具;(可选)您可以告诉它包括(或不包括)JRE,以便创建完全独立的二进制文件。

这样,您不必在乎客户端是否安装了JRE或安装了什么JRE。您只需打包好您的应用程序,然后进行发货。缺点是您最终的二进制文件会大得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.