• 홈
  • 블로그
  • 갤러리
  • 가격
  • 홈
  • 블로그
  • 갤러리
  • 가격
창작 시작

만들고.플레이하세요.

크리에이터 블로그

홈/블로그/제품 워크플로

대본을 프로그램이 읽을 수 있는 데이터로 바꾸는 방법: 노드, 선택지, 조건과 결과

대본을 프로그램에 연결할 때 핵심은 Word 파일을 JSON에 복사하는 것이 아니라 안정적인 서사 데이터 계약을 만드는 것입니다. 각 노드는 무엇을 재생하고 언제 상호작용을 표시할지 설명합니다. 각 선택지는 표시 조건, 플레이어의 의도, 상태 변화 결과와 대상 노드를 설명합니다. 텍스트, 미디어, 로직은 서로 참조하면서도 각각 추적 가능한 버전을 갖습니다.

D
DramaFork Editorial Team인터랙티브 스토리텔링과 AI 제작
2026.08.26예상 읽기 시간: 6분
「대본을 프로그램이 읽을 수 있는 데이터로 바꾸는 방법: 노드, 선택지, 조건과 결과」 블로그 글 표지
목차
크리에이터 블로그
  1. 01들어가며
  2. 02안정적인 ID부터 시작하기
  3. 03노드 구조의 각 부분에는 하나의 책임만 부여하기
  4. 04선택지에는 표시 방식과 결과를 함께 기록하기
  5. 05조건은 검증하고 설명할 수 있어야 합니다
  6. 06미디어 목록과 서사 데이터 분리하기
  7. 07명확한 실행 순서 설계하기
  8. 08데이터 검증과 읽기 쉬운 로그 구축하기
  9. 09프로그래머가 아닌 사람도 검토할 수 있게 하기
글 맨 위로

들어가며

대본을 프로그램에 연결할 때 핵심은 Word 파일을 JSON에 복사하는 것이 아니라 안정적인 서사 데이터 계약을 만드는 것입니다. 각 노드는 무엇을 재생하고 언제 상호작용을 표시할지 설명합니다. 각 선택지는 표시 조건, 플레이어의 의도, 상태 변화 결과와 대상 노드를 설명합니다. 텍스트, 미디어, 로직은 서로 참조하면서도 각각 추적 가능한 버전을 갖습니다.

안정적인 ID부터 시작하기

챕터, 장면, 노드, 선택지, 에셋에는 모두 고유한 ID가 필요합니다. 표시 제목은 바꿀 수 있지만, 제작에 사용되기 시작한 ID는 재사용하지 않습니다. 예를 들어 노드는 C02_S04_N030, 선택지는 C02_S04_N030_O2, 영상은 C02_S04_N030_main_v07.mp4로 지정할 수 있습니다. 프로그램, 자막, 이벤트 계측, 결함 보고서는 모두 같은 식별자를 사용합니다.

ID에는 배우 이름, 감정, 최종 대사를 포함하지 않습니다. 이런 정보는 바뀔 수 있기 때문입니다. 폐기한 ID는 변경 기록에 남겨 이전 저장 데이터나 로그가 새 콘텐츠를 잘못 가리키지 않도록 합니다.

노드 구조의 각 부분에는 하나의 책임만 부여하기

노드 데이터에는 id, media, entryConditions, onEnter, interactions, onExit, fallback, tags가 포함될 수 있습니다. 미디어 필드는 에셋 목록을 참조하며 로컬 절대 경로를 직접 섞어 넣지 않습니다. 조건은 상태를 읽기만 하고, 효과는 허용된 상태에만 값을 씁니다.

{
  "id": "C02_S04_N030",
  "media": "VID_C02_S04_N030_MAIN",
  "entryConditions": ["evidence_recording == true"],
  "interactions": ["C02_S04_N030_O1", "C02_S04_N030_O2"],
  "fallback": "C02_S04_N040"
}

이 예시는 역할의 경계만 보여 줍니다. 실제 형식은 JSON, 스프레드시트 내보내기 파일 또는 서사 스크립트를 사용할 수 있습니다. 중요한 것은 같은 사실을 관리하는 기준 위치가 하나뿐이어야 한다는 점입니다.

선택지에는 표시 방식과 결과를 함께 기록하기

선택지에는 문구 키, 표시 조건, 선택 가능 조건, 시간 제한 규칙, 상태 효과, 대상 노드가 필요합니다. 보이지만 선택할 수 없다면 플레이어에게 이유를 알려야 합니다. 완전히 숨긴다면 빈 버튼을 남겨서는 안 됩니다. 문구에는 현지화 키를 사용하고, 중국어 원문을 로직 판단 기준으로 삼지 않습니다.

효과에는 불리언 값 설정, 자원 추가, 관계 단계 변경처럼 제한된 연산을 사용하는 것이 좋습니다. 각 선택지 안에 임의의 스크립트를 숨길 수 있게 하면 작가의 데이터가 검토할 수 없는 프로그램으로 바뀝니다. 복잡한 동작은 이름이 있는 명령을 통해 런타임에서 구현하도록 합니다.

조건은 검증하고 설명할 수 있어야 합니다

조건은 변수 표의 정식 이름을 참조하고 비교 유형을 제한합니다. 불리언 값과 문자열을 혼용하지 않고, 열거형은 유효한 값만 허용하며, 숫자에는 상한과 하한을 설정합니다. 편집기나 빌드 스크립트는 내보내기 과정에서 알 수 없는 변수, 도달할 수 없는 노드, 출구 없는 순환, 누락된 대상을 검사합니다.

복잡한 조건은 이름이 있는 규칙으로 나눕니다. 예를 들어 can_publish_truth는 핵심 증거가 모두 갖춰졌는지, 기자가 여전히 협력하는지, 자원이 충분한지로 구성됩니다. 테스트 로그에는 규칙의 결과와 기초 값을 함께 출력해야 플레이어에게 특정 선택지가 보이지 않은 이유를 설명할 수 있습니다.

미디어 목록과 서사 데이터 분리하기

노드는 논리적 에셋 ID만 참조합니다. 에셋 목록은 이 ID를 플랫폼, 언어, 화질별 파일에 매핑합니다. 이렇게 하면 편집본을 v06에서 v07로 바꿔도 분기 로직을 수정할 필요가 없습니다. 모바일에서 더 낮은 비트레이트를 사용하더라도 노드 전체를 복제하지 않습니다.

목록에는 최소한 파일, 체크섬, 재생 시간, 해상도, 오디오 트랙, 자막, 버전, 검토 상태를 기록합니다. 런타임은 로딩 전에 체크섬과 재생 시간을 검증해 잘못된 영상이나 잘린 영상이 정식 배포 패키지에 들어갈 가능성을 줄일 수 있습니다.

명확한 실행 순서 설계하기

노드 진입, 미디어 준비, 재생, 선택지 표시, 선택 제출, 효과 적용, 노드 이탈의 순서를 정합니다. 상태를 먼저 기록하는지, 먼저 이동하는지에 따라 다음 노드의 진입 조건 판단이 달라집니다. 선택 제출은 원자적 트랜잭션으로 처리하는 것을 권장합니다. 여전히 선택 가능한지 검증하고, 결과를 기록하고, 로그를 남긴 다음 이동합니다. 실패하면 상태를 변경하지 않고 복구 방법을 제공합니다.

시간 초과, 건너뛰기, 저장 데이터 불러오기, 반복 클릭도 같은 상태 머신을 거쳐야 합니다. 버튼은 제출 직후 잠가 더블 클릭으로 두 번 기록되는 것을 막습니다. 나갔다가 다시 들어올 때는 제출 완료 표시에 따라 복원하며 보상을 다시 지급하지 않습니다.

데이터 검증과 읽기 쉬운 로그 구축하기

빌드할 때마다 ID의 고유성, 참조 대상의 존재, 최소 하나의 출구, 변수 유형의 정확성, 현지화 키의 완전성, 미디어를 찾을 수 있는지를 자동으로 검사합니다. 경고와 오류는 심각도에 따라 구분합니다. 선택 사항인 메모가 없으면 경고할 수 있지만, 대상 노드가 없으면 반드시 빌드를 막아야 합니다.

실행 로그는 구조화된 이벤트로 세션, 노드, 선택지, 변경 전후의 상태 요약, 시간, 버전을 기록합니다. 로그에는 불필요한 개인정보를 포함해서는 안 됩니다. 디버그 빌드는 더 자세히 기록할 수 있지만, 정식 분석 이벤트는 개인정보 보호 및 동의 요건을 준수해야 합니다.

프로그래머가 아닌 사람도 검토할 수 있게 하기

기계가 읽을 수 있다고 해서 사람이 읽기 어려워야 하는 것은 아닙니다. 같은 데이터에서 노드 표, 분기 그래프, 플레이 가능한 미리보기를 생성하면 작가는 대사를, 제작자는 에셋을, 테스터는 경로를 확인할 수 있습니다. 수작업으로 만든 모든 사본에는 원본에 다시 반영할 수 없다고 표시해 여러 사람이 서로 다른 기준 데이터를 관리하는 일을 막습니다.

다음 단계: 노드 열 개를 골라 최소 데이터 스키마를 정의하고, 올바른 예시 하나와 의도적으로 잘못 만든 예시 세 개를 작성합니다. 빌드 검사가 알 수 없는 변수, 연결 대상이 없는 출구, 누락된 미디어를 정확히 차단하는 것을 확인한 뒤 전체 대본을 가져옵니다.

제품 기능 알아보기 인터랙티브 작품 체험

계속 읽기

더 많은 글 보기
변경 기록이 수정 원인, 새로운 다리 동작, 영향을 받는 소재를 연결한다.
제품 워크플로2026.09.30 · 6분

인터랙티브 스토리의 변경 기록 작성법: 원인, 변경, 영향받는 루트 구분하기

변경 기록은 세 칸으로 작성한다: 원인, 변경, 영향받는 루트. 원인은 "왜 바꾸는지"를 설명하고, 변경은 "무엇을 바꾸는지"를 명확히 쓰며, 영향받는 루트는 "어떤 소재와 분기가 재검토되어야 하는지"를 나열한다. 아래에는 가상의 교육용 예시를 관통해서 사용한다: 어떤 인터랙티브 영화 게임이 원래 2장에 "끊어진 다리" 노드를 두었고, 플레이어는 밧줄을 찾아야 강을 건널 수 있었다; 작가는 나중에 끊어진 다리를 "지연된 나룻배"로 바꾸었는데, 그 이유는 원래 설계가 한 온화한 루트를 어색하게 만들었기 때문이다. 이하 인명, 숫자, 대사는 모두 가상이며, 작성법 시연에만 사용된다

두 창작자가 모호한 의견을 구체적인 장면 동작을 가리키는 수정서로 바꾸는 모습.
제품 워크플로2026.09.29 · 6분

두 창작자가 교대로 검토할 때, '여기가 틀렸어'를 실행 가능한 수정서로 쓰는 방법은?

'여기가 틀렸어'를 수정서로 바꾸는 핵심 동작은 하나뿐입니다. 모든 의견을 버전, 노드, 현상, 기대, 이유, 책임, 검증이라는 일곱 칸에 넣는 것입니다. 두 사람이 교대로 검토할 때는 먼저 각자 독립적으로 수정서를 작성하고, 충돌 항목을 병합한 뒤에야 원고를 수정합니다. 아래에서는 가상의 교육용 예시로 전체 과정을 진행하며, 인물, 대사, 수치는 실제 측정 자료가 아닙니다.

한 컴퓨터의 로컬 서비스와 다른 컴퓨터가 길 건너 서로 마주 보고, 공용 연결 다리가 도달 가능한 주소를 알려주는 모습.
제품 워크플로2026.09.29 · 6분

원격 소재 패키지에 localhost가 나타나면, 왜 다른 컴퓨터에서는 열리지 않을 수 있을까?

원격 패키지의 소재 주소가 localhost를 가리키면, 컴퓨터를 바꾼 뒤에는 수신자 자신의 컴퓨터로 요청이 갑니다. 제작자 컴퓨터의 서비스는 ZIP과 함께 옮겨지지 않으므로 "내 쪽에서는 재생된다"는 것만으로 다른 사람도 재생할 수 있다고 증명할 수 없습니다. 처리 순서는 실제 요청 주소 확인, 애플리케이션 도메인 대조, 재내보내기, 다른 기기에서 검증입니다.

제작의 복잡함은 Agent에게, 창작의 결정권은 당신에게.

하나의 이야기 아이디어에서 시작해 대본, 캐릭터, 장면과 분기를 구성하고 플레이 가능한 첫 버전을 만드세요.

제품

  • 가격
  • 주요 기능
  • 제작 과정
  • 작품 예시
  • 자주 묻는 질문

둘러보기

  • 인터랙티브 갤러리
  • 크리에이터 블로그
  • 크리에이터 파트너십

법적 고지

  • 개인정보 처리방침
  • 이용약관
© 2026 DramaFork/AI 인터랙티브 스토리 스튜디오
Press Enter to send, or drag away and release.