전체 시나리오 구조도 — 하나로 엮기

 


19편에 걸쳐 개별 요소를 설계했다. 이제 전체를 하나로 엮을 차례다. AI와 함께 만든 설계의 전체상을 정리한다.

시스템 구조 요약

이 미연시는 세 개의 핵심 시스템으로 작동한다.

1. 감정 시스템 (3계층)

A층 - 근본 성향: need_for_affection, fear_of_rejection, pride, insecurity
B층 - 순간 감정: affection, anger, sadness, jealousy, admiration, fear
C층 - 관계 상태: trust, reliance, intimacy, tension, resentment, respect

사랑은 변수가 아니다. C층 변수들의 조합으로 발생한다.

2. 컨텍스트 시스템

location: 5개 장소
time: 4개 시간대
weather: 4개 날씨 (플레이어 통제 불가)
privacy: 3단계
mood: 5개 분위기

같은 이벤트도 컨텍스트에 따라 다른 감정을 만든다.

3. 기억 시스템

패턴 추적: did_not_ask, avoided_confession, missed_timing 등
이벤트 플래그: shared_umbrella, saw_with_rival, broke_promise 등
누적 카운터: 같은 패턴 반복 시 영향력 증폭

선택의 결과는 지연된다. 나중에 의미가 바뀐다.

장면의 작동 원리

모든 장면은 이 세 시스템의 교차점에서 열린다.

감정 조건 충족 + 컨텍스트 조건 충족 + 기억 플래그 충족
→ 특정 이벤트 발생
→ 감정 변화 + 새로운 기억 저장

예시: "속마음을 꺼내는 대화"

if (rel["trust"] >= 40 and 
    scene_ctx["time"] == "night" and 
    scene_ctx["weather"] == "rain" and 
    scene_ctx["privacy"] >= 1 and
    flags["did_not_ask"] < 2):
    jump vulnerable_conversation

신뢰가 쌓여있고, 밤이고, 비가 오고, 둘만 있고, 이전에 너무 많이 회피하지 않았으면 — 속마음이 나오는 대화가 열린다.

이 코드를 AI에게 검증 요청했을 때 재미있는 피드백이 돌아왔다. "did_not_ask가 정확히 2일 때는 어떻게 되느냐"는 질문이었다. 경계값 문제다. 1번 회피는 괜찮고 3번은 안 되는데, 2번은? 이런 세밀한 경계를 AI가 집요하게 물어봐줬기 때문에, 각 장면의 발생 조건이 훨씬 정밀해졌다. 사람 혼자 설계하면 "대충 2~3번 정도"로 넘어가기 쉬운 부분이다.

캐릭터 설계 원칙

행동 ≠ 내면 (불일치가 매력을 만든다)
표현 능력이 감정 크기와 다를 수 있다
변화는 점진적이되, 원인은 플레이어의 선택
A층(성격)은 안 바뀌고, C층(관계)만 바뀐다

갈등 설계 원칙

악역 없는 갈등 > 악역이 만드는 갈등
선의 vs 선의 (사랑 방식의 충돌)
내부 갈등 > 외부 갈등
배려의 역설, 보호의 역설, 존중의 역설

시간 구조

[프롤로그] 기억의 씨앗 — 미완성으로 끝남
[Act 1] 재회와 어색함 — 선택 영향 거의 없음
[Act 2] 관계 얽힘 — 선택 누적, 결과 지연
[전환] 관계 깨짐 — 반드시 일어남
[Act 3] 본 게임 — 과거 선택 폭발, 최종 선택

각 시기의 설렘은 다르다. 편안함 → 낯선 설렘 → 불안한 설렘 → 책임 있는 감정.

이 시간 구조를 설계할 때 AI와 가장 많이 논의한 건 "전환" 구간이었다. 관계가 반드시 깨지는 순간. 이걸 "반드시"로 설정한 이유는 5편에서 다뤘던 갈등 설계 원칙 때문이다. 선의와 선의의 충돌은 피할 수 없다. 서로를 위한 행동이 서로를 상처 입히는 순간이 반드시 온다. 이 전환이 없으면 Act 3의 무게가 사라진다. AI에게 "전환 없이 바로 Act 3로 가면 어떻게 되냐"고 물었더니, "플레이어가 자기 선택의 결과를 체감할 수 없다"는 답이 돌아왔다. 맞는 말이었다. 관계가 깨져봐야 자기가 쌓아온 것의 무게를 안다.

엔딩 구조

이어짐: trust 높음 + avoidance 낮음 + 감정 상호적
늦은 사랑: trust 높음 + avoidance 높음
파국: affection 높음 + hurt 큼
스쳐 지나감: 감정 미완

엔딩 조건은 플레이어에게 숨긴다. 자기 선택의 결과를 받아들이는 경험.

날씨 시스템

날씨는 플레이어가 통제할 수 없다. 핵심 장면은 시나리오가 날씨를 결정하고, 일상 장면은 시스템이 결정한다. 통제 불가능성이 운명처럼 작동한다.

8편에서 상세히 다뤘지만, 여기서 전체 구조도의 맥락에서 한 가지를 추가한다. 날씨 시스템은 독립 변수처럼 보이지만, 실제로는 기억 시스템과 연결된다. shared_umbrella 이벤트는 비가 와야만 발생하고, 이 플래그가 나중에 엔딩 연출에 영향을 준다. 즉, 날씨라는 우연이 기억을 만들고, 기억이 결말을 바꾸는 구조다. 플레이어가 통제할 수 없는 요소가 관계의 방향을 미세하게 틀어놓는다는 점에서, 현실의 관계와 닮았다.

선택 설계 원칙

가벼운 선택: 참여감 (일상)
중간 선택: 방향성 (관계 미묘한 변화)
무거운 선택: 결정 (돌이킬 수 없음)

정답 없는 선택 > 정답 있는 선택
감정적 판단 > 전략적 판단

AI 협업 원칙

AI에게: 구조 설계, 변수 정리, 일관성 검증, 코드 초안, 패턴 제시
사람에게: 감정 무게 판단, 뉘앙스 조정, 클리셰 필터, 최종 결정

완성품이 아닌 재료를 요청한다
질문으로 깎아낸다
AI의 답에 "왜?"를 붙인다

이 설계가 목표하는 경험

최종적으로 이 미연시가 플레이어에게 주고 싶은 경험은 세 가지다.

첫째, "내가 다르게 했으면 어땠을까." 선택에 대한 후회. 이건 다른 매체가 줄 수 없는, 미연시만의 경험이다.

둘째, "아, 이 사람을 좋아했구나." 사랑이라는 감정이 수치가 아니라 깨달음으로 오는 경험. 조건이 쌓여서 어느 순간 인식하게 되는 거다.

셋째, "나도 이런 실수를 하고 있지 않나." 게임 속 관계가 현실의 관계를 돌아보게 만드는 경험. 배려라고 생각한 게 회피였을 수 있다는 자기 인식.

이 세 가지가 동시에 작동하면, 이 미연시는 단순한 연애 시뮬이 아니라 관계에 대한 경험이 된다.

이 구조도를 완성하고 나서 AI에게 "이 시스템에서 가장 약한 고리는 뭐냐"고 물었다. AI의 답은 "변수 간 상호작용의 복잡도"였다. 감정 시스템의 변수가 14개, 컨텍스트 변수가 5개, 기억 플래그가 수십 개. 이것들이 동시에 작동하면 예측 불가능한 조합이 나올 수 있다. 그래서 AI와 함께 "우선순위 규칙"을 정했다. 핵심 장면은 감정 변수가 최우선이고, 일상 장면은 컨텍스트가 최우선이며, 엔딩 분기는 기억 플래그가 최우선이다. 이렇게 상황별 우선순위를 정해두면, 변수 충돌이 생겼을 때 어떤 시스템이 이기는지 명확해진다.

다음 편, 마지막이다. AI와 시나리오를 설계한다는 것의 의미. 그리고 여기서부터 어디로 가는가.


다음 편: AI와 시나리오를 설계한다는 것 — 회고와 다음 단계

댓글

이 블로그의 인기 게시물

사랑을 직접 올리지 않는 설계

감정을 변수로 옮기다 — 3계층 감정 모델

시작의 충동 — "타로 웹앱을 만들어볼까?"