빠르게 시작하기
Ren'Py 시작 안내서에 오신 것을 환영합니다. 이 안내서에서는 몇 가지 간단한 단계를 따라 Ren'Py 게임을 처음부터 만드는 방법을 소개합니다. 예제로 간단한 게임인 The Question을 만들어 보겠습니다.
Ren'Py 런처
게임을 만들기 전에 Ren'Py 런처의 사용법부터 익혀 두세요. 런처에서는 Ren'Py 프로젝트를 만들고 관리하며, 편집하고 실행할 수 있습니다.
준비하기. 먼저 Ren'Py를 다운로드하세요.
다운로드한 Ren'Py의 압축을 풀고 실행합니다.
Windows에서는 다운로드한 실행 파일을 두 번 클릭합니다. 그러면
renpy-<version>폴더에 Ren'Py가 풀립니다. 이 폴더로 이동해renpy.exe를 실행하세요. 확장자가 숨겨져 있으면renpy로 표시될 수도 있습니다.Mac OS X에서는 다운로드한 디스크 이미지를 두 번 클릭해 드라이브로 마운트합니다. 드라이브가 열리면 그 안의
renpy-<version>폴더를 다른 위치로 복사하세요. 위치는 어디든 괜찮지만 읽기 전용 디스크 이미지 밖으로 옮겨야 합니다. renpy 앱만 원래 폴더 밖으로 꺼내면 작동하지 않으므로 폴더 전체를 옮기세요. 복사한 폴더에서renpy애플리케이션을 실행합니다.Linux에서는 tar 압축 파일을 풀고
renpy-<version>디렉터리로 이동한 뒤renpy.sh를 실행합니다.
이 과정을 마치면 Ren'Py 런처가 실행됩니다.
Ren'Py 런처는 여러 언어로 번역되어 있습니다. 언어를 바꾸려면 오른쪽 아래의 환경설정("preferences")을 누르고 원하는 언어를 선택하세요.
프로젝트 선택과 실행. 먼저 완성된 The Question이 어떤 게임인지 살펴보겠습니다. Ren'Py 런처를 실행하고 첫 화면에서 "The Question"을 선택하세요. 프로젝트 실행("Launch Project")을 누르면 The Question이 시작됩니다.
같은 방법으로 "The Question" 대신 "Tutorial"을 선택하면 Ren'Py 데모를 실행할 수 있습니다.
Ren'Py 런처의 메인 화면.
새 프로젝트의 이름 입력.
프로젝트 해상도 선택.
기본 테마의 강조색과 배경색 선택.
새 프로젝트 만들기. 런처에서 새 프로젝트 만들기("Create New Project")를 선택합니다.
처음 프로젝트를 만들 때는 프로젝트 디렉터리를 선택하라는 메시지가 나타날 수 있습니다. 이 디렉터리, 즉 폴더는 새 프로젝트가 생성되는 위치이며, Ren'Py가 기존 프로젝트를 찾는 위치이기도 합니다. 폴더 선택 창이 Ren'Py 창 뒤에 뜰 수 있으니 보이지 않으면 뒤쪽도 확인하세요.
이어서 런처가 프로젝트 이름을 묻습니다. "The Question"은 이미 사용 중이므로 "My Question"처럼 다른 이름을 입력하고 Enter 키를 누르세요.
다음으로 프로젝트의 해상도를 선택합니다. 1280x720은 게임 크기와 이미지 품질 사이에서 균형 잡힌 선택입니다. 이 튜토리얼에서는 The Question의 이미지에 맞춰 1280x720을 선택하고 계속("Continue")을 누르겠습니다.
이제 새 GUI의 강조색과 배경색을 고릅니다. 지금은 어떤 색을 골라도 괜찮으므로 마음에 드는 색을 선택하고 계속("Continue")을 누르세요.
잠시 기다리면 Ren'Py가 간단한 게임 템플릿을 생성합니다. 임시 이미지와 텍스트가 들어 있지만 바로 실행할 수 있으며, 롤백·불러오기·저장 같은 기본 기능도 갖추고 있습니다. 프로젝트 실행("Launch Project")을 눌러 실행해 보세요.
간단한 게임 만들기
label start:
"실비" "안녕! 수업은 어땠어?"
"나" "괜찮았어..."
"수업 내용이 한 귀로 들어와 다른 귀로 나가 버렸다는 말은 차마 할 수 없다."
"나" "이제 집에 가? 같이 걸어갈래?"
"실비" "좋아!"
위 예제는 아주 간단한 Ren'Py 게임입니다. 이미지나 음악은 없지만 두 캐릭터의 대화와 한 줄의 서술을 보여 줍니다.
직접 실행해 보려면 런처의 첫 화면에서 "My Question" 프로젝트를 선택하고 파일 편집(Edit File) 아래의 "script.rpy"를 누르세요. 처음이라면 사용할 편집기를 선택하라는 메시지가 나타납니다. 처음 시작하는 제작자에게는 Visual Studio Code를 권장합니다. 기능이 충실하고 런처에서 다운로드할 수도 있습니다. 편집기를 선택하면 스크립트 파일이 열립니다.
편집기가 열리면 script.rpy의 내용을 모두 지우세요. 처음부터 새로 작성할 것이므로 기존 내용은 필요하지 않습니다. 위 예제를 script.rpy에 복사하고 저장합니다.
이제 예제를 실행할 준비가 되었습니다. 런처로 돌아가 프로젝트 실행("Launch Project")을 누르세요. 별도로 구현하지 않아도 게임을 저장하고 불러오거나 여러 환경설정을 바꿀 수 있는 메뉴가 갖춰져 있다는 점을 확인해 보세요. 준비가 되면 프로젝트를 실행하고 예제 게임을 끝까지 플레이해 보세요.
이 예제에는 자주 사용하는 Ren'Py 문이 몇 가지 등장합니다.
첫 줄은 label 문입니다. label 문은 프로그램 안의 특정 위치에 이름을 붙입니다. 여기서는 start라는 레이블을 만들었습니다. start는 특별한 레이블로, 플레이어가 메인 메뉴에서 게임 시작("Start Game")을 누르면 이 위치부터 Ren'Py 스크립트가 실행됩니다.
나머지 줄은 say 문입니다. say 문에는 두 가지 형태가 있습니다. 첫 번째는 한 줄에 문자열 하나만 쓰는 형태입니다. 문자열은 큰따옴표로 시작하고 끝나며 그 사이에 텍스트가 들어갑니다. 이 형태는 서술이나 주인공의 생각을 표현할 때 사용합니다. 두 번째는 문자열 두 개를 쓰는 형태로, 대사를 표현합니다. 첫 번째 문자열은 캐릭터 이름이고 두 번째 문자열은 그 캐릭터의 대사입니다.
모든 say 문은 공백 네 칸만큼 들여써져 있습니다. label 문에 속한 블록이기 때문입니다. Ren'Py에서는 블록을 앞선 문보다 더 들여써야 하며, 같은 블록에 속한 모든 문은 들여쓰기 깊이가 같아야 합니다.
문자열 안에 큰따옴표를 넣으려면 그 앞에 역슬래시를 붙여야 합니다. 예를 들면 다음과 같습니다.
"실비" "링컨의 유명한 말 들어 봤어? \"인터넷에 떠도는 명언의 문제는 상당수가 진짜가 아니라는 것이다.\""
아직은 볼거리가 많지 않지만 Ren'Py로 동작하는 게임을 만드는 일이 얼마나 간단한지 보여 주는 예제입니다. 이미지는 조금 뒤에 추가하고, 먼저 캐릭터를 정의하는 방법부터 살펴보겠습니다.
캐릭터
자세히 보기: 캐릭터 객체 정의하기
첫 예제에서는 캐릭터가 말할 때마다 이름을 반복해서 입력해야 합니다. 대사가 많은 게임이라면 상당히 번거롭습니다. 두 캐릭터의 이름이 모두 게임을 만들 때 선택한 강조색으로 똑같이 표시된다는 점도 아쉽습니다. Ren'Py에서는 캐릭터를 미리 정의해 이런 문제를 해결할 수 있습니다. 캐릭터에 짧은 이름을 연결하고, 화면에 표시되는 이름의 색상도 지정할 수 있습니다.
define s = Character('실비', color="#c8ffc8")
define m = Character('나', color="#c8c8ff")
label start:
s "안녕! 수업은 어땠어?"
m "괜찮았어..."
"수업 내용이 한 귀로 들어와 다른 귀로 나가 버렸다는 말은 차마 할 수 없다."
s "이제 집에 가? 같이 걸어갈래?"
m "좋아!"
첫째 줄과 둘째 줄에서 캐릭터를 정의합니다. 첫째 줄은 짧은 이름이 "s", 표시 이름이 "Sylvie"인 캐릭터를 정의하며, 이름은 초록빛으로 표시됩니다. 색상은 웹 페이지에서 사용하는 것과 같은 빨강·초록·파랑의 16진수 값으로 지정합니다.
둘째 줄은 짧은 이름이 "m", 표시 이름이 "Me"인 캐릭터를 만들며, 이름은 푸른빛으로 표시됩니다. 캐릭터 정의 줄을 복사한 뒤 짧은 이름, 표시 이름, 색상을 바꾸면 다른 캐릭터도 정의할 수 있습니다.
say 문도 캐릭터 이름 문자열 대신 캐릭터 객체를 사용하도록 바꿨습니다. 이렇게 하면 Ren'Py가 미리 정의한 캐릭터를 사용합니다.
이미지
자세히 보기: 이미지 표시하기
비주얼 노벨에 이미지가 빠질 수는 없겠지요. 다음은 The Question의 다른 장면입니다. 플레이어에게 이미지를 보여 주는 문이 포함되어 있습니다. 직접 실행해 보려면 앞서 작성한 스크립트 전체를 이 예제로 바꿔도 됩니다.
define s = Character('실비', color="#c8ffc8")
define m = Character('나', color="#c8c8ff")
label start:
scene bg meadow
"조금 걷다 보니 우리가 사는 동네 외곽의 초원에 도착한다."
"이제는 익숙해진 아름다운 풍경이다. 이곳은 특히 가을이 아름답다."
"어릴 때 이 초원에서 자주 놀았기에 곳곳에 추억이 가득하다."
m "저기... 음..."
show sylvie green smile
"그녀가 나를 돌아보며 미소 짓는다. 다정한 표정에 긴장이 스르르 풀린다."
"물어보자...!"
m "음... 혹시..."
m "내 비주얼 노벨의 그림을 그려 줄래?"
show sylvie green surprised
"정적이 흐른다."
이 스크립트에는 새로운 문 두 가지가 등장합니다. 6번째 줄의 scene 문은 기존 이미지를 모두 지우고 배경 이미지를 표시합니다. 16번째 줄과 26번째 줄의 show 문은 각각 배경 위에 캐릭터 스프라이트를 표시하고, 표시 중인 스프라이트를 다른 이미지로 바꿉니다.
Ren'Py의 모든 이미지에는 이름이 있습니다. 이미지 이름은 태그 하나와 선택적인 속성 하나 이상으로 구성됩니다. 태그와 속성은 모두 문자로 시작해야 하며 문자, 숫자, 밑줄을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
6번째 줄의 scene 문에서는 태그가 "bg"이고 속성이 "meadow"입니다. 관례상 배경 이미지에는 bg 태그를 사용합니다.
16번째 줄의 첫 show 문에서는 태그가 "sylvie"이고 속성이 "green", "smile"입니다.
26번째 줄의 두 번째 show 문에서는 태그가 "sylvie"이고 속성이 "green", "surprised"입니다.
같은 태그를 가진 이미지는 한 번에 하나만 표시할 수 있습니다. 같은 태그의 두 번째 이미지를 표시하면 첫 번째 이미지를 대체합니다. 26번째 줄에서 일어나는 일이 바로 이것입니다.
Ren'Py는 images 디렉터리에서 이미지 파일을 찾습니다. 런처의 디렉터리 열기(Open Directory)에서 "images"를 선택하면 이 폴더를 열 수 있습니다. 캐릭터 이미지는 PNG, WEBP, AVIF 파일을 사용하고, 배경 이미지는 JPG, JPEG, PNG, WEBP, AVIF 파일을 사용합니다. SVG 파일도 지원하지만 주로 인터페이스를 꾸밀 때 사용합니다. 파일 이름은 중요합니다. 확장자를 제거하고 나머지를 모두 소문자로 바꾼 결과가 이미지 이름이 되기 때문입니다.
예를 들어 images 디렉터리에 다음 파일을 넣으면 아래와 같은 이미지 이름으로 정의됩니다.
"bg meadow.jpg" ->
bg meadow"sylvie green smile.png" ->
sylvie green smile"sylvie green surprised.png" ->
sylvie green surprised
파일 이름을 소문자로 바꾸므로 다음 파일도 같은 이미지로 정의됩니다.
"Sylvie Green Surprised.png" ->
sylvie green surprised
이미지는 images 디렉터리 아래의 하위 디렉터리, 즉 하위 폴더에도 넣을 수 있습니다. 이미지 이름을 정할 때는 디렉터리 이름을 무시하고 파일 이름만 사용합니다.
hide 문. Ren'Py의 hide 문은 지정한 이미지를 숨깁니다.
label leaving:
s "바로 시작할게!"
hide sylvie
"..."
m "그런 뜻이 아니었는데!"
실제로 hide 문이 필요한 경우는 많지 않습니다. 캐릭터의 표정이 바뀔 때는 show 문을, 모두가 퇴장할 때는 scene 문을 사용하면 됩니다. 장면은 그대로인데 특정 캐릭터만 퇴장할 때 hide 문을 사용합니다.
image 문. 이미지를 Ren'Py가 자동으로 정의하게 두고 싶지 않을 때는 image 문을 사용합니다. 파일의 최상위 수준, 즉 들여쓰지 않고 label start 앞에 작성하며, 이미지 이름을 이미지 파일에 연결합니다. 예를 들면 다음과 같습니다.
image logo = "renpy logo.png"
image eileen happy = "eileen_happy_blue_dress.png"
image 문은 초기화 시점에 실행됩니다. label start와 플레이어가 상호작용하는 나머지 게임 스크립트보다 먼저 실행되는 것입니다.
image 문은 더 복잡한 용도로도 사용할 수 있습니다. 자세한 내용은 해당 문서에서 설명합니다.
화면 전환
자세히 보기: 화면 전환
지금까지의 스크립트에서는 이미지가 즉시 나타나거나 사라졌습니다. 장소가 바뀌거나 캐릭터가 등장하고 퇴장하는 순간을 표현할 수 있도록, Ren'Py는 화면 내용이 바뀔 때 효과를 적용하는 화면 전환 기능을 제공합니다.
화면 전환은 마지막 상호작용이 끝났을 때의 화면에서 scene, show, hide 문을 실행한 뒤의 화면으로 이어집니다. 여기서 상호작용에는 대사, 선택지, 전환 등이 포함됩니다.
label start:
scene bg meadow
with fade
"조금 걷다 보니 우리가 사는 동네 외곽의 초원에 도착한다."
"이제는 익숙해진 아름다운 풍경이다. 이곳은 특히 가을이 아름답다."
"어릴 때 이 초원에서 자주 놀았기에 곳곳에 추억이 가득하다."
m "저기... 음..."
show sylvie green smile
with dissolve
"그녀가 나를 돌아보며 미소 짓는다. 다정한 표정에 긴장이 스르르 풀린다."
"물어보자...!"
m "음... 혹시..."
m "내 비주얼 노벨의 그림을 그려 줄래?"
with 문에는 사용할 전환의 이름을 지정합니다. 가장 흔히 사용하는 dissolve는 이전 화면이 서서히 사라지는 동안 다음 화면이 나타나는 효과입니다. fade도 유용합니다. 화면이 서서히 검게 변한 뒤 새 화면이 서서히 나타납니다.
scene, show, hide 문 여러 개 뒤에 전환을 지정하면 그 변경 사항 전체에 한꺼번에 적용됩니다. 다음과 같이 작성하면:
scene bg meadow
show sylvie green smile
with dissolve
"bg meadow"와 "sylvie green smile" 이미지가 동시에 디졸브 효과로 나타납니다. 하나씩 차례로 나타나게 하려면 with 문을 두 번 써야 합니다.
scene bg meadow
with dissolve
show sylvie green smile
with dissolve
이렇게 하면 먼저 초원이 디졸브 효과로 나타나고, 이어서 Sylvie가 디졸브 효과로 나타납니다. 초원은 즉시 표시하고 Sylvie만 전환 효과로 나타나게 하려면 다음과 같이 작성합니다.
scene bg meadow
with None
show sylvie smile
with dissolve
여기서 None은 특별한 전환을 뜻합니다. 플레이어에게 실제 전환을 보여 주지 않고, Ren'Py가 이전 화면으로 간주하는 상태만 갱신합니다.
위치
자세히 보기: 트랜스폼
기본적으로 이미지는 가로 중앙에 배치되고, 이미지 아래쪽 끝이 화면 아래쪽 끝에 맞춰집니다. 배경이나 캐릭터 한 명을 표시할 때는 대체로 적절하지만, 여러 캐릭터를 표시할 때는 위치를 나누는 편이 자연스럽습니다. 이야기 전개에 따라 캐릭터의 위치를 바꾸고 싶을 때도 있습니다.
show sylvie green smile at right
위치를 바꾸려면 show 문에 at 절을 추가합니다. at 절은 위치를 받아 그곳에 이미지를 표시합니다. Ren'Py에는 몇 가지 위치가 미리 정의되어 있습니다. left는 화면 왼쪽, right는 오른쪽, center는 가로 중앙이며 기본값입니다. truecenter는 가로와 세로 모두 중앙입니다.
직접 위치를 정의하거나 복잡한 움직임을 만들 수도 있지만, 이 시작 안내서에서는 다루지 않습니다.
음악과 효과음
자세히 보기: 오디오
대부분의 Ren'Py 게임은 배경 음악을 재생합니다. 음악은 play music 문으로 재생하며, 재생할 오디오 파일의 이름을 지정합니다. 오디오 파일 경로는 game 디렉터리를 기준으로 해석됩니다. 오디오 파일은 opus, ogg vorbis, mp3 형식을 사용해야 합니다.
예를 들면 다음과 같습니다.
play music "audio/illurock.ogg"
음악을 바꿀 때 fadeout 절과 fadein 절을 지정하면 기존 음악은 서서히 작아지며 끝나고, 새 음악은 서서히 커지며 시작됩니다.
play music "audio/illurock.ogg" fadeout 1.0 fadein 1.0
queue music 문은 현재 파일의 재생이 끝난 뒤 지정한 오디오 파일을 재생합니다.
queue music "audio/next_track.opus"
음악을 멈추려면 stop music 문을 사용합니다. 필요하면 fadeout 절도 지정할 수 있습니다.
stop music
효과음은 play sound 문으로 재생합니다. 음악과 달리 효과음은 반복 재생되지 않습니다.
play sound "audio/effect.ogg"
파일이 game/audio 디렉터리에 있고, 확장자를 뺀 이름을 Python 변수명으로 사용할 수 있다면 파일 이름에 따옴표를 붙이지 않고도 재생할 수 있습니다. 즉, 이름이 문자로 시작하고 문자, 숫자, 밑줄로만 이루어져 있어야 합니다.
예를 들어 game/audio/illurock.ogg 파일이 있다면 다음과 같이 작성할 수 있습니다.
play music illurock
자세한 내용은 audio 네임스페이스를 참고하세요.
pause 문
pause 문은 마우스를 클릭할 때까지 Ren'Py의 진행을 멈춥니다.
pause
숫자를 지정하면 해당 초가 지난 뒤 대기가 끝납니다.
pause 3.0
게임 종료하기
어떤 레이블도 호출하지 않은 상태에서 return 문을 실행하면 게임을 끝낼 수 있습니다. 그 전에 게임이 끝난다는 사실을 알려 주고, 필요하다면 엔딩 번호나 이름도 표시하는 것이 좋습니다.
".:. 좋은 결말."
return
선택지가 없는 키네틱 노벨을 만드는 데 필요한 기본 내용은 여기까지입니다. 이제 플레이어에게 선택지를 제시하는 게임을 만드는 방법을 살펴보겠습니다.
default 문, Python 문, if 문으로 상태 관리하기
지금까지 소개한 문만으로 만들 수 있는 게임도 있지만, 데이터를 저장해 두었다가 나중에 사용하는 게임도 있습니다. 예를 들어 플레이어의 선택을 기억한 뒤 공통 스크립트로 돌아가고, 나중에 그 선택에 따라 다른 동작을 하게 만들 수 있습니다. Ren'Py에 Python이 내장된 이유 중 하나가 바로 이런 기능을 구현하기 위해서입니다.
여기서는 플레이어의 선택을 나타내는 플래그를 저장해 보겠습니다. 플래그를 초기화하려면 label start 앞에서 default 문을 사용합니다.
# True if the player has decided to compare a VN to a book.
default book = False
label start:
s "안녕! 수업은 어땠어?"
book 플래그의 초기값은 특별한 값인 False입니다. 아직 플래그가 설정되지 않았다는 뜻입니다. Ren'Py의 다른 부분과 마찬가지로 대소문자를 구별합니다. 책에 해당하는 선택지를 고르면 Python 대입문으로 값을 True로 바꿀 수 있습니다.
label book:
$ book = True
m "컴퓨터나 콘솔에서 읽으면서 이야기에 참여할 수 있는 책 같은 거야."
jump marry
달러 기호로 시작하는 줄은 Python 문으로 해석됩니다. 여기서 대입문은 변수에 값을 저장합니다. Ren'Py에서는 여러 줄로 된 Python 문 등 다른 방식으로도 Python 코드를 넣을 수 있으며, 이 안내서의 다른 장에서 설명합니다. 원문에서는 Ren'Py가 Python 2.7을 지원하며 Python 2와 Python 3에서 모두 실행되는 코드를 작성할 것을 강력히 권장한다고 설명합니다.
플래그를 확인하려면 if 문을 사용합니다.
if book:
"첫 게임은 실비의 아이디어로 만들지만, 그 뒤로는 나도 직접 이야기를 구상하게 된다."
조건이 참이면 해당 스크립트 블록을 실행하고, 거짓이면 건너뜁니다. if 문에 else 절을 붙이면 조건이 거짓일 때 실행할 블록도 지정할 수 있습니다.
if book:
"첫 게임은 실비의 아이디어로 만들지만, 그 뒤로는 나도 직접 이야기를 구상하게 된다."
else:
"실비는 우리의 첫 비디오 게임에서 시나리오 작업을 도와주었다."
Python 변수에는 True/False만 저장할 수 있는 것이 아닙니다. 플레이어의 이름, 점수 등 다양한 데이터를 저장할 수 있습니다. Ren'Py는 Python 언어 전체를 사용할 수 있게 해 주므로 훨씬 다양한 기능도 구현할 수 있습니다.
템플릿의 파일 구성
새로 만든 프로젝트의 game 폴더에는 다음 폴더와 파일이 들어 있습니다.
- audio/
오디오 파일을 넣는 폴더입니다. 자세한 내용은 오디오를 참고하세요.
- cache/
캐시 파일이 들어 있는 폴더입니다. 이 파일들은 편집할 필요가 없습니다.
- gui/
GUI에서 사용하는 이미지가 들어 있는 폴더입니다. 자세한 내용은 GUI 사용자 설정 안내를 참고하세요.
- images/
이미지 파일을 넣는 폴더입니다. 자세한 내용은 이미지 표시하기를 참고하세요.
- tl/
번역 파일이 들어 있는 폴더입니다. 자세한 내용은 번역을 참고하세요.
- gui.rpy
GUI 변수를 정의하는 파일입니다. 자세한 내용은 GUI 사용자 설정 안내를 참고하세요.
- options.rpy
설정 변수와 빌드 변수, 일부 환경설정 변수와 GUI 변수를 정의하는 파일입니다. 설정 변수, 환경설정 변수, 배포 파일 만들기, GUI 사용자 설정 안내를 참고하세요.
- screens.rpy
스크린을 정의하는 파일입니다. 고급 GUI 설정을 하려면 이 파일을 편집하세요. 스타일, 스타일 속성, 스크린과 스크린 언어, 스크린 액션, 값, 함수, 특수 스크린 이름, 스크린 언어 최적화도 함께 참고하세요.
- script.rpy
이야기 전개를 비롯한 게임 스크립트를 작성하는 파일입니다. 필요에 따라 다른
.rpy파일을 추가하거나 삭제해도 됩니다. 자세한 내용은 언어 기초를 참고하세요.- *.rpyc
로딩 시간을 줄이기 위해 각
.rpy파일을 컴파일한 결과입니다. 대응하는.rpy파일을 삭제하는 경우가 아니라면 따로 손댈 필요가 없습니다. 자세한 내용은 언어 기초를 참고하세요.
게임 배포하기
게임을 완성했다면 배포하기 전에 다음 사항을 확인하세요.
- 새 Ren'Py 버전 확인하기.
Ren'Py는 버그 수정과 새 기능을 담은 버전을 정기적으로 출시합니다. 배포 전에 런처의 업데이트(update)를 눌러 최신 버전으로 업데이트하세요. https://www.renpy.org/latest.html에서도 새 버전을 다운로드하고 변경 사항을 확인할 수 있습니다.
드물게 Ren'Py의 변경에 맞춰 게임 스크립트를 수정해야 할 수 있습니다. 해당 변경 사항은 호환성에 영향을 주는 변경 사항에서 확인할 수 있습니다.
- 스크립트 검사하기.
런처의 첫 화면에서 스크립트 검사("Check Script (Lint)")를 선택하세요. 게임에 잠재적인 오류가 있는지 검사합니다. 일부 오류는 다른 플랫폼에서만 드러나므로, 내 컴퓨터에서 문제가 보이지 않더라도 각 오류의 의미를 확인하고 대체로 모두 수정하는 것이 중요합니다.
- 배포 파일 만들기.
런처의 첫 화면에서 배포 파일 만들기("Build Distributions")를 선택하세요. options.rpy에 정의된 정보를 바탕으로 게임이 들어 있는 압축 파일을 하나 이상 생성합니다.
- 테스트하기.
Lint 검사만으로 충분한 테스트를 대신할 수는 없습니다. 배포 전에 게임이 제대로 작동하는지 확인하는 것은 제작자의 책임입니다. 제작자가 놓친 문제를 다른 사람이 찾아낼 수 있으므로, 지인에게 베타 테스트를 부탁하는 것도 좋습니다.
- 배포하기.
게임 제작과 테스트가 끝나면 다른 사람들이 받을 수 있도록 생성된 압축 파일을 웹에 올리세요. 개인 웹사이트가 없다면 비주얼 노벨이 많이 올라오는 https://itch.io를 이용할 수 있습니다. 첫 비주얼 노벨을 배포하셨습니다!
게임을 알릴 수 있는 곳도 몇 군데 있습니다.
Ren'Py 게임 목록에 등록하면 어떤 Ren'Py 게임이 만들어지고 있는지 파악하는 데 도움이 됩니다.
Lemma Soft 포럼의 완성된 게임 게시판에서는 다른 제작자들에게 게임을 소개할 수 있습니다.
게임의 배포 파일 생성 과정을 더 세밀하게 설정하는 방법은 배포 파일 만들기에서 설명합니다.
The Question의 스크립트
The Question의 전체 스크립트는 여기에서 볼 수 있습니다.
다음 단계
이 안내서에서는 Ren'Py의 기능 중 아주 일부만 살펴봤습니다. 간단하게 설명하기 위해 많은 기능을 생략하거나 단순화하고, 비주얼 노벨 제작에 꼭 필요한 기본 기능에 집중했습니다.
Ren'Py로 무엇을 할 수 있는지 알아보려면 Tutorial을 끝까지 플레이하고, Ren'Py 웹사이트에 소개된 게임도 살펴보세요. GUI 사용자 설정 안내부터 시작해 이 문서의 나머지 장을 읽어 보는 것도 좋습니다.
Lemma Soft 포럼의 Ren'Py 게시판도 권장합니다. 질문을 올릴 수 있는 게시판과 재사용할 수 있는 라이브러리·예제를 모은 자료실이 있습니다. Lemma Soft 포럼은 Ren'Py 커뮤니티의 중심으로, 새로운 제작자와 여러분의 질문을 환영합니다.
Ren'Py 비주얼 노벨 엔진을 선택해 주셔서 감사합니다. 여러분이 만들어 낼 작품을 기대하겠습니다!