목차

이전 항목

보관 변수

다음 항목

텍스트 입력

링크


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

NVL모드 길라잡이

비주얼 노벨에서 쓰이는 표현 방법에는 크게 두 가지 방식이 있습니다. 어드벤처 스타일ADV-style의 게임에서는 게임 화면 밑 부분에 대사와 해설이 한 번에 한 줄씩 나타납니다. 노벨 스타일NVL-style의 게임에서는 화면을 가득 채운 대사창에 여러 문장이 한 번에 나타납니다.

길라잡이에서는 렌파이에서 NVL모드로 게임을 만드는 방법을 설명한다. 우선 이 길라잡이에서는 여러분이 퀵스타트 매뉴얼 에 설명되어있는 렌파이의 기본 사항에 대해 이미 알고 있다고 가정합니다.

시작하기

두 단계를 거치면 렌파이 스크립트에 NVL모드를 추가할 수 있습니다. 먼저 NVL모드에서 사용할 캐릭터를 선언한 다음 nvl clear 명령문을 각 페이지 끝에 적으면 됩니다.

NVL모드를 사용하려면 캐릭터를 선언할 때마다 kind=nvl 매개변수를 추가하여 캐릭터를 선언하면 됩니다. 예를 들어 퀵스타트 매뉴얼에서 선언된 캐릭터들은 다음과 같습니다.

define s = Character('실비', color="#c8ffc8")
define m = Character('나', color="#c8c8ff")

이를 NVL모드를 사용하기 위해 바꾸어보면 다음과 같이 바뀌게 됩니다.

define s = Character('실비', kind=nvl, color="#c8ffc8")
define m = Character('나', kind=nvl, color="#c8c8ff")
define narrator = Character(None, kind=nvl)

중요한 것은 NVL모드로 선언한 캐릭터 narrator 도 새로 추가했다는 점입니다. narrator 캐릭터는 캐릭터 이름을 적지 않은 문장을 나타낼 때 사용됩니다.

이 상태로 게임을 실행하면 처음 몇 줄은 제대로 나타나지만, 얼마 지나지 않아 문장이 화면 맨 밑을 지나 화면 바깥 부분에서 표시되기 시작합니다. 스크립트를 페이지 단위로 나누고자 한다면 각 페이지 끝에 nvl clear 명령문을 적기 바랍니다.

아래는 페이지를 나누는 예제 스크립트입니다.

label start:
    "나는 그녀에게 물었다...."

    m  "음... 너..."
    m "너 내 비주얼 노벨의 원화가가 되어줄래?"

    nvl clear

    "침묵."
    "그녀는 놀랐다. 그리고..."

    s "물론이지, 그런데 \"비주얼 노벨\"이 뭐야?"

    nvl clear

NVL모드 게임은 보통 한 문 단에 예시보다 더 많은 텍스트가 들어갑니다만 이 예제는 기본 NVL모드 스크립트의 형태입니다. (화면 전환 효과가 없는 키네틱 노블에서 사용하기 적합한 형태입니다.)

선택지

기본적으로 선택지는 화면 전체를 차지하는 ADV모드의 선택지로 나타납니다. 물론 NVL 선택지 형태도 있어서 NVL 모드로 텍스트를 표시한 페이지에 바로 선택지를 나타낼 수도 있습니다.

NVL 모드 선택지를 나타내려면 다음과 같이 적어야합니다.

init python:
    menu = nvl_menu

사용자가 선택지를 선택하고 난 뒤 선택지는 사라지므로 menu 명령문 다음에 "nvl clear" 를 적거나 사용자의 선택을 가리키는 표시를 나타내야 합니다.

NVL 모드 대사창을 띄우거나 숨기기

NVL모드 대사창은 window showwindow hide 명령문으로 제어할 수 있습니다. 이 명령문을 활성화하려면 게임에 다음과 같은 코드를 추가해야 합니다.

init python:
    config.empty_window = nvl_show_core
    config.window_hide_transition = dissolve
    config.window_show_transition = dissolve

config.empty_windownvl_show_core 로 설정하면 화면 전환 효과를 실행하는 동안에도 NVL모드 대사창이 그대로 나타나있게 됩니다. (아래 두 줄로는 대사창을 나타내거나 숨길 때 사용할 기본 화면 전환 효과를 설정합니다.)

아래는 window 명령문을 이용하여 대사창을 나타내거나 숨기는 예제 스크립트입니다.

label meadow:

    nvl clear

    window hide
    scene bg meadow
    with fade
    window show

    "우리는 동네 밖 초원까지 다다랐다. 이 곳의
    가을은 정말 아름다웠다."
    "어렸을 때 우린 종종 이 곳에서 놀곤 했다."

    m "저기... 음..."

    window hide
    show sylvie smile
    with dissolve
    window show

    "그녀는 나를 향해 돌아섰고 웃어보였다."
    "나는 그녀에게 물었다...."
    m  "음... 너..."
    m "너 내 비주얼 노벨의 원화가가 되어줄래?"

NVL 모드의 대사창을 띄우거나 숨기는 nvl shownvl hide 명령문도 있습니다. 이 명령문에 트랜지션을 입력할 수도 있으며 NVL모드와 ADV모드 대사창을 혼용하는 코드에서 사용할 수 있습니다.

캐릭터 꾸미기

NVL모드 캐릭터는 여러가지 모습으로 꾸밀 수 있으므로 여러분이 만들 게임에 어울리는 디자인을 선택할 수 있습니다.

  1. 기본적으로 캐릭터 이름은 왼쪽에 나타나며 대사는 이름 오른편에 들여쓰기 된 채로 나타납니다. 이름 색상은 "color" 매개변수로 정합니다.

    define s = Character('실비', kind=nvl, color="#c8ffc8")
    
  2. 두 번째 형태는 캐릭터 이름이 대사와 합쳐진 형태입니다. 대사에는 따옴표가 붙습니다. 주의해야 할 점은 ''what_prefix'' 매개변수에 캐릭터 이름과 따옴표 한 쪽을 함께 적어야 한다는 점입니다. (나머지 따옴표 한 쪽은 ''what_suffix'' 매개변수에 적어야 합니다.)

    define s = Character(None, kind=nvl, what_prefix="실비: \"",
                         what_suffix="\"")
    
  3. 세 번째 형태는 캐릭터 이름을 아예 없애고 대사에 따옴표를 붙이는 형태입니다.

    define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"")
    
  4. 세 번째 형태로는 대사를 말하는 사람이 누구인지 알아보기 힘드므로, "what_color" 매개변수를 사용해 대사 색을 바꿀 수도 있습니다.

    define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"",
                         what_color="#c8ffc8")
    
  5. 물론 화면에 나타나는 문장을 전부 제대로 관리할 수 있다면 하나도 꾸미지 않은 NVL모드 캐릭터도 사용할 수 있습니다. (이 설정은 내래이터 캐릭터에 흔히 사용됩니다.)

    define s = Character(None, kind=nvl)
    

선택지 꾸미기

선택지의 디자인을 꾸밀 수 있는 몇 가지 스타일이 있습니다. 아래는 선택지를 어떤 식으로 꾸밀 수 있는지 알려주는 코드입니다. 스타일에 대한 자세한 정보는 스타일 페이지를 살펴보시기 바랍니다.

init python:

    # 마우스 커서가 올라가지 않은 선택문 색상.
    style.nvl_menu_choice.idle_color = "#ccccccff"

    # 마우스 커서가 올라간 선택문 색상.
    style.nvl_menu_choice.hover_color = "#ffffffff"

    # 마우스 커서가 올라가지 않은 선택문의
    # 바탕색.
    style.nvl_menu_choice_button.idle_background = "#00000000"

    # 마우스 커서가 올라간 선택문의
    # 바탕색.
    style.nvl_menu_choice_button.hover_background = "#ff000044"

    # 선택문을 들여쓰기할 간격.
    style.nvl_menu_choice_button.left_margin = 20

설정 변수

아래에 나열된 설정 변수는 nvl 모드와 관련된 기능을 제어합니다.

config.nvl_layer = "screens"

nvl 스크린이 나타날 레이어.

config.nvl_page_ctc = None

None이 아니라면 NVL 모드 캐릭터의 대사가 페이지 끝에 도달했을 때 사용하는 대사 넘기기 표시기이어야 한다. (nvl clear 문 바로 전에 나타나는 대사 넘기기 이미지.) 이 설정은 Character() 의 ctc 매개변수를 대체한다.

config.nvl_page_ctc_position = "nestled"

None이 아니라면 NVL 모드 캐릭터의 대사가 페이지 끝에 도달했을 때 사용하는 대사 넘기기 표시기의 위치이어야 한다. (nvl clear 문 바로 전에 나타나는 대사 넘기기 이미지.) 이 설정은 Character() 의 ctc_position 매개변수를 대체한다.

config.nvl_paged_rollback = False

참값이면 NVL 모드에서 롤백했을 때 한 페이지 전체가 롤백한다.

NVL 대사창 꾸미기

NVL 대사창을 꾸밀 수 있는 몇 가지 스타일이 있습니다. 아래는 대사창을 어떤 식으로 꾸밀 수 있는지 알려주는 코드입니다. 스타일에 대한 자세한 정보는 스타일 페이지를 살펴보시기 바랍니다.

init python:

    # NVL 대사창 배경을 설정한다.
    # 여기서 사용하는 그림은 화면과 같은 크기이어야 한다.
    style.nvl_window.background = "nvl_window.png"

    # NVL 창 안에 적힐 내용 주위에 여백을 더한다.
    # 이미지에 경계를 만들어 그 안쪽에 텍스트를 표시하도록 한다.
    style.nvl_window.xpadding = 55
    style.nvl_window.ypadding = 55

    # 한 페이지에 있는 문단 간격을 설정한다.
    # 기본값은 10픽셀
    style.nvl_vbox.box_spacing = 10

NVL모드에서 텍스트를 표시할 때 사용하는 nvl 스크린을 수정할 수도 있습니다. NVL 항목을 살펴보세요.

페이지 단위 롤백

페이지 단위로 롤백을 하면 텍스트 한 줄을 되돌리는 대신에 NVL모드의 페이지를 한 번에 한 페이지씩 되돌립니다. 스크립트에 아래와 같은 코드를 적으면 사용할 수 있습니다.

init python:
    config.nvl_paged_rollback = True

The Question 스크립트 (NVL모드)

NVL모드판 ''The Question'' 의 전체 스크립트는 이곳 에서 볼 수 있습니다.