標題。它只允許保存到某個目錄,但有沒有一種方法可以使用它自行更新自己的可執行文件?我有代碼來檢查它是否過期(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