Difference between revisions of "Game Distribution"

(actually avoid .love association on os x)
(Extended the merging on Windows with architecture information.)
Line 35: Line 35:
  
 
=== Windows ===
 
=== Windows ===
Here's how to do it on Windows. In a console, type this:
+
Here's how to do it on Windows. Open up a command prompt and type the following, where ''love.exe'' points to the LÖVE executable and ''game.love'' points to your zipped game.
  
 
''<tt style="font-size:1.3em"> copy /b love.exe+game.love game.exe</tt>''
 
''<tt style="font-size:1.3em"> copy /b love.exe+game.love game.exe</tt>''
  
Then, all you have to do is zip game.exe and required DLLs, and distribute them. Yes; this does mean that the game will have a private copy of LÖVE, but there's nothing wrong with that. It also means that you will have to create one package for each platform you would like to support, or simply offer the .love alone for the other platforms.
+
It's recommended to use the 32-bit version for this as it will run on every Windows. The 64-bit one only runs on 64-bit Windows.
 +
 
 +
Then, all you have to do is zip game.exe and the required DLLs, and distribute them. Yes; this does mean that the game will have a private copy of LÖVE, but there's nothing wrong with that. It also means that you will have to create one package for each platform you would like to support, or simply offer the .love alone for the other platforms.
  
 
=== Linux ===
 
=== Linux ===

Revision as of 12:46, 3 April 2013

Making a .love-file

A .love-file is a zip archive with .love as extension. Two caveats:

  • The main.lua file must be at the root of the archive.
  • In the .love, the file and directory path names are case sensitive. This can be puzzling for Windows and Mac OS X lovers, whose filesystem is case insensitive, and whose games may work when unzipped but not when packaged.

Here's how to proceed to generate a working .love file (info plundered from this thread):

Windows

  1. Create a zip file
    (this is built into XP, Vista, 7 and 8)
  2. Copy all of your files into the zip file, retaining directory structure and making sure that the main.lua file is in the root directory
    (if you make a zip file containing a folder with your stuff in it, then it's not going to work)
  3. Rename the file extension from .zip to .love
    By default, file extensions may be hidden. You need to (press alt), go to folder options and uncheck "Hide extensions for known file types" to be able to rename the zip.
  4.  ????
  5. Annual revenue stream

Linux / OS X

From the command line:

  1. Go to your project directory a la cd ~/Projects/EpicGame
  2. Run zip -r ../${PWD##*/}.love *
  3. Your fully-prepared .love file shall be located right outside of your project directory
  4. Cake!

Making an executable file out of a .love-file

Many people are (understandably) concerned about what end-users need to do in order to run a LÖVE-game. If users receive a .love-file alone, they will naturally need LÖVE installed (or at least unzipped) in order to run it. But, as of LÖVE 0.5.0, you can merge the .love file with the love executable.

In general, it's recommended to offer a .love for download, and optionally "merged" versions for the platforms where this makes things simpler.

Two things should be noted:

  1. The end result will not be a single executable, you must also include some DLLs in your zip-file.
  2. The resulting executable from the merge will still be readable by archiving software, such as WinZip.

Windows

Here's how to do it on Windows. Open up a command prompt and type the following, where love.exe points to the LÖVE executable and game.love points to your zipped game.

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

It's recommended to use the 32-bit version for this as it will run on every Windows. The 64-bit one only runs on 64-bit Windows.

Then, all you have to do is zip game.exe and the required DLLs, and distribute them. Yes; this does mean that the game will have a private copy of LÖVE, but there's nothing wrong with that. It also means that you will have to create one package for each platform you would like to support, or simply offer the .love alone for the other platforms.

Linux

On Linux, it's similar:

cat /usr/bin/love game.love > game && chmod +x game

Then, you'll have to make a package for various packaging systems with dependencies as the love package. Were you to make a .deb package this way, for instance, the user would not have to install the love package separately.

Eventually, we will provide scripts which do this automatically for various package systems. You'll have to figure it out yourself until then.

Mac OS X

As of 0.6.1, it is now easier to create ready-to-distribute stand-alone Love games by following these steps:

  1. First create a copy of the löve.app
  2. Right-click (Control+Click if you have one button) to bring up the contextual menu and select "Show Package Contents"
  3. Navigate to Contents/Resources/. There should be two .icns files in there. Copy your already prepared .love file into Resources.

Next, you need to edit /Contents/Info.plist. The main reason is that if you don't, your game will conflict with another LÖVE installation present on the user's machine, so that double-clicking any .love might open your game instead. The reasons are that when you launch the game, the Dock icon is still the default löve icon and the title is "love". To change this, all you need is a small amount of computer knowledge and the right tools. A text editor, or the OS X Property List Editor.app which comes with the Developers tools on the install disc. You can use either, but the PLE is easier to understand. The file you need to modify is the Info.plist file located in the Contents folder. Once opened in PLE, you will see a list of "properties". You need to make a couple of big changes: (Make sure to double-click the "Value" column and not the "Key").

  • Bundle identifier - Make this something like com.yourcompany.whatever
  • Bundle name - Changes the title in the Dock
  • Bundle creator OS Type code - Make this unique if you can.
  • Icon file - Optionally if you wish to make your icon a different file name. You could just replace the icon itself if you wanted to without renaming it though

Then, remove these sections by clicking the '-' that appears when you hover over it. This will avoid your application launching for any .love file:

  • Document Types
  • Exported type UTIs

Distribution on the web

There is an experimental project to run .love games in a WebGL capable browser (up to date firefox,opera,safari...) without needing extra plugins, see forum thread

Mobile distribution

There is an experimental project to run .love games natively on android phones, see subforum

Other Languages