렌파이에서는 배포판 만들기 기능을 지원합니다. 런처에서 "배포판 만들기" 버튼을 누르면 렌파이 엔진 자체와 프로젝트를 검사해 배포판에 포함할 파일을 정하고 배포판에 필요한 아카이브를 만들어내며 패키지와 업데이트 파일을 만듭니다.
별다른 환경설정을 하지 않는다면 렌파이는 다음 네 가지 패키지를 만듭니다.:
모든 데스크탑 플랫폼 용
Windows x86, Macintosh x86, Linux x86, Linux x86_64 용 zip 파일.
리눅스 x86/x86_64
리눅스 x86 과 리눅스 x86_64 용 tar.bz2 파일.
매킨토시 x86
인텔 프로세서 기반 매킨토시 OS X 용 매킨토시 어플리케이션이 압축된 zip 파일. 사용자가 보기에는 단일 파일로 보이는 어플리케이션에 게임 데이터가 포함되어 있습니다.
윈도우즈 x86
윈도우즈 x86용 zip 파일.
경고
렌파이가 만들어내는 zip 및 tar.bz2 파일에는 렌파이를 리눅스와 매킨토시에서 구동시킬 때 필요한 퍼미션 정보가 포함되어 있습니다.
윈도우즈에서 배포판을 압축해제한 후 다시 압축한 뒤 리눅스나 매킨토시에서 구동하는 기능은 지원하지 않습니다.
배포판 만드는 과정은 build 이름 영역에 있는 변수를 설정하고 함수를 호출하여 설정할 수 있습니다. 이 과정은 반드시 init python 블록에서 완료해야 합니다.
게임에서 사용할 기본 변수와 함수는 다음과 같습니다.
build.directory_name
= "..."¶아카이브 파일 내부에서 디렉토리 경로를 생성하는 데 사용되는 변수. 예를 들어 이 변수값을 "mygame-1.0"으로 설정하면, 이 프로젝트의 리눅스 버전은 "mygame-1.0-linux" 경로에 압축해제 하게 된다.
패키지 파일을 배치할 경로의 이름을 정할 때도 이 변수를 사용할 수 있다. 예를 들어 build.directory_name 을 mygame-1.0 으로 설정하면 기본 디렉토리의 상위 경로에 있는 mygame-1.0-dists에 아카이브 파일을 배치하게 된다.
build.executable_name
= "..."¶사용자가 클릭하면 게임을 시작할 실행 파일의 이름을 제어하는 변수이다.
예를 들어 이 변수의 값을 "mygame"으로 설정하면 사용자는 윈도우즈에서는 mygame.exe를, 매킨토시에서는 mygame.app을, 리눅스에서는 mygame.sh 파일을 실행할 수 있다.
배포판을 꾸미기 위해 게임 기본 디렉토리에 넣어야 할 파일이 두 개 있습니다.
아이콘 파일의 포맷은 특정한 포맷이어야 합니다. 아이콘 포맷으로 변환하려면 별도의 프로그램이나 웹 서비스 (http://iconverticons.com/ 등)를 사용해야 합니다.
배포판을 만드는 과정 가운데 첫 번째 단계는 렌파이 배포판과 여러분이 만든 게임을 파일 목록으로 분류하는 것입니다. 이 과정에서 만들어진 파일 목록은 패키지 파일에 추가됩니다.
분류 작업은 build.classify 함수가 담당합니다. 이 함수는 패턴과 공백으로 분리된 파일 이름을 받습니다. 패턴은 첫 번째 패턴부터 마지막 패턴까지 차례대로 대조하게 되며, 뒤쪽에 더 구체적인 패턴이 적혀있다 하더라도 첫 번째로 대조하는 패턴이 우선 적용됩니다. 패턴은 패턴 맨 앞에 적힌 / 기호에 상관 없이 대조합니다. 패턴에는 다음과 같은 특수 문자를 적을 수도 있습니다.:
예제:
기본적으로 파일을 분류해놓을 수 있는 파일 목록에는 다섯 가지가 있습니다. (렌파이 엔진을 구성하는 파일은 다음 목록 중에서 처음 여섯 가지 파일에 배치합니다.)
파일 목록을 분류하지 않은 파일은 "all" 파일 목록에 배치합니다.
배포판에서 제외할 파일은 None 이나 빈 문자열로 분류해야 합니다.
예제:
# README.txt 을 배포판에 포함한다.
build.classify("README.txt", "all")
# 다른 txt 파일은 모두 제외한다.
build.classify("**.txt", None)
# game 디렉토리에 있는 png 및 jpg 파일은 아카이브로 옮긴다.
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")
build.documentation 함수에 패턴을 적어 호출하면 패턴과 일치하는 파일을 매뉴얼 파일로 설정합니다. 매킨토시 애플리케이션에는 매뉴얼 파일을 애플리케이션 내부와 외부에 하나씩, 총 두 본을 배치합니다.
예를 들어 기본 디렉토리에 있는 txt 파일과 html 파일을 전부 매뉴얼 파일로 설정하려면 다음과 같이 함수를 호출하면 됩니다.:
build.documentation("*.txt")
build.documentation("*.html")
렌파이 배포판에 새로운 패키지 타입을 추가할 수도 있습니다. 이를 위해서는 build.backage 함수에 패키지 이름, 타입, 파일 목록을을 설정하여 함수를 호출하면 됩니다.
일반판 게임과 덤 요소가 있는 게임을 만든다고 가정합시다. 덤 파일을 "bonus" 파일 목록에 분류한 뒤 다음과 같이 전 플랫폼용 특별판 패키지를 선언하면 됩니다.
build.package("all-premium", "zip", "windows mac linux all bonus")
렌파이에서는 여러 파일을 아카이브 파일 하나에 모을 수 있습니다. 암호화 수준이 그리 높지는 않지만 파일을 쉽게 복사해가는 일은 막을 수 있습니다.
기본적으로 "archive" 파일 목록에 분류된 파일은 모두 archive.rpa 아카이브 파일에 배치하며, 아카이브 파일은 모든 파일 목록에 포함되어있습니다.
build.archive 함수를 호출하면 새 아카이브 파일과 이 파일이 포함될 파일 목록을 정의할 수 있습니다. (그러나 "all" 파일 목록 외에 다른 파일 목록에 추가하는 경우는 드뭅니다.) 아카이브를 사용하려면 파일을 파일 목록의 이름을 명시하여 해당 파일 목록에 분류하면 됩니다.
예를 들어 아래 코드에서는 이미지 파일을 images.rpa에 모아두고 게임 스크립트는 scripts.rpa에 모아둡니다.:
# 아카이브 두 개를 선언한다.
build.archive("scripts", "all")
build.archive("images", "all")
# 스크립트 파일은 scripts 아카이브 파일에 모은다.
renpy.classify("game/**.rpy", "scripts")
renpy.classify("game/**.rpyc", "scripts")
# 이미지 파일은 images 아카이브 파일에 모은다.
renpy.classify("game/**.jpg", "images")
renpy.classify("game/**.png", "images")
아카이브 파일이 비어있다면 배포판을 만들지 않습니다.
아카이브 하기 전에 한 번 더 생각해보시기 바랍니다. 파일을 공개해두면 여러분이 세상을 떠난 뒤에 나온 플랫폼에서 누군가가 여러분의 게임이 작동하도록 작업하는 일이 수월할 것입니다.
build.
archive
(name, file_list='all')¶아카이브 파일을 선언한다. 하나 이상의 파일이 name 으로 분류되었다면 name.rpa 아카이브 파일을 만든다. 아카이브는 file_list 에 지정한 파일 목록에 포함된다.
build.
classify
(pattern, file_list)¶pattern 과 일치하는 파일을 file_list 에 분류한다.
build.
clear
()¶파일을 분류하는 데 사용했던 패턴 목록을 지운다.
build.
documentation
(pattern)¶매뉴얼로 만들 pattern 을 정의한다. 매킨토시 앱 배포판을 만들 때에는 매뉴얼 패턴과 일치하는 파일이 두 개 (하나는 앱 패키지 내부에, 다른 하나는 앱 패키지 외부에) 저장된다.
build.
executable
(pattern)¶플랫폼(리눅스 및 매킨토시)에서 지원하는 실행 가능한 파일을 만드는 패턴을 추가한다.
build.
package
(name, format, file_lists, description=None, update=True, dlc=False, hidden=False)¶배포판 작성 툴이 만들어 낼 수 있는 패키지를 선언한다.
패키지 포맷. 아래와 같은 내용을 공백으로 구분하여 적은 문자열.
빈 문자열을 적으면 패키지 형식을 만들지 않는다. (이를 이용하여 DLC 를 만들 수 있다.)
다음 변수를 이용하면 배포판 만드는 과정을 보다 자세히 제어할 수 있습니다.:
build.exclude_empty_directories
= True¶참값이면 (파일 자료화로 인해 비어버린 폴더를 포함한) 빈 폴더들이 배포판을 만들 때 제외한다. 거짓이면 빈 폴더를 배포판에 포함한다.
build.destination
= "{directory_name}-dists"¶아카이브 파일을 배치할 경로를 지정한다. 경로값으로 절대 경로이거나 상대 경로를 입력할 수 있다. 상대 경로는 프로젝트 디렉토리를 기준으로 계산된다.
다음 값들은 파이썬의 str.format 함수 대신에 사용된다.
{directory_name}
{executable_name}
{version}
build.allow_integrated_gpu
= True¶내장 GPU와 외장 GPU가 존재하는 플랫폼에서 렌파이가 내장 GPU로 구동되도록 한다. 현재 이 기능은 Mac과 OS X만 지원한다.