标题。它只允许保存到某个目录,但有没有一种方法可以使用它自行更新自己的可执行文件?我有代码来检查它是否过期(HttpGet),但不知道如何安装较新的更新。Lua Love2D - 我怎样才能让它下载一个文件?
主要原因是人们抱怨不得不反复重新下载我的RPG。用它可以运行的C#自动更新程序打包它会更容易吗?
标题。它只允许保存到某个目录,但有没有一种方法可以使用它自行更新自己的可执行文件?我有代码来检查它是否过期(HttpGet),但不知道如何安装较新的更新。Lua Love2D - 我怎样才能让它下载一个文件?
主要原因是人们抱怨不得不反复重新下载我的RPG。用它可以运行的C#自动更新程序打包它会更容易吗?
您不能使.love文件“自行更新”。这是不可能的,除非你使用操作系统的包管理器或类似的东西(Ubuntu中的apt-get,Mac上的应用商店,以及微软使用的任何软件,如果有的话)。
如果你不想那么做,那么做第二个最好的方法就是让你的love2d可执行文件变成一个“shell”。一个简单地从互联网上下载东西的“空白游戏”,后来它执行一些初始化所有东西的功能,包括正确的游戏。
正如jpjacobs所说,你可以使用LuaSocket(已经包含在LÖVE0.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
也有一种方法来解压缩使用使用纯卢阿GNU的解压缩算法的数据。它通过Kadoba's Advanced TileLoader中的/AdvTiledLoader/external/gunzip.lua
文件实现。
所以我想你可以做一个游戏:
version.lua
文件,它在你的服务器(http://www.your-server.com/latest-version-number)比较到文件中。该文件只包含一个数字,如“48”。require 'latest.main'
注:
我的第一个猜测是使用LuaSocket。您可以有一个包含当前版本号的小文件,在启动时下载,然后决定升级是否需要。
实际上,你可以使它自己更新而不是一个“壳”。您不能更改.love文件,但使用'love.filesystem'(进入游戏的分配保存文件夹)保存的任何内容都应该覆盖您游戏的.love文件的内容。我不完全确定它适用于代码文件,但它至少适用于其他资源。 – nkorth 2012-05-19 19:49:27
只要代码文件在被'require'加载之前被更新,我就不明白为什么它不起作用。 – Xeozim 2017-08-09 12:50:33