설정 변수
설정 변수는 Ren'Py 자체의 동작을 조정합니다. 화면 크기를 바꾸는 일반적인 설정부터 새로운 압축 파일 형식을 추가하는 특수한 설정까지 다양한 방식으로 엔진을 사용자화할 수 있습니다.
Ren'Py는 GUI 초기화가 끝난 뒤에는 설정 변수가 바뀌지 않는다고 가정합니다. init 블록 밖에서 바꾸면 정의되지 않은 동작이 발생할 수 있습니다. 설정 변수는 저장 데이터에 포함되지 않습니다.
대부분의 설정 변수는 define 문으로 간단히 지정할 수 있습니다.
define config.rollback_enabled = False
딕셔너리와 리스트는 define 문이나 init python 블록에서 내용을 채울 수 있습니다.
define config.preload_fonts += ["OrthodoxHerbertarian.ttf"]
define config.adjust_attributes["eileen"] = eileen_adjust_function
init python hide:
def inter_cbk():
# this is a terrible callback
renpy.notify("상호작용 중!")
config.interact_callbacks.append(inter_cbk)
프로젝트 정보
- define config.name = ""
게임 이름 문자열입니다. 트레이스백과 기타 로그에 포함되어 어떤 게임 버전인지 식별하는 데 도움이 됩니다.
- define config.version = ""
게임 버전 문자열입니다. 트레이스백과 기타 로그에 포함되어 실행 중인 버전을 식별하는 데 도움이 됩니다.
- define config.window_icon = None
None이 아니면 게임의 메인 창 아이콘으로 사용할 이미지 파일 이름입니다. Windows 실행 파일과 Mac 앱의 아이콘에는 적용되지 않습니다. 해당 아이콘은 특수 파일로 설정합니다.
- define config.window_title = None
Ren'Py 게임 창 제목의 고정 부분입니다. 여기에
_window_subtitle을 붙여 전체 제목을 만듭니다.기본값 None이면
config.name의 값을 사용합니다.
자동 진행 모드
- define config.afm_bonus = 25
자동 진행 중 각 문자열의 길이에 추가로 더할 문자 수입니다.
- define config.afm_callback = None
None이 아니면 자동으로 다음 대사로 넘어가도 되는지 판단하는 Python 함수입니다. None이면 내부 함수를 사용하며,
preferences.wait_voice가 False인 경우를 제외하고 음성 재생 중에는 자동 진행을 막습니다.
- define config.afm_characters = 250
자동 진행 환경설정에 지정한 시간만큼 대기하게 하는 기준 문자열 길이입니다. 문자 수로 지정합니다.
- define config.afm_voice_delay = .5
음성 파일 재생이 끝난 뒤 자동 진행이 다음 텍스트로 넘어가기까지 기다릴 시간(초)입니다.
콜백
특정 이벤트가 발생할 때 호출할 함수를 지정합니다. 콜백이 여기에만 있는 것은 아닙니다. 특정 기능에 관한 콜백은 해당 기능의 절에서 설명합니다.
- define config.after_default_callbacks = [ ... ]
default 문을 처리할 때마다 인수 없이 호출할 함수 목록입니다. default 문은 초기화 뒤 게임 시작 전, 저장 파일을 불러올 때, 롤백 뒤, Lint 전 등에 실행되며 다른 시점에도 실행될 수 있습니다.
default 문과 마찬가지로, 아직 없지만 게임에 필요한 데이터를 추가하기에 적합한 콜백입니다.
- define config.context_callbacks = [ ]
새 컨텍스트에 들어갈 때 인수 없이 호출할 콜백입니다. 게임 시작, 게임 메뉴나 메인 메뉴 진입, 다시 보기 시작 등이 해당합니다.
- define config.interact_callbacks = [ ... ]
상호작용을 시작하거나 다시 시작할 때 인수 없이 호출할 함수 목록입니다.
- define config.label_callbacks = [ ]
레이블에 도달할 때마다 호출할 콜백 목록입니다. 첫 인수는 레이블 이름입니다. 두 번째 인수는 점프·호출·새 컨텍스트 생성으로 도달했으면 True, 그렇지 않으면 False입니다.
- define config.periodic_callbacks = [ ... ]
약 20Hz의 주기로 인수 없이 호출할 함수 목록입니다.
- define config.python_callbacks = [ ... ]
초기화 단계 밖에서 Python 블록을 실행할 때마다 인수 없이 호출할 함수 목록입니다.
예를 들어 변수가 바뀔 때마다 값을 일정 범위 안으로 제한하는 데 사용할 수 있습니다.
이 함수들은 실제 게임 시작 전의 부팅 과정에서, 필요한 변수가 초기화되기도 전에 호출될 수 있습니다.
hasattr(store, 'varname')으로 변수 존재 여부를 확인하는 등의 방법으로 이 상황을 처리해야 합니다.
- define config.python_exit_callbacks = [ ]
Ren'Py가 종료되어 운영체제로 돌아가기 직전에 호출할 함수 목록입니다. Python 모듈의 정리 작업을 위한 기능입니다.
호출 전에 Ren'Py의 많은 부분이 정리되므로 이 콜백에서 Ren'Py 함수를 사용하는 것은 안전하지 않습니다.
- define config.scene_callbacks = [ ... ]
scene 문이나
renpy.scene()을 실행할 때 호출할 함수 목록입니다. 대상 레이어 하나를 인수로 받습니다. 레이어를 비운 뒤, 선택적인 이미지를 추가하기 전에 호출합니다.Ren'Py 내부에서도 renpy.scene을 호출할 수 있으므로 처리 전에 레이어 이름을 확인하는 것을 권장합니다.
- define config.start_callbacks = [ ... ]
초기화 뒤, 스플래시를 포함한 게임이 시작되기 전에 인수 없이 호출할 콜백 목록입니다. 프레임워크에서 저장 대상 변수를 초기화하는 용도로 사용합니다.
기본 목록에는 NVL 모드 같은 기능을 구현하는 Ren'Py 내부 콜백이 들어 있습니다. 새 콜백은 추가할 수 있지만 기존 콜백을 제거하면 안 됩니다.
- define config.start_interact_callbacks = [ ... ]
상호작용을 시작할 때 인수 없이 호출할 함수 목록입니다. 상호작용을 다시 시작할 때는 호출하지 않습니다.
- define config.statement_callbacks = [ ... ]
문을 실행할 때 호출할 함수 목록입니다. 일반적으로 해당 문의 이름을 받지만 다음과 같은 특별한 이름도 있습니다.
- "say"
일반 say 문입니다.
- "say-nvl"
NVL 모드의 say 문입니다.
- "say-bubble"
말풍선 모드의 say 문입니다.
- "say-centered"
centered캐릭터를 사용하는 say 문입니다.- "menu"
일반 menu 문입니다.
- "menu-nvl"
NVL 모드의 menu 문입니다.
- "menu-with-caption"
설명 문구가 있는 menu 문입니다.
- "menu-nvl-with-caption"
NVL 모드에서 설명 문구가 있는 menu 문입니다.
기본 목록에는
window auto를 구현하는 콜백이 들어 있습니다.
캐릭터와 대사
- define config.all_character_callbacks = [ ... ]
모든 캐릭터가 호출할 콜백 목록입니다. 캐릭터별 콜백 목록 앞에 추가됩니다. 이 목록의 앞부분에는 Ren'Py 내부 콜백이 들어 있습니다.
- define config.character_id_prefixes = [ ... ]
Character()에 지정할 수 있는 스타일 속성 접두사의 목록입니다. 해당 접두사가 붙은 속성을 지정하면 접두사와 같은 ID의 디스플레이어블에 적용합니다.예를 들어 기본 GUI는 이 목록에 "namebox"를 추가합니다. Character에 namebox_background를 지정하면 say 스크린에서 ID가 "namebox"인 디스플레이어블의
background를 설정합니다.
- define config.say_allow_dismiss = None
None이 아니면 플레이어가 say 문을 넘기려 할 때 인수 없이 호출할 함수입니다. True를 반환하면 진행을 허용하고, 그 밖의 값이면 요청을 무시합니다.
- define config.say_arguments_callback = None
None이 아니면 말하는 캐릭터와 위치·키워드 인수를 받는 함수입니다. 인수를 명시하지 않은 경우를 포함해 say 문마다 호출됩니다. 콜백에는 항상 interact가 전달되며, say 문에 다른 인수가 있으면 함께 전달됩니다.
위치 인수 튜플과 키워드 인수 딕셔너리의 쌍을 반환해야 합니다. 위치 인수 튜플은 거의 항상 비어 있고, 딕셔너리에는 거의 항상 최소한 interact가 있습니다. 반환값이 콜백에 전달된 인수를 대체합니다.
예를 들면 다음과 같습니다.
def say_arguments_callback(who, interact=True, color="#fff"): return (), { "interact" : interact, "what_color" : color } config.say_arguments_callback = say_arguments_callback
- define config.say_sustain_callbacks = [ ... ]
대기 태그가 있는 대사에서 두 번째 이후의 상호작용 직전에 인수 없이 호출할 함수 목록입니다. 대기 중에도 음성을 이어 재생하는 데 사용합니다.
화면 표시
- define config.adjust_view_size = None
None이 아니면 실제 창의 너비·높이를 받는 함수입니다. Ren'Py가 이미지를 그리는 OpenGL 뷰포트의 너비·높이 튜플을 반환해야 합니다.
특정 화면 크기만 허용하는 데 사용할 수 있습니다. 다음 예제는 원래 화면 크기의 정수 배수만 허용합니다.
init python: def force_integer_multiplier(width, height): multiplier = min(width / config.screen_width, height / config.screen_height) multiplier = max(int(multiplier), 1) return (multiplier * config.screen_width, multiplier * config.screen_height) config.adjust_view_size = force_integer_multiplier
- define config.automatic_oversampling = 4
Ren'Py가 사용할 자동 오버샘플링의 최대 수준입니다. None이면 자동 오버샘플링을 사용하지 않습니다.
- define config.display_start_callbacks = [ ]
창을 표시한 뒤 첫 프레임을 렌더링하기 전에 호출할 함수 목록입니다. OpenGL 함수처럼 GUI가 초기화되어야 접근할 수 있는 자원을 라이브러리에서 사용하는 데 주로 활용합니다.
- define config.gl_clear_color = "#000"
이미지를 그리기 전에 창을 지울 색상입니다. 창이나 전체 화면 모니터의 종횡비가 게임과 다를 때 생기는 위아래 또는 좌우 여백의 색상으로 주로 보입니다.
- define config.gl_lod_bias = -0.6
Ren'Py가 사용할 밉맵 수준을 제어하는 u_lod_bias 유니폼의 기본값입니다.
- define config.gl_resize = True
플레이어가 OpenGL 창의 크기를 바꿀 수 있는지 정합니다.
- define config.gl_test_image = "black"
OpenGL 성능 테스트에 사용할 이미지 이름입니다. 시작 시 5프레임, 즉 .25초 동안 표시한 뒤 자동으로 숨깁니다.
- define config.mesh_oversample = 1.0
메시 텍스처의 오버샘플링 한도를 정합니다. 메시를 얼마나 확대할 때까지 추가적인 흐림을 막을 수 있는지에 영향을 줍니다. 다만 크게 확대하면 텍스처가 지나치게 커질 수 있습니다.
- define config.minimum_presplash_time = 0.0
프리스플래시, Android 프리스플래시, iOS LaunchImage의 최소 표시 시간(초)입니다. 초기화가 더 빨리 끝나면 이 시간까지 대기합니다. 시작에 더 오래 걸리면 이미지도 더 오래 표시될 수 있습니다.
- define config.mipmap = True
이미지의 밉맵 생성 여부입니다. True이면 항상 생성하고, "auto"이면 창이 가상 화면 크기의 75%보다 작을 때만 생성하며, False이면 생성하지 않습니다.
- define config.nearest_neighbor = False
픽셀 아트를 지원하거나 눈이 아플 만큼 거친 화면을 만들 수 있도록 기본적으로 최근접 이웃 필터링을 사용합니다.
- define config.physical_height = None
설정하면 게임 창의 기본 높이(픽셀)입니다. 생략하면
config.screen_height를 사용합니다.
- define config.physical_width = None
설정하면 게임 창의 기본 너비(픽셀)입니다. 생략하면
config.screen_width를 사용합니다.
- define config.screen_height = 600
게임의 가상 높이(픽셀)입니다.
config.physical_height를 지정하지 않으면 창의 기본 높이이기도 합니다. 일반적으로gui.init()에서 훨씬 큰 값으로 설정합니다.
- define config.screen_width = 800
게임의 가상 너비(픽셀)입니다.
config.physical_width를 지정하지 않으면 창의 기본 너비이기도 합니다. 일반적으로gui.init()에서 훨씬 큰 값으로 설정합니다.
- define config.shader_part_filter = None
None이 아니면 셰이더 파트 이름의 튜플을 받는 함수입니다. 사용할 새 셰이더 파트 튜플을 반환해야 합니다.
파일 입출력
- define config.file_open_callback = None
None이 아니면 파일을 열 때 파일 이름을 인수로 받는 함수입니다. 파일 유사 객체를 반환하거나, 기본 Ren'Py 방식으로 열려면 None을 반환해야 합니다. 객체에는 최소한 read, seek, tell, close 메서드가 있어야 합니다.
이에 대응하는
config.loadable_callback도 함께 정의하는 것이 좋습니다.
- define config.open_file_encoding = False
False가 아니면
renpy.open_file()의 encoding이 None일 때 사용할 인코딩입니다.renpy.file()을 많이 사용한 Python 2 게임을 Python 3로 옮길 때 파일을 기본적으로 텍스트로 열기 위해 주로 사용합니다.기본값은 RENPY_OPEN_FILE_ENCODING 환경 변수에서 가져옵니다.
- define config.special_directory_map = { 'images' : [ 'images' ], 'audio' : [ 'audio' ], 'fonts' : [ 'fonts' ], ... }
특수 디렉터리 이름('images', 'audio', 'fonts')을 해당 종류의 파일을 찾을 디렉터리 목록에 연결합니다. 파일 이름으로 로드할 때만 사용합니다. 이미지·오디오 자동 정의는
config.image_directories와config.audio_directories를 참고하세요. 이후 버전에서 새로운 특수 이름이 추가될 수 있습니다.
- define config.renamed_files = { ... }
기존 파일 이름을 새 파일 이름에 연결하는 매핑입니다. 키에 해당하는 파일을 찾을 때 값에 해당하는 파일을 대신 찾습니다. 번들 글꼴의 버전 변경 등으로 이름이 바뀐 파일을 처리하는 데 유용합니다. 키는 소문자여야 하며 경로 구분자로 슬래시(/)를 사용해야 합니다.
Ren'Py 내부에서도 일부 이름 변경을 처리하는 데 사용하므로, 딕셔너리를 통째로 바꾸지 말고 항목을 추가하세요.
대사 기록
- define config.history_callbacks = [ ... ]
_history_list에 새 객체를 추가하기 전에 호출할 콜백 목록입니다. 첫 인수로 새 HistoryEntry 객체를 받으며, 객체에 새 필드를 추가할 수 있습니다.
Ren'Py 내부에서도 대사 기록 콜백을 사용하므로 목록을 통째로 바꾸지 말고 자신의 콜백을 추가하세요.
- define config.history_current_dialogue = True
True이면 현재 표시 중인 대사도 대사 기록 스크린에 나타납니다.
- define config.history_length = None
보관할 대사 기록의 개수입니다. 기본 GUI는 250으로 설정합니다.
이미지
- define config.image_directories = [ "images" ]
images 디렉터리에서 설명한 방식으로 이미지를 찾을 하나 이상의 디렉터리 목록입니다. 순서대로 검색하며 해당 이미지가 처음 발견된 디렉터리를 사용합니다.
이미지 정의 전에 설정되도록 초기화 우선순위 -1 이하에서 지정해야 합니다. 다음과 같이 작성하거나:
define -1 config.image_directories = [ "images", "dlc/images" ]
init -1 python블록을 사용할 수 있습니다.
- define config.image_extensions = [ ".jpg", ".jpeg", ".png", ".webp", ".avif", ".svg" ]
images 디렉터리에서 설명한 방식으로 이미지를 찾을 때 사용할 확장자 목록입니다.
입력, 포커스, 이벤트
- define config.allow_screensaver = True
True이면 게임 중 화면 보호기가 작동할 수 있습니다. False이면 화면 보호기를 비활성화합니다.
- define config.controller_blocklist = [ ... ]
게임 컨트롤러 GUID의 앞부분과 비교할 문자열 목록입니다.
log.txt에서 GUID를 확인할 수 있습니다. 일치하는 문자열이 있으면 해당 컨트롤러를 초기화하지 않습니다.
- define config.focus_crossrange_penalty = 1024
키보드로 포커스를 옮길 때 선택한 방향에 수직인 움직임에 적용할 페널티입니다.
- define config.input_caret_blink = 1.0
False가 아니면 기본 입력 커서의 깜박임 주기(초)를 설정합니다.
- define config.longpress_duration = 0.5
터치 기기에서 길게 누르기로 인식할 때까지 화면을 누르고 있어야 하는 시간입니다.
- define config.longpress_radius = 15
길게 누르기로 인식할 수 있도록 터치가 벗어나지 않아야 하는 범위(픽셀)입니다.
- define config.longpress_vibrate = .1
길게 누르기 뒤 기기가 진동하는 시간입니다.
- define config.pad_bindings = { ... }
게임패드용
config.keymap에 해당합니다. 자세한 내용은 키맵 사용자 설정의 게임패드 바인딩 절을 참고하세요.
- define config.pass_controller_events = False
True이면 pygame 형식의 CONTROLLER 이벤트를 디스플레이어블의 이벤트 처리기에 전달합니다. 그렇지 않으면 Ren'Py가 소비합니다.
- define config.pass_joystick_events = False
True이면 pygame 형식의 JOYSTICK 이벤트를 디스플레이어블의 이벤트 처리기에 전달합니다. 그렇지 않으면 Ren'Py가 소비합니다.
- define config.web_input = True
True이면 웹에서
renpy.input()을 브라우저의 입력 시스템으로 처리합니다. False이면 Ren'Py 자체 시스템을 사용합니다. 브라우저 입력은 더 많은 언어와 가상 키보드 등을 지원하지만 사용자화의 범위는 더 좁습니다.초기화 시점과 translate python 블록에서 변경할 수 있습니다.
터치스크린 기기에서만 브라우저 입력을 사용하려면 다음과 같이 설정합니다.
define config.web_input = renpy.variant("touch")
레이어 이미지
레이어
- define config.bottom_layers = [ "bottom", ... ]
다른 모든 레이어 아래에 표시하고 전체 레이어 전환에는 참여시키지 않을 레이어 이름 목록입니다. 여기에 있는 이름을
config.layers나config.top_layers에 중복 지정하면 안 됩니다.
- define config.choice_layer = "screens"
menu 문에서 사용하는 choice 스크린을 표시할 레이어입니다.
- define config.clear_layers = [ ... ]
메인 메뉴나 게임 메뉴에 들어갈 때 비울 레이어 이름 목록입니다.
- define config.context_clear_layers = [ 'screens', 'top', 'bottom', ... ]
새 컨텍스트에 들어갈 때 비울 레이어 목록입니다.
- define config.default_tag_layer = "master"
이미지 태그가
config.tag_layer에 없을 때 이미지를 표시할 레이어입니다.
- define config.detached_layers = [ ]
장면에 자동 추가되지 않는 레이어입니다. 항상
sticky로 취급하며,Layer디스플레이어블을 통해 다른 곳에 삽입하는 용도입니다.
- define config.interface_layer = "screens"
내장 스크린을 표시할 레이어입니다.
- define config.layer_clipping = { ... }
레이어 클리핑을 제어합니다. 레이어 이름을 (x, y, height, width) 튜플에 연결합니다. x·y는 레이어의 왼쪽 위 좌표이고 height·width는 레이어 크기입니다.
config.layer_clipping에 지정하지 않은 레이어는 컨테이너 전체를 차지합니다. 보통 화면 전체이며,
Layer디스플레이어블 안에 표시하면 그 영역 전체입니다.
- define config.layer_transforms = { }
레이어 이름을 트랜스폼 목록에 연결하는 딕셔너리입니다.
show layer와camera의 트랜스폼이 적용된 다음, 맨 마지막에 적용됩니다.레이어 이름이 None이면 화면 전환까지 적용한 뒤
config.layers의 모든 레이어를 합친 결과에 트랜스폼을 적용합니다.
- define config.layers = [ 'master', 'transient', 'screens', 'overlay', ... ]
Ren'Py가 인식하는 모든 레이어를 표시 순서대로 나열합니다. 첫 항목이 가장 아래입니다. 내부적으로 사용하는 "master", "transient", "screens", "overlay"는 반드시 포함해야 합니다. 이후 버전에서 내부 레이어가 더 생길 수 있습니다.
renpy.add_layer()를 사용하면 원래 목록 내용을 몰라도 레이어를 추가할 수 있습니다.
- define config.overlay_layers = [ 'overlay', ... ]
오버레이 레이어의 목록입니다. 오버레이 함수를 호출하기 전에 비웁니다. "overlay"는 반드시 포함해야 합니다.
- define config.say_layer = "screens"
say 스크린을 표시할 레이어입니다.
config.context_clear_layers에도 포함해야 합니다.
- define config.sticky_layers = [ "master", ... ]
어떤 태그를 표시한 동안
config.tag_layer의 해당 태그 설정보다 우선할 레이어 이름 목록입니다.
- define config.tag_layer = { }
이미지 태그 문자열을 레이어 이름 문자열에 연결하는 딕셔너리입니다. 레이어를 지정하지 않고 이미지를 표시하면 태그를 찾아 대상 레이어를 정합니다. 없으면
config.default_tag_layer를 사용합니다.
- define config.top_layers = [ "top", ... ]
다른 모든 레이어 위에 표시하고 전체 레이어 전환에는 참여시키지 않을 레이어 이름 목록입니다. 여기에 있는 이름을
config.layers나config.bottom_layers에 중복 지정하면 안 됩니다.
- define config.transient_layers = [ 'transient', ... ]
각 상호작용 뒤에 비울 임시 레이어의 목록입니다. "transient"는 반드시 포함해야 합니다.
미디어: 음악, 효과음, 동영상
- define config.audio_directories = [ 'audio' ]
오디오 파일을 찾고 audio 디렉터리와 네임스페이스를 채우는 데 사용할 디렉터리 목록입니다.
- define config.audio_filename_callback = None
None이 아니면 오디오 파일 이름을 받아 대신 재생할 다른 파일 이름을 반환하는 함수입니다.
게임 스크립트를 바꾸지 않고 오디오 파일 형식만 변경했을 때 사용하도록 마련되었습니다.
동영상도 오디오 하위 시스템으로 재생하므로 동영상 파일에도 호출됩니다.
- define config.auto_channels = { "audio" : ( "sfx", "", "" ), ... }
자동 오디오 채널을 정의하는 매핑입니다. 채널 이름을 다음 세 요소의 튜플에 연결합니다.
채널에서 사용할 믹서.
채널에서 재생하는 파일 이름 앞에 붙일 접두사.
채널에서 재생하는 파일 이름 뒤에 붙일 접미사.
- define config.auto_movie_channel = True
True이고
Movie()에 play를 지정하면 동영상마다 오디오 채널 이름을 자동 생성합니다.config.single_movie_channel가 이 변수보다 우선합니다.
- define config.context_fadein_music = 0
컨텍스트 변경으로 음악을 재생할 때 페이드 인에 사용할 시간(초)입니다. 보통 게임을 불러올 때 해당합니다.
- define config.context_fadeout_music = 0
컨텍스트 변경으로 음악을 재생할 때 페이드 아웃에 사용할 시간(초)입니다. 보통 게임을 불러올 때 해당합니다.
- define config.enter_sound = None
None이 아니면 게임 메뉴에 들어갈 때 재생할 소리 파일입니다.
- define config.exit_sound = None
None이 아니면 게임 메뉴에서 나올 때 재생할 소리 파일입니다.
- define config.fadeout_audio = 0.016
stop문이나renpy.music.stop()으로 중지하거나,play문이나renpy.music.play()로 새 오디오를 재생할 때 적용할 기본 페이드 아웃 시간입니다. 대기열의 다음 오디오가 시작될 때는 적용하지 않습니다.중지·변경 시 클릭음이나 튀는 소리를 막기 위해 기본적으로 짧은 페이드 아웃을 사용합니다.
None이 아니면 게임 메뉴에서 재생할 음악 파일입니다.
- define config.has_music = True
True이면 "music" 믹서를 활성화합니다. False이면 오디오 채널에 "music" 믹서를 배정하지 않고 기본 GUI에서도 숨깁니다. 이 값과 config.has_sound, config.has_voice가 모두 False이면 main 믹서도 숨깁니다.
- define config.has_sound = True
True이면 "sfx" 믹서를 활성화합니다. False이면 오디오 채널에 배정하지 않고 기본 GUI에서도 효과음 믹서를 숨깁니다.
- define config.has_voice = True
True이면 "voice" 믹서를 활성화합니다. False이면 voice 문과 다른 음성 기능을 비활성화하고, 오디오 채널에 "voice" 믹서를 배정하지 않으며 기본 GUI에서도 숨깁니다.
None이 아니면 메인 메뉴에서 재생할 음악 파일입니다.
config.main_menu_music의 페이드 인 시간입니다. 단위는 초입니다.
메인 메뉴에 들어가거나 돌아올 때 멈출 채널 리스트입니다.
- define config.mipmap_movies = False
Movie()의 mipmap 인수 기본값입니다.config.mipmap과 같은 값을 받습니다.
- define config.play_channel = "audio"
renpy.play(),hover_sound,activate_sound에서 사용하는 오디오 채널 이름입니다.
- define config.preserve_volume_when_muted = True
False이면 음소거 중 음량을 0으로 표시하고 값을 바꾸면 음소거를 해제합니다. 기본값인 True이면 음소거를 유지하면서 음량을 표시하고 조절할 수 있습니다.
- define config.single_movie_channel = None
None이 아니고
Movie()에 play를 지정했다면 재생 채널 이름으로 사용합니다. "movie"는 내부용으로 예약되어 있으므로 사용하면 안 됩니다.
- define config.skip_sounds = False
True이면 건너뛰기 중 반복하지 않는 오디오를 재생하지 않습니다.
- define config.sound = True
True이면 소리가 작동합니다. False이면 오디오/믹서 하위 시스템을 완전히 비활성화합니다.
- define config.sound_sample_rate = 48000
사운드 카드의 샘플 속도입니다. 모든 wav 파일의 속도가 더 낮다면 그 속도로 맞추어 효율을 높일 수 있습니다.
- define config.web_unload_music = None
None이 아니라면 초 단위 숫자여야 합니다. 점진적 다운로드로 받은 음악을 이 시간 뒤에 메모리에서 해제합니다.
- define config.web_video_base = "./game"
브라우저에서 동영상을 재생할 때 파일명과 결합해 전체 재생 URL을 만드는 주소입니다. 디렉터리를 포함할 수 있으므로 "https://share.renpy.org/movies-for-mygame"도 가능합니다.
게임의 나머지 파일과 다른 서버에서 큰 동영상을 제공할 수 있습니다.
- define config.webaudio_required_types = [ "audio/ogg", "audio/mpeg", ... ]
웹에서는 브라우저가 이 MIME 형식의 오디오를 재생할 수 있는지 검사합니다. 가능하면 브라우저로 재생하고, 불가능하면 더 느리고 끊길 수 있는 wasm 디코더를 사용합니다.
기본적으로 Chrome과 Firefox는 웹 오디오를, Safari는 wasm을 사용합니다. mp3 오디오만 사용한다면 다음과 같이 바꾸어
define config.webaudio_required_types = [ "audio/mpeg" ]
Safari에서도 더 빠른 웹 오디오를 사용할 수 있습니다.
마우스
- define config.mouse = None
사용자 정의 마우스 커서를 제어합니다. None이면 보통 흑백인 시스템 커서를 사용합니다.
그 밖에는 마우스 종류별 애니메이션 딕셔너리여야 합니다. 기본 라이브러리의 키는
default,say,with,menu,prompt,imagemap,button,pause,mainmenu,gamemenu입니다. 더 구체적인 키가 없을 때 사용할default는 반드시 있어야 합니다. 키에pressed_를 붙이면 마우스 버튼을 누르는 동안 사용합니다.각 값은 프레임을 나타내는 (image, xoffset, yoffset) 튜플 리스트여야 합니다.
- image
커서 이미지입니다. 최대 크기는 하드웨어에 따라 다릅니다. 32x32는 어디서나 보장하고 64x64는 대부분에서 작동합니다. 더 큰 이미지는 작동하지 않을 수 있습니다.
- xoffset
커서 왼쪽에서 핫스폿 픽셀까지의 오프셋입니다.
- yoffset
커서 위쪽에서 핫스폿 픽셀까지의 오프셋입니다.
20Hz로 프레임을 재생하며 끝나면 반복합니다.
자세한 설명과 예제는 사용자 정의 마우스 커서를 참고하세요.
- define config.mouse_displayable = None
None이 아니면 디스플레이어블 또는 이를 반환하는 호출 가능 객체여야 합니다. 호출 결과가 None이면 디스플레이어블이 None인 경우처럼 처리합니다.
디스플레이어블을 지정하면 마우스 커서를 숨기고 모든 요소 위에 표시합니다. 직접 합성 커서의 위치와 그리기를 담당하므로 보통
MouseDisplayable()이나 매우 비슷한 것이어야 합니다.자세한 내용은 사용자 정의 마우스 커서를 참고하세요.
- define config.mouse_focus_clickthrough = False
True이면 창에 포커스를 주는 클릭을 정상 처리합니다. False이면 무시합니다.
- define config.mouse_hide_time = 30
마우스 입력이 이 초 동안 없으면 숨깁니다. 클릭 사이에 나타났다 사라지는 것을 피하려면 한 화면을 읽는 예상 시간보다 길게 설정해야 합니다.
None이면 마우스를 숨기지 않습니다.
경로
- define config.archives = [ ... ]
이미지와 데이터를 찾을 아카이브 파일 리스트입니다. 항목은 .rpa 확장자를 뺀 아카이브 기본 이름 문자열이어야 합니다.
리스트 순서로 검색하고 파일이 처음 발견된 아카이브에서 가져옵니다.
시작할 때 game 디렉터리의 모든 아카이브 이름을 ASCII 역순으로 정렬해 자동 채웁니다.
data.rpa,patch01.rpa,patch02.rpa가 있으면['patch02', 'patch01', 'data']가 됩니다.
- define config.basedir = ...
게임 기본 디렉터리의 전체 경로인 읽기 전용 변수입니다. 보통
game/의 상위 디렉터리이며 log.txt 같은 로그와 PC의 실행 파일이 있습니다. Android에서는 파일이 패키지 안에 있으므로 어떤 파일의 존재도 보장하지 않습니다.
- define config.gamedir = ...
game/디렉터리의 전체 경로인 읽기 전용 변수입니다. Android에서는 파일이 패키지 안에 있으므로 파일 존재를 보장하지 않습니다.
- define config.savedir = ...
저장 디렉터리의 전체 경로입니다.
python early블록에서만 설정해야 합니다.python early에서 설정하지 않으면 기본값을 생성하는config.save_directory도 참고하세요.
- define config.search_prefixes = [ "", ... ]
불러올 파일명 앞에 붙이는 접두사 리스트입니다. 파일을 불러오거나 불러올 수 있는지 확인할 때만 사용하며, 이미지나 네임스페이스 변수를 자동 정의하기 위한 파일 검색에는 영향을 주지 않습니다.
종료
- define config.quit_action : Action
사용자가 창의 닫기 버튼을 클릭하면 실행할 액션입니다. 기본 액션은 종료 여부를 확인합니다.
- define config.quit_callbacks = [ ... ]
종료하거나 스크립트를 다시 불러올 때 인수 없이 호출할 함수 리스트입니다. 초기화 코드에서 연 파일이나 시작한 스레드가 자동 정리되지 않는 경우 자원을 해제하는 용도입니다.
- define config.quit_on_mobile_background = False
True이면 모바일 앱이 포커스를 잃을 때 상태를 저장하고 복원하는 대신 종료합니다. 관련 동작을 제어하는
config.save_on_mobile_background도 참고하세요.
리플레이
- define config.after_replay_callback = None
None이 아니면 리플레이 완료 후 인수 없이 호출할 함수입니다.
- define config.replay_scope = { "_game_menu_screen" : "preferences", ... }
리플레이 진입 시 기본 스토어 변수에 지정할 값을 연결하는 딕셔너리입니다.
롤백
- define config.call_screen_roll_forward = False
스크린의 roll_forward가 None일 때 사용하는 값입니다.
- define config.ex_rollback_classes = [ ]
이전에는 롤백을 지원했지만 지금은 지원하지 않는다는 경고를 숨길 클래스 객체 리스트입니다. 의도적으로 지원을 제거했다면 클래스 객체를 추가하세요.
보통 이 기능보다는 클래스의 기반 형식 목록에
object를 추가하는 것이 적절합니다.
- define config.fix_rollback_without_choice = False
고정 롤백 중 내장 메뉴와 이미지맵의 동작을 결정합니다. 기본값 False이면 이전 선택지만 클릭할 수 있습니다. True이면 이전 선택을 표시하지만 아무 항목도 클릭할 수 없으며, 클릭으로 롤백 버퍼를 앞으로 진행합니다.
- define config.hard_rollback_limit = 100
사용자가 상호작용으로 롤백할 수 있는 단계 수입니다. 0이면 완전히 비활성화하지만, 실수로 건너뛴 텍스트를 다시 볼 수 있으므로 권장하지 않습니다.
- define config.pause_after_rollback = False
기본값 False이면 시간 지정 여부와 관계없이 일시 정지를 건너뛰고 대사나 메뉴 등의 상호작용에서만 멈춥니다. True이면 시간 제한 없는 일시 정지도 롤백 지점에 포함합니다.
- define config.rollback_enabled = True
사용자가 롤백할 수 있는지 결정합니다. False이면 직접 롤백할 수 없습니다.
- define config.rollback_length = 128
롤백 기록의 문 수가 이 값을 넘으면 기록을 줄이는 것을 고려합니다. 스크립트 변경 후 저장을 불러올 때 얼마나 되돌릴지도 결정합니다.
기본값보다 줄이면 Ren'Py가 불안정해질 수 있습니다.
- define config.rollback_side_size = .2
측면 롤백이 활성화된 경우, 지정된 화면 쪽에서 클릭이나 터치로 롤백할 영역의 비율입니다.
저장과 불러오기
- define config.after_load_callbacks = [ ... ]
불러오기 후 인수 없이 호출할 함수 리스트입니다.
콜백이 이전 버전 데이터 이전 등의 변경을 한다면
renpy.block_rollback()을 호출해 롤백으로 변경이 취소되지 않도록 해야 합니다.
- define config.auto_load = None
None이 아니면 시작 시 자동으로 불러올 저장 파일 이름입니다. 최종 사용자보다 개발자용입니다. "1"이면 1번 슬롯을 불러옵니다.
- define config.autosave_callback = None
백그라운드 자동 저장마다 호출할 콜백, 콜백 리스트 또는 액션입니다. 액션을 사용할 수 있지만 Return은 작동하지 않습니다.
Action이 아닌 콜백에서 디스플레이어블이나 스크린을 표시하면
renpy.restart_interaction()을 호출해야 합니다.- ::
define config.autosave_callback = Notify("Autosaved.")
- define config.autosave_frequency = 200
대략 이 횟수의 상호작용 후 자동 저장합니다. 끄려면 이 값을 바꾸지 말고
config.has_autosave를 False로 설정합니다.
- define config.autosave_on_choice = True
True이면 게임 내 선택지, 즉
renpy.choice_for_skipping()호출 시 자동 저장합니다.
- define config.autosave_on_input = True
True이면 텍스트 입력, 즉
renpy.input()호출 시 자동 저장합니다.
- define config.autosave_on_quit = True
True이면 종료, 메인 메뉴 복귀, 현재 게임 위에 다른 게임 불러오기를 시도할 때 자동 저장을 시도합니다. 시간을 줄이기 위해 확인 창을 보여 주는 동안 저장합니다.
- define config.autosave_prefix_callback = None
None이 아니면 인수 없이 호출되어 자동 저장 파일의 접두사를 반환하는 함수입니다. 기본 접두사는 "auto-"이며 슬롯은 "auto-1", "auto-2" 등입니다.
- define config.autosave_slots = 10
자동 저장에 사용할 슬롯 수입니다.
- define config.before_load_callbacks = [ ... ]
불러오기 전에 인수 없이 호출할 함수 리스트입니다.
음악을 멈추거나 바꿀 수 있지만 불러오면 상태 변경은 사라집니다.
- define config.file_slotname_callback = None
None이 아니면 파일 액션에서 페이지와 이름을 저장 함수에 전달할 슬롯 이름으로 변환하는 함수입니다.
- page
접근할 페이지 이름 문자열입니다. 보통 숫자지만 "quick", "auto" 같은 특수 값도 가능합니다.
- name
페이지의 슬롯 이름 문자열입니다. r'd+' 같은 정규 표현식일 수도 있으며, 이 경우 결과에도 같은 패턴을 포함해야 합니다.
기본 동작은 다음과 같습니다.
def file_slotname_callback(page, name): return page + "-" + name config.file_slotname_callback = file_slotname_callback
저장 파일에 접두사를 붙이는 데 사용할 수 있습니다.
config.autosave_prefix_callback도 참고하세요.
- define config.has_autosave = True
True이면 자동 저장하고 False이면 하지 않습니다.
True이면 게임 메뉴 진입 시
FileTakeScreenshot으로 찍은 스크린샷을 유지합니다. False이면 진입 직전에 새로 찍습니다.
- define config.load_failed_label = None
문자열이면 스크립트가 너무 많이 바뀌어 복구할 수 없어 불러오기에 실패했을 때 이동할 레이블입니다. 불러오기 전에 마지막 문의 시작으로 돌아가고 호출 스택을 비웁니다.
함수일 수도 있습니다. 인수 없이 호출되며 레이블 문자열을 반환해야 합니다.
- define config.loadable_callback = None
None이 아니면 파일명을 받는 함수입니다. 불러올 수 있으면 True, 없으면 False를 반환해야 합니다.
config.file_open_callback또는config.missing_image_callback과 함께 사용할 수 있습니다.
- define config.persistent_callback = None
None이 아니면 영구 저장 파일을 불러올 때마다 영구 스토어를 받아 제자리에서 변경하는 함수입니다.
define 문 또는
python early블록에서 설정해야 하며,python early에서 일반적으로 사용 가능한 항목만 참조해야 합니다.persistent._version으로 데이터의 생성 시점과, 적절히 관리했다면 마지막 이전 시점을 알 수 있습니다. None이면 Ren'Py 8.4에 이 기능이 추가되기 전 데이터입니다.아주 기본적인 콜백의 예는 다음과 같습니다.
def migrate_persistent(data): if data._version is None: # Update values in data to be suitable for current version. ... # Update originating version. data._version = config.version
- define config.quicksave_slots = 10
빠른 저장에 사용할 슬롯 수입니다.
- define config.save = True
True이면 저장을 허용합니다. False이면 저장을 허용하지 않고 기존 저장도 표시하지 않습니다.
- define config.save_directory = "..."
게임과 영구 데이터를 저장할 디렉터리를 생성하는 데 사용합니다. 경로는 플랫폼에 따라 다릅니다.
- Windows
%APPDATA%/RenPy/save_directory
- Mac OS X
~/Library/RenPy/save_directory
- Linux/기타
~/.renpy/save_directory
None이면 game 아래에 "saves" 디렉터리를 만듭니다. 여러 시스템 사용자가 게임을 공유할 수 없고 관리자 설치 후 일반 사용자 실행 시 문제가 생길 수 있어 권장하지 않습니다.
define 문 또는
python early에서 설정해야 합니다. 어느 경우든 다른 모든 문보다 먼저 실행되므로 표현식이 아닌 문자열로 설정해야 합니다.실제 저장 경로를 찾으려면 이 변수 대신
config.savedir를 읽습니다.
- define config.save_dump = False
True이면 저장할 때마다 save_dump.txt를 만듭니다. 각 줄에는 저장 객체의 상대 크기 추정치, 경로, 별칭 여부, 객체 표현이 포함됩니다.
- define config.failed_save_dump = True
config.save_dump와 비슷하지만 저장 실패 시에만 실행합니다.
- define config.save_json_callbacks = [ ... ]
각 저장과 함께 보관하여
FileJson(),renpy.slot_json()으로 접근할 JSON 객체를 만드는 콜백 리스트입니다.콜백은 저장할 Python 딕셔너리를 받아 숫자, 문자열, 리스트, 딕셔너리 등 JSON 호환 형식을 추가해야 합니다. 마지막 콜백 이후의 딕셔너리를 슬롯의 일부로 저장합니다.
전달한 딕셔너리에
_로 시작하는 키가 이미 있을 수 있습니다. Ren'Py용이므로 바꾸지 않아야 합니다.예를 들면 다음과 같습니다.
init python: def jsoncallback(d): d["playername"] = player_name config.save_json_callbacks.append(jsoncallback)
FileJson(slot)과renpy.slot_json(slot)은 저장 당시d딕셔너리 유사 객체의 상태를 가져옵니다. 저장 당시player_name은FileJson(slot, "playername")으로 얻습니다.
- define config.save_on_mobile_background = True
True이면 모바일 앱이 포커스를 잃을 때 상태를 저장합니다. 다시 시작할 때 자동으로 불러와 원래 위치에서 재개할 수 있는 방식으로 저장합니다.
- define config.save_persistent = True
True이면 영구 데이터를 저장합니다. False이면 저장하지 않으며 종료하면 변경 사항이 사라집니다.
- define config.save_physical_size = True
True이면 실제 창 크기를 환경설정에 저장하고 게임 재개 시 복원합니다.
- define config.save_token_keys = [ ]
저장을 불러올 때 신뢰할 키 리스트입니다. 제작자가 배포한 저장 파일을 경고 없이 불러오게 할 수 있습니다.
현재 컴퓨터의 저장 토큰을 신뢰하려면 콘솔에서 다음을 실행합니다.
print(renpy.get_save_token_keys())
log.txt에 키가 출력됩니다. 이 값으로 config.save_token_keys를 정의합니다. define 문 또는 python early 블록에서 설정해야 합니다.
- define config.thumbnail_height = 75
저장 시 찍는 미리보기의 높이입니다. 불러오기 화면에서 표시하며, 현재 설정값이 아닌 촬영 당시 크기로 표시합니다.
기본 GUI가 이 값을 변경합니다.
- define config.thumbnail_width = 100
저장 시 찍는 미리보기의 너비입니다. 불러오기 화면에서 표시하며, 현재 설정값이 아닌 촬영 당시 크기로 표시합니다.
기본 GUI가 이 값을 변경합니다.
스크린 언어
- define config.always_shown_screens = [ ... ]
메뉴와 인터페이스 숨김 중에도 항상 표시할 스크린 이름 리스트입니다. 표시되지 않으면 다시 표시합니다. Ren'Py가 사용하며 리스트를 수정할 수 있습니다.
보통
config.overlay_screens가 더 적절합니다.
- define config.context_copy_remove_screens = [ 'notify', ... ]
롤백이나 저장을 위해 컨텍스트를 복사할 때 제거할 스크린 리스트입니다.
None이 아니면 게임 메뉴 진입 요청 시 실행할 액션입니다. 새 컨텍스트는 자동 생성하지 않으며 액션에서 처리해야 합니다.
- define config.imagemap_auto_function : Callable
스크린 언어 imagebutton 또는 imagemap의 auto를 디스플레이어블로 확장하는 함수입니다. auto 값과 "insensitive", "idle", "hover", "selected_idle", "selected_hover", "ground" 중 원하는 이미지를 받습니다. 디스플레이어블이나 None을 반환해야 합니다.
기본 구현은 auto를 원하는 이미지로 서식 처리하고 결과 파일명이 존재하는지 확인합니다.
- define config.keep_side_render_order = True
True이면 Side 위치 문자열의 부분 문자열 순서가 자식 렌더링 순서를 결정합니다.
게임 메뉴 진입 시 비울 레이어 이름 문자열 리스트입니다.
- define config.notify : Callable
renpy.notify()나Notify()가 알림 표시를 위해 message 하나로 호출합니다. 기본 구현은renpy.display_notify()이며 제작자가 알림을 가로채도록 합니다.
- define config.overlay_screens = [ ... ]
오버레이가 활성화되면 표시하고 억제되면 숨길 스크린 리스트입니다. overlay가 아닌 screens 레이어에 표시합니다.
- define config.per_frame_screens = [ ... ]
상호작용당 한 번이 아닌 프레임마다 갱신할 스크린 이름 문자열 리스트입니다. 내부에서도 사용하므로 전체를 교체하지 말고 이름을 추가해야 합니다.
- define config.transition_screens = True
True이면 스크린이 화면 전환에 참여하여 이전 상태에서 새 상태로 디졸브됩니다. False이면 최신 상태만 표시합니다.
스크린샷
- define config.pre_screenshot_actions = [ Hide("notify", immediately=True), ... ]
촬영 전에 실행할 액션 리스트입니다. 스크린샷에 나오면 안 되는 일시적 요소를 숨기는 용도입니다.
- define config.screenshot_callback : Callable
촬영 시 저장한 전체 파일명을 매개변수 하나로 받아 호출하는 함수입니다.
- define config.screenshot_crop = None
None이 아니면 (x, y, height, width) 튜플이어야 합니다. 저장 전에 이 사각형으로 자릅니다.
- define config.screenshot_pattern = "screenshot%04d.png"
스크린샷 파일명 패턴입니다. Python의 % 서식 규칙으로 자연수에 적용해 파일명 시퀀스를 만듭니다. 절대 경로나 config.renpy_base 기준 상대 경로이며, 처음으로 존재하지 않는 이름을 사용합니다.
없는 디렉터리는 만듭니다.
None이 아니면 우선 사용하는
_screenshot_pattern도 참고하세요.
- define config.tracesave_screenshot = True
True이면 트레이스백 저장 시 스크린샷을 찍고 False이면 찍지 않습니다.
자체 음성 출력 / 텍스트 음성 변환
- define config.tts_substitutions = [ ]
음성 엔진이 올바르게 발음하도록 전달 전에 텍스트를 치환하는 (pattern, replacement) 쌍의 리스트입니다.
패턴은 문자열이나 정규 표현식이며 대체값은 문자열이어야 합니다.
문자열 패턴은 이스케이프한 뒤 앞뒤에 단어 경계를 뜻하는 r'\b'를 붙여 정규 표현식으로 컴파일합니다. 이 경우 대체 문자열도 이스케이프합니다.
정규 표현식 패턴은 그대로 사용하고 대체 문자열을 이스케이프하지 않습니다.
지정된 순서대로 치환합니다. 일치한 텍스트가 첫 글자 대문자, 전체 대문자, 전체 소문자인지 확인하고 해당하면 대체값에도 같은 대소문자 형식을 적용한 뒤 치환합니다.
예를 들어 다음은
define config.tts_substitutions = [ ("Ren'Py", "Ren Pie"), ]
"Ren'Py is pronounced ren'py."를 "Ren Pie is pronounced ren pie."처럼 읽게 합니다.
이미지 표시
- define config.adjust_attributes = { }
None이 아니면 딕셔너리입니다. 이미지 속성이 있는 문이나 함수를 실행 또는 예측할 때 태그를 찾고, 없으면 None 키를 찾습니다.
찾은 값은 함수여야 합니다. 태그와 속성으로 이루어진 이미지 이름 튜플을 받아 새 속성 집합 등을 포함한 조정된 튜플을 반환해야 합니다.
예측 중 호출될 수 있으므로 어떤 상태에도 의존해서는 안 됩니다.
- define config.cache_surfaces = False
True이면 원본 이미지 데이터를 RAM에 보관하여 디스크에서 다시 읽지 않고 매니퓰레이터를 적용할 수 있습니다. False이면 캐시에서 데이터를 버리고 비디오 메모리의 텍스처만 유지해 RAM을 줄입니다.
- define config.conditionswitch_predict_all = False
ConditionSwitch()와ShowingSwitch()의 predict_all 기본값입니다. 가능한 모든 디스플레이어블의 표시 여부를 결정합니다.
- define config.default_attribute_callbacks = { }
이미지 속성이 있는 문이나 함수를 실행 또는 예측할 때 태그가 현재 표시 중이 아니면 딕셔너리에서 찾고, 없으면 None 키를 찾습니다.
찾은 값은 함수여야 합니다. 태그와 속성의 이미지 이름 튜플을 받아 처음 표시할 때 추가 적용할 속성의 이터러블을 반환해야 합니다.
결과는 추가만 하는 것으로 취급하며, 명시적으로 지정한 충돌 속성이나 부정 속성이 우선합니다.
예측 중 호출될 수 있으므로 어떤 상태에도 의존해서는 안 됩니다.
- define config.default_transform = ...
show나 scene으로 표시할 때 이 트랜스폼의 속성으로 디스플레이어블 트랜스폼 값을 초기화합니다.
기본 트랜스폼은
center입니다.
- define config.displayable_prefix = { }
디스플레이어블 접두사를 참고하세요.
- define config.image_cache_size = None
None이 아니면 화면 크기의 배수로 이미지 캐시 크기를 설정합니다. 화면 픽셀 수를 곱해 캐시 픽셀 크기를 구합니다.
너무 크면 메모리를 낭비하고 너무 작으면 반복해서 불러와 성능이 떨어질 수 있습니다.
- define config.image_cache_size_mb = 300
이미지 캐시를 메가바이트 단위로 설정합니다.
config.cache_surfaces가 False이면 픽셀당 4바이트, 그 밖에는 8바이트입니다.너무 크면 메모리를 낭비하고 너무 작으면 반복해서 불러와 성능이 떨어집니다.
config.image_cache_size가 None이 아니면 그 값을 대신 사용합니다.
- define config.keep_running_transform = True
True이면 트랜스폼이나 ATL 없이 이미지를 표시할 때 같은 태그의 이전 트랜스폼이 있으면 이어서 사용합니다. False이면 멈춥니다.
- define config.max_texture_size = (4096, 4096)
하나의 텍스처로 불러올 최대 이미지 크기입니다. 3D 모델에서 중요하며 2D 이미지는 필요하면 여러 텍스처로 나눕니다.
Live2D는 가장 큰 Live2D 텍스처에 맞춰 조정합니다.
- define config.optimize_texture_bounds = True
True이면 이미지에서 불투명 픽셀의 경계 상자를 찾아 그 부분만 텍스처에 불러옵니다.
- define config.predict_statements = 32
이미지 예측 로딩 시 현재 문을 포함해 고려할 문 수입니다. 현재 문에서 너비 우선으로 탐색하며 이 수만큼 확인하고, 참조된 이미지를 미리 불러올 수 있습니다. 0이면 이미지 예측 로딩을 끕니다.
- define config.scene = renpy.scene
scene 문이
renpy.scene()대신 사용할 함수입니다. 화면을 비우는 용도이며 새 이미지는config.show가 표시합니다.renpy.scene()과 같은 서명이어야 합니다.
- define config.show = renpy.show
show와 scene이
renpy.show()대신 사용할 함수입니다.renpy.show()과 같은 서명이어야 하며 모르는 키워드는 그대로 전달해야 합니다.
- define config.speaking_attribute = None
None이 아니면 캐릭터가 말할 때 이미지 태그에 추가하고 끝나면 제거할 이미지 속성 문자열입니다.
config.tag_layer로 정할 수 있는 태그의 기본 레이어 이미지에 적용합니다.대사에서 @로 표시하는 임시 속성과 매우 비슷합니다. 글자 표시 애니메이션이 끝날 때가 아니라 대사창을 진행할 때 제거합니다.
- define config.tag_transform = { ... }
이미지 태그 문자열을 트랜스폼이나 트랜스폼 리스트에 연결합니다. at 없이 새 이미지를 표시하면 태그로 적용할 트랜스폼을 찾습니다.
- define config.tag_zorder = { }
이미지 태그 문자열을 zorder에 연결합니다. zorder 절 없이 새 이미지를 표시하면 태그로 찾고, 없으면 0을 사용합니다.
건너뛰기
- define config.fast_skipping = False
True이면 개발자 모드 밖에서도 빠른 건너뛰기를 허용합니다.
- define config.skip_delay = 5
Ctrl로 건너뛸 때 대사를 표시할 밀리초 시간입니다. 실제로 그만큼 정확하지는 않습니다.
- define config.skip_indicator = True
True이면 스크립트 건너뛰기 중 표시기를 보여 줍니다.
텍스트와 글꼴
- define config.font_hinting = { None : "auto" }
글꼴 파일명을
hinting모드 문자열에 연결하는 딕셔너리입니다.hinting이 True이면 여기서 찾아 해당 모드를 사용합니다.키가 없으면 None 키를 찾아 모드를 사용합니다.
- define config.font_name_map = { }
글꼴 이름을 파일 경로 또는 fontgroup에 연결합니다.
{font}태그를 짧고 간단하게 쓰며 글꼴 그룹에도 접근할 수 있게 합니다.
- define config.font_transforms = { ... }
접근성용 새 글꼴 변환을 만듭니다.
Preferences()의 첫 인수를 "font transform"으로 지정해 활성화할 수 있습니다.사용할 이름 문자열을 함수에 연결합니다. 함수는 글꼴 또는
FontGroup하나를 받아 글꼴이나 그룹을 반환해야 합니다. 예를 들어 dejavusans 변환은 다음과 같습니다.init python: def dejavusans(f): return "DejaVuSans.ttf" config.font_transforms["dejavusans"] = dejavusans
- define config.font_replacement_map = { }
(font, bold, italics)를 (font, bold, italics)에 연결하여 굵게/기울임 전용 글꼴로 바꿉니다. 예를 들어
Vera.ttf의 기울임꼴을 모두VeraIt.ttf로 쓰려면 다음과 같습니다.init python: config.font_replacement_map["Vera.ttf", False, True] = ("VeraIt.ttf", False, False)
특정 변형에만 적용됩니다. 이 예에서 Vera의 굵은 기울임꼴 요청은 기울임 전용 글꼴을 굵게 만드는 대신 원래 Vera의 굵은 기울임꼴을 사용합니다.
- define config.font_size_adjust = { }
글꼴 이름 문자열을 크기 조정값에 연결합니다. 실수이면 원래 크기에 곱합니다. 또는 파일명 문자열과 원래 크기 실수를 받아 조정한 크기를 반환하는 함수일 수 있습니다.
여러 글꼴 계열의 시각적 크기를 맞출 수 있습니다. 크기 조절 가능한 글꼴에서만 작동합니다.
- define config.hyperlink_handlers = { ... }
하이퍼링크 프로토콜을 처리 함수에 연결합니다. 함수는 : 뒤의 전체 값을 받아 동작을 수행합니다. 값을 반환하면 상호작용을 끝내고, 그 밖에는 클릭을 무시하며 계속합니다.
- define config.hyperlink_protocol = "call_in_new_context"
프로토콜 없는 하이퍼링크의 기본 프로토콜입니다. 가능한 프로토콜의 의미는
a텍스트 태그를 참고하세요.
- define config.new_substitutions = True
True이면 모든 표시 텍스트에 새 방식인 대괄호 치환을 적용합니다.
- define config.preload_fonts = [ ... ]
시작할 때 불러올 TrueType 및 OpenType 글꼴 이름 리스트입니다. 새 서체를 처음 쓸 때 멈추는 것을 방지할 수 있습니다.
- define config.replace_text = None
None이 아니면 사용자에게 표시할 텍스트 하나로 호출하는 함수입니다. 원문이나 대체할 텍스트를 반환할 수 있습니다.
치환과 태그 분리 후 호출하므로 인수에는 실제 텍스트만 있습니다. 대사뿐 아니라 UI 등 모든 표시 텍스트가 통과합니다.
다음과 같이 특정 ASCII 시퀀스를 유니코드 문자로 바꿀 수 있습니다.
def replace_text(s): s = s.replace("'", u'\u2019') # apostrophe s = s.replace('--', u'\u2014') # em dash s = s.replace('...', u'\u2026') # ellipsis return s config.replace_text = replace_text
- define config.safe_text = ...
True이면 맞지 않는 텍스트 태그 같은 오류가 있어도 표시를 시도합니다. False이면 오류를 발생시킵니다. 배포 게임은 기본 True, 개발자 모드는 False입니다.
say와 menu의 문자열 텍스트를 받는 함수 리스트입니다. 대체할 새 문자열 또는 같은 문자열을 반환해야 합니다.
say 처리의 매우 이른 시점, 그리고
config.use_menu_text_filter가 True일 때 menu 처리에서 번역과 치환 전에 실행합니다. 더 늦게 실행하는 필터는config.replace_text를 참고하세요.
- define config.textshader_callbacks = { }
문자열을 호출 가능 객체에 연결하는 딕셔너리입니다. 해당 문자열의 텍스트 셰이더를 쓰면 다른 셰이더 이름 문자열을 반환하도록 호출합니다. 영구 변수에 따라 바뀌는 셰이더 등에 사용할 수 있습니다.
True이면 menu 텍스트에
config.say_menu_text_filter와config.say_menu_text_filters를 적용합니다. False이면 적용하지 않습니다.
화면 전환
- define config.adv_nvl_transition = None
NVL 텍스트 직후 ADV 텍스트를 표시할 때 NVL 창을 표시하는 전환입니다.
- define config.after_load_transition = None
불러온 게임에 들어갈 때 사용하는 전환입니다.
- define config.end_game_transition = None
복귀할 곳 없는 return이나
renpy.full_restart()로 정상 종료한 뒤 메인 메뉴를 표시할 전환입니다.
- define config.end_splash_transition = None
시작 화면이 끝난 뒤 메인 메뉴를 표시할 전환입니다.
- define config.enter_replay_transition = None
None이 아니면 리플레이 진입 시 사용할 전환입니다.
- define config.enter_transition = None
None이 아니면 게임 메뉴 진입 시 사용할 전환이어야 합니다.
- define config.enter_yesno_transition = None
None이 아니면 예/아니요 확인 스크린 진입 시 사용할 전환입니다.
- define config.exit_replay_transition = None
None이 아니면 리플레이 종료 시 사용할 전환입니다.
- define config.exit_transition = None
None이 아니면 게임 메뉴 종료 시 사용할 전환이어야 합니다.
- define config.exit_yesno_transition = None
None이 아니면 예/아니요 확인 스크린 종료 시 사용할 전환입니다.
- define config.game_main_transition = None
None이 아니면
MainMenu()로 게임 메뉴에서 메인 메뉴로 돌아갈 때 사용할 전환입니다.
- define config.intra_transition = None
게임 메뉴와 메인 메뉴의 스크린 사이, 즉
ShowMenu()로 바꿀 때 사용하는 전환입니다.
- define config.nvl_adv_transition = None
NVL 텍스트 직후 ADV 텍스트를 표시할 때 NVL 창을 숨기는 전환입니다.
- define config.pause_with_transition = False
False이면
pause는 항상renpy.pause()를 사용합니다. True이면 시간이 있는pause 5가with Pause(5)와 같습니다.
- define config.say_attribute_transition = None
None이 아니면 이미지 속성이 있는 say 문으로 이미지를 바꿀 때 사용할 전환입니다.
- define config.say_attribute_transition_callback : Callable
적용할 화면 전환과 레이어를 반환하는 함수입니다.
표시할 이미지 태그, mode, 전환 전 태그의 set, 전환 후 태그의 set 네 인수를 받아야 합니다. mode는 다음 중 하나입니다.
"permanent": 현재 say 문 이후에도 유지되는 영구 속성 변경입니다.
"temporary": 현재 say 문 끝에 복원되는 임시 속성 변경입니다.
"both": 영구 및 임시 변경을 동시에 합니다. 일부는 현재 say 문 이후에도 유지되고 일부는 끝에 복원됩니다.
"restore": 임시 변경 또는 both 변경을 복원할 때입니다.
다음 두 요소의 튜플을 반환해야 합니다.
사용할 전환 또는 전환하지 않을 때의 None.
전환 레이어인 문자열 또는 None. 거의 항상 None입니다.
기본 구현은 (config.say_attribute_transition, config.say_attribute_transition_layer)를 반환합니다.
- define config.say_attribute_transition_layer = None
None이 아니면 레이어 이름 문자열이어야 하며 거의 항상 "master"입니다. say 속성 전환을 해당 레이어에 적용하고 완료를 기다리지 않으므로 대사를 표시하면서 전환합니다.
- define config.window_hide_transition = None
명시적 전환이 없는 window hide에서 사용할 전환입니다.
- define config.window_show_transition = None
명시적 전환이 없는 window show에서 사용할 전환입니다.
화면 전환 제어
- define config.implicit_with_none = True
True이면 기본적으로 대사, 메뉴, 입력, 이미지맵 상호작용 뒤에 with None과 같은 처리를 합니다. 전환에 이전 스크린이 나타나는 것을 막습니다.
- define config.load_before_transition = True
True이면 상호작용의 모든 이미지를 불러올 때까지 시작을 미룹니다. 이름이 적절하지는 않습니다.
- define config.mipmap_dissolves = False
Dissolve(),ImageDissolve(),AlphaDissolve(),AlphaMask()의 mipmap 기본값입니다.
번역
- define config.clear_history_on_language_change = True
True이면 언어 변경 시 대사 기록을 비워 현재 글꼴로 표현할 수 있는 문자열만 남게 합니다. False이면 유지합니다.
- define config.default_language = None
None이 아니면 번역 프레임워크에서 사용하는 게임의 기본 번역 언어 문자열이어야 합니다.
자세한 내용은 번역을 참고하세요.
- define config.defer_styles = False
True이면 모든
translate python블록 이후로 style 문 실행을 미룹니다.translate python에서 변수를 바꾸고 translate style이 아닌 일반 style 문에서 사용할 수 있습니다.기본값은 False지만
gui.init()호출 시 True가 됩니다.
- define config.enable_language_autodetect = False
True이면 플레이어 시스템 로캘로 언어를 판단하며, 성공하면 기본 언어로 사용합니다.
아래
config.locale_to_language_function으로 사용자 지정합니다. 기본 구현은config.locale_to_language_map을 사용합니다.
- define config.locale_to_language_function : Callable
사용자 로캘로 게임 언어를 결정하는 함수입니다. 로캘 ISO 코드와 지역 ISO 코드의 두 문자열을 받으며 호출 전 소문자로 정규화됩니다.
사용할 번역 이름 문자열 또는 기본 번역을 사용하는 None을 반환해야 합니다.
config.enable_language_autodetect가 True여야 호출됩니다.
- define config.locale_to_language_map = { ... }
locale_to_language_function의 기본 구현에서 쓰는 표입니다. (locale, region)을 언어 이름에 연결합니다. 기본값은 renpy/translation/__init__.py의 locale 심벌에 있습니다.
일치할 때까지 다음 순서로 찾습니다.
language_region (en_us)
language (en)
region (us)
- define config.new_translate_order = True
Ren'Py 6.99.11의 새로운 style 및 translate 문 순서를 활성화합니다.
- define config.translate_clean_stores = [ "gui", ... ]
번역 언어 변경 시 초기화 단계 끝의 상태로 정리할 이름 있는 스토어 리스트입니다.
- define config.translate_additional_strings_callbacks = [ ]
번역 시스템이 문자열을 찾을 때 호출할 콜백 리스트입니다. 각 콜백은 (filename, linenumber, string) 튜플의 이터러블 또는 이터레이터를 반환해야 합니다. 추가 번역 문자열로 취급됩니다.
줄 번호는 실제 파일의 줄과 같을 필요는 없지만 번역 파일에 문자열을 추가하는 순서를 제어합니다.
- define config.translate_ignore_who = [ ]
번역을 생성하지 않을 캐릭터 문자열 리스트입니다. 디버깅이나 메모용 캐릭터에 유용합니다. 문의 표현식 문자열과 비교하므로 "e"는
e와 일치하지만 같은 객체를 가리켜도l과는 일치하지 않습니다.
음성
함께 보기
- define config.auto_voice = None
문자열, 함수 또는 None입니다. None이면 자동 음성을 끕니다.
문자열이면 현재 대사의 식별자를
id에 연결해 서식 처리합니다. 결과 파일이 있으면 음성으로 재생합니다.함수이면 현재 대사 식별자 하나로 호출하며 문자열을 반환해야 합니다. 결과 파일이 있으면 음성으로 재생합니다.
자세한 내용은 자동 음성을 참고하세요.
- define config.emphasize_audio_channels = [ 'voice' ]
오디오 채널 이름 문자열 리스트입니다.
오디오 강조 환경설정이 켜져 있고 목록의 채널이 재생을 시작하면, 목록 밖 모든 채널의 보조 음량을
config.emphasize_audio_time초 동안config.emphasize_audio_volume으로 낮춥니다.목록의 어느 채널도 재생하지 않으면 목록 밖 채널의 보조 음량을
config.emphasize_audio_time초 동안 1.0으로 올립니다.예를 들어
[ 'voice' ]이면 음성 재생 중 나머지 모든 채널의 음량을 낮춥니다.
- define config.emphasize_audio_time = 0.5
위 설명을 참고하세요.
- define config.emphasize_audio_volume = 0.8
위 설명을 참고하세요.
- define config.voice_callbacks = [ ]
음성 시스템이 호출할 함수 리스트입니다. 각 함수는 두 인수를 받아야 합니다.
- event
발생한 이벤트입니다. 다음 중 하나입니다.
- "play"
음성 파일을 재생하기 직전입니다.
- "stop"
음성 파일 재생이 멈췄습니다.
- info
재생 중인 음성 파일의 정보를 담은 객체입니다.
_get_voice_info()가 반환하는 객체와 같습니다.
문서화된 키워드는 없지만 알 수 없는 키워드 인수도 받을 수 있어야 합니다.
- define config.voice_filename_format = "{filename}"
voice 문의 문자열 인수로 서식 처리해 재생 파일명을 만드는 문자열입니다. "{filename}.ogg"이면
voice "test"는test.ogg를 재생합니다.
창 관리
- define config.choice_empty_window = None
None이 아니고 보통
menu로 여는 선택 메뉴에 제목이 없으면 ("", interact=False)로 호출합니다.일반적인 사용법은 다음과 같습니다.
define config.choice_empty_window = extend
다른 제목이 없으면 마지막 대사를 메뉴 제목으로 다시 표시합니다.
다른 구현도 가능하지만 항상 대사창을 표시한다고 가정합니다.
- define config.empty_window : Callable
_window가 True이고 아직 창을 표시하지 않아
renpy.shown_window()가 호출되지 않았으면 인수 없이 호출합니다. 상호작용 없이 빈 창을 표시하고 반환해야 합니다.기본 구현은 narrator 캐릭터로 상호작용 없이 빈 줄을 표시합니다.
- define config.window = None
기본 대사창 관리 방식을 제어합니다. None이 아니면 "show", "hide", "auto" 중 하나여야 합니다.
"show"이면 항상 표시합니다. "hide"이면 say나 다른 대사 표시 문 밖에서 숨깁니다. "auto"이면 scene 전에 숨기고 대사가 표시될 때 다시 표시합니다.
기본값을 설정하며 이후
window show,window hide,window auto로 바꿀 수 있습니다. 대사창 관리를 참고하세요.
- define config.window_auto_hide = [ "scene", "call screen", "menu", "say-centered", "say-bubble", ... ]
window auto가 빈 대사창을 숨기게 하는 문 리스트입니다.
- define config.window_auto_show = [ "say", "say-nvl", "menu-with-caption", "nvl-menu", "nvl-menu-with-caption", ... ]
window auto가 빈 대사창을 표시하게 하는 문 리스트입니다.
개발자
호환성
- define config.label_overrides = { }
스크립트의 레이블 호출과 이동을 다른 레이블로 돌립니다. 예를 들어 "start"를 "mystart"에 연결하면 "start"의 모든 호출과 이동이 "mystart"로 갑니다.
- define config.script_version = None
None이 아니면 스크립트 버전으로 해석하여 필요한 호환 기능을 활성화합니다. None이면 최신 스크립트로 가정합니다.
보통 배포판 빌드 시 런처가 추가한 파일에서 설정하므로 직접 설정하지 않아야 합니다.
개발
- define config.console = False
config.developer가 True가 아니어도 콘솔을 활성화합니다.
- define config.developer = "auto"
True이면 개발자 모드를 켭니다. Shift+D 개발자 메뉴, Shift+R 재로딩 등 최종 사용자용이 아닌 기능을 제공합니다.
True, False, "auto"입니다. "auto"이면 배포 패키지 여부를 감지해 config.developer를 적절히 설정합니다.
디버깅
- define config.clear_log = False
True이면 시작할 때마다
config.log의 로그를 비웁니다.
- define config.debug_prediction = False
True이면 실행 흐름, 이미지, 스크린 예측의 정보와 오류를 log.txt와 콘솔에 기록합니다.
- define config.debug_sound = False
소리 기능 디버깅을 활성화하여 소리 생성 오류를 숨기지 않습니다. 사운드 카드가 없거나 잘못되어 정상적으로 오류가 나는 경우 작동을 방해할 수 있습니다. 배포 게임에서는 항상 False여야 합니다.
- define config.debug_text_overflow = False
True이면 텍스트 넘침을 text_overflow.txt에 기록합니다.
Text가 할당 영역보다 크게 렌더링되면 넘침입니다. 이 값과 대사창의xmaximum,ymaximum을 창 크기로 설정하면 대사가 너무 큰 경우를 보고할 수 있습니다.
- define config.disable_input = False
True이면
renpy.input()이 즉시 종료하고 default를 반환합니다.
- define config.exception_handler = None
None이 아니면 다음 세 인수를 받는 함수여야 합니다.
제작자 파일만 포함하도록 줄인 트레이스백 문자열.
제작자와 Ren'Py 파일을 모두 포함한 전체 트레이스백.
트레이스백이 담긴 파일의 경로.
원하는 방식으로 사용자에게 오류를 표시할 수 있습니다. True를 반환하면 예외를 무시하고 다음 문으로 진행합니다. False이면 내장 처리기를 사용합니다.
renpy.jump()로 다른 레이블로 이동할 수도 있습니다.
- define config.lint_character_statistics = True
이 값과
config.developer가 True이면 lint에 캐릭터별 대사 블록 수를 포함합니다. 스포일러를 막기 위해 패키지 게임에서는 이 통계를 비활성화합니다.
- define config.lint_show_names = False
이 값과
lint_character_statistics가 True이면 가능할 경우 캐릭터 별칭을Character()의 name 매개변수로 풀어 표시합니다.
- define config.lint_hooks = [ ... ]
lint 실행 시 인수 없이 호출할 함수 리스트입니다. 스크립트 데이터의 오류를 찾아 표준 출력에 표시해야 합니다. 여기서는 Python
print문을 사용해도 됩니다.
- define config.log_events = False
True이면 pygame 형식 이벤트를 log.txt에 기록합니다. 성능은 떨어지지만 일부 문제의 디버깅에 유용할 수 있습니다.
- define config.log_width = 78
config.log사용 시 기록할 줄 너비입니다.
- define config.missing_image_callback = None
None이 아니면 이미지 불러오기 실패 시 없는 이미지의 파일명을 받아 호출합니다. None이나 이미지 매니퓰레이터를 반환할 수 있으며, 매니퓰레이터를 반환하면 대신 불러옵니다.
특히
DynamicImage()와 사용한다면config.loadable_callback도 정의하는 것이 좋습니다.
- define config.missing_label_callback = None
None이 아니면 존재하지 않는 레이블 접근 시 그 이름 하나를 받아 호출합니다. 대체 레이블 이름이나, Ren'Py가 예외를 발생시키도록 None을 반환해야 합니다.
- define config.profile = False
True이면 일부 프로파일링 정보를 표준 출력으로 보냅니다.
- define config.profile_init = 0.25
이 시간보다 오래 걸리는
init,init python블록을 로그에 기록합니다.
- define config.raise_image_exceptions = None
True이면 이미지 이름을 찾지 못할 때 예외가 발생합니다. False이면 이미지 대신 텍스트 오류를 표시합니다.
None이면 config.developer 값을 사용합니다.
예외를 무시하면 False로 설정됩니다.
- define config.raise_image_load_exceptions = None
True이면 이미지 불러오기 중 예외가 발생했을 때 예외를 다시 발생시킵니다. False이면 이미지 대신 텍스트 오류를 표시합니다.
None이면 config.developer 값을 사용합니다.
예외를 무시하면 False로 설정됩니다.
- define config.return_not_found_label = None
None이 아니면 복귀 지점을 찾지 못할 때 이동할 레이블입니다. 이동 전에 호출 스택을 비웁니다.
가비지 컬렉션
- define config.gc_print_unreachable = False
True이면 수집을 유발한 객체 정보를 콘솔과 로그에 출력합니다.
- define config.gc_thresholds = (25000, 10, 10)
유휴 상태가 아닐 때 사용하는 GC 임곗값입니다. 수집이 일어나지 않도록 설정합니다. 세 숫자는 다음과 같습니다.
0세대 수집 전 순수하게 추가 할당되어야 할 객체 수.
1세대 수집을 유발하는 0세대 수집 횟수.
2세대 수집을 유발하는 1세대 수집 횟수.
0세대 수집은 프레임 손실 없이 빠르게 끝나야 하고, 1세대는 손실이 생길 수 있으며, 2세대는 생깁니다.
- define config.idle_gc_count = 2500
화면 갱신 후 네 번째 프레임 이후처럼 안정 상태에서 수집을 유발하는 순 객체 증가 수입니다.
- define config.manage_gc = True
True이면 Ren'Py가 GC를 직접 관리하고 아래 설정을 적용합니다.
다시 불러오기
- define config.autoreload = True
True이면 Shift+R로 자동 재로딩을 전환합니다. 켜져 있으면 사용 중인 파일이 수정될 때마다 다시 불러옵니다.
False이면 Shift+R을 누를 때마다 한 번 다시 불러옵니다.
- define config.reload_modules = [ ... ]
게임과 함께 다시 불러올 Python 모듈 이름 문자열 리스트입니다. 하위 모듈도 다시 불러옵니다.