【问题标题】:Lua Love2D - How can I make it download a file?Lua Love2D - 我怎样才能让它下载一个文件?
【发布时间】:2011-07-25 13:21:16
【问题描述】:

标题。它只允许保存到某个目录,但是有没有办法让用它制作的可执行文件自行更新?我有代码来检查它是否过时 (HttpGet),但不知道如何安装较新的更新。

主要原因是人们抱怨必须反复重新下载我的 RPG。用他们可以运行的 C# 自动更新程序打包它会更容易吗?

【问题讨论】:

    标签: download lua love2d


    【解决方案1】:

    我的第一个猜测是使用LuaSocket。您可以拥有一个包含当前版本号的小文件,在启动时下载该文件,然后决定是否需要升级。

    【讨论】:

      【解决方案2】:

      您不能让 .love 文件“自我更新”。这是不可能的,除非您使用操作系统的包管理器或类似的东西(Ubuntu 中的 apt-get、mac 上的应用商店,以及任何微软使用的工具,如果有的话)。

      如果您不想这样做,那么完成这项工作的第二个最佳方法是将您的 love2d 可执行文件设置为“shell”;一个“空游戏”,只是从互联网上下载东西,然后它执行一些初始化所有内容的函数,包括正确的游戏。

      正如 jpjacobs 所说,您可以使用 LuaSocket(已包含在 LÖVE 0.7 中)从 Web 下载内容。例如,这是您下载 png 的方式(我从 here 复制了代码):

      if not love.filesystem.exists("expo.png") then
        local http = require("socket.http")
        local b, c, h = http.request("http://love2d.org/w/images/e/e3/Resource-AnalExplosion.png")
        love.filesystem.write("expo.png", b)
      end
      

      还有一种使用纯 lua 的 GNU 解压缩算法解压缩数据的方法。它由Kadoba's Advanced TileLoader 中的/AdvTiledLoader/external/gunzip.lua 文件实现。

      所以我猜你可以制作一个游戏:

      1. 首先读取名为version.lua 的文件,并将其与服务器中的文件(http://www.your-server.com/latest-version-number) 进行比较。该文件只包含一个数字,例如“48”。
      2. 如果无法联系到任何文件和服务器,则会出现“无法下载游戏”错误。
      3. 如果没有文件,或者当前版本http://www.your-server.com/latest.zip)
      4. 如果latest.zip 下载成功,请清除/latest 目录中的所有内容,然后将latest.zip 解压缩到新的latest 上。用新版本更新 version.lua(返回 48)
      5. 检测您何时离线工作 - 如果无法下载 latest.zip 或 version,但已经有 version.lua 和 latest 文件夹,则只给出警告,而不是错误。
      6. 需要包含真实游戏的文件;可能类似于require 'latest.main'

      注意事项:

      • 我不熟悉 luasocket。可能有一种方法可以从 http://www.your-server.com/latest.zip 获取“最后更新”日期,因此您可以简单地摆脱最新版本号的东西。
      • 我自己没有使用过 gunzip.lua。我不知道它如何处理多个文件或目录。

      【讨论】:

      • 其实你可以让它自己更新而不是一个“shell”。您无法更改 .love 文件,但您使用 love.filesystem 保存的任何内容(进入游戏指定的保存文件夹)都应覆盖游戏 .love 的内容。我不完全确定它适用于代码文件,但它至少适用于其他资源。
      • 只要代码文件在require首次加载之前更新,我不明白为什么它不起作用。
      猜你喜欢
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      相关资源
      最近更新 更多