gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:51:08 24 4
gpt4 key购买 nike

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

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

最佳答案

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

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

正如 jpjacobs 所说,您可以使用 LuaSocket(已包含在 LÖVE 0.7 中)从网络下载内容。例如,这是您下载 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 解压缩算法解压缩数据的方法。它由 /AdvTiledLoader/external/gunzip.lua 实现文件在 Kadoba's Advanced TileLoader .

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

  • 笔记:
  • 我对 luasocket 不熟悉。可能有一种方法可以从 http://www.your-server.com/latest.zip 获取“上次更新”日期,所以你可以简单地摆脱最新版本号的东西。
  • 我自己没用过 gunzip.lua。我不知道它如何处理多个文件或目录。
  • 关于download - Lua Love2D - 如何让它下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477582/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com