Difference between revisions of "Game Distribution (Українська)"

(to be continued)
 
m (Інструменти від спільноти: typo)
 
(6 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
Ось найбільш зручні способи розповсюдження ігор на різних платформах (для всіх них потрібен файл .love):
 
Ось найбільш зручні способи розповсюдження ігор на різних платформах (для всіх них потрібен файл .love):
  
* Windows → [[Game Distribution (Українська)#Створення exe-файлу для Windows|Exe-файл для Windows]]
+
* Windows → [[Game Distribution (Українська)#Створення виконуваного файлу для Windows|Виконуваний файл для Windows]]
 
* macOS → [[Game Distribution (Українська)#Створення застосунку macOS|Застосунок для macOS]]
 
* macOS → [[Game Distribution (Українська)#Створення застосунку macOS|Застосунок для macOS]]
* Linux → звичайний файл .love, або образи [[Game Distribution (Українська)#Розповсюдження в Linux|Appimage]]
+
* Linux → звичайний файл .love, або пакунки [[Game Distribution (Українська)#Розповсюдження в Linux|Appimage]]
  
 
__TOC__
 
__TOC__
Line 51: Line 51:
 
     zip -9 -r SuperGame.love .
 
     zip -9 -r SuperGame.love .
  
== Створення exe-файлу для Windows ==
+
== Створення виконуваного файлу для Windows ==
  
Once you have packed your game into a .love file you can create a game executable that directly runs your game.
+
Після запакування гри в файл .love, можна створити виконуваний файл, щоб гра запускалася напряму.
  
For this you have to append your .love file to the love.exe file that comes with the official LÖVE .zip file. The resulting file is your game executable.  
+
Для цього потрібно додати зміст вашого файлу .love до файлу love.exe з офіційного .zip-файла LÖVE. Об'єднаний виконуваний файл і буде використовуватися для запуску гри.  
  
Once you have your game executable you can pack it together with all the other DLL files of the official LÖVE .zip file into a new .zip file and share this with the world.
+
Коли у вас буде об'єднаний виконуваний файл гри, його можна буде запакувати разом з файлами DLL та іншими файлами з офіційного .zip-файлу LÖVE в новий .zip-файл, і передавати його кому завгодно.
  
'''Note:''' Some people do not have a 64-bit version of Windows, so it is a good idea to either distribute both 32- and 64-bit versions of your game, or only distribute a 32-bit version.
+
'''Зауваження:''' Не у всіх є 64-бітна версія Windows, тому краще або створити і 32-, і 64-бітну версію вашої гри, або розповсюджувати тільки 32-бітну версію.
  
=== Platform Specific Instructions ===
+
=== Інструкції для різних платформ ===
  
 
==== Windows ====
 
==== Windows ====
  
To create your game executable under windows use the command line to run
+
Щоб створити виконуваний файл в Windows, виконайте в командному рядку таку команду:
  
 
     copy /b love.exe+SuperGame.love SuperGame.exe
 
     copy /b love.exe+SuperGame.love SuperGame.exe
  
'''Note''': You may have to run the command as an administrator on your computer. You can do this by going to '''Windows\System32''' and right clicking on '''cmd.exe''' and selecting the option '''Run as administrator'''. After this, you must type '''cd C:\Program Files\LOVE\''' (or whatever your default love directory is), then you may continue as normal.
+
'''Зауваження''': Можливо, вам доведеться виконати цю команду як адміністратор комп'ютера. Для цього можна зайти в папку '''Windows\System32''', натиснути правою кнопкою миші на файл '''cmd.exe''' і вибрати варіант '''Run as administrator''' (Запустити як адміністратор). Після цього потрібно набрати '''cd C:\Program Files\LOVE\''' (замініть це на шлях до директорії з LÖVE) і виконати команду там.
  
Alternatively you can create a .bat (e.g. create_game_exe.bat) file with the contents
+
Альтернативний спосіб: можна створити файл .bat (наприклад, create_game_exe.bat), записати в ньому такий текст:
  
 
     copy /b love.exe+%1 "%~n1.exe"
 
     copy /b love.exe+%1 "%~n1.exe"
  
and then you can simply drag your SuperGame.love file onto the .bat file and it will create the file SuperGame.love.exe which you could then use for distribution.
+
і просто перетягнути ваш файл SuperGame.love на .bat-файл — після цього буде створено файл SuperGame.love.exe, який можна розповсюджувати.
  
If you are using '''PowerShell''' instead of cmd, then the command used is a little bit different:
+
Якщо ви використовуєте '''PowerShell''' замість cmd, то команда буде трошки інакшою:
  
 
     cmd /c copy /b love.exe+SuperGame.love SuperGame.exe
 
     cmd /c copy /b love.exe+SuperGame.love SuperGame.exe
  
This method creates a '''fused''' game.
+
Цей метод створює '''приєднану''' (fused) до програми гру.
  
===== Windows icon =====
+
===== Значок для Windows =====
  
You can use your own icon images using tools like for example the freeware [http://www.angusj.com/resourcehacker/ Resource Hacker].
+
Значок своєї гри можна змінити програмами на кшталт безкоштовного [http://www.angusj.com/resourcehacker/ Resource Hacker] (англ.).
  
[https://youtu.be/WTk_HJdXVNQ?t=2m22s Video tutorial] and [http://gamedev.stackexchange.com/a/121947/9093 step-by-step instructions] are available.
+
Є [https://youtu.be/WTk_HJdXVNQ?t=2m22s відеоурок] (англ.) та [http://gamedev.stackexchange.com/a/121947/9093 покрокова інструкція] (англ.).
  
==== Linux / OS X ====
+
==== Linux / macOS ====
  
You can create the windows executable from Linux and OS X using the command line.
+
В Linux та macOS можна створити виконуваний файл для Windows з командного рядка.
  
First download the official zipped 32 or 64 bit executable ('''not''' the installer) from [https://www.love2d.org/ https://www.love2d.org/]. 32 bit games can run on 64bit Windows systems but not vice versa, so to save time on smaller games, you can provide 32bit only.
+
Спочатку завантажте офіційний 32-бітний або 64-бітний виконуваний файл в архіві ZIP (zipped, '''не''' встановлювач) з [https://www.love2d.org/ https://www.love2d.org/]. 32-бітні ігри можна виконувати і на системах з 64-бітним Windows, але навпаки робити не можна. Тому, щоб тратити менше часу, для невеличких ігор вистачить тільки 32-бітної версії.
  
Then in the command line/terminal run
+
Після цього в командному рядку/терміналі виконайте таку команду:
  
 
     cat love.exe SuperGame.love > SuperGame.exe
 
     cat love.exe SuperGame.love > SuperGame.exe
  
to obtain the game executable <tt style="font-size:1.3em">SuperGame.exe</tt>.
+
щоб отримати ігровий виконуваний файл <tt style="font-size:1.3em">SuperGame.exe</tt>.
  
 +
Для розповсюдження гри треба разом з виконуваним файлом додати файли .dll з тої директорії, в якій був файл love.exe (важливо не переплутати 32-бітні .dll-файли з 64-бітними). Якщо їх не додати, при запуску SuperGame.exe в Windows буде виводитися помилка.
  
When distributing the windows executable you will need to include the dll files that came in the folder of the love.exe you used (so don't mix the 32 bit dll's with the 64 bit dll's). Without these files you will get error message when attempting to run SuperGame.exe on a windows machine.
+
В результаті ваш фінальний архів має виглядати приблизно так:
 
 
The contents of your final distribution folder should look something like this:
 
 
* SDL2.dll
 
* SDL2.dll
* OpenAL32.dll (note: this file is different in the 64 bit download despite still being called 'OpenAL32.dll')
+
* OpenAL32.dll (зауваження: 64-бітній версія цього файла відрізняється від 32-бітної, хоч назва в нього і залишиться 'OpenAL32.dll')
 
* SuperGame.exe
 
* SuperGame.exe
* license.txt (note: the license '''requires''' that it be included in any further distribution)
+
* license.txt (зауваження: згідно з ліцензією, її '''обов'язково''' треба копіювати при копіюванні файлів)
 
* love.dll
 
* love.dll
 
* lua51.dll
 
* lua51.dll
Line 117: Line 116:
 
== Створення застосунку macOS ==
 
== Створення застосунку macOS ==
  
Once you have your game prepared as .love file you can make your game available for macOS users by following the steps below ([https://youtu.be/SU2RpGdezP4 video tutorial] available):
+
Якщо ви хочете створити офіційний/комерційний пакунок (наприклад, для Mac App Store), див. наступний розділ [[Game Distribution (Українська)#Офіційне_розповсюдження_та_App_Store|Офіційне розповсюдження та App Store]].
  
# Download and extract the Mac version of LÖVE from [https://www.love2d.org the LÖVE homepage]
+
Коли ви підготувати файл .love зі своєї грою, його можна зробити доступним для гравців та гравчинь з системою macOS, виконавши описані кнопки (також є [https://youtu.be/SU2RpGdezP4 відеоурок] англійською):
# Rename <tt>love.app</tt> to <tt>SuperGame.app</tt>
 
# Copy your <tt>SuperGame.love</tt> to <tt>SuperGame.app/Contents/Resources/</tt> (right-click/Ctrl+click and pick "Show Package Content" on OS X). This will result in the game running in fused mode.
 
# Modify <tt>SuperGame.app/Contents/Info.plist</tt> (see below for details)
 
# Zip the <tt>SuperGame.app</tt> folder (e.g. to SuperGame_osx.zip) and distribute it. Enable the ''-y'' flag of zip to keep the symlinks.
 
  
When modifying <tt>SuperGame.app/Contents/Info.plist</tt> make sure to change the string values of the following XML-tags:
+
# Завантажте і розпакуйте версію LÖVE для Mac з [https://www.love2d.org the домашньої сторінки LÖVE]
 +
# Переіменуйте <tt>love.app</tt> в <tt>SuperGame.app</tt>
 +
# Скопіюйте <tt>SuperGame.love</tt> в <tt>SuperGame.app/Contents/Resources/</tt> (в macOS натисніть правою кнопкою миші/утримуючи Ctrl в оберіть "Показати зміст пакунку" / "Show Package Content"). В результаті гра буде працювати в об'єднаному режимі.
 +
# Змініть <tt>SuperGame.app/Contents/Info.plist</tt> (див. нижче)
 +
# Запакуйте папку <tt>SuperGame.app</tt> в формат ZIP (напр. SuperGame_osx.zip) і розповсюджуйте її. Включіть флаг ''-y'' zip-архіву, щоб зберегти символічні посилання.
 +
 
 +
Коли будете міняти <tt>SuperGame.app/Contents/Info.plist</tt>, обов'язково змініть текст в наступних XML-тегах:
  
 
* <tt>CFBundleIdentifier</tt>
 
* <tt>CFBundleIdentifier</tt>
 
* <tt>CFBundleName</tt>
 
* <tt>CFBundleName</tt>
  
and remove the section <tt>UTExportedTypeDeclarations</tt> which ensures that macOS does not associate all .love files with your app. Overall the changes should be something like this:
+
і видаліть розділ <tt>UTExportedTypeDeclarations</tt>, щоб macOS не зв'язав .love-файли інших ігор з вашою грою. В цілому зміни мають виглядати приблизно так:
  
 
{| border="1" cellpadding="1" cellspacing="0"
 
{| border="1" cellpadding="1" cellspacing="0"
!width="300"|Original Info.plist
+
!width="300"|Оригінальний Info.plist
!width="300"|Modified Info.plist
+
!width="300"|Змінений Info.plist
 
|- style="vertical-align: top;"
 
|- style="vertical-align: top;"
 
|
 
|
Line 165: Line 166:
 
     </plist>
 
     </plist>
 
|}
 
|}
 +
 +
==== Офіційне розповсюдження та App Store ====
 +
 +
Щоб скомпілювати програми для Mac, потрібен комп'ютер з системою macOS, на якому встановлено XCode (XCode можна встановити з App Store).
 +
 +
# Завантажте [https://github.com/love2d/love/releases/tag/11.3 програмний код Löve]
 +
# Завантажте потрібні фреймворки [http://love2d.org/sdk звідси] і розмістіть їх в директорії <code>/Library/Frameworks/</code>.
 +
# Відкрийте проєкт Xcode в файлі <code>platform/xcode/love.xcodeproj</code>. Вам треба буде скомпілювати ціль <code>love-macosx</code>, що буде описано нижче.
 +
# В XCode змініть значки для macOS в <code>Images.xcassets</code>
 +
# В XCode змініть файл <code>love-macosx.plist</code> (див. інструкції вище)
 +
# Додайте ваш файл .love на етапі збірки "Copy Bundle Resources" (Скопіювати ресурси пакунку) <br>[[File:addLoveFileToXcodeBundleResources.png|600px]]
 +
# Виконайте [https://developer.apple.com/macos/distribution/ інструкцію Apple для розповсюдження програм для Mac]
 +
  
 
== Розповсюдження в Linux ==
 
== Розповсюдження в Linux ==
Line 188: Line 202:
 
Вважайте, що хоч `SuperGame` і запуститься на вашому комп'ютері, в інших дистрибутивах Linux може бути інша архітектура або інші версії бібліотек, тому '''є велика імовірність, що на інших комп'ютерах з Linux вона не запуститься'''.
 
Вважайте, що хоч `SuperGame` і запуститься на вашому комп'ютері, в інших дистрибутивах Linux може бути інша архітектура або інші версії бібліотек, тому '''є велика імовірність, що на інших комп'ютерах з Linux вона не запуститься'''.
  
==== Unstable Method For Linux ====
+
==== Linux ====
  
It has not been yet proven to work in all scenarios, but this a way of distributing your game for Linux.
+
Поки що не гарантується, що цей метод буде працювати у всіх можливих ситуаціях, але можна попробувати його для розповсюдженні ігор в Linux.
  
# Download the appropriate Linux version of love (with file extension .tar.gz), either x86_64, or i686. [https://bitbucket.org/rude/love/downloads/ Download Page]
+
# Завантажте актуальну версію LÖVE для Linux (з розширенням .tar.gz), або x86_64, або i686. [https://bitbucket.org/rude/love/downloads/ Сторінка завантаження] (англ.)
# Extract the <tt>.tar.gz</tt>. You can do this by either right clicking the file and pressing “extract file”, or extract it via the command line: <source lang="bash"> tar -xvzf love.tar.gz </source>
+
# Розпакуйте файл <tt>.tar.gz</tt>. Для цього можна або натиснути на нього правою кнопкою миші і вибрати «Розпакувати файл» (Extract file), або розпакувати його з командного рядку: <source lang="bash"> tar -xvzf love.tar.gz </source>
# Move your <tt>game.love</tt> file inside the extracted folder.
+
# Перенесіть свій файл <tt>game.love</tt> в директорію, яка з'явилася після розпакування.
# Edit the file called <tt>love</tt> by replacing "$@" with "${LOVE_LAUNCHER_LOCATION}/game.love”
+
# Відредагуйте файл <tt>love</tt> і замініть "$@" на "${LOVE_LAUNCHER_LOCATION}/game.love"
  
 
==== Debian ====
 
==== Debian ====
  
There is a policy for including LÖVE games in the Debian archive. It can be followed to create a package for a game even if it is not intended to include it in the archive.
+
Архів Debian має правила включення ігор на LÖVE. Навіть якщо ви не плануєте додавати гру в цей архів, ви можете використовувати їх інструкції.
  
[https://wiki.debian.org/Games/Love2d Packaging Love2d]
+
[https://wiki.debian.org/Games/Love2d Створення пакетів Love2d] (англ.)
  
==== AppImages ====
+
==== Пакунки AppImage ====
The AppImage format is a format for packaging applications in a way that allows them to run on a variety of different target systems (base operating systems, distributions) without further modification. The whole kit can be downloaded from [https://github.com/probonopd/AppImageKit/ here].
+
Формат AppImage дозволяє створити пакунок з програмою, який можна буде використовувати на багатьох різних системах (основних операційних системах, дистрибутивах) без змін. Весь набір інструментів для нього можна завантажити [https://github.com/probonopd/AppImageKit/ тут] (англ.).
  
In order to package games using AppImage, the libraries and dependencies required by love need to be gathered, which can be done easily using [https://github.com/proot-me/PRoot/blob/master/doc/care/manual.txt CARE] (available packaged in the Ubuntu repositories) by executing:
+
Щоб створити пакунок AppImage для гри потрібно зібрати всі бібліотеки та файли, від яких залежить LÖVE. Це можно проста зробити програмою [https://github.com/proot-me/PRoot/blob/master/doc/care/manual.txt CARE] (вона доступна в репозитаріях Ubuntu), виконавши таку коману:
 
   
 
   
 
<source lang='bash'>care -o love.tar.gz love</source>.
 
<source lang='bash'>care -o love.tar.gz love</source>.
  
This program makes an archive, which contains the love executable and its dependencies and related files kept in the way of your system.
+
Ця програма створить архів, в якому буде виконуваний файл love та файли, від яких він залежить, і інші пов'язані файли, які зберігаються в вашій системі.
Secondly, the game's .love file needs to be 'fused' by the means shown in the above section. Now, the files need to be placed in the following way in a new directory:
+
 
 +
По-друге, необхідно «приєднати» гру до файла .love таким чином, як показано вижче. Після цього файли в директорії виглядатимуть так:
 
<source lang='text'>
 
<source lang='text'>
 
Application Directory/
 
Application Directory/
├── <game name>.desktop  --> This file contains path to the program's icon file,
+
├── <game name>.desktop  --> В цьому файлі записаний шлях до значка програми,
│                            the name of the program and the command to execute it.
+
│                            назва програми і команда для її викнонання.
├── <game name>.png      --> Your game's icon
+
├── <game name>.png      --> Значок вашої програми
 
└── usr/
 
└── usr/
     ├── bin/    --> Your fused binary needs to be placed here
+
     ├── bin/    --> Сюди треба покласти об'єднаний виконуваний файл
     ├── lib/    --> Your libraries need to be placed here
+
     ├── lib/    --> Сюди треба покласти бібліотеки
     └── share/  --> Your (or LÖVE's) data files (and other things) need to be placed here, if any
+
     └── share/  --> Сюди треба покласти ваші (або від LÖVE) файли даних (та інші речі), якщо вони є
 
</source>
 
</source>
Finally, the directory needs to be converted into an AppImage, using AppImageAssistant available in the kit.
+
На останньому кроці директорію треба перетворити в AppImage, використовуючи AppImageAssistant з набору інструментів.
More information can be found in the [https://docs.appimage.org/ AppImage documentation].
+
Більше інформації можна знайти в [https://docs.appimage.org/ документації до AppImage] (англ.).
  
 
== Android ==
 
== Android ==
=== Compiling from source ===
+
=== Компіляція з початкового коду ===
Firstly clone the android LÖVE project, specifying which branch to use:  
+
По-перше зклонуйте проєкт LÖVE:
 
<source lang='bash'>git clone https://github.com/love2d/love-android</source>
 
<source lang='bash'>git clone https://github.com/love2d/love-android</source>
Then, download the Android SDK (API 28) and NDK. For the NDK, r16 and later is known to work. Older version is untested.
 
  
Set these environment variables
+
Після цього потрібно '''оновити підмодулі''', щоб директорія /love/src/jni/love не була пустою
* <code>ANDROID_HOME</code> to your Android SDK location.
+
<source lang='bash'>git submodule update --init --recursive</source>
* <code>ANDROID_NDK_HOME</code> to your Android NDK location.
 
  
Put the game (game.love) in the directory (project)/app/src/main/assets (if this directory don't exist create it).
+
Після цього завантажте Android SDK (API 28) та NDK. Відомо, що для NDK працює версія r16 та новіше. Робота на старіших версіях не тестувалась.
  
For Linux or macOS systems it may be necessary set the executable permission:
+
Встановіть наступні змінні середовища:
 +
* <code>ANDROID_HOME</code> має містити шлях до Android SDK.
 +
* <code>ANDROID_NDK_HOME</code> має містити шлях до Android NDK.
 +
 
 +
Скопіюйте гру (game.love) в директорію (проєкт)/app/src/main/assets (якщо такої директорії не існує, створіть її).
 +
 
 +
В системах Linux та macOS, можливо, буде потрібно встановити дозволи на виконання програми:
 
<source lang="bash">chmod +x gradlew</source>
 
<source lang="bash">chmod +x gradlew</source>
  
And finally to generate the apk, do:
+
Нарешті, щоб створити файл apk, виконайте:
 
<source lang='bash'>./gradlew assemble</source>
 
<source lang='bash'>./gradlew assemble</source>
  
The apk will be in (project)/app/build/outputs/apk/
+
Файл .apk буде в директорії (проєкт)/app/build/outputs/apk/
  
For more information see the [https://bitbucket.org/MartinFelis/love-android-sdl2/wiki/Home Android wiki].
+
Більше інформації можна знайти в [https://bitbucket.org/MartinFelis/love-android-sdl2/wiki/Home wiki про Löve для Android] (англійською).
  
=== Using APKTool ===
+
=== Використання APKTool ===
Please see [[Game Distribution/APKTool]] for more information.
+
Див. інструкції на сторінці {{translated link|Game Distribution/APKTool|Українська}}.
  
 
== iOS ==
 
== iOS ==
  
Basic instructions for iOS (without fusing) are available at [[Getting_Started#iOS]].
+
Базові інструкції для iOS (без приєднання гри) доступні в статті [[Getting Started (Українська)#iOS]].
 +
 
 +
{{notice|Через обмеження, встановлені Apple, об'єднати гру для iOS можна тільки на комп'ютері з macOS!}}
  
To '''fuse''' your game into the LÖVE engine:
+
Щоб '''приєднати''' свою гру до рушія LÖVE:
# Get iOS source code from [http://love2d.org love2d.org].
+
# Завантажте початковий код для iOS з [http://love2d.org love2d.org].
# Open platform/xcode/love.xcodeproj with Xcode.
+
# Відкрийте platform/xcode/love.xcodeproj в Xcode.
# Select love-ios target (not love-macosx)
+
# Оберіть об'єкт-результат love-ios (не love-macosx)
# Select '''Build Phases''' of the 'love-ios' target and add your 'game.love' file into '''Copy Bundle Resources'''.
+
# Оберіть '''Build Phases''' (Фази збірки) результату 'love-ios', і додайте свій файл 'game.love' в '''Copy Bundle Resources''' (Копіювати ресурси пакунку).
# Build the project.
+
# Зберіть проєкт.
# Your game should appear on your iOS device as an app.
+
# Ваша гра має з'явитися на вашому пристрої iOS у вигляді застосунку.
  
If you can't find the relevant XCode UI elements, you can refer to [https://youtu.be/MsYanwcU42E video tutorial on YouTube].
+
Якщо ви не можете знайти потрібні елементи в інтерфейсі XCode, відкрийте [https://youtu.be/MsYanwcU42E відеоурок на YouTube] (англ.).
  
== Distribution on the web ==
+
== Розповсюдження в web ==
  
Publishing as a HTML5 or JavaScript game is possible thanks to [https://github.com/TannerRogalsky/love.js TannerRogalsky/love.js]. Threads for example are not supported though and playback of course depends on the browser.
+
Завдяки [https://github.com/TannerRogalsky/love.js TannerRogalsky/love.js] ігри можна запускати в браузері з підтримкою HTML5 та JavaScript. Потоки (threads) недоступні, і робота залежить від браузера.
  
== Community Tools ==
+
== Інструменти від спільноти ==
  
There are a few tools developed by the community to help with game distribution.
+
Спільнота розробників створила декілька інструментів, які допомагають розповсюджувати ігри.
* [https://github.com/MisterDA/love-release love-release] ([https://love2d.org/forums/viewtopic.php?t=75387 forum]), a Lua script that automates game distribution. Supports Windows, macOS, Debian, Linux, with much more features.
+
* [https://github.com/pfirsich/makelove makelove], потужний багатоплатформовий інструмент для об'єднання кода ігор з програмою, написаний на Python 3. Підтримує Windows і Linux через AppImage.
* [https://github.com/camchenry/boon boon] ([https://love2d.org/forums/viewtopic.php?t=86573 forum]), a multi-plateform, easy to use tool supporting Windows, macOS, Linux.
+
* [https://github.com/MisterDA/love-release love-release] ([https://love2d.org/forums/viewtopic.php?t=75387 на форумі], англ.), скрипт на Lua, який автоматизує створення пакунків для гри. Підтримує Windows, macOS, Debian, Linux, і має багато опцій.
* [https://love2d.org/forums/viewtopic.php?f=3&t=80565 Love Distrubution Pack][sic], a windows-only tool that can create .love files and exes.
+
* [https://github.com/camchenry/boon boon] ([https://love2d.org/forums/viewtopic.php?t=86573 на форумі], англ.), багатоплатформовий простий інструмент, якій підтримує Windows, macOS, Linux.
* [https://www.love2d.org/forums/viewtopic.php?f=5&t=30259 love-dist], a windows-only tool that can [[LuaC]] your files and create an exe.
+
* [https://love2d.org/forums/viewtopic.php?f=3&t=80565 Love Distrubution Pack][sic], інструмент тільки для Windows, який лише дозволяє створювати файли .love та виконувані exe-файли.
 +
* [https://www.love2d.org/forums/viewtopic.php?f=5&t=30259 love-dist], інструмент тільки для Windows, який компілює ваші ігри через {{translated link|LuaC|Українська}} і створює exe-файл.
  
[[Category:LÖVE]]
+
[[Category:LÖVE (Українська)]]
  
== Other Languages ==
+
== Іншими мовами ==
 
{{i18n|Game Distribution}}
 
{{i18n|Game Distribution}}

Latest revision as of 11:38, 11 July 2020

Коли ви зробите свою гру, ви, безумовно, захочете поділитися нею з іншими. Для цього звичайно треба створити файл .love. Потім можна або передати цей файл іншим (щоб зіграти в таку гру, гравцям потрібно спочатку встановити LÖVE), або створити на його основі пакети для конкретних платформ.

Ось найбільш зручні способи розповсюдження ігор на різних платформах (для всіх них потрібен файл .love):

Створення файлу .love

Зверніть увагу, що в деяких операційних системах великі і малі літери в назвах файлів та директорій вважаються різними літерами. Щоб у вас не було проблем, переконайтеся, що назви файлів в коді та на диску написані однаково.

Щоб створити файл .love, треба створити файл zip усієї директорії з грою. Переконайтеся, що файл main.lua знаходиться в корені архіву. Тобто якщо ваші файли зберігаються так:

   <somedir>\SuperGame\gfx\character.png
   <somedir>\SuperGame\main.lua
   <somedir>\SuperGame\conf.lua

то в zip-архіві вони мають зберігатися так:

   gfx\character.png
   main.lua
   conf.lua

Не треба включати директорію гри SuperGame\.

Після створення .zip-файлу просто перейменуйте його з .zip в .love, і все готово!

Якщо ви працюєте на системі, яка не розрізняє великі та малі літери в іменах файлів (наприклад, в Windows), рекомендується перенести свій файл .love в іншу директорію, запустити його звідти і протестувати гру. Таким чином можна знайти проблеми з різними іменами файлів, з якими можуть зіштовхнутися інші гравці або гравчині. Якщо ви запускатимете гру в тій же директорії, то навіть якщо .love не знайде в архіві якісь файли, він відкриє їх копію з диску. Для тестування зручно перенести файл .love в нову директорію всередині директорії гри, наприклад, love/MyGame.love.

Створення пакетів на різних платформах

Windows

В Windows вбудована можливість створення zip-файлів через контекстне меню. Детальніше див. в інструкції Запакування та розархівування файлів.

macOS

В директорії гри оберіть файли гри та під-директорії, натисніть правою кнопкою миші/з затиснутим Ctrl, після чого оберіть Compress n items (Запакувати N елементів). Після цього перейменуйте створений файл .zip, щоб в нього було закінчення .love ending.

Альтернативний варіант — використати термінал. Зайдіть в папку гри та виконайте таку команду:

   zip -9 -r SuperGame.love .

Linux

В командному рядку, якщо вашою активною директорією є SuperGame/, файл .love можна створити таким чином:

   zip -9 -r SuperGame.love .

Створення виконуваного файлу для Windows

Після запакування гри в файл .love, можна створити виконуваний файл, щоб гра запускалася напряму.

Для цього потрібно додати зміст вашого файлу .love до файлу love.exe з офіційного .zip-файла LÖVE. Об'єднаний виконуваний файл і буде використовуватися для запуску гри.

Коли у вас буде об'єднаний виконуваний файл гри, його можна буде запакувати разом з файлами DLL та іншими файлами з офіційного .zip-файлу LÖVE в новий .zip-файл, і передавати його кому завгодно.

Зауваження: Не у всіх є 64-бітна версія Windows, тому краще або створити і 32-, і 64-бітну версію вашої гри, або розповсюджувати тільки 32-бітну версію.

Інструкції для різних платформ

Windows

Щоб створити виконуваний файл в Windows, виконайте в командному рядку таку команду:

   copy /b love.exe+SuperGame.love SuperGame.exe

Зауваження: Можливо, вам доведеться виконати цю команду як адміністратор комп'ютера. Для цього можна зайти в папку Windows\System32, натиснути правою кнопкою миші на файл cmd.exe і вибрати варіант Run as administrator (Запустити як адміністратор). Після цього потрібно набрати cd C:\Program Files\LOVE\ (замініть це на шлях до директорії з LÖVE) і виконати команду там.

Альтернативний спосіб: можна створити файл .bat (наприклад, create_game_exe.bat), записати в ньому такий текст:

   copy /b love.exe+%1 "%~n1.exe"

і просто перетягнути ваш файл SuperGame.love на .bat-файл — після цього буде створено файл SuperGame.love.exe, який можна розповсюджувати.

Якщо ви використовуєте PowerShell замість cmd, то команда буде трошки інакшою:

   cmd /c copy /b love.exe+SuperGame.love SuperGame.exe

Цей метод створює приєднану (fused) до програми гру.

Значок для Windows

Значок своєї гри можна змінити програмами на кшталт безкоштовного Resource Hacker (англ.).

Є відеоурок (англ.) та покрокова інструкція (англ.).

Linux / macOS

В Linux та macOS можна створити виконуваний файл для Windows з командного рядка.

Спочатку завантажте офіційний 32-бітний або 64-бітний виконуваний файл в архіві ZIP (zipped, не встановлювач) з https://www.love2d.org/. 32-бітні ігри можна виконувати і на системах з 64-бітним Windows, але навпаки робити не можна. Тому, щоб тратити менше часу, для невеличких ігор вистачить тільки 32-бітної версії.

Після цього в командному рядку/терміналі виконайте таку команду:

   cat love.exe SuperGame.love > SuperGame.exe

щоб отримати ігровий виконуваний файл SuperGame.exe.

Для розповсюдження гри треба разом з виконуваним файлом додати файли .dll з тої директорії, в якій був файл love.exe (важливо не переплутати 32-бітні .dll-файли з 64-бітними). Якщо їх не додати, при запуску SuperGame.exe в Windows буде виводитися помилка.

В результаті ваш фінальний архів має виглядати приблизно так:

  • SDL2.dll
  • OpenAL32.dll (зауваження: 64-бітній версія цього файла відрізняється від 32-бітної, хоч назва в нього і залишиться 'OpenAL32.dll')
  • SuperGame.exe
  • license.txt (зауваження: згідно з ліцензією, її обов'язково треба копіювати при копіюванні файлів)
  • love.dll
  • lua51.dll
  • mpg123.dll
  • msvcp120.dll
  • msvcr120.dll

Створення застосунку macOS

Якщо ви хочете створити офіційний/комерційний пакунок (наприклад, для Mac App Store), див. наступний розділ Офіційне розповсюдження та App Store.

Коли ви підготувати файл .love зі своєї грою, його можна зробити доступним для гравців та гравчинь з системою macOS, виконавши описані кнопки (також є відеоурок англійською):

  1. Завантажте і розпакуйте версію LÖVE для Mac з the домашньої сторінки LÖVE
  2. Переіменуйте love.app в SuperGame.app
  3. Скопіюйте SuperGame.love в SuperGame.app/Contents/Resources/ (в macOS натисніть правою кнопкою миші/утримуючи Ctrl в оберіть "Показати зміст пакунку" / "Show Package Content"). В результаті гра буде працювати в об'єднаному режимі.
  4. Змініть SuperGame.app/Contents/Info.plist (див. нижче)
  5. Запакуйте папку SuperGame.app в формат ZIP (напр. SuperGame_osx.zip) і розповсюджуйте її. Включіть флаг -y zip-архіву, щоб зберегти символічні посилання.

Коли будете міняти SuperGame.app/Contents/Info.plist, обов'язково змініть текст в наступних XML-тегах:

  • CFBundleIdentifier
  • CFBundleName

і видаліть розділ UTExportedTypeDeclarations, щоб macOS не зв'язав .love-файли інших ігор з вашою грою. В цілому зміни мають виглядати приблизно так:

Оригінальний Info.plist Змінений Info.plist
   ...
   <key>CFBundleIdentifier</key>
   <string>org.love2d.love</string>
   ...
   <key>CFBundleName</key>
   <string>LÖVE</string>
   ...
   <key>NSPrincipalClass</key>
   <string>NSApplication</string>
   <key>UTExportedTypeDeclarations</key>
   <array>
   ...
   </array>
   </dict>
   </plist>
   ...
   <key>CFBundleIdentifier</key>
   <string>com.SuperCompany.SuperGame</string>
   ...
   <key>CFBundleName</key>
   <string>SuperGame</string>
   ...
   <key>NSPrincipalClass</key>
   <string>NSApplication</string>
   </dict>
   </plist>

Офіційне розповсюдження та App Store

Щоб скомпілювати програми для Mac, потрібен комп'ютер з системою macOS, на якому встановлено XCode (XCode можна встановити з App Store).

  1. Завантажте програмний код Löve
  2. Завантажте потрібні фреймворки звідси і розмістіть їх в директорії /Library/Frameworks/.
  3. Відкрийте проєкт Xcode в файлі platform/xcode/love.xcodeproj. Вам треба буде скомпілювати ціль love-macosx, що буде описано нижче.
  4. В XCode змініть значки для macOS в Images.xcassets
  5. В XCode змініть файл love-macosx.plist (див. інструкції вище)
  6. Додайте ваш файл .love на етапі збірки "Copy Bundle Resources" (Скопіювати ресурси пакунку)
    addLoveFileToXcodeBundleResources.png
  7. Виконайте інструкцію Apple для розповсюдження програм для Mac


Розповсюдження в Linux

В Linux поки що немає простого способу розповсюдження ігор. Основний підіх — дати посилання на офіційні пакунки LÖVE на https://www.love2d.org. Після встановлення LÖVE файли .love звичайно запускаються автоматично, або такою командою в командному рядку:

love SuperGame.love

Обов'язково додайте файл conf.lua і вкажіть в ньому використану версію LÖVE.

function love.conf(t)
    t.version = "11.2"
end

Часта помилка — спроба приєднати до лінуксової програми файл .love:

cat /usr/bin/love SuperGame.love > SuperGame
chmod a+x ./SuperGame

Вважайте, що хоч `SuperGame` і запуститься на вашому комп'ютері, в інших дистрибутивах Linux може бути інша архітектура або інші версії бібліотек, тому є велика імовірність, що на інших комп'ютерах з Linux вона не запуститься.

Linux

Поки що не гарантується, що цей метод буде працювати у всіх можливих ситуаціях, але можна попробувати його для розповсюдженні ігор в Linux.

  1. Завантажте актуальну версію LÖVE для Linux (з розширенням .tar.gz), або x86_64, або i686. Сторінка завантаження (англ.)
  2. Розпакуйте файл .tar.gz. Для цього можна або натиснути на нього правою кнопкою миші і вибрати «Розпакувати файл» (Extract file), або розпакувати його з командного рядку:
     tar -xvzf love.tar.gz
    
  3. Перенесіть свій файл game.love в директорію, яка з'явилася після розпакування.
  4. Відредагуйте файл love і замініть "$@" на "${LOVE_LAUNCHER_LOCATION}/game.love"

Debian

Архів Debian має правила включення ігор на LÖVE. Навіть якщо ви не плануєте додавати гру в цей архів, ви можете використовувати їх інструкції.

Створення пакетів Love2d (англ.)

Пакунки AppImage

Формат AppImage дозволяє створити пакунок з програмою, який можна буде використовувати на багатьох різних системах (основних операційних системах, дистрибутивах) без змін. Весь набір інструментів для нього можна завантажити тут (англ.).

Щоб створити пакунок AppImage для гри потрібно зібрати всі бібліотеки та файли, від яких залежить LÖVE. Це можно проста зробити програмою CARE (вона доступна в репозитаріях Ubuntu), виконавши таку коману:

care -o love.tar.gz love

.

Ця програма створить архів, в якому буде виконуваний файл love та файли, від яких він залежить, і інші пов'язані файли, які зберігаються в вашій системі.

По-друге, необхідно «приєднати» гру до файла .love таким чином, як показано вижче. Після цього файли в директорії виглядатимуть так:

Application Directory/
├── <game name>.desktop  --> В цьому файлі записаний шлях до значка програми,
│                            назва програми і команда для її викнонання.
├── <game name>.png      --> Значок вашої програми
└── usr/
    ├── bin/    --> Сюди треба покласти об'єднаний виконуваний файл
    ├── lib/    --> Сюди треба покласти бібліотеки
    └── share/  --> Сюди треба покласти ваші (або від LÖVE) файли даних (та інші речі), якщо вони є

На останньому кроці директорію треба перетворити в AppImage, використовуючи AppImageAssistant з набору інструментів. Більше інформації можна знайти в документації до AppImage (англ.).

Android

Компіляція з початкового коду

По-перше зклонуйте проєкт LÖVE:

git clone https://github.com/love2d/love-android

Після цього потрібно оновити підмодулі, щоб директорія /love/src/jni/love не була пустою

git submodule update --init --recursive

Після цього завантажте Android SDK (API 28) та NDK. Відомо, що для NDK працює версія r16 та новіше. Робота на старіших версіях не тестувалась.

Встановіть наступні змінні середовища:

  • ANDROID_HOME має містити шлях до Android SDK.
  • ANDROID_NDK_HOME має містити шлях до Android NDK.

Скопіюйте гру (game.love) в директорію (проєкт)/app/src/main/assets (якщо такої директорії не існує, створіть її).

В системах Linux та macOS, можливо, буде потрібно встановити дозволи на виконання програми:

chmod +x gradlew

Нарешті, щоб створити файл apk, виконайте:

./gradlew assemble

Файл .apk буде в директорії (проєкт)/app/build/outputs/apk/

Більше інформації можна знайти в wiki про Löve для Android (англійською).

Використання APKTool

Див. інструкції на сторінці Game Distribution/APKTool (англ.).

iOS

Базові інструкції для iOS (без приєднання гри) доступні в статті Getting Started (Українська)#iOS.

O.png Через обмеження, встановлені Apple, об'єднати гру для iOS можна тільки на комп'ютері з macOS!  


Щоб приєднати свою гру до рушія LÖVE:

  1. Завантажте початковий код для iOS з love2d.org.
  2. Відкрийте platform/xcode/love.xcodeproj в Xcode.
  3. Оберіть об'єкт-результат love-ios (не love-macosx)
  4. Оберіть Build Phases (Фази збірки) результату 'love-ios', і додайте свій файл 'game.love' в Copy Bundle Resources (Копіювати ресурси пакунку).
  5. Зберіть проєкт.
  6. Ваша гра має з'явитися на вашому пристрої iOS у вигляді застосунку.

Якщо ви не можете знайти потрібні елементи в інтерфейсі XCode, відкрийте відеоурок на YouTube (англ.).

Розповсюдження в web

Завдяки TannerRogalsky/love.js ігри можна запускати в браузері з підтримкою HTML5 та JavaScript. Потоки (threads) недоступні, і робота залежить від браузера.

Інструменти від спільноти

Спільнота розробників створила декілька інструментів, які допомагають розповсюджувати ігри.

  • makelove, потужний багатоплатформовий інструмент для об'єднання кода ігор з програмою, написаний на Python 3. Підтримує Windows і Linux через AppImage.
  • love-release (на форумі, англ.), скрипт на Lua, який автоматизує створення пакунків для гри. Підтримує Windows, macOS, Debian, Linux, і має багато опцій.
  • boon (на форумі, англ.), багатоплатформовий простий інструмент, якій підтримує Windows, macOS, Linux.
  • Love Distrubution Pack[sic], інструмент тільки для Windows, який лише дозволяє створювати файли .love та виконувані exe-файли.
  • love-dist, інструмент тільки для Windows, який компілює ваші ігри через LuaC (англ.) і створює exe-файл.

Іншими мовами