Game Distribution (日本語)
ゲームの完成後、きっとほかの人にも遊んで欲しいと思うでしょう。一般に .love ファイル形式での配布 (LÖVE の導入が必要)、あるいは各プラットフォーム専用のパッケージを利用します。
ターゲット別にゲームを配布するには好ましい方法です (.love ファイルを使用して作成します):
- Windows → Windows 実行可能形式
- macOS → macOS アプリケーション
- Linux → 平文の .love ファイル、または Appimages
Contents
.love ファイルの作成
一部のオペレーティング・システムでは大文字・小文字を区別してパスを使用できるに注意してください。不要な苦闘を避けるために列挙されたフォルダおよびファイルパスがコードにて一致して使われていることを確認してください。
.love ファイルを作成するにはゲーム・ディレクトリ全体の zip 書庫ファイルを作成してください。書庫のルートに main.lua があることを確認してください。例えば、
<somedir>\SuperGame\gfx\character.png <somedir>\SuperGame\main.lua <somedir>\SuperGame\conf.lua
のとき、ディレクトリは SuperGame\ ではなく、
gfx\character.png main.lua conf.lua
を zip ファイルへ確実に収録する必要があります。
zip ファイルを作成後にファイル末尾(拡張子)を .zip から .love へ名称変更すれば完成です!
英数大小文字同一視型のファイルシステム (Windows など) では、ゲームのあるフォルダ以外の場所に .love ファイルを移動して再検証することを推奨します。これにより、ゲームの実行時に発生する恐れがある英数大小文字同一視の問題を発見できます。同一フォルダでの実行時に検出不能な .love ファイルを見つけるには、検証前に移動してください。移動先のフォルダとして好ましいゲームのディレクトリは、例えば love/MyGame.love
などです。
プラットフォーム別の注釈
Windows
標準で右クリックメニューによる zip ファイルの作成に対応しています。詳細な手順は ファイルの圧縮と圧縮解除を行う (zip ファイル) を参照してください。
macOS
ゲーム内のフォルダで、ゲームのファイルとフォルダを選択してから、右クリック/Ctrl+クリックおよび n 個のアイテムを圧縮 を選択します。そして作成された .zip
ファイルの拡張子を .love
へ名称変更します。
あるいは、ターミナルを使用できます。ゲームフォルダ内へ移動してから実行します:
zip -9 -r SuperGame.love .
Linux
現在のディレクトリが SuperGame/ であると仮定したときコマンドラインを使用することで .love ファイルを直接作成できます
zip -9 -r SuperGame.love .
Windows 実行可能形式の作成
ゲームを .love ファイルへ変換した後は、実行可能ファイルを生成することで直接実行できるようになります。
詳しく述べるとは公式配布版の LÖVE の .zip ファイルにある love.exe ファイルへ .love ファイルを追加する必要があります。この結果としてファイルは実行可能形式のゲームとなります。
ゲームを実行可能形式にしておくと、 公式配布版の LÖVE の .zip にある他の全 DLL ファイルと一緒に新規の .zip ファイルへ圧縮することで、世界中にゲームを共有できるようになります。
注釈: 一部の人々は 64 bit 版の Windows を所有していませんので、ゲームの 32/64 bit 版の両方を配布、あるいは 32 bit 版のみを配布するのは良い考えです。
プラットフォーム別の手順
Windows
Windows で実行可能形式のゲームを作成するにはコマンドラインにて下記を実行してください
copy /b love.exe+SuperGame.love SuperGame.exe
注意: 計算機上でコマンドを管理者権限で実行する必要がある場合があります。これは Windows\System32 へ移動して cmd.exe を右クリックして選択肢から管理者として実行を選択することで行うことができます。その後に、cd "C:\Program Files\LOVE\" (または標準の LOVE ディレクトリ) を必ず打鍵して下さい。そして通常の作業を継続します。
代わりに下記の内容の .bat (例えば create_game_exe.bat) ファイルを作成することもできます
copy /b love.exe+%1 "%~n1.exe"
そして SuperGame.love ファイルを .bat ファイルへドラッグしてください。これで配布用の SuperGame.love.exe ファイルを作成することができます。
cmd ではなく PowerShell をお使いならば、コマンドは少し違います:
cmd /c copy /b love.exe+SuperGame.love SuperGame.exe
この方法は 結合型実行形式(fused) のゲームを作成します。
Windows アイコン
例えばフリーウェアの Resource Hacker (リソースハッカー)、ResEdit (レスエディット)などのツールを使うことで自作のアイコン画像を使うことができます。
Linux / macOS
Linux および macOS からでもコマンドラインまたはターミナルを使用することで Windows 実行可能形式を作成できます。
最初に https://www.love2d.org/ から公式で提供されている Windows 用 32 bit または 64 bit 版実行可能形式がある .zip ファイル(インストーラーではありません) をダウンロードします。 32 bit 版のゲームは 64 bit 版 Windows で実行できますが逆はできないため、小型のゲームでは時間を節約するために、 32 bit 版のみ提供することもできます。
さてコマンドラインまたはターミナル(端末)からコマンドを実行します
cat love.exe SuperGame.love > SuperGame.exe
するとゲームの実行可能形式として SuperGame.exe が作成されます。
Windows 実行可能形式の配布時に使用した love.exe のフォルダにある DLL ファイルも一緒に同梱する必要があります(従って 32 bit DLL と 64 bit DLL は併用できません)。これらのファイルが導入されていない Windows 計算機で SuperGame.exe を実行しようとするとエラー・メッセージが発生します。
最終的に配布用フォルダの内容はこのようになるはずです:
- SDL2.dll
- OpenAL32.dll (注釈: このファイルは 'OpenAL32.dll' という名称であるにもかかわらず 64 bit 版のダウンロードでは同一ファイルではありません)
- SuperGame.exe
- license.txt (注釈: いかなる配布物であろうとライセンスを同梱することが義務づけられています)
- love.dll
- lua51.dll
- mpg123.dll
- msvcp120.dll
- msvcr120.dll
macOS アプリケーションの作成
.love ファイルとして自作ゲームを用意すれば macOS の利用者は次の手順に従うことで自作ゲームを遊ぶことができるようになります (動画による手順書を利用できます):
- LÖVE ホームページ から macOS 版をダウンロードして展開します。
- love.app を SuperGame.app へ名称変更します。
- SuperGame.love を SuperGame.app/Contents/Resources/ へ複写します (右クリック/Ctrl+クリックおよび OS X で "パッケージの内容表示" を選択)。これにより、ゲームは結合型実行形式で実行されるようになります。
- SuperGame.app/Contents/Info.plist を変更します (詳細は下記参照)。
SuperGame.app フォルダを書庫化 (例えば SuperGame_osx.zip) して配布します。 -y フラグを有効にすると書庫ファイルのシンボリックリンクを保持します。
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> |
Linux 版の配布方法
Linux では簡単な配布方法はありません。一般的な方法は https://www.love2d.org/ にある公式の LÖVE パッケージの指示に従うことです。通例として、パッケージのインストール後は .love パッケージはインストールされた LÖVE パッケージで自動的に実行、あるいはコマンドラインから実行します:
love SuperGame.love
最低でも conf.lua
ファイルに使用されている LÖVE のバージョンが記載されていることを確認してください。
function love.conf(t)
t.version = "11.3"
end
よくある間違いとして Linux 版の LÖVE バイナリに .love ファイルを結合して結合型実行形式にしてしまうことです:
cat /usr/bin/love SuperGame.love > SuperGame
chmod a+x ./SuperGame
留意していただきたいのは、あなたの計算機上で `SuperGame' のバイナリは実行できるでしょうが、 同じアーキテクチャおよび同じバージョンのライブラリがあるその他の Linux ディストロ、およびその他の多数の Linux ディストロにおいて実行できない酷い可能性があります。
Linux 向けの不安定な方法
これは Linux 版のゲームの配布方法ですが、あらゆる状況での動作は検証されていません。予告なく変更されることがあります。
- Linux 版の LOVE をダウンロードします (x86_64 または i686 のうち使用したいもの) 。 ダウンロード先
- .tar.gz を展開します。これはファイルを右クリックして “ファイルの展開”または、コマンドラインからファイルを展開します:
tar -xvzf love.tar.gz
- game.love ファイルを展開先へ移動します。
- love ファイルを編集して "$@" を "${LOVE_LAUNCHER_LOCATION}/game.love”へ書き換えます。
Debian
Debian アーカイブに LÖVE 製のゲームを同梱することに関してはポリシーがあります。それを同梱するつもりがなくてもアーカイブでゲーム配布用のパッケージ作成するためのものとして理解することができます。
AppImages
AppImage 形式は追加変更なしで対象となる各種派生システム (オペレーティング・システム、ディストリビューションに基づき) での実行を可能にする方法であり、アプリケーションのパッケージを行うためのファイル形式です。こちらからキット全体をダウンロードできます。
AppImage を使用してゲームをパッケージ化するには、 LÖVE により要求されるライブラリおよび依存性を集める必要があり、それは CARE (Ubuntu レポジトリからパッケージを利用できます) を実行することにより容易に行えます:
care -o love.tar.gz love
.
このプログラムはシステムによる方法で保存された LOVE 実行可能形式と依存性、そして関連ファイルの書庫を作成します。次に、ゲームの .love ファイルは上述の項目で示されている手段で結合型実行形式を作成する必要があります。さて、下記のとおりファイルを新しいディレクトリへ配置する必要があります:
アプリケーションのディレクトリ/
├── <ゲーム名称>.desktop --> このファイルにはプログラムのアイコンファイル、
│ プログラムの名称および実行するコマンドのパスが記載されています。
├── <ゲーム名称>.png --> 自作ゲームのアイコン。
└── usr/
├── bin/ --> ここに結合型実行形式にしたバイナリを配置する必要があります。
├── lib/ --> ここにライブラリを配置する必要があります。
└── share/ --> もしあれば、ここに自作 (または LOVE) のデータファイル (および他のもの)を配置する必要があります。
最後に、キットで利用できる AppImageAssistant を使用してディレクトリを AppImage へ変換する必要があります。 詳細情報は AppImage 取扱説明書 にあります。
Android
ソースからのコンパイル
Android 版 LÖVE プロジェクトのクローンを行います:
git clone https://github.com/love2d/love-android
次に、 Android SDK (API 28) および NDK をダウンロードします。 NDK r16 以降でも動作します。それ以前のバージョンは未検証です。
環境変数を設定します。
ANDROID_HOME
は Android SDK の場所。ANDROID_NDK_HOME
は Android NDK の場所。
ゲーム (game.love) をディレクトリに配置してください。 (project)/app/src/main/assets (このディレクトリが存在しない場合は作成します)
Linux/macOS システムでは実行権限の設定が必要です:
chmod +x gradlew
最後に APK ファイルを生成します:
./gradlew assemble
APK ファイルは (project)/app/build/outputs/apk/ に生成されます。
詳細情報は Android wiki を参照してください。
Google Play ゲームサービス
訳註: LOVE はバナー広告が使えないと誤解している方をお見掛けします。ゲーム内バナー広告 (Admob)、リーダーボードなど Google Play Game Service の機能を使用したい場合はフォーラムのスレッドに関数一覧など詳細情報がありますので、そちらを参照してください(別途ビルド環境および Android アプリの開発に関する基礎知識が必要です)。
- 〔Android〕 Admob and Google Play Game Services Support
- Help in creating banner with Martin Felis android port
APKTool の用法
詳細情報は Game Distribution/APKTool を参照してください。
iOS
iOS (結合型実行形式の作成を行わない) に対する基本的な手順は Getting_Started (日本語)#iOS に掲載されています。
LÖVE エンジンに対して自作ゲームを「結合型実行形式」にするには:
- love2d.org から iOS 版のソースコードを入手します。
- Xcode で platform/xcode/love.xcodeproj を開きます。
- love-ios (love-macosx でありません) ターゲットを選択します。
- 'love-ios' ターゲットの ビルドフェーズ を選択してから 組み込みリソースのコピー で自作の 'game.love' ファイルを追加します。
- プロジェクトをビルドします。
- 自作ゲームはアプリとして iOS デバイスに表示されます。
Xcode のユーザインタフェースに関連する要素を見つけらない場合は YouTube にある動画チュートリアル を参照することができます。
ウェブ上での配布
TannerRogalsky/love.js のお陰で HTML5 または JavaScript 形式のゲームとして公開することは可能です。しかし、一部機能 (例えばスレッド)が実装されていません。もちろん、再生に関しては使用するウェブ・ブラウザに依存します。
コミュニュティ・ツール
このリストはコミュニティ製のゲーム配布支援用ツールです。
- love-release (フォーラム) は、ゲームの配布を自動化するための Lua スクリプトです。 Windows, macOS, Debian, Linux および Android に対応しており、機能も充実しています。
- boon (フォーラム) は、マルチプラットフォーム対応の手軽に使えるツールです。 Windows, macOS, Linux に対応しています。
- Love Distrubution Pack[sic] は、 .love ファイルおよび .exe を作成できる Windows 専用ツールです。
- love-dist は、 ファイルに対して LuaC の処理を行い .exe を作成する Windows 専用ツールです。