분기도가 통제 불능이 되지 않게 그리는 법: 노드 ID, 진입, 출구와 조건
제작에 쓸 수 있는 분기도는 이야기 포스터가 아니라 팀이 공유하는 경로 지도다. 모든 노드에는 안정적인 ID, 명확한 진입 조건, 확인 가능한 상태 변화, 분명한 출구가 있어야 한다. 도표는 “어떻게 이동하는가”에 답하고, 대본은 “무엇을 연기하는가”에 답한다. 대사 한 페이지를 통째로 흐름도에 집어넣으면 둘 다 유지·관리할 수 없게 된다.

들어가며
제작에 쓸 수 있는 분기도는 이야기 포스터가 아니라 팀이 공유하는 경로 지도다. 모든 노드에는 안정적인 ID, 명확한 진입 조건, 확인 가능한 상태 변화, 분명한 출구가 있어야 한다. 도표는 “어떻게 이동하는가”에 답하고, 대본은 “무엇을 연기하는가”에 답한다. 대사 한 페이지를 통째로 흐름도에 집어넣으면 둘 다 유지·관리할 수 없게 된다.
먼저 노드의 최소 단위를 정의한다
노드는 독립적으로 진입하고, 재생하고, 빠져나올 수 있는 콘텐츠 단위여야 한다. 일반적으로 하나의 주요 서사 목표, 연속된 시간과 공간, 확정된 출구 집합을 갖는다. 화면의 숏이 바뀐다고 새 노드를 만들 필요는 없다. 진입 조건, 사용 가능한 선택지, 기록되는 상태가 달라질 때 분리해야 한다.
《零点回拨》의 “주인공이 기록 보관실에서 전화를 받는다”는 C03_S02_N010으로 지정할 수 있다. 제3장, 제2장면, 10번 노드라는 뜻이다. 전화를 받거나 거절할 때 서로 다른 영상이 재생된다면 각각 N020A와 N020B로 나가도록 한다. 줄거리 제목은 바뀔 수 있으므로 ID로 쓰지 않는다. 안정적인 번호를 사용하면 대본, 에셋, 프로그램, 테스트 보고서가 같은 대상을 가리킬 수 있다.
노드 카드에는 필요한 필드만 적는다
각 노드 카드에는 노드 ID, 짧은 제목, 진입 조건, 미디어 에셋, 진입 시 상태, 플레이어 상호작용, 종료 시 상태 기록, 출구 ID, 예외 처리, 담당자, 버전을 넣는 것이 좋다. 진입 조건은 누가 들어올 수 있는지, 출구는 어디로 가는지, 상태 기록은 무슨 일이 일어났는지를 설명한다.
예를 들면 다음과 같다.
ID: C03_S02_N010
진입: caller_known = true
에셋: C03_S02_N010_v05.mp4
상호작용: 받기 / 음소거한 채 듣기 / 끊기
기록: call_action = answer|listen|hangup
출구: N020A / N020B / N020C
예외: 입력이 없으면 N020C로 진입
“관계가 좋으면 다른 말을 할지도 모른다” 같은 내용을 비고에 남겨 두지 않는다. 진입 조건이나 변형 조건으로 명시하거나 삭제해야 한다. 모호한 조건은 결국 촬영 누락이나 프로그래머의 추측으로 이어진다.
도표에서 네 가지 연결선을 구분한다
일반 전환, 조건부 전환, 실패 또는 시간 초과, 장 이동에는 서로 다른 선 모양이나 라벨을 사용해야 한다. 색은 보조 수단으로만 쓰고 유일한 정보가 되어서는 안 된다. 인쇄, 색각, 내보내기 형식 때문에 색이 제 역할을 하지 못할 수 있기 때문이다. 모든 조건부 연결선에는 조건 이름을 직접 적고, 질문의 맥락과 떨어진 “예/아니요”만 쓰지 않는다.
페이지를 넘나드는 연결선에는 연결용 노드를 사용하고 출발지와 목적지를 함께 적는다. 캔버스 전체를 가로지르는 선은 그리지 않는다. 도표가 스파게티처럼 얽힐수록 검토 중 막다른 경로를 발견하기 어렵다.
진입과 출구가 빠짐없이 연결되어야 한다
시작 노드를 제외한 모든 노드에는 유효한 진입 경로가 하나 이상 있어야 한다. 결말 노드를 제외한 모든 노드에는 출구가 하나 이상 있어야 한다. 자동 또는 수동으로 한 차례 점검한다. 진입 경로가 없으면 고립된 섬이고, 출구가 없으면 막다른 길이며, 존재하지 않는 ID를 가리키면 끊어진 참조다. 선택적으로 보는 콘텐츠에도 나가는 방법이 있어야 한다. 플레이어가 단서 확인 화면에 들어갔다가 본편으로 돌아오지 못하게 해서는 안 된다.
각 선택지에는 입력이 없을 때, 리소스가 누락되었을 때, 이전 저장 데이터로 오류가 발생했을 때의 이동 경로도 함께 정의한다. 기본 경로는 프로그래머가 임시로 정하는 대체 수단이 아니라 서사 설계의 일부다.
서사 도표, 제작 도표, 테스트 도표를 분리한다
서사 도표는 플레이어의 경로와 감정의 흐름을 보여 준다. 제작 도표는 공유하는 촬영 장소, 배우, 에셋 변형을 펼쳐 보여 준다. 테스트 도표는 조건 조합과 커버리지 상태를 표시한다. 세 관점은 같은 노드 데이터를 읽을 수 있지만 한 도표에 몰아넣을 필요는 없다. 감독은 같은 장소의 장면을 어떻게 촬영할지, 테스트 담당자는 어떻게 도달할지에 관심이 있다. 도표를 읽는 사람에게 모든 필드를 한꺼번에 쏟아부어서는 안 된다.
먼저 기준이 되는 노드 표 하나를 관리하고, 그 표에서 서로 다른 보기를 생성한다. 도표와 표를 각각 수작업으로 수정하면 결국 불일치가 생긴다. 소규모 팀이라도 최소한 다음 원칙은 정해야 한다. 노드 경로는 표를 기준으로 하고, 시각적 도표는 논의에만 사용하며, 대본을 확정할 때마다 다시 내보낸다.
버전과 변경 기록으로 협업을 보호한다
촬영에 들어간 노드 ID는 재사용하지 않는다. N030을 삭제한 뒤에도 폐기 기록을 남기고, 새 콘텐츠에는 새 번호를 사용해 이전 파일을 잘못 인식하지 않도록 한다. 변경할 때마다 “누가, 언제, 왜 변경했으며 어떤 진입 경로, 출구, 에셋에 영향을 주는지”를 기록한다. 촬영 버전을 확정한 뒤 분기를 수정할 때는 작가, 제작팀, 프로그래머, 테스트 담당자에게 동시에 알려야 한다.
위험도가 높은 노드에는 초안, 서사 확정, 촬영 가능, 촬영 완료, 연동 완료, 검증 완료와 같은 상태 라벨을 붙인다. 상태는 진척도를 꾸미는 표시가 아니라 다음 담당자가 작업을 시작해도 되는지를 알려 주는 허가다.
검토할 때는 개별 노드만 보지 말고 경로를 따라간다
개별 노드가 올바르다고 전체 경로가 성립하는 것은 아니다. 최소한 네 번은 따라가 본다. 가장 빠른 본편 경로, 단서가 가장 많은 경로, 관계 수치가 가장 낮은 경로, 모든 단계에서 시간 초과가 발생하는 경로다. 매번 방문한 노드, 상태 변화, 결말을 기록하고 중요한 약속이 모두 회수되는지 확인한다. 이어서 각 결말에서 선행 조건을 거꾸로 추적해 플레이어가 절대로 충족할 수 없는 조합을 찾아낸다.
다음 단계: 한 장을 골라 기준 노드 표를 만들고, 모든 노드에 안정적인 ID를 부여한 뒤 진입, 상태 기록, 출구, 무입력 경로를 모두 채운다. 완성되면 집필에 참여하지 않은 사람이 이 표만 보고 네 가지 경로를 끝까지 따라가게 한다.


