LÖVE и Луа. Создание файла .EXE

Я делаю игру Lua, используя 2D-фреймворк LÖVE.

Мне нужно было знать, КАК сделать с ним файл .exe! Я сделал командную строку, успешно заархивировал мой main.lua и образ, я переименовал расширение файла в .exe!! Когда я запускаю .exe, я получаю приложение для извлечения файлов. Этого не должно было случиться, верно? Я хочу, чтобы он запускался как игра, а не как самораспаковывающееся приложение. Помощь?


person hexagonest    schedule 06.02.2013    source источник
comment
Почему вы решили, что создание zip-файла и переименование его в исполняемый файл превратит zip-файл в исполняемый двоичный файл?   -  person Nicol Bolas    schedule 07.02.2013
comment
Я этого не делал, но я не понимаю, как исполняемый самораспаковывающийся файл можно будет распространять. Не могли бы вы помочь?   -  person hexagonest    schedule 07.02.2013
comment
Пожалуйста, ответь мне? Мне действительно нужно знать!   -  person hexagonest    schedule 07.02.2013


Ответы (2)


Судя по всему, вы пытаетесь сохранить свой «lovechive» с расширением .exe; ваш архиватор, вероятно, «услужлив», предполагая, что вы хотели создать самораспаковывающееся устройство, чего вы не сделали.


Хорошо, давайте начнем с обсуждения того, как работают исполняемые «lovechives»: когда love.exe запускается, он сначала проверяет свое собственное имя, и если он вызывается как-то иначе, чем love или love.exe, он сразу же проверяет, не застряло ли что-то на его конце. если есть, то он пытается интерпретировать его, как если бы это был «цветок любви».

Итак, в основном, мы хотим прикрепить zip-файл к нижней части любви (не волнуйтесь, ей это нравится).

  1. Start by creating an ordinary zip archive of you game directory.
    • Remember to check for anything you don't actually mean to ship; plenty of love games have gone out containing backup copies of the source code, test artwork, and peoples' shopping lists. Don't be a statistic.
  2. Имя файла не имеет отношения к тому, что мы здесь делаем, поэтому не беспокойтесь об обычном шаге переименования его в .love. просто убедитесь, что у вас есть обычный почтовый индекс.
  3. The next step depends on your host platform, but basically you now need to do the whole "stick it to love's bottom' part now, generally this is done from the command-line:
    • On windows, the command is:
      copy /b love.exe+YourGame.zip TheGame.exe
      Where love.exe is the name of the main 'love' executable YourGame.zip is the name of zip file containing your game, and TheGame.exe is what you want the final game executable to be named.
    • В Linux или OSX команда выглядит следующим образом:
      cat love YourGame.zip > TheGame
      Где love – это имя основного исполняемого файла "love", YourGame.zip – это имя zip-файла, содержащего вашу игру, а TheGame – это то, что вы хотите получить в конечном исполняемом файле игры. быть названным.

Эта замена соответствующих имен файлов должна позволить вам создавать версии для Linux и Windows (все, что я знаю о создании «объединенных» приложений OSX, это то, что это сложнее).


Для справки: извлечь файлы из «объединенной» игры совершенно несложно. Обычно ничего, кроме изменения расширения файла, иногда даже этого. И нет, zip-шифрование здесь не поможет; он не запустится, потому что любовь не может прочитать архив. (Вполне разумно, на самом деле.)

Наконец, если вы распространяете среди сообщества Love, они, как правило, предпочитают, чтобы вы просто давали им «lovechive».

person Textmode    schedule 24.08.2013
comment
Извините, я забыл пометить это как решенное. Но спасибо за прекрасное объяснение. Теперь я понял идею :) - person hexagonest; 09.09.2013
comment
Просто рад, что смог помочь. - person Textmode; 20.09.2013
comment
Хороший совет здесь! Что мне действительно не нравится, так это то, что вы можете получить все исходные файлы из exe без каких-либо усилий. Вам не кажется, что было бы неплохо создать exe-файл, который нельзя открыть стандартным упаковщиком? Я могу попытаться написать сценарий для этого, если в этом заинтересовано достаточное количество людей. Так что ты думаешь? - person Noel Widmer; 22.01.2014

Из https://love2d.org/wiki/Game_Distribution:

Вот как это сделать в Windows. В консоли введите следующее:

copy /b love.exe+game.love game.exe

Затем все, что вам нужно сделать, это заархивировать game.exe и необходимые библиотеки DLL и распространить их. Да; это означает, что в игре будет частная копия LÖVE, но в этом нет ничего плохого. Это также означает, что вам придется создать по одному пакету для каждой платформы, которую вы хотите поддерживать, или просто предложить один .love для других платформ.

person SolarBear    schedule 06.02.2013
comment
Слушай, я перечитывал это снова и снова. Что вы будете делать после того, как получите zip-файл game.exe!? Вы даже не можете запустить game.exe. Это самовывоз. Я не понимаю. - person hexagonest; 07.02.2013
comment
Сначала вы создаете ZIP-файл, содержащий все файлы вашей игры. После этого вы переименовываете его в .love, а затем запускаете указанную выше команду в консоли. Чтобы это работало, вам нужно скопировать love.exe в каталог, где находится ваш файл .love. После этого у вас будет файл с именем game.exe, который можно распространять, учитывая, что вы также распространяете необходимые файлы .dll. - person Henrik Ilgen; 07.02.2013
comment
Хенрик Ильген в значительной степени прибил это. Если у вас есть дополнительные проблемы, просто сообщите нам. - person SolarBear; 07.02.2013