비주얼 노벨 대사를 둘로 나눈 뒤, 음성·표정·연출 지시를 다시 연결하는 법
대사를 나눴다고 원래 대사의 음성, 표정, 동작을 두 페이지에 통째로 복사해서는 안 됩니다. 각 참조가 텍스트, 서사적 사건, 페이지 경계 중 어디에 연결되는지 판단한 뒤 대사 분할·병합 이전표로 새 위치를 정하고, 음성 연결과 동작 중복을 확인합니다.

들어가며
대사 하나를 둘로 나눴다면, 각 참조가 왜 그 위치에 있는지부터 살핀 뒤 어느 대사로 옮길지 결정해야 합니다. 음성은 녹음에 포함된 텍스트 범위를 확인하고, 표정은 감정 변화를 따라가게 하며, 동작은 실행 전제 조건을 점검합니다. 페이지 넘김 안내는 경계를 다시 확인해야 합니다. 원래 대사 하나가 두 페이지가 되었다고 해서 기존 지시도 양쪽에 하나씩 복사해야 하는 것은 아닙니다.
아래에서는 ‘대사 분할·병합 이전표’로 원고를 수정하는 과정을 살펴봅니다. 이 사례는 설명을 위해 만든 가상의 설계이며, 실제 사용자 사례나 실측 결과, DramaFork의 제품 기능이 아닙니다. 식별자는 유지보수 문서용일 뿐, 특정 스크립트 형식을 나타내지 않습니다.
1. 분할 전후의 텍스트와 사건을 확정하기
관리인의 원래 대사를 ‘대사 갑’으로 표시합니다. “통행증 검증을 통과해야 이 문을 열 수 있습니다. 잠깐, 문 뒤에 누가 있어요!” 원고에는 전체 대사를 담은 녹음 하나가 참조되어 있고, 차분한 표정, 문 여는 동작, 놀란 표정, 대사 끝의 계속 진행 안내가 포함되어 있습니다.
이 사례에서는 통행증 검증을 이미 통과했으며, 관리인은 문을 열기 위한 조건을 설명하고 있습니다. 다만 문을 여는 동작은 조건 설명까지 끝나야 실행하고, 놀라는 표정은 문 뒤에 사람이 있다는 사실을 알아차릴 때부터 시작합니다. 여기서는 ‘조건이 충족됨’과 ‘설명이 끝남’을 구분해야 합니다. 통행증 검증을 아직 통과하지 못했다면, 이 말을 끝냈다는 이유만으로 문을 열어서는 안 됩니다.
새 원고는 ‘대사 갑1’: “통행증 검증을 통과해야 이 문을 열 수 있습니다.”와 ‘대사 갑2’: “잠깐, 문 뒤에 누가 있어요!”로 나눕니다. 두 문장의 문구는 그대로지만 표시되는 경계가 달라졌습니다.
먼저 기존 식별자와 두 새 식별자의 대응 관계를 남깁니다. 줄 번호를 식별자 대신 사용하지 마세요. 줄 번호는 추가와 삭제에 따라 바뀝니다. 이전의 근거가 되는 것은 ‘대사 갑2가 원래 대사의 경고 부분을 이어받는다’는 관계입니다. 기존 참조도 미리 기록해 두어, 분할 후 기억에만 의존해 동작을 찾아야 하는 상황을 피합니다.
2. 연결 근거에 따라 이전표 작성하기
각 지시를 판단할 때는 이렇게 물어볼 수 있습니다. 표현만 바꿔도 이 지시는 남을까? 페이지 구분만 바꿔도 남을까? 원래 대사 전체를 담은 녹음이라면 해당 텍스트 범위를 다시 검토해야 합니다. 놀람은 표현이 바뀌어도 이상을 발견하는 사건에 속합니다. 계속 진행 안내는 화면 표시의 경계에 연결됩니다.
아래 표는 행마다 참조 하나만 기록해 유지, 이동, 교체를 각각 결정할 수 있게 했습니다. 표의 점검 내용은 기대하는 요구 사항이며, 아직 실제로 확인하지 않았습니다.
| 원래 대사 식별자와 참조 | 대응하는 새 대사 | 지시의 연결 근거 | 음성 처리 | 이전 위치 | 중복 실행 점검 |
|---|---|---|---|---|---|
| 발화 갑의 전체 녹음 | 발화 갑1, 갑2 | 두 텍스트 구간을 모두 포함 | 기존 녹음을 활성 참조에서 제외하고 각 대사 재녹음을 계획 | 각 대사 시작 | 각 대사에서 해당 새 녹음만 재생 |
| 발화 갑의 차분한 표정 | 발화 갑1 | 조건을 설명하는 단계의 초기 상태 | 해당 없음 | 갑1 시작 | 갑2에서 차분한 표정으로 다시 초기화하지 않음 |
| 발화 갑의 문 여는 동작 | 발화 갑1 | 통행증 검증 통과 및 조건 설명 완료 | 음성이 있는 경로에서는 갑1 음성 종료를 기준으로 삼음 | 갑1 종료 시, 갑2 진입 전 | 두 대사 사이에 동작 실행 진입점을 하나만 유지 |
| 발화 갑의 놀란 표정 | 발화 갑2 | 문 뒤에 사람이 있음을 발견 | 경고 시작에 맞춤 | 갑2 시작 | 갑1에서 미리 실행하지 않음 |
| 발화 갑의 계속 진행 안내 | 발화 갑1, 갑2 | 현재 페이지가 끝나는 경계 | 각 페이지의 음성 종료를 별도로 확인 | 각 페이지에서 계속 진행할 수 있을 때 | 기존 대사 끝의 안내가 추가로 남지 않음 |
표를 작성할 때는 식별자를 통일해야 합니다. 위 표의 ‘발화 갑’과 그 뒤에 번호가 붙은 표기는 앞서 사용한 ‘대사 갑’과 해당 번호의 대사를 뜻합니다. 정식으로 인계하기 전에 같은 표기로 정리해야 하며, 서로 다른 두 묶음의 대상으로 취급해서는 안 됩니다.
실무에서 재사용할 때는 각 행에 리소스 위치, 처리 상태, 재검토 기록을 추가합니다. ‘해당 없음’은 음성 참조가 아니라는 뜻이지, 음성과의 선후 관계를 무시해도 된다는 뜻이 아닙니다. 페이지 넘김 안내는 하나 늘어도 문 여는 동작은 여전히 한 번뿐입니다. 두 항목의 연결 근거가 다르기 때문입니다.
3. 페이지를 가로지르는 음성은 편집 방침부터 정하기
기존 녹음 하나가 새 페이지 두 개에 걸쳐 있다면, 두 페이지가 모두 전체 녹음을 참조하게 해서는 안 됩니다. 그러면 두 번째 페이지에서 조건 설명부터 다시 재생될 수 있습니다. 첫 번째 페이지에만 녹음을 남기면서 페이지를 넘긴 뒤 음성이 어떻게 이어지는지 정하지 않는 것도 안 됩니다.
녹음을 끊김 없이 재생하도록 유지할 수는 있습니다. 다만 두 번째 페이지가 언제 표시되는지, 페이지 넘김이 음성을 중단하는지, 경고가 텍스트보다 먼저 들릴 수 있는지를 명확히 해야 합니다. 음성이 연속해서 진행되는 연출에 적합하지만, 그만큼 페이지를 넘기는 리듬이 녹음에 제약을 받습니다. 실행 환경에서 이를 지원할 수 있는지는 별도로 확인해야 합니다.
자연스럽게 쉬는 지점에서 녹음을 나눌 수도 있습니다. 이때 잘린 부분에서 말소리가 누락되거나 호흡이 끊기거나 뒷문장의 말투가 갑자기 달라지지 않는지 확인해야 합니다. 텍스트의 마침표가 음성을 자를 수 있는 지점까지 보장하지는 않습니다. 리소스를 들어보기 전에는 ‘분할 가능’을 확인된 사실로 기록해서는 안 됩니다.
이 사례에서는 두 대사를 따로 재녹음해 두 번째 대사를 “잠깐”부터 독립적으로 재생하는 방식을 선택합니다. 그만큼 추가 녹음과 음성의 일관성 점검이 필요합니다. 이전표에 새 녹음의 용도를 미리 정할 수는 있지만, 리소스가 전달되고 확인되기 전까지는 미완료 상태로 표시해야 합니다. 기존 전체 녹음은 변경 이력을 추적하는 자료로 보관하고, 두 대사에서 직접 호출하지 않습니다.
4. 예상 순서로 연결 상태 점검하기
이 사례에서 음성이 있을 때의 예상 순서는 다음과 같습니다. 갑1에 진입하면 차분한 표정을 표시하고 조건 설명을 재생합니다. 음성 재생 완료와 플레이어의 계속 진행 요청이라는 두 조건이 충족되면 통행증 검증 상태를 점검한 뒤 문 여는 동작을 한 번 실행합니다. 동작이 끝나면 갑2에 진입해 놀란 표정으로 바꾸고 경고를 재생합니다. 갑2가 끝나면 다음 대사로 넘어갑니다.
이렇게 구성하면 문이 열리는 동안에는 두 번째 대사가 아직 나타나지 않습니다. 놀라는 표정과 문 여는 동작을 겹치고 싶다면 사건 사이의 관계를 따로 정의해야 합니다. 놀람 지시를 갑1 끝에 미리 복사하는 것만으로 처리하면, 경고가 나오기도 전에 감정을 드러낼 수 있습니다.
연결 상태는 적어도 세 가지 상황에서 점검해야 합니다. 정상적으로 끝까지 들었을 때는 조건 설명이 끝난 뒤 문이 열리는지 확인합니다. 도중에 계속 진행을 요청했을 때도 이 사례에서는 갑1의 음성이 끝날 때까지 기다려야 하며, 요청만으로 바로 문을 열어서는 안 됩니다. 음성을 껐을 때는 전체 텍스트 표시 완료와 계속 진행 요청을 페이지 이탈 조건으로 삼아, 재생되지 않는 음성이 끝나기를 기다리지 않도록 합니다.
위의 조기 진행 요청과 음성 끄기 규칙은 모두 이 사례에서 선택한 설계입니다. 작품에 구현해야 하는 규칙이며, 이미 갖춰져 있다고 가정해서는 안 됩니다. 스킵, 저장 파일 불러오기, 다시 읽기로 이 위치에 재진입할 수 있다면 사건 복원 규칙도 별도로 정해야 합니다. 문이 이미 열린 상태를 재현한다고 해서 문 여는 동작까지 반드시 다시 재생해야 하는 것은 아닙니다.
기록은 ‘진입 방식|시작 상태|예상 순서|실제 관찰|수정 필요 항목’ 형식으로 작성할 수 있습니다. 이 글은 예상 흐름만 검토했으며 작품을 실행하지 않았습니다. 따라서 실제 관찰란은 점검할 때 작성해야 하고, 통과했다고 기록해서는 안 됩니다.
5. 합칠 때는 사건을 기준으로 중복을 제거하고, 인계할 때는 경계를 남기기
나중에 갑1과 갑2를 ‘대사 을’로 다시 합치더라도 두 페이지의 지시를 그대로 이어 붙여서는 안 됩니다. 먼저 이전표를 확인합니다. 문 여는 동작은 여전히 조건 설명이 끝난 뒤의 사건이고, 놀람은 경고가 시작되는 시점에 속합니다. 반면 두 개의 계속 진행 안내는 합친 대사 끝의 안내 하나로 정리해야 합니다.
갑1 끝과 갑2 시작에 동작이 모두 남아 있다면, 합친 뒤 두 항목이 같은 한 번의 문 열기를 가리키는지 확인해야 합니다. 중복된 실행 진입점임을 확인한 후에만 하나를 삭제합니다. 서로 다른 서사적 동작이라면 같은 리소스를 사용하더라도 파일명만 보고 중복을 제거해서는 안 됩니다. 어느 쪽을 남길지는 사건과의 관계에 따라 결정합니다.
합친 대사 내부의 실행 위치를 표현할 수 없는 경우도 있습니다. 현재 구현이 대사 전체의 시작이나 끝에서만 지시를 실행할 수 있다면, 중간에서 문을 열 수 있는 것처럼 처리해서는 안 됩니다. 분할을 유지하거나, 구현 가능한 사건 노드를 추가하거나, 연출을 조정할 수 있으며, 그 선택과 절충 사항을 기록합니다.
인계할 때는 모든 기존 참조를 어디로 옮기거나 어떻게 처리할지 명확해야 하고, 모든 새 참조의 근거를 설명할 수 있어야 합니다. 재녹음 대기와 구현 대기 항목도 계속 목록에 남겨야 합니다. 이 표는 대사를 재구성한 뒤 참조를 관리하기 위한 도구입니다. 리소스를 자동으로 고치거나, 확인하지 않은 스킵·저장 파일 불러오기·다시 읽기 경로가 올바르다는 사실을 증명해 주지는 않습니다.






