목차

이전 항목

Color 클래스

다음 항목

배포판 만들기

링크


원문 보러 가기
오역 신고하기
Created using Sphinx.

기타 함수

현재 렌파이 위키에 있던 문서를 새로운 툴을 사용해 이전하고 있습니다. 모든 페이지가 제대로 옮겨진 것이 아니기 때문에 이 페이지에는 마땅히 분류해놓을 곳이 없는 함수를 적어놓았습니다.

renpy.call_stack_depth()

현재 상황의 call 스택 깊이(call 스택에서 꺼내지거나 반환되지 않고 실행된 call의 수)를 반환한다.

renpy.choice_for_skipping()

선택지가 곧 등장한다는 것을 알린다. 이 기능의 효과는 두 가지이다.

  • 렌파이가 스킵 중이거나 선택 이후에 스킵하기 설정이

    "선택 후에 스킵 중단하기"로 설정되었다면 스킵을 정지한다.

  • 자동 저장 기능이 발동한다.

renpy.clear_game_runtime()

게임의 총 구동시간을 계산한 타이머를 초기화한다.

renpy.clear_keymap_cache()

키맵 캐시를 비운다. 렌파이를 재시작하지 않고도 config.keymap 의 변경사항이 적용되도록 한다.

renpy.context_dynamic(*vars)

하나 이상의 변수 이름을 인수로 받을 수 있다. 변수가 변수가 현재 상황에서 동적으로 스코프되도록 한다. 이 때 변수는 호출이 반환되면 원래 값으로 초기화된다.

호출 예제는 다음과 같다.:

$ renpy.context_dynamic("x", "y", "z")
renpy.count_dialogue_blocks()

게임의 기본 언어로 작성된 대사 블럭 수를 반환한다.

renpy.count_seen_dialogue_blocks()

현재 게임을 플레이하면서 발견한 대사 블럭 수를 반환한다.

이 떄 반환된 숫자는 스크립트가 변경되고 이전 대사 블럭에 접근할 수 없을 때 반환되는 renpy.count_dialogue_blocks() 의 결과값보다 클 수 있다.

renpy.dynamic(*vars)

하나 이상의 변수 이름을 인수로 받을 수 있다. 변수가 변수가 현재 호출에서 동적으로 스코프되도록 한다. 이 때 변수는 호출이 반환되면 원래 값으로 초기화된다.

호출 예제는 다음과 같다.

$ renpy.dynamic("x", "y", "z")
renpy.focus_coordinates()

현재 마우스가 올라가 있는 디스플레이어블의 좌표를 찾아낸다. 좌표를 찾아낼 수 있다면, 그 좌표를 (x, y, w, h) 의 튜플로 반환한다. 찾을 수 없다면 (None, None, None, None) 튜플을 반환한다.

renpy.force_autosave(take_screenshot=False)

자동 재생 기능을 강제로 발생시킨다.

take_screenshot
참이면 새 스크린샷을 찍는다. 거짓이면 기존 스크린샷을 사용한다.
renpy.force_full_redraw()

스크린이 처음부터 전부 다시 그려지도록 한다. 스크린을 직접 다시 그리기 위해 pygame을 사용한 다음에 이 함수를 호출하라.

renpy.free_memory()

일부 메모리를 사용할 수 있도록 한다. renpygame 기반의 미니게임을 구동하기 전에 사용하면 유용하다.

renpy.full_restart(transition=False, label='_invoke_main_menu', target='_main_menu')

렌파이를 재시작하고 사용자를 메인 메뉴로 돌아가게 한다.

transition
실행할 트랜지션이거나 트랜지션을 구동하지 않으려면 None이어야 한다. False라면 config.end_game_transition 값을 사용한다.
renpy.get_autoreload()

자동재시작 플래그를 얻는다.

renpy.get_game_runtime()

게임 총 구동시간을 반환한다.

게임 총 구동시간 타이머는 최상위레벨의 상황에서 사용자의 입력을 기다린 시간을 계산한다. (메인 메뉴나 게임 메뉴에서 보낸 시간은 계산하지 않는다.)

renpy.get_image_load_log(age=None)

이미지를 불러온 내역을 기록하는 함수. 최근에 불러온 이미지 100장이 있을 때 이 함수가 반환하는 것은 다음과 같다. :

  • 이미지를 불러오는 데 걸린 시간(유닉스 시간에서부터 경과한 초 단위 시간).
  • 불러온 이미지의 파일 이름.
  • 참 혹은 거짓값. 이미지가 미리 불러올 수 있었을 경우에는 참, 이미지를

불러오는 데에 시간이 걸린 경우에는 거짓값이 된다.

목록은 최근 이미지에서 이전 이미지 순서대로 정렬된다.

age
None이 아니라면 age 에 정의한 초 단위 시간 동안 불러온 이미지만 기록한다.

이미지 불러오기 기록은 오직 config.developer = True 일 때만 유지된다.

renpy.get_mouse_pos()

마우스 커서의 위치나 현재 터치 위치를 가리키는 (x, y) 튜플. 마우스를 지지하지 않는 기기이거나 현재 터치된 지점이 없다면 x, y 값은 의미 없는 숫자이다.

renpy.get_physical_size()

창의 물리적 크기를 반환한다.

renpy.get_renderer_info()

현재 렌파이가 사용중인 렌더러의 정보를 딕셔너리로 반환한다. 이 딕셔너리는 요구되는 키가 하나이다:

"renderer"
"gl" 이나 ``"sw"``중 하나로 각각 OpenGL, 소프트웨어 렌더러를 뜻한다.
"resizable"
윈도우의 크기만을 재조정할 수 있는 경우에만 True이다.
"addivive"
렌더러가 가산 혼합을 지원하는 경우에만 True이다.

특정 렌더러도 키값으로 존재할 수 있다. 딕셔너리는 변하지 않는 것으로 취급되어야 한다. 게임 화면이 표시된 때에, (즉, init 블록에 있는 코드가 모두 호출되었을 때) 오직 한 번만 호출된다.

renpy.get_say_attributes()

현재 say 문과 관계가 있는 속성을 받는다. say 문과 관련있는 속성이 없다면 None을 받는다.

say 문을 미리 읽거나 실행할 때만 유효한 함수이다.

renpy.get_side_image(prefix_tag, image_tag=None, not_showing=True, layer='master')

대사창 한 쪽 면에 표시할 이미지를 찾는 함수이다.

이를 위해서는 이미지 속성 한 세트를 정의해야 한다. imgae_tag 에 값을 지정하면 해당 태그에서 이미지 속성값을 받는다. 그 외에 이미지 태그는 현재 표시중인 캐릭터에서 받는다.

그 뒤 prefix_tag 태그가 붙은 이미지를 검색하며 해당하는 이미지가 있다면 해당 이미지를 반환한다.

not_showing 이 True면 똑같은 이미지 속성이 있는 이미지가 화면에 없는 경우에만 사이드 이미지를 반환한다.

renpy.get_transition(layer=None)

`layer`의 트랜지션 값을 얻거나 `layer`가 None이라면 전체 장면의 트랜지션 값을 얻는다. 다음 인터렉션이 발생하는 동안 실행하기 위해 대기열에 추가된 트랜지션을 반환하거나 해당 트랜지션이 없다면 None을 반환한다.

renpy.iconify()

게임을 아이콘화한다.

renpy.invoke_in_thread(fn, *args, **kwargs)

백그라운드 쓰레드에서 fn 를 발생시키고 지정한 인수와 키워드 인수를 전달한다. 쓰레드가 한 번 반환되면 인터렉션을 재시작한다.

이 함수는 렌파이가 종료되었을 때 자동으로 작동을 멈추는 데몬 쓰레드를 생성한다.

renpy.is_seen(ever=True)

현재 행을 플레이어가 본 적이 있다면 참을 반환한다.

ever 가 참이면 플레이어가 행을 본 적이 있는지를 확인한다. 거짓이면 플레이하는 도중에 해당 행을 본 적이 있는지를 확인한다.

renpy.load_module(name, **kwargs)

렌파이 모듈 name 을 불러온다. 렌파이 모듈은 일반 (스토어) 이름공간에 저장된 rpym 또는 rpymc 확장자 파일에 있는 렌파이 코드로 구성되어 있다. .rpym 파일이 있고 동명의 .rpymc 파일보다 .rpym 파일이 새 것이라면 새 .rpymc 파일을 만들기 위해 .rpym 파일을 불러온다.

모듈에 있는 init 코드는 이 함수가 종료하기 전에 실행된다. name 이라는 이름의 모듈을 찾을 수 없거나 이름이 모호하면 오류를 발생시킨다.

모듈 불러오기는 init 블럭에서만 발생할 것이다.

renpy.load_string(s, filename='<string>')

호출할 수 있는 s 를 렌파이 스크립트로 불러온다.

파일 s에 있는 첫 번째 명령문의 이름을 반환한다.

`filename`은 문자열 형식으로 적힌 명령문이 나타나게 될 파일 이름이다.

renpy.munge(name, filename=None)

__로 시작하는 name 를 개조한다.

filename
개조할 파일 이름. None이면 이 함수를 호출하는 내용이 포함된 파일 이름으로 name을 개조한다.
renpy.not_infinite_loop(delay)

무한 루푸 탐지기의 타이머를 delay 초로 리셋한다.

renpy.notify(message)

렌파이가 notify 스크린을 사용해 message 를 표시하도록 한다. 기본적으로 2초 동안 메시지가 표시되며 메시지가 나타나거나 사라질 때 디졸브 효과를 적용한다.

스크린샷 또는 퀵세이브처럼 피드백이 없는 기능과 함께 사용하면 유용하다.

알림은 한 번에 하나만 표시된다. 두 번째 알림이 나타나면 첫 번째 알림과 교체된다.

renpy.pause(delay=None, music=None, with_none=None, hard=False, checkpoint=None)

렌파이를 일시 정지한다. 사용자가 클릭으로 일시 정지 상태를 끝내면 참을 반환하며 지정한 시간이 경과되거나 일시정지가 스킵되면 거짓을 반환한다.

delay
렌파이가 일시정지할 초 단위 시간.
music
하위 버전 호환을 유지하기 위한 인수.
with_none
일시 정지가 종료되었을 때 with None 절 실행 여부를 설정한다.
hard
참이면 클릭으로 일시 정지가 해소되지 않는다. 이 경우 일시정지가 일시 정지 상태인지 혹은 게임이 응답 없음 상태가 된 것인지 구분하기 힘들기 때문에 이 값은 신중하게 사용해야 한다.
checkpoint
참이면 명령문을 사용한 지점을 체크포인트로 지정해 플레이어들이 해당 지점으로 롤백할 수 있다 거짓이면 체크포인트로 지정하지 않는다. None이면 display를 설정했을 때에만 체크포인트로 지정한다.
renpy.pop_call()

이전 위치로 돌아가지 않고 call 스택에서 현재 call을 꺼낸다.

호출된 레이블의 실행을 마치고 이전에 호출된 위치로 돌아가지 않도록 할 때 사용할 수 있다.

renpy.queue_event(name, up=False, **kwargs)

지정한 name 의 이벤트를 대기열에 추가한다. `name`은 :var:`config.keymap`에 있는 이벤트 가운데 하나이거나 이벤트 이름의 리스트이어야 한다.

up
이벤트가 시작했을 때 이 값은 거짓이어야 한다(예를 들어, 키보드 버튼이 눌린 경우). 이벤트가 종료했을 때 이 값은 참이어야 한다(버튼이 눌리지 않은 경우).

이벤트는 이 함수가 호출된 때에 대기열에 추가된다. 이 함수는 어느 이벤트를 다른 이벤트로 교체되도록(그래서 이벤트 순서가 바뀌도록) 작동하지 않는다. (이를 위해서는 config.keymap 대신 사용하라.)

이 메소드는 쓰레드 세이프이다.

renpy.quit(relaunch=False, status=0)

렌파이를 종료시킨다.

relaunch
참이면 렌파이가 종료하기 전에 자신의 두 번째 복사본을 구동한다.
status
렌파이가 OS로 반환할 상태 코드. 일반적으로 0은 성공, 양수는 실패를 의미한다.
renpy.quit_event()

제목 표시줄의 종료 버튼을 눌렀을 때 발생하는 것과 같은 종료 이벤트를 발생시킨다.

renpy.reload_script()

렌파이가 게임을 저장하고, 스크립트를 다시 불러오며, 저장된 게임을 불러오도록 한다.

renpy.reset_physical_size()

renpy.config 에 지정한 값(즉, screen_width 와 screen_height)으로 창의 물리 크기를 설정한다. 이 함수는 전체 화면 모드를 종료시키는 부작용이 있다.

renpy.restart_interaction()

현재 인터렉션을 재시작한다. 다른 무엇보다 이 함수는 장면에 추가된 이미지들을 표시하고, 스크린을 다시 계산하고, 대기열에 존재하는 모든 트랜지션을 실행한다.

인터렉션 내부에서 (예를 들면 액션에서) 호출되었을 경우에만 작동한다. 인터렉션 외부에서 이 함수는 효과가 없다.

renpy.screenshot(filename)

filename 이름으로 스크린샷을 저장한다.

renpy.scry()

현재 명령문을 위한 scry 객체를 반환한다.

scry 객체는 현재 명령문이 미래에 참값으로 설정되어야 한다는 정보를 렌파이에 알려준다. 현재 scry 객체는 필드가 하나이다.

nvl_clear
nvl clear 명령문이 다음 인터렉션 이전에 실행되어야 한다면 참값이다.
renpy.set_autoreload(autoreload)

파일이 변경되었을 때 게임 자동 재시작 여부를 결정하는 자동재시작 플래그를 설정한다. 자동재시작 기능은 renpy.utter_restart() 로 게임이 재시작되기 전까지는 사용할 수 없을 것이다.

renpy.set_mouse_pos(x, y, duration=0)

지정한 x, y 위치로 마우스 포인터를 이동시킨다. 마우스 포인터를 지원하지 않는 기기라면 작동하지 않는다.

duration
마우스 포인터를 이동시키는 데에 걸리는 초 단위 시간. 마우스는 이동시키는 시간 동안에 사용할 수 없을 것이다.
renpy.set_physical_size(size)

창 크기를 size 크기로 설정한다. 이 함수는 전체 화면 모드를 종료시키는 부작용이 있다.

renpy.shown_window()

표시된 대사창을 가리키기 위해 호출하라. 이 함수는 "window show" 명령문과 상호작용해, 인터렉션 도중에 이 함수가 호출되지 않은 때라면 언제든 "window show" 로 빈 대사창을 표시할 수 있다.

renpy.split_properties(properties, *prefixes)

propertiesprefix 당 하나씩 여러 딕셔너리로 나눈다. 이 함수는 prefix`에 대해 속성 내의 각 키를 차례로 확인한다. `prefix 를 대조할 때, prefix 는 키에서 제거되며, 결과값으로 도출되는 키는 상응하는 딕셔너리 내부의 값과 이어진다.

일치하는 접두사가 없다면 예외가 발생한다. (빈 문자열 "" 이 광범위한 딕셔너리를 만들기 위한 마지막 접두사로 사용될 수 있다.)

예를 들어, 다음과 같은 코드는 text 로 시작하는 속성을 나눈다.

text_properties, button_properties = renpy.split_properties("text_", "")
renpy.substitute(s, scope=None, translate=True)

문자열 s 에 번역문과 새로운 스타일의 포매팅을 적용한다.

scope
None이 아니라면 기본 스토어와 함께 포매팅에 사용한 영역
translate
번역 적용 여부를 결정한다.

번역되고 포매팅된 문자열을 반환한다.

renpy.transition(trans, layer=None, always=False)

다음 인터렉션 동안에 사용할 트랜지션을 설정한다.

layer
트랜지션을 적용할 레이어. None이라면 트랜지션이 전체 장면에 적용된다.
always
거짓이라면 트랜지션 환경설정 값을 준수한다. 참이면 지정한 트랜지션이 항상 발생한다.
renpy.version(tuple=False)

tuple 이 거짓이라면 "Ren'Py" 와 렌파이 현재 버전이 적힌 문자열을 반환한다.

tuple 이 참이라면 정수로 적힌 버전 정보가 요소인 튜플을 반환한다.

renpy.vibrate(duration)

duration 초 동안 기기를 진동시킨다. 현재는 안드로이드 기기에만 작동한다.

layout.yesno_screen(message, yes=None, no=None)

지정한 messege 와 함께 예/아니오 프롬프트 스크린을 표시한다. 이 스크린은 사용자가 예나 아니오를 누르면 사라진다.

message
화면에 나타날 메세지.
yes
사용자가 '예'를 선택했을 때 실행할 액션.
no
사용자가 '아니오'를 선택했을 때 실행될할액션.

메모리 정보 수집

renpy.diff_memory(update=True)

렌파이와 게임에서 사용하는 객체, 서페이스, 텍스처의 메모리 사용량 정보를 수집한다. `update`가 참인 이 함수가 마지막으로 호출되었을 때의 메모리 사용량과 차이점을 (memory.txt 와 표준 출력에) 기록한다.

사용량 정보는 메모리에서 접근할 수 있는 스토어와 렌파이 임플리멘테이션에 있다. 어떤 객체에 하나 이상의 이름으로 접근할 수 있다면, 가장 직접적으로 접근할 수 있는 이름에 객체가 배정된다.

렌파이에서 사용하는 모든 메모리를 스캔해야 하기 때문에 이 함수는 작동을 완료하기까지 많은 시간이 소요될 수 있다.

renpy.profile_memory(fraction=1.0, minimum=0)

렌파이와 게임에서 사용하는 객체, 서페이스, 텍스처의 메모리 사용량 정보를 수집한다. 메모리 사용량의 계산 결과를 memory.txt 파일과 표준 출력에 기록한다.

사용량 정보는 메모리에서 접근할 수 있는 스토어와 렌파이 임플리멘테이션에 있다. 어떤 객체에 하나 이상의 이름으로 접근할 수 있다면, 가장 직접적으로 접근할 수 있는 이름에 객체가 배정된다.

fraction
총 메모리 사용량으로 나타낼 부분. 1.0은 메모리 사용량을 전부 표시하며, .9는 상위 90%만 표시한다.
minimum
어떤 이름이 minimum 에 지정한 바이트 단위 숫자보다 메모리 사용량이 적다면, 해당 이름은 출력하지 않는다.

렌파이에서 사용하는 모든 메모리를 스캔해야 하기 때문에 이 함수는 작동을 완료하기까지 많은 시간이 소요될 수 있다.

renpy.profile_rollback()

롤백 시스템에 사용되는 메모리 정보를 수집한다. 롤백 시스템의 메모리 사용량을 (memory.txt 와 표준 출력에) 기록한다. 이 함수는 롤백 시스템 내부에서 사용하는 메모리와 다양한 보관 변수가 사용하는 메모리를 계산해 본다.

상황

renpy.context()

현재 상황에 고유한 객체를 반환한다. 객체는 새로운 상황에 진입할 때 복사되나 복사본이 변경되더라도 원본은 변경되지 않는다.

이 때의 객체는 저장되며 롤백 과정에 참여한다.

renpy.context_nesting_level()

현재 상황의 내포 수준을 반환한다. 가장 외부 상황 (저장되고 불려오고 롤백되는 상황)은 이 레벨이 0이며, 선택지나 리플레이 같은 상황에서 레벨은 0이 아닌 수이다.

renpy.random

이 객체는 파이썬 무작위 숫자 생성 인터페이스. 를 구현한 무작위 숫자 생성기입니다. 무작위성은 이 객체가 노출하는 다양한 메소드를 호출해 생성됩니다. 파전체 목록은 파이썬 문서를 참고하기 바라며, 가장 유용한 메소드는 다음과 같습니다. :

  • renpy.random.random()

(0.0, 1.0) 범위에서 무직작위로 부동 소수점 숫자를 반환한다.

  • renpy.random.randint(a, b)

a <= N <= b 범위에서 무작위 정수를 반환한다.

  • renpy.random.choice(seq)

비어있지 않은 연속물인 seq에서 랜덤 요소를 반환한다.

기본 파이썬 무작위 숫자 생성기와 달게, 이 객체는 롤백에 관여해, 몇 번을 롤백하더라도 동일한 숫자를 생성합니다. 이 경우에는 파이썬 무작위 모듈 대신에 이 객체가 사용되어야 할 것입니다.

# 0과 1사이에 있는 부동소수점을 반환한다.
$ randfloat = renpy.random.random()

# 1이상 20이하의 정수 하나를 반환한다.
$ d20roll = renpy.random.randint(1, 20)

# 리스트 요소에서 무작위 요소를 하나 반환한다.
$ randfruit = renpy.random.choice(['apple', 'orange', 'plum'])
  • renpy.random.Random(seed=None)

특정한 값이 지정되었다면 그것을 기초로 삼아 주요 객체와 다른 개별 무작위 숫자 생성기를 반환한다.