Вы не можете заставить .love файл "обновляться сам". Это невозможно, если вы не используете менеджер пакетов операционной системы или что-то подобное (apt-get в Ubuntu, магазин приложений на Mac и все, что Microsoft использует, если оно есть).
Если вы не хотите этого делать, то второй лучший способ сделать эту работу - сделать исполняемый файл love2d «оболочкой»; «пустая игра», которая просто загружает материал из Интернета, а затем выполняет некоторую функцию, которая инициализирует все, включая правильную игру.
Как говорит jpjacobs, вы можете загружать материалы из Интернета, используя LuaSocket (который уже включен в LÖVE 0.7). Например, вот как вы загружаете png (я скопировал код с здесь ):
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 с использованием чистого lua. Он реализован в файле /AdvTiledLoader/external/gunzip.lua
в Advanced TileLoader Kadoba .
Итак, я думаю, вы можете сделать игру, которая:
- Начинается с чтения файла с именем
version.lua
и сравнения его с файлом на вашем сервере (http://www.your -server.com / latest-version-number ). Этот файл просто содержит число, например «48».
- Если не удалось связаться ни с одним файлом и сервером, возникает ошибка «не удалось загрузить игру».
- Если нет файла или текущая версия <последняя версия с сервера, загрузите zip-файл с сервера (<a href="http://www.your-server.com/latest.zip" rel="noreferrer">http://www.your -server.com / latest.zip )
- Если файл latest.zip был успешно загружен, сотрите все содержимое в каталоге / latest и распакуйте файл latest.zip в новый файл. Обновите version.lua новой версией (возврат 48)
- Обнаружение, когда вы работаете в автономном режиме - если не удалось загрузить последний.zip или версию, но уже есть version.lua и последняя папка, выдайте только предупреждение, а не ошибку.
- Требуется файл, содержащий настоящую игру; наверное что то типа
require 'latest.main'
Примечания:
- Я не знаком с Луасокетом. Возможно, есть способ получить дату «последнего обновления» из http://www.your -server.com / latest.zip , так что вы можете просто избавиться от материала с номером последней версии.
- Я не использовал gunzip.lua сам. Я не знаю, как он обрабатывает несколько файлов или каталогов.