인터랙티브 디렉터

인터랙티브 디렉터는 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

그 설정에 맞출 수 있습니다.