Download Lua Love2D-如何让它下载文件?

Download Lua Love2D-如何让它下载文件?,download,lua,love2d,Download,Lua,Love2d,标题。它只允许保存到某个目录,但是有没有办法让用它制作的可执行文件自己更新?我有代码来检查它是否过时(HttpGet),但不确定如何安装更新 主要原因是人们抱怨不得不反复下载我的RPG。使用他们可以运行的C#自动更新程序打包会更容易吗?我的第一个猜测是使用。您可以拥有一个包含当前版本号的小文件,在启动时下载该文件,然后决定是否需要升级。您不能让.love文件“自我更新”。这是不可能的,除非你使用操作系统的软件包管理器或类似的东西(apt-get-in-Ubuntu,mac上的应用商店,以及微软使

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


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

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

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

如果你不想这样做,那么第二个最好的方法就是让你的love2d可执行文件成为一个“shell”;一个“空游戏”,它只是从互联网上下载东西,然后执行一些初始化所有东西的功能,包括正确的游戏

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

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

所以我想你可以做一个游戏:

  • 首先读取名为
    version.lua的文件,并将其与服务器()中的文件进行比较()。该文件只包含一个数字,如“48”
  • 若并没有文件和服务器无法联系,那个么错误“无法下载游戏”
  • 如果没有文件,或当前版本<服务器上的最新版本,请从服务器()下载zip文件
  • 如果latest.zip下载成功,请删除/latest目录中的所有内容,并在新的最新目录上解压缩latest.zip。使用新版本更新version.lua(返回48)
  • 脱机工作时检测-如果无法下载最新的.zip或版本,但已经有一个version.lua和最新的文件夹,只给出一个警告,而不是错误
  • 需要包含真实游戏的文件;可能类似于
    需要“latest.main”
  • 注:

    • 我对luasocket不熟悉。有可能有一种方法可以从中获取“上次更新”的日期,因此您可以简单地删除最新版本号的内容
    • 我自己也没用过gunzip.lua。我不知道它如何处理多个文件或目录

    实际上,您可以让它自己更新,而不必成为“外壳”。您无法更改.love文件,但使用
    love.filesystem
    (进入游戏指定的保存文件夹)保存的任何内容都应覆盖游戏的.love文件的内容。我不完全确定这是否适用于代码文件,但它至少适用于其他资源。只要代码文件在首次由
    require
    加载之前进行了更新,我不明白为什么它不起作用。
    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