인터랙티브 디렉터
인터랙티브 디렉터는 Ren'Py 안에서 게임 스크립트를 편집하고 결과를 실시간으로 미리 볼 수 있는 도구입니다. 텍스트 편집기를 완전히 대체하는 도구는 아니며, 비주얼 노벨의 대사, 선택지와 로직을 작성하려면 여전히 텍스트 편집기가 필요합니다.
다음 항목을 추가하여 게임 스크립트를 연출하는 작업을 돕습니다.
이미지 문(say, show, hide).
화면 전환 문(with).
오디오 문(play, queue, stop, voice).
디렉터 사용
게임을 시작한 뒤 키보드의 D 키(Shift 없이)를 누르면 디렉터를 열 수 있습니다. 현재 세션에서 처음 디렉터를 실행하는 경우, 편집에 필요한 데이터를 확보하기 위해 Ren'Py가 게임을 다시 로드합니다.
첫 디렉터 화면에는 현재 줄 이전에 실행된 줄 목록이 표시됩니다. 줄 목록 창 바깥을 클릭하면 스크립트를 진행하고, 바깥에서 롤백하면 이전으로 되돌아갑니다. 줄 사이의 +를 누르면 줄을 추가하고, 줄 앞의 ✎를 누르면 해당 줄을 편집합니다.
줄을 편집할 때는 문 종류와 해당 매개변수를 선택할 수 있습니다. “추가(Add)”는 새 줄 추가, “변경(Change)”은 기존 줄 변경, “취소(Cancel)”는 편집 취소, “제거(Remove)”는 기존 줄 제거를 수행합니다.
편집을 마치면 “완료(Done)”를 클릭하세요.
변수
director 네임스페이스에는 인터랙티브 디렉터의 동작을 제어하는 여러 변수가 정의되어 있습니다. define 문으로 설정하거나 Python으로 수정할 수 있습니다.
Scene, Show, Hide
- director.tag_blacklist = { "black", "text", "vtext" }
show, scene, hide 문에서 표시하지 않을 태그의 차단 목록입니다.
- director.scene_tags = { "bg" }
scene 문에는 표시하고 show 문에서는 숨길 태그 집합입니다.
- director.show_tags = set()
비어 있지 않으면 이 집합에 있는 태그만 show 문에 표시합니다.
- director.transforms = [ "left", "center", "right" ]
편집기에 표시할 트랜스폼 목록입니다. 이 목록에 더해, Ren'Py 자체 외부에서 transform 문으로 정의한 모든 트랜스폼도 추가한 뒤 정렬합니다.
With
- director.transitions = [ "dissolve", "pixellate" ]
with 문에서 사용할 수 있는 화면 전환 목록입니다. 화면 전환은 자동으로 감지할 수 없으므로 직접 추가해야 합니다.
Play, Queue, Stop, Voice
- director.audio_channels = [ "music", "sound", "audio" ]
play, show, stop 문에서 사용할 수 있는 오디오 채널의 이름입니다.
- director.voice_channel = "voice"
voice에서 사용하는 오디오 채널의 이름입니다.
- director.audio_patterns = [ "*.opus", "*.ogg", "*.mp3" ]
오디오 채널에서 사용할 수 있는 파일을 찾는 데 사용하는 기본 오디오 패턴 목록입니다.
- director.audio_channel_patterns = { }
채널 이름을 해당 채널에서 사용할 오디오 패턴 목록에 대응시키는 매핑입니다. 예를 들어
{ 'sound' : [ 'sound/*.opus' ], 'music' : [ 'music/*.opus' ] }로 설정하면 music 채널과 sound 채널에 각각 별도의 패턴 목록을 지정합니다.
접근
- director.button = True
True이면 디렉터 창을 여는 버튼이 있는 스크린을 표시합니다. False이면 게임에서 director.Start 액션을 제공하여 직접 접근 수단을 만들 수 있습니다.
줄 간격
- director.spacing = 1
디렉터가 다루는 줄(scene, show, hide, with, play, queue, voice)과 그 밖의 줄 사이의 간격입니다. 앞뒤 순서와 관계없이 적용됩니다. 간격은 0줄 또는 1줄이어야 하며, 더 큰 값은 제대로 작동하지 않을 수 있습니다.
- director.director_spacing = 0
연속하는 디렉터 줄 두 개 사이의 간격입니다.
- director.other_spacing = 0
연속하는 비디렉터 줄 두 개 사이의 간격입니다.
뷰포트
- director.viewport_height = 280
디렉터가 사용하는 스크롤 뷰포트의 최대 높이입니다.
오디오 파일명 함수
디스크의 파일명을 Python 소스 코드의 파일명으로 변환하는 여러 오디오 파일명 함수를 사용할 수 있습니다. 파일명을 매핑하는 Ren'Py 기능에 맞출 때 사용합니다. 예를 들어 다음과 같이 설정했다면:
define config.voice_filename_format = "v/{filename}.ogg"
다음 함수를 정의하여:
init python in director:
def audio_code_to_filename(channel, code):
"""
This converts the name of an audio filename as seen in the code,
to the filename as seen on disk.
"""
if channel == "voice":
return "v/" + code + ".ogg"
return code
def audio_filename_to_code(channel, fn):
"""
This converts the name of an audio filename on disk to the filename
as seen in code.
"""
if channel == "voice":
return fn.replace("v/", "").replace(".ogg", "")
return fn
def audio_filename_to_display(channel, fn):
"""
This converts the audio filename as seen on disk so it can be
presented to the creator.
"""
if channel == "voice":
return fn.replace("v/", "").replace(".ogg", "")
return fn
그 설정에 맞출 수 있습니다.