Difference between revisions of "Game Distribution (한국어)"

(Mac 유저는 아니라서 남겨뒀습니다. (저는 리눅스 유저입니다 :ㅇ) 나중에 여력이 되면 다시 번역하지요. 혹은 그 사이에 다른 분이 번역해주실수도 있고요 :))
 
Line 1: Line 1:
 +
게임을 완성하면 다른 사람이 게임을 해 볼 수 있게 만들고 싶을 수 있습니다. 일반적으로 먼저 직접 배포할 수 있는 .love 파일을 만들어야 합니다. (사용자가 LÖVE를 설치해야 실행 가능한) 또는 특정 플랫폼 패키지를 사용해야 합니다.
 +
 +
각 타겟별 배포 방식입니다 (모두 .love 파일을 사용합니다).
 +
 +
* Windows → [[Game_Distribution#Creating_a_Windows_Executable|Windows Executable]]
 +
* macOS → [[Game_Distribution#Creating_a_macOS_Application|macOS Application]]
 +
* Linux → plain .love file, or [[Game_Distribution#Distribution_for_Linux|Appimages]]
 +
 +
__TOC__
 +
 
== .love 파일 만들기 ==
 
== .love 파일 만들기 ==
  
.love 파일은 확장자만 .love인 zip 압축 파일입니다. 두가지 점에서 조심하셔야 합니다:
+
일부 운영체제는 대소문자를 구분하는 경로를 사용합니다. 번거로움을 피하려면 코드에서 사용하는 겅로가 폴더 및 파일의 경로와 일치하는지 확인합니다.
 +
 
 +
.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
 +
 
 +
이며 <tt style="font-size:1.3em">SuperGame\</tt> 디렉터리는 '''없습니다'''.
 +
 
 +
zip 파일을 얻얻다면 간단히 파일의 끝을 .zip에서 .love로 변경하면 끝입니다.
 +
 
 +
대소문자 구분이 없는 파일 시스템(Windows 같은)을 사용하는 경우 .love 파일을 게임이 있는 폴더 외의 다른 장소로 이동하고 다시 테스트하는 것이 좋습니다. 대소문자 구분 문제가 다른 사용자가 게임을 실행하길 시도할 때 나타날 수 있습니다. 같은 폴더에서 실행한다면 실행할 수 없는 .love 파일을 실행할 수 있으므로 실행하기 전에 옮겨주세요. <code>love/MyGame.love</code>같은 위치로 옮기는 것이 좋습니다..
 +
 
 +
=== 플랫폼별 참고 사항 ===
 +
 
 +
==== Windows ====
 +
 
 +
윈도우는 오른쪽 클릭 메뉴에서 zip 파일 만들기를 내장하고 있습니다. 자세한 내용은 [https://support.microsoft.com/ko-kr/windows/zip-and-unzip-files-8d28fa72-f2f9-712f-67df-f80cf89fd4e5]를 참고하세요.
 +
 
 +
==== macOS ====
 +
 
 +
게임 폴더 안에서 파일과 폴더들을 선택한 후, 오른쪽 클릭/Ctrl+클릭 후 '''압축'''을 선택하세요. 결과물의 끝을 <code>.zip</code> 파일에서 <code>.love</code>로 바꿔주세요.
 +
 
 +
또는, 터미널을 사용할 수 있습니다. 폴더 안에서 다음을 실행하세요:
 +
 
 +
    zip -9 -r SuperGame.love .
 +
 
 +
==== Linux ====
 +
 
 +
현재 디렉터리가 <tt style="font-size:1.3em">SuperGame/</tt> 이라고 가정합니다. .love 파일을 만들려면 명령줄에서
 +
 
 +
    zip -9 -r SuperGame.love .
 +
 
 +
== Windows 실행 파일 만들기 ==
 +
 
 +
게임을 .love 파일로 포장했으므로 게임을 직접 실행할 수 있는 게임으로 만들 수 있습니다.
 +
 
 +
이를 위해서는 당신의 .love 파일을 공식 LÖVE .zip 파일에서 제공되는 love.exe와 합쳐야 합니다. 결과 파일로 게임 실행 파일이 생성됩니다.
 +
 
 +
게임 실행 파일이 있으면 공식 LÖVE .zip 파일의 다른 DLL 파일과 함께 .zip 파일로 합쳐 전 세계와 공유할 수 있습니다.
  
* main.lua 파일은 반드시 최상위 경로에 있어야 합니다.
+
'''참고:''' 어떤 사람들은 Windows의 64비트 버전이 없으므로 32와 64비트 버전을 모두 배포하거나 32비트 버전만 배포하는 것이 좋습니다.
* .love 파일 안에서 파일과 디렉토리 경로 이름은 대소문자를 구분해야 합니다. 파일 시스템이 대소문자를 구분하지 않는 윈도우와 맥 [[lovers]]에게 헷갈릴 수 있고, 압축을 풀었을때는 잘 동작하지만 패키징했을때 실행이 되지 않는 문제가 생길 수 있기 때문입니다.  
 
  
 +
=== 플랫폼별 참고 사항 ===
  
이제 .love 파일을 만드는 방법을 설명합니다. (이 설명은 [http://love2d.org/forum/viewtopic.php?f=4&t=451 이 스레드]에서 가져온 겁니다.):
 
  
=== Windows ===
+
==== Windows ====
  
# zip 파일을 만듭니다 <br /><small>(윈도우 XP, 비스타, 7에 기본으로 내장되어 있지요.)</small>
+
윈도우에서 게임 실행 파일을 만들려면 명령줄에서
# 최상위 경로에 main.lua 파일이 있어야 함에 유의하면서 모든 파일과 디렉터리 구조를 zip 파일에다가 집어넣습니다. <br /><small>(zip 파일 안에 폴더가 있고 그 안에 파일들을 집어넣으면 동작하지 않아요.)</small>
 
# .zip 파일을 .love 파일로 확장자를 교체합니다.<br /><small>기본적으로 파일 확장자가 숨겨져 있을 수 있습니다. 알트 버튼을 누른 뒤에, 폴더 옵션에 들어가셔서 "알려진 파일 형식의 확장명 숨기기"의 체크를 푸시면 zip 확장자를 바꿀 수 있어요.</small>
 
# ????
 
# Profit!
 
  
=== Linux / OS X ===
+
    copy /b love.exe+SuperGame.love SuperGame.exe
  
커맨드 라인에서 해치웁시다:
+
'''참고''': 관리자로 명령을 실행해야할 수 있습니다. '''Windows\System32''' 폴더로 이동해 '''cmd.exe''' 파일을 선택하고 '''관리자 권한으로 실행'''을 선택해 관리자 권한으로 실행할 수 있습니다. 실행한 후 '''cd C:\Program Files\LOVE\ ''' (기본 love 디렉터리로)를 입력하고 진행하면 됩니다.
# ''<tt style="font-size:1.3em"> cd ~/Projects/EpicGame</tt>''처럼 프로젝트 폴더로 이동합시다
 
# ''<tt style="font-size:1.3em"> zip -r ../${PWD##*/}.love *</tt>''라고 실행합니다
 
# 당신의 프로젝트 경로 바로 밖에 다 만들어진 .love 파일이 있을 겁니다.
 
# 잘 했어요!
 
  
== 실행 파일 만들기 ==
+
또는 다음 .bat 파일(예를 들어 create_game_exe.bat)을 다음과 같이
  
많은 사람들이 (당연히) 최종 사용자가 게임을 실행하기 위해서 어떻게 해야 할 지에 대해 걱정할 겁니다. 사용자가 달랑 .love 파일 하나만받으면, 그분들은 아마 게임을 실행하기 위해서 LÖVE를 (최소한 압축이라도 풀거나) 설치해야만 할 겁니다. 하지만 LÖVE 0.5.0에서부터, .love 파일을 love 실행 파일과 합칠 수 있습니다.
+
    copy /b love.exe+%1 "%~n1.exe"
  
일반적으로, .love 파일만 제공하는 것을 추천해 드립니다. 추가 플랫폼마다 실행 가능한 버전을 제공하면 알기 쉬울 겁니다.
+
만들고 Supergame.love 파일을 그 .bat 파일에 옮겨 SuperGame.love.exe를 만들어 배포하는 데 사용할 수 있습니다.
  
두 가지 부분에서 조심하시기 바랍니다:
+
만약 cmd 대신 '''PowerShell'''을 사용한다면 명령어가 살짝 달라집니다:  
# 최종 결과물은 실행 파일 하나가 아닙니다. 배포하실 때 몇몇 DLL 파일도 함께 있어야 합니다.
 
# 합쳐진 실행 결과물은 WinZip 같은 압축 풀기 소프트웨어로 읽을 수 있습니다.
 
  
=== Windows ===
+
    cmd /c copy /b love.exe+SuperGame.love SuperGame.exe
Windows에서 하는 방법입니다. 콘솔에서 이렇게 입력하세요:
 
  
''<tt style="font-size:1.3em"> copy /b love.exe+game.love game.exe</tt>''
+
이 메소드는 '''융합'''된 게임을 생성합니다.
  
그리고, 남은 것은 game.exe와 필요한 DLL들을 압축해서 배포하는 겁니다. 네, 이것은 게임이 LÖVE 실행파일의 복사본이라는 것을 의미합니다, 하지만 잘못된 것은 없습니다. 또한 이것은 당신이 지원하고 싶은 플랫폼마다 패키지를 만들거나, 지원하지 않는 플랫폼을 위해 .love 파일을 올리면 된다는 말이기도 합니다.
+
==== Windows 아이콘 ====
  
이것은 [http://www.dizante.info/downloads.html Love2d Compiler]라고 불리는 서드파티 도구입니다. 커뮤니티 맴버인 [[User:dizante|dizante]]에 의해 만들어졌습니다.
+
자신만의 아이콘 이미지를 [http://www.angusj.com/resourcehacker/ 리소스 해커] 와 같은 도구를 사용해 만들 수 있습니다.
  
=== 리눅스 ===
+
[https://youtu.be/WTk_HJdXVNQ?t=2m22s 비디오 자습서] 와 [http://gamedev.stackexchange.com/a/121947/9093 단계별 지침] 을 사용할 수 있습니다.
  
리눅스에서 하는 방법도 비슷합니다:
+
==== Linux / OS X ====
  
''<tt style="font-size:1.3em"> cat love game.love > game</tt>''
+
Linux와 OS X에서 명령줄을 사용해 윈도우 실행 파일을 만들 수 있습니다.
  
그러면, 당신은 love를 설치하지 않아도 돌아가는 패키지를 만들 수 있습니다. 예를 들어, 이 방법으로 .deb 패키지를 만들면, 사용자는 love를 설치할 필요가 없습니다.
+
먼저 [https://www.love2d.org/ https://www.love2d.org/]에서 공식 실행 파일을 압축된 32 또는 64비트 파일로 받습니다 (installer가 '''아님'''). 32비트 게임은 64비트 윈도우에서 실행이 가능하지만 반대의 경우는 아니므로 작은 게임에서 시간을 절약하려면 32비트만 제공할 수 있습니다.
  
언젠가 우리는 많은 패키지 시스템을 위해 자동으로 이것을 해주는 스크립트를 올릴 예정입니다. 그동안 이 방법을 사용해 주세요.
+
그러고 명령줄/터미널에서
 
=== 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:
+
    cat love.exe SuperGame.love > SuperGame.exe
# First create a copy of the löve.app
 
# Right-click (Control+Click if you have one button) to bring up the contextual menu and select "Show Package Contents"
 
# Navigate to Contents/Resources/. There should be two .icns files in there. Copy your already prepared .love file into Resources.  
 
  
That's all you need to do to make an executable OS X Love game. Follow the next few steps if you wish to make it more your own... If you notice when you launch the game, the Dock icon is still the default löve icon and the title is "love". If you wish 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 only need to change a couple: (Make sure to double-click the "Value" column and not the "Key".  
+
를 실행해 실행 파일 <tt style="font-size:1.3em">SuperGame.exe</tt> 을 얻을 수 있습니다.
* Bundle identifier - Make this something like com.yourcompany.whatever
 
* Bundle name - Changes the title in the Dock
 
* Bundle OS Type code
 
* Bundle creator OS Type code - Make these unique so .love files don't open with your game
 
* 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
 
  
 +
윈도우 실행 파일을 배포할 때 love.exe 폴더의 dll 파일을 포함해야 합니다. (32비트 dll과 64비트 dll을 섞지 마십시오). dll 파일 없이 SuperGame.exe를 윈도우 컴퓨터에서 실행하려고 하면 오류 메시지를 얻을 것입니다.
  
 +
최종 배포 폴더의 내용을 다음과 같아야 합니다:
 +
* SDL2.dll
 +
* OpenAL32.dll (참고: 이 파일은 64비트에서도 이름만 OpenAL32.dll인 다른 버전으로 존재합니다)
 +
* SuperGame.exe
 +
* license.txt (참고: 라이선스 추가 배포에 '''필요'''합니다)
 +
* love.dll
 +
* lua51.dll
 +
* mpg123.dll
 +
* msvcp120.dll
 +
* msvr120.dll
 +
 +
== macOS 앱 만들기 ==
 +
 +
공식/광고 배포 (예를 들어 Mac App Store)라면 다음 섹션으로 넘어가세요, [[Game_Distribution#공식_공유와_앱_스토어|공식 공유와 앱 스토어]]
 +
 +
게임을 .love 파일로 준비하면 macOS 사용자가 게임을 사용할 수 있도록 하는 방법이 ([https://youtu.be/SU2RpGdezP4 video tutorial] 있습니다):
 +
 +
# [https://www.love2d.org LÖVE 홈페이지]에서 LÖVE의 Mac 버전을 받고 압축을 풀어주세요.
 +
# <tt>love.app</tt> 의 이름을 <tt>SuperGame.app</tt>로 바꾸세요.
 +
# <tt>SuperGame.love</tt>를 <tt>SuperGame.app/Contents/Resources/</tt>로 이동하세요(OS X에서 오른쪽 클릭/Ctrl+클릭 후 "패키지 내용 보기"). 융합 모드에서 게임이 실행됩니다.
 +
# <tt>SuperGame.app/Contents/Info.plist</tt>를 실행하세요(자세한 내용은 아래에서).
 +
# <tt>SuperGame.app</tt> 폴더를 압축하고 (SuperGame_osx.zip) 배포하세요. zip에서 ''-y'' 플래그로 참조를 유지하세요.
 +
 +
<tt>SuperGame.app/Contents/Info.plist</tt>를 수정할 때 다음 XML 파일의 문자열 값을 변경해야 합니다:
 +
 +
* <tt>CFBundleIdentifier</tt>
 +
* <tt>CFBundleName</tt>
 +
 +
그리고 macOS가 .love 파일을 앱과 연결하지 못하게 하는 <tt>UTExportedTypeDeclarations</tt> 부분을 삭제하세요. 전반적인 변경 사항은 다음과 같아야 합니다:
 +
 +
{| border="1" cellpadding="1" cellspacing="0"
 +
!width="300"|Original Info.plist
 +
!width="300"|Modified Info.plist
 +
|- style="vertical-align: top;"
 +
|
 +
    ...
 +
    <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>
 +
|}
 +
 +
==== 공식 공유와 앱 스토어 ====
 +
 +
Mac 앱을 컴파일하는 것은 macOS가 실행 중이고 XCode가 설치된 Mac을 요구합니다 (XCode는 app store에서 받을 수 있습니다).
 +
 +
# [https://github.com/love2d/love/releases/tag/11.3 love 소스 코드]를 다운받으세요.
 +
# [http://love2d.org/sdk 여기에서] 요구 프레임워크를 다운받고 <code>/Library/Frameworks/</code>로 옮기세요.
 +
# <code>platform/xcode/love.xcodeproj</code>의 XCode 프로젝트를 여세요. <code>love-macosx</code>를 아래에 설명된 대로 빌드합니다.
 +
# XCode에서, <code>Images.xcassets</code>에서 macOS 아이콘을 변경하세요.
 +
# XCode에서, <code>love-macosx.plist</code>를 수정하세요. (위 지침을 확인하세요)
 +
# .love 파일을 "Copy Bundle Resources" Build Phase에 추가하세요. <br>[[File:addLoveFileToXcodeBundleResources.png|600px]]
 +
# [https://developer.apple.com/macos/distribution/ Apple's guide for distributing Mac apps]를 따라하세요.
 +
 +
== 리눅스 배포 ==
 +
 +
리눅스는 아직 게임을 배포하는 간단한 방법이 없습니다. 여기서 일반적인 접근 방식은  [https://www.love2d.org https://www.love2d.org]의 공식 LÖVE 패키지를 가리키는 것입니다. 패키지가 설치되면 일반적으로 설치된 LÖVE 패키지를 사용하거나 다음 명령줄을 사용하여 .love 패키지를 자동으로 실행합니다:
 +
 +
<source lang="bash">love SuperGame.love</source>
 +
 +
[[Config Files|<code>conf.lua</code> file]]에 실행하는 최소 버전을 포함해야 합니다.
 +
<source lang="lua">
 +
function love.conf(t)
 +
    t.version = "11.2"
 +
end
 +
</source>
 +
 +
일반적인 실수 중 하나는 love 리눅스 바이너리를 love 파일과 융합하려고 하는 것입니다:
 +
 +
<source lang="bash">
 +
cat /usr/bin/love SuperGame.love > SuperGame
 +
chmod a+x ./SuperGame
 +
</source>
 +
 +
유의하세요. 'SuperGame' 바이너리가 당신의 기기, 동일한 아키텍처와 비슷한 버전의 라이브러리의 다양한 기기에서 실행되어도 "다른 많은 리눅스 배포판에서 실행되지 않을" 많은 기회가 있습니다.
 +
 +
==== Linux ====
 +
 +
비록 모든 시나리오에서 작동한다는 것을 증명하지는 못했지만, 리눅스에 게임을 배포하는 방법입니다.
 +
 +
# 적당한 Linux 버전에 맞는, x86_64, 또는 i686 등의 love를 다운받습니다(.tar.gz 확장자). [https://github.com/love2d/love/releases 다운로드 페이지]
 +
# <tt>.tar.gz</tt>파일의 압축을 해제합니다. 파일을 마우스 오른쪽 단추로 클릭하고 “압축 해제”를 누르거나, 명령줄에서: <source lang="bash"> tar -xvzf love.tar.gz </source> 로 해제할 수 있습니다.
 +
# <tt>game.love</tt> 파일을 압축 해제된 폴더에 넣습니다.
 +
# <tt>love</tt> 파일을 "$@" 와 "${LOVE_LAUNCHER_LOCATION}/game.love” 로 변경합니다.
 +
 +
==== Debian ====
 +
 +
데비안 아카이브에는 LÖVE 게임을 포함하는 정책이 있습니다. 아카이브에 포함하지 않더라도 게임용 패키지는 만들 수 있습니다.
 +
 +
[https://wiki.debian.org/Games/Love2d Love2d 패키징]
 +
 +
==== AppImages ====
 +
AppImage 포맷은 추가 수정 없이 다양한 시스템에서 실행할 수 있는 방식으로 응용 프로그램을 패키징하는 형식입니다. [https://github.com/probonopd/AppImageKit/ 여기]에서 다운로드 할 수 있습니다.
 +
 +
AppImage를 사용하여 게임을 패키지하기 위해서는 love가 요구하는 라이브러리와 종속성이 필요하고, [https://github.com/proot-me/proot/blob/master/doc/care/manual.rst#care CARE] 명령어로 (Ubuntu 리포지토리에서 가능) 쉽게 수행할 수 있습니다:
 +
 +
<source lang='bash'>care -o love.tar.gz love</source>
 +
 +
love 실행 파일과 시스템과 연관된 종속성 및 관련 파일을 포함해 아카이브를 만듭니다.
 +
두번째로, 게임의 .love 파일을 위 섹션에 표시된 대로 '융합'시켜야 합니다. 파일은 새 디렉토리에 다음과 같이 배치해야 합니다:
 +
<source lang='text'>
 +
Application Directory/
 +
├── <game name>.desktop  --> This file contains path to the program's icon file,
 +
│                            the name of the program and the command to execute it.
 +
├── <game name>.png      --> Your game's icon
 +
└── usr/
 +
    ├── bin/    --> Your fused binary needs to be placed here
 +
    ├── lib/    --> Your libraries need to be placed here
 +
    └── share/  --> Your (or LÖVE's) data files (and other things) need to be placed here, if any
 +
</source>
 +
마지막으로 디렉터리에서 AppImageAssistant를 사용해 AppImage로 변환해야 합니다.
 +
자세한 내용은 [https://docs.appimage.org/ AppImage documentation]에서 찾을 수 있습니다.
 +
 +
== Android ==
 +
=== Compiling from source ===
 +
먼저 안드로이드 LÖVE 프로젝트를 복제합니다:
 +
<source lang='bash'>git clone --recurse-submodules https://github.com/love2d/love-android</source>
 +
(<code>--depth 1</code>로 다운로드 시간을 아낄 수도 있습니다)
 +
그리고, Android SDK (API 30)과 Android NDK (exactly version 21.3.6528147 or r21d)를 다운받습니다.
 +
 +
환경 변수
 +
* <code>ANDROID_HOME</code> 를 Android SDK 경로로 지정해주세요.
 +
 +
게임 ("game.love"라고 이름지어진)을 (프로젝트)/app/src/main/assets에 넣습니다 (필요한 경우 디렉터리를 만들며).
 +
 +
(프로젝트)/app/src/embed/AndroidManifest.xml을 변경합니다. (프로젝트)/app/build.gradle의 패키지 이름, 버전 코드, 버전 문자열을 변경하면 됩니다.
 +
 +
Linux 또는 macOS 시스템에서는 실행 권한을 설정해야 합니다:
 +
<source lang="bash">chmod +x gradlew</source>
 +
 +
드디어 APK를 생성합니다:
 +
<source lang='bash'>./gradlew assembleEmbedRelease</source>
 +
 +
APK 파일은 (프로젝트)/app/build/outputs/apk/embed/release/app-embed-release-unsigned.apk에 있을 것입니다.
 +
 +
Play Console에 업로드하기 위해 AAB를 생성해야 한다면:
 +
<source lang='bash'>./gradlew bundleEmbedRelease</source>
 +
 +
AAB 파일은 (프로젝트)/app/build/outputs/bundle/embedRelease/app-embed-release.aab에 있을 것입니다.
 +
 +
자세한 내용은 [https://github.com/love2d/love-android GitHub 리포지토리]를 참고하세요.
 +
 +
=== APKTool 사용 ===
 +
{{notice|이 메소드는 이제 사용되지 않습니다.[https://android-developers.googleblog.com/2020/08/recent-android-app-bundle-improvements.html Play Store will mandate Android Application Bundle in 2021] 또한 이 방법은 삭제될 수 있습니다!}}
 +
자세한 내용은 [[Game Distribution/APKTool]]을 참고하세요.
 +
 +
== iOS ==
 +
 +
융합 없는 기본 지침은 [[Getting_Started#iOS]]에 있습니다.
 +
 +
{{notice|Apple측 제한으로 인해, iOS에 대한 융합은 macOS에서만 가능합니다!}}
 +
 +
게임에 LÖVE 엔진을 '''융합'''하는 방법:
 +
# [http://love2d.org love2d.org]에서 iOS 소스 코드를 얻습니다.
 +
# XCode로 platform/xcode/love.xcodeproj를 엽니다.
 +
# 타겟을 love-ios로 지정합니다. (love-macosx가 아님)
 +
# '러브-ios' 대상의 '''빌드 페이즈'''를 선택하고 '게임.love' 파일을 '''복사 번들 리소스'''에 추가합니다.
 +
# 프로젝트를 빌드합니다.
 +
# 게임이 iOS에 앱으로 설치됩니다.
 +
 +
관련 XCode UI 요소를 찾을 수 없는 경우 [https://youtu.be/MsYanwcU42E 유튜브에서 동영상 자습서]를 참조할 수 있습니다.
 +
 +
== Web으로 배포 ==
 +
 +
HTML5나 JavaScript로 배포하는 것이 [https://github.com/TannerRogalsky/love.js TannerRogalsky/love.js]에 의해 가능합니다. 스레드가 지원되지 않고 브라우저마다 환경이 달라집니다.
 +
 +
위 프로젝트의 더 현대적인 포크가 [https://github.com/Davidobot/love.js Davidobot/love.js]에 있고 LÖVE v11.3을 지원합니다.
 +
 +
== 커뮤니티 도구 ==
 +
 +
커뮤니티에서 게임 배포를 돕기 위해 개발한 몇 가지 도구가 있습니다.
 +
* [https://github.com/pfirsich/makelove makelove], Python 3로 쓰여진 게임과 융합하는 멀티 플랫폼 도구입니다. AppImage와 Windows, Linux를 지원합니다.
 +
* [https://github.com/MisterDA/love-release love-release] ([https://love2d.org/forums/viewtopic.php?t=75387 forum]), 게임 배포를 자동화하는 Lua 스크립트입니다. Windows, MacOS, Debian, Linux, 다양한 기능을 지원합니다.
 +
* [https://github.com/camchenry/boon boon] ([https://love2d.org/forums/viewtopic.php?t=86573 forum]), Windows, MacOS, Linux의 멀티 플랫폼을 지원하는 사용하기 쉬운 도구입니다.
 +
* [https://love2d.org/forums/viewtopic.php?f=3&t=80565 Love Distrubution Pack][sic], .love 파일과 exe 파일을 만들 수 있는 Windows 전용 도구입니다.
 +
* [https://www.love2d.org/forums/viewtopic.php?f=5&t=30259 love-dist], [[LuaC]]로 exe 파일을 만들 수 있는 Windows 전용 도구입니다.
 +
* [https://github.com/dmoa/love-export love-export], 빠르고 간단하게 바이너리를 구축하는 명령줄 도구입니다. Windows, MacOS와 Linux를 지원합니다.
 
[[Category:LÖVE]]
 
[[Category:LÖVE]]
 +
 
== 다른 언어들로 ==
 
== 다른 언어들로 ==
 
{{i18n|Game Distribution}}
 
{{i18n|Game Distribution}}

Latest revision as of 01:39, 3 October 2021

게임을 완성하면 다른 사람이 게임을 해 볼 수 있게 만들고 싶을 수 있습니다. 일반적으로 먼저 직접 배포할 수 있는 .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/MyGame.love같은 위치로 옮기는 것이 좋습니다..

플랫폼별 참고 사항

Windows

윈도우는 오른쪽 클릭 메뉴에서 zip 파일 만들기를 내장하고 있습니다. 자세한 내용은 [1]를 참고하세요.

macOS

게임 폴더 안에서 파일과 폴더들을 선택한 후, 오른쪽 클릭/Ctrl+클릭 후 압축을 선택하세요. 결과물의 끝을 .zip 파일에서 .love로 바꿔주세요.

또는, 터미널을 사용할 수 있습니다. 폴더 안에서 다음을 실행하세요:

   zip -9 -r SuperGame.love .

Linux

현재 디렉터리가 SuperGame/ 이라고 가정합니다. .love 파일을 만들려면 명령줄에서

   zip -9 -r SuperGame.love .

Windows 실행 파일 만들기

게임을 .love 파일로 포장했으므로 게임을 직접 실행할 수 있는 게임으로 만들 수 있습니다.

이를 위해서는 당신의 .love 파일을 공식 LÖVE .zip 파일에서 제공되는 love.exe와 합쳐야 합니다. 결과 파일로 게임 실행 파일이 생성됩니다.

게임 실행 파일이 있으면 공식 LÖVE .zip 파일의 다른 DLL 파일과 함께 .zip 파일로 합쳐 전 세계와 공유할 수 있습니다.

참고: 어떤 사람들은 Windows의 64비트 버전이 없으므로 32와 64비트 버전을 모두 배포하거나 32비트 버전만 배포하는 것이 좋습니다.

플랫폼별 참고 사항

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

이 메소드는 융합된 게임을 생성합니다.

Windows 아이콘

자신만의 아이콘 이미지를 리소스 해커 와 같은 도구를 사용해 만들 수 있습니다.

비디오 자습서단계별 지침 을 사용할 수 있습니다.

Linux / OS X

Linux와 OS X에서 명령줄을 사용해 윈도우 실행 파일을 만들 수 있습니다.

먼저 https://www.love2d.org/에서 공식 실행 파일을 압축된 32 또는 64비트 파일로 받습니다 (installer가 아님). 32비트 게임은 64비트 윈도우에서 실행이 가능하지만 반대의 경우는 아니므로 작은 게임에서 시간을 절약하려면 32비트만 제공할 수 있습니다.

그러고 명령줄/터미널에서

   cat love.exe SuperGame.love > SuperGame.exe

를 실행해 실행 파일 SuperGame.exe 을 얻을 수 있습니다.

윈도우 실행 파일을 배포할 때 love.exe 폴더의 dll 파일을 포함해야 합니다. (32비트 dll과 64비트 dll을 섞지 마십시오). dll 파일 없이 SuperGame.exe를 윈도우 컴퓨터에서 실행하려고 하면 오류 메시지를 얻을 것입니다.

최종 배포 폴더의 내용을 다음과 같아야 합니다:

  • SDL2.dll
  • OpenAL32.dll (참고: 이 파일은 64비트에서도 이름만 OpenAL32.dll인 다른 버전으로 존재합니다)
  • SuperGame.exe
  • license.txt (참고: 라이선스 추가 배포에 필요합니다)
  • love.dll
  • lua51.dll
  • mpg123.dll
  • msvcp120.dll
  • msvr120.dll

macOS 앱 만들기

공식/광고 배포 (예를 들어 Mac App Store)라면 다음 섹션으로 넘어가세요, 공식 공유와 앱 스토어

게임을 .love 파일로 준비하면 macOS 사용자가 게임을 사용할 수 있도록 하는 방법이 (video tutorial 있습니다):

  1. LÖVE 홈페이지에서 LÖVE의 Mac 버전을 받고 압축을 풀어주세요.
  2. love.app 의 이름을 SuperGame.app로 바꾸세요.
  3. SuperGame.loveSuperGame.app/Contents/Resources/로 이동하세요(OS X에서 오른쪽 클릭/Ctrl+클릭 후 "패키지 내용 보기"). 융합 모드에서 게임이 실행됩니다.
  4. SuperGame.app/Contents/Info.plist를 실행하세요(자세한 내용은 아래에서).
  5. SuperGame.app 폴더를 압축하고 (SuperGame_osx.zip) 배포하세요. zip에서 -y 플래그로 참조를 유지하세요.

SuperGame.app/Contents/Info.plist를 수정할 때 다음 XML 파일의 문자열 값을 변경해야 합니다:

  • CFBundleIdentifier
  • CFBundleName

그리고 macOS가 .love 파일을 앱과 연결하지 못하게 하는 UTExportedTypeDeclarations 부분을 삭제하세요. 전반적인 변경 사항은 다음과 같아야 합니다:

Original Info.plist Modified 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>

공식 공유와 앱 스토어

Mac 앱을 컴파일하는 것은 macOS가 실행 중이고 XCode가 설치된 Mac을 요구합니다 (XCode는 app store에서 받을 수 있습니다).

  1. love 소스 코드를 다운받으세요.
  2. 여기에서 요구 프레임워크를 다운받고 /Library/Frameworks/로 옮기세요.
  3. platform/xcode/love.xcodeproj의 XCode 프로젝트를 여세요. love-macosx를 아래에 설명된 대로 빌드합니다.
  4. XCode에서, Images.xcassets에서 macOS 아이콘을 변경하세요.
  5. XCode에서, love-macosx.plist를 수정하세요. (위 지침을 확인하세요)
  6. .love 파일을 "Copy Bundle Resources" Build Phase에 추가하세요.
    addLoveFileToXcodeBundleResources.png
  7. Apple's guide for distributing Mac apps를 따라하세요.

리눅스 배포

리눅스는 아직 게임을 배포하는 간단한 방법이 없습니다. 여기서 일반적인 접근 방식은 https://www.love2d.org의 공식 LÖVE 패키지를 가리키는 것입니다. 패키지가 설치되면 일반적으로 설치된 LÖVE 패키지를 사용하거나 다음 명령줄을 사용하여 .love 패키지를 자동으로 실행합니다:

love SuperGame.love

conf.lua file에 실행하는 최소 버전을 포함해야 합니다.

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

일반적인 실수 중 하나는 love 리눅스 바이너리를 love 파일과 융합하려고 하는 것입니다:

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

유의하세요. 'SuperGame' 바이너리가 당신의 기기, 동일한 아키텍처와 비슷한 버전의 라이브러리의 다양한 기기에서 실행되어도 "다른 많은 리눅스 배포판에서 실행되지 않을" 많은 기회가 있습니다.

Linux

비록 모든 시나리오에서 작동한다는 것을 증명하지는 못했지만, 리눅스에 게임을 배포하는 방법입니다.

  1. 적당한 Linux 버전에 맞는, x86_64, 또는 i686 등의 love를 다운받습니다(.tar.gz 확장자). 다운로드 페이지
  2. .tar.gz파일의 압축을 해제합니다. 파일을 마우스 오른쪽 단추로 클릭하고 “압축 해제”를 누르거나, 명령줄에서:
     tar -xvzf love.tar.gz
    
    로 해제할 수 있습니다.
  3. game.love 파일을 압축 해제된 폴더에 넣습니다.
  4. love 파일을 "$@" 와 "${LOVE_LAUNCHER_LOCATION}/game.love” 로 변경합니다.

Debian

데비안 아카이브에는 LÖVE 게임을 포함하는 정책이 있습니다. 아카이브에 포함하지 않더라도 게임용 패키지는 만들 수 있습니다.

Love2d 패키징

AppImages

AppImage 포맷은 추가 수정 없이 다양한 시스템에서 실행할 수 있는 방식으로 응용 프로그램을 패키징하는 형식입니다. 여기에서 다운로드 할 수 있습니다.

AppImage를 사용하여 게임을 패키지하기 위해서는 love가 요구하는 라이브러리와 종속성이 필요하고, CARE 명령어로 (Ubuntu 리포지토리에서 가능) 쉽게 수행할 수 있습니다:

care -o love.tar.gz love

love 실행 파일과 시스템과 연관된 종속성 및 관련 파일을 포함해 아카이브를 만듭니다. 두번째로, 게임의 .love 파일을 위 섹션에 표시된 대로 '융합'시켜야 합니다. 파일은 새 디렉토리에 다음과 같이 배치해야 합니다:

Application Directory/
├── <game name>.desktop  --> This file contains path to the program's icon file,
│                            the name of the program and the command to execute it.
├── <game name>.png      --> Your game's icon
└── usr/
    ├── bin/    --> Your fused binary needs to be placed here
    ├── lib/    --> Your libraries need to be placed here
    └── share/  --> Your (or LÖVE's) data files (and other things) need to be placed here, if any

마지막으로 디렉터리에서 AppImageAssistant를 사용해 AppImage로 변환해야 합니다. 자세한 내용은 AppImage documentation에서 찾을 수 있습니다.

Android

Compiling from source

먼저 안드로이드 LÖVE 프로젝트를 복제합니다:

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

(--depth 1로 다운로드 시간을 아낄 수도 있습니다) 그리고, Android SDK (API 30)과 Android NDK (exactly version 21.3.6528147 or r21d)를 다운받습니다.

환경 변수

  • ANDROID_HOME 를 Android SDK 경로로 지정해주세요.

게임 ("game.love"라고 이름지어진)을 (프로젝트)/app/src/main/assets에 넣습니다 (필요한 경우 디렉터리를 만들며).

(프로젝트)/app/src/embed/AndroidManifest.xml을 변경합니다. (프로젝트)/app/build.gradle의 패키지 이름, 버전 코드, 버전 문자열을 변경하면 됩니다.

Linux 또는 macOS 시스템에서는 실행 권한을 설정해야 합니다:

chmod +x gradlew

드디어 APK를 생성합니다:

./gradlew assembleEmbedRelease

APK 파일은 (프로젝트)/app/build/outputs/apk/embed/release/app-embed-release-unsigned.apk에 있을 것입니다.

Play Console에 업로드하기 위해 AAB를 생성해야 한다면:

./gradlew bundleEmbedRelease

AAB 파일은 (프로젝트)/app/build/outputs/bundle/embedRelease/app-embed-release.aab에 있을 것입니다.

자세한 내용은 GitHub 리포지토리를 참고하세요.

APKTool 사용

O.png 이 메소드는 이제 사용되지 않습니다.Play Store will mandate Android Application Bundle in 2021 또한 이 방법은 삭제될 수 있습니다!  


자세한 내용은 Game Distribution/APKTool을 참고하세요.

iOS

융합 없는 기본 지침은 Getting_Started#iOS에 있습니다.

O.png Apple측 제한으로 인해, iOS에 대한 융합은 macOS에서만 가능합니다!  


게임에 LÖVE 엔진을 융합하는 방법:

  1. love2d.org에서 iOS 소스 코드를 얻습니다.
  2. XCode로 platform/xcode/love.xcodeproj를 엽니다.
  3. 타겟을 love-ios로 지정합니다. (love-macosx가 아님)
  4. '러브-ios' 대상의 빌드 페이즈를 선택하고 '게임.love' 파일을 복사 번들 리소스에 추가합니다.
  5. 프로젝트를 빌드합니다.
  6. 게임이 iOS에 앱으로 설치됩니다.

관련 XCode UI 요소를 찾을 수 없는 경우 유튜브에서 동영상 자습서를 참조할 수 있습니다.

Web으로 배포

HTML5나 JavaScript로 배포하는 것이 TannerRogalsky/love.js에 의해 가능합니다. 스레드가 지원되지 않고 브라우저마다 환경이 달라집니다.

위 프로젝트의 더 현대적인 포크가 Davidobot/love.js에 있고 LÖVE v11.3을 지원합니다.

커뮤니티 도구

커뮤니티에서 게임 배포를 돕기 위해 개발한 몇 가지 도구가 있습니다.

  • makelove, Python 3로 쓰여진 게임과 융합하는 멀티 플랫폼 도구입니다. AppImage와 Windows, Linux를 지원합니다.
  • love-release (forum), 게임 배포를 자동화하는 Lua 스크립트입니다. Windows, MacOS, Debian, Linux, 다양한 기능을 지원합니다.
  • boon (forum), Windows, MacOS, Linux의 멀티 플랫폼을 지원하는 사용하기 쉬운 도구입니다.
  • Love Distrubution Pack[sic], .love 파일과 exe 파일을 만들 수 있는 Windows 전용 도구입니다.
  • love-dist, LuaC로 exe 파일을 만들 수 있는 Windows 전용 도구입니다.
  • love-export, 빠르고 간단하게 바이너리를 구축하는 명령줄 도구입니다. Windows, MacOS와 Linux를 지원합니다.

다른 언어들로