0

我正在用 Java 制作一个游戏,它具有以下重要特性:

1) 连接到远程服务器(我制作的),并将检查更新并在必要时安装它们 2) 不是单个 .JAR 文件(即具有多个 .jar 和其他内容,例如 .png、.wav等) 3) JAVA WEB START 不是一个选项,因为我想自己做这件事

记住上面的事情,我遇到了一个问题。我不知道如何实现多个“补丁”更新系统。目前我有 1 个 .txt 文件,服务器从中读取,并将 .txt 中列出的文件发送到客户端,然后将它们移动到位。问题是,这仅对可能 2 次更新有用。我正在寻找更有用的长期解决方案,我需要一些帮助。以下是我想到的一些事情:

1)有一个以每个版本命名的 zip 文件夹(问题:客户端如何获取所有最新的文件 2)在每个包含版本的 jar 中都有一个 .txt 文件(问题:不能用 png 或 wav 来做到这一点,并且我不知道我将如何阅读 txt 文件开始)

我真的需要一些帮助,我试过用谷歌搜索它,我已经考虑了 3 周了,但什么也想不出来。

问题:我将如何使用多个补丁进行游戏/程序更新?

4

2 回答 2

1

首先,长期来看,最好的解决方案是使用 Webstart / JNLP。

但是,如果您坚持不使用它(无论出于何种原因),那么它在技术上是可行的。然而:

  • 这是混乱和复杂的。

  • 它要么效率非常低(因为每次用户都必须加载整个程序),要么用户必须足够信任你才能安装你的程序,并获得允许它在他的机器上安装随机东西而不另行通知的权限。

这样做的方法是将游戏分成启动器部分和应用程序部分。启动器需要权限才能写入和删除(非临时)文件,以及从 Internet 获取内容。它“回拨”以找出应用程序文件的最新版本,然后下载并安装它们。它必须应对各种错误情况,并且它需要确保没有任何东西可以欺骗它在用户的机器上安装坏东西,等等,是否有人欺骗了你的更新服务。

当然,JNLP 会处理所有这些,除此之外还有更多。人们将更愿意安装您的 JNLP 基础架构……这可能不安全,或者非常讨厌(据他们所知)。(我不会在我的机器上安装自我更新应用程序,除非它是由具有无可挑剔凭据的公司提供的。)

于 2013-08-03T07:08:24.500 回答
0

我认为您需要这里的JNLP框架。

JNLP 提供了以下内容:

  • 允许用户从服务器下载 jars
  • 启动时验证应用程序是否需要更新
  • 在本地 JVM 上运行

实际上,每个 Java 应用程序都可以转换为 JNLP。只需在您的游戏包含的所有 jar 上签名,从您的游戏创建可执行 jar 并创建一个网页,您可以从该网页下载您的游戏

于 2013-08-03T05:59:00.810 回答