여러 캐릭터의 동시 대사

Ren'Py에서는 여러 캐릭터의 대사를 동시에 표시할 수 있습니다. 대사에 multiple 인수를 지정하면 됩니다. 예를 들면 다음과 같습니다.

e "Ren'Py에서는 여러 대사를 동시에 표시할 수 있어요." (multiple=2)
l "드디어! 이걸 몇 년이나 기다렸다고." (multiple=2)

multiple 인수에는 함께 표시할 대사 블록의 개수를 지정합니다. 예를 들어 multiple=3이면 대사 세 블록을 한꺼번에 표시합니다.

이 기능은 서로 다른 스타일을 적용한 say 스크린을 여러 번 표시하는 방식으로 동작합니다. 각 스크린은 캐릭터 한 명의 대사를 표시합니다.

동시 대사에는 몇 가지 제약이 있습니다.

  • {p}나 {w}처럼 텍스트 진행을 멈추는 태그는 제대로 작동하지 않습니다. 이 태그들은 스크린이 여러 번 표시되어야 작동하지만, 동시 대사의 각 스크린은 한 번만 표시되기 때문입니다.

  • 자동 진행은 마지막 텍스트 블록만을 기준으로 작동합니다. 대부분은 괜찮지만, 마지막 블록이 다른 블록보다 짧으면 너무 일찍 넘어갈 수 있습니다.

  • extend는 제대로 작동하지 않습니다. 마지막 텍스트 블록에만 적용됩니다.

스타일

동시 대사는 say 스크린을 여러 번 표시하면서, 각 디스플레이어블의 스타일 이름을 블록 번호와 전체 블록 개수에 맞춰 바꾸는 방식으로 작동합니다.

구체적으로 blockn_multiplem_stylename 형태의 스타일을 사용합니다. n은 0이 아닌 1부터 시작하는 블록 번호이고, m은 동시에 표시하는 대사 블록의 총개수입니다.

앞의 예제에서 각 대사 블록의 창에는 다음 이름을 사용합니다.

  • block1_multiple2_say_window

  • block2_multiple2_say_window

이 이름 규칙은 창뿐 아니라 대사, 이름, 이름 상자에도 적용됩니다. 스타일 상속을 활용할 수 있도록 설계되어 있습니다. 창 스타일을 예로 들면 다음과 같습니다.

say_window

일반적인 단일 대사창에 사용하며, 모든 대사창의 기본 스타일로 삼을 수 있습니다.

multiple2_say_window

배경 변경이나 여백·패딩 축소 등 두 대사창에 공통으로 적용할 속성을 지정할 수 있습니다.

block1_multiple2_say_window

첫 번째 대사창의 위치를 정할 수 있습니다. 예를 들어 xalign 0.0으로 왼쪽에 배치합니다.

block2_multiple2_say_window

두 번째 대사창의 위치를 정할 수 있습니다. xalign 1.0이면 오른쪽에 배치됩니다.

multiple_say 스크린

더 세밀하게 제어하려면 multiple_say 스크린을 정의하세요. 이 스크린이 있으면 일반 say 스크린 대신 사용합니다. 세 번째 인수 multiple은 튜플이며, 첫 번째 요소는 블록 번호, 두 번째 요소는 전체 스크린 개수입니다.

NVL 모드

기본적으로 NVL 모드는 여러 텍스트 블록을 세로로 쌓아 표시합니다. 배치를 바꾸려면 nvl 스크린을 수정하세요. multiple 인수를 가진 객체의 리스트를 받으므로, 이를 재배치해 표시할 수 있습니다.