렌파이에는 개발자의 삶을 편하게 만들어 주는 여러 기능이 담겨 있습니다. 대다수의
기능을 활용하기 위해서는 config.developer
를 True로 설정해야 합니다.
디버그 콘솔로는 렌파이 스크립트와 파이썬 명령문을 대화식으로 구동시킬 수 있으며
그 결과를 즉시 확인할 수 있습니다. 콘솔은 개발자 모드 혹은
config.console
을 True 로 설정했을 때 사용할 수 있으며 "shift+O" 를 눌러
접근할 수 있습니다.
콘솔에서는 다음과 같은 작업을 할 수 있습니다:
config.editor
변수는 launch_editor 단축키(기본값은 "shift+E")가
눌렸을 때 실행시킬 에디터 명령어를
지정할 수 있습니다.
자세한 내용은 텍스트 에디터 통합 참고하세요.
config.developer
가 참일 때, "shift+D" 를 누르면
아래에서 나열한 기능에 쉽게 접근할 수 있는 개발자용 메뉴가 나타납니다.
config.developer
가 참일 때, "shift+R" 를 누르면 현재
게임을 저장하고, 게임 스크립트를 다시 불러와서, 게임을 재시작합니다. 이렇게 하면 "shift+R" 을
누르기 전까지 진행했던 지점에서 변경되지 않은 마지막 명령문이 있는 위치로 이동합니다.
이런 방식으로 작동함으로서 외부 에디터에서 스크립트를 변경했을 때, 렌파이를 종료하고 다시 실행할 필요 없이 스크립트 변경점이 미치는 영향을 확인할 수 있습니다.
변수 값과 scene 목록을 포함하는 게임 상태는 재시작되는 동안에도 보존된다는 점을 기억하시기 바랍니다. 이는 변수나 장면에 영향을 미치는 명령문이 변경된다면 롤백한 뒤에 명령문을 재시작해 달라진 점을 확인해야 한다는 의미입니다.
config.developer
가 참일 때, "shift+I" 를 누르면
스타일 조사기를 실행합니다. 이 화면에서는 마우스 아래에 있는 디스플레이어블의 목록이
표시됩니다. 각 디스플레이어블의 타입, 사용하는 스타일과
크기가 표시됩니다.
config.developer
가 참일 때, dump_styles 단축키(기본값은 "shift+Y")를 누르면
렌파이가 알고 있는 모든 스타일의 설명을 "styles.txt" 파일에
작성합니다. 이 파일에는 스타일에서 사용하는 모든 스타일 속성과
해당 속성의 값, 그리고 해당 속성이 상속하는 스타일에 대한 설명이
적혀 있습니다.
config.developer
또는 config.fast_skipping`
가 참일 때,
fast_skip 단축키(기본값은 ">")를 누르면 게임이 다음 중요 인터렉션으로 즉시
넘어갑니다. 여기에서 중요 인터렉션이란
say문, 트랜지션, pause 명령문이 아닙니다.
중요 인터렉션이란 보통 다음 선택지까지 이동한다는 의미이며, 사용자가 정의한 형태의
인터렉션이 발생하는 지점까지로도 빠르게 스킵할 것입니다.
렌파이에서는 개발자가 게임 내에서 특정 행이 실행되는 위치까지 도달하기 위해 게임을 플레이할 필요가 없도록 스크립트에 있는 특정 행으로 워프하는 기능을 지원합니다. 이 기능을 이용할 때에는 많은 주의가 필요합니다만 실제로 작동되는 방식을 확인하기에는 유용할 것입니다.
워프를 실행하려면 --warp
커맨드 라인을 적고 뒤에 파일이름:행번호 를
입력해 워프할 곳을 지정해 렌파이를 실행하면 됩니다. 다음은
예제입니다.
renpy.exe my_project --warp script.rpy:458
(여기에서 my_project 란 프로젝트가 있는 기본 디렉토리의 전체 경로입니다.)
워프를 실행하면 렌파이는 많은 작업을 합니다. 우선 프로그램에 있는 모든 scene 명령문을 찾습니다. 그런 다음 scene 명령문에서부터 접근할 수 있는 모든 명령문으로 이동하는 경로를 게임에서 찾습니다. 그리고 이동해야 하는 행에 가장 가까우면서도 그 행의 이전에 있는 명령문 중에 접근 가능한 명령문을 선택합니다. 이렇게 발견한 명령문에서 scene 명령문까지 거꾸로 진행해가며 거쳐간 경로를 기록합니다. 그 뒤 scene 명령문과 경로를 따라가며 발견한 모든 show 또는 hide 명령문을 실행합니다. 마지막으로 제어 흐름을 발견한 명령문에 전송합니다.
이 워프 기능에는 상당히 많은 경고 사항이 있습니다. 첫 번째는 워프할 때에 오직 한 가지 경로만 탐색한다는 점으로, 이 경로가 어떤 루트 하나를 대표할 수 있을 지라도, 다른 루트를 따라 버그가 발생할 수 있다는 점입니다. 일반적으로 워프하기 위해 찾아낸 경로는 게임 로직을 고려하지 않으므로 실제 게임 플레이로는 도달할 수 없는 경로를 발견할 수도 있습니다. (이런 경우는 제어 흐름이 극히 복잡한, 특히 파이썬 코드를 다량으로 사용한 게임에서만 문제가 될 것입니다.)
그러나 가장 큰 문제점은 워프한 행의 이전에 있는 파이썬 코드가
실행되지 않는다는 점입니다. 즉 모든 변수가 초기화되지 않아
변수가 사용될 때 충돌이 발생할 수 있을 것입니다. 이 문제를 극복하는 방법으로써
워프한 직후, 워프하려는 명령문이 실행되기 전에 호출되는
after_warp
레이블을 정의할 수 있습니다.이 레이블에 적힌 코드는
프로그램에 있는 변수를 설정한 다음에 레이블이 호출된 지점으로 돌아갑니다.
워프 기능은 config.developer
를 True 로 설정해야 사용할 수 있습니다.