{ "version": "0.1.0", "content_rules": { "all_romanceable_characters_are_adults": true, "minimum_age": 19, "adult_event_policy": "성인 캐릭터 간 상호 동의와 관계 단계 조건을 만족한 뒤 관능적 연출로 처리한다." }, "characters": [ { "id": "han_seoyun", "display_name": "한서윤", "age": 24, "occupation": "쿠킹 클래스 강사", "height_cm": 164, "body_type": "균형 잡힌 부드러운 체형", "archetype": ["현모양처", "다정함", "은근한 소유욕"], "personality": { "summary": "생활력이 강하고 상대를 챙기는 데 익숙하지만, 가까워질수록 독점욕이 살짝 드러난다.", "traits": ["헌신적", "섬세함", "현실적", "질투를 숨김"], "flaws": ["자기 마음을 뒤로 미룸", "약속 파기에 예민함"] }, "romance_style": "편안한 일상에서 시작해 깊고 안정적인 관계로 발전한다.", "visual_direction": { "fashion": ["앞치마", "오프숄더 니트", "부드러운 홈웨어"], "adult_illustration_tone": "따뜻한 실내 조명, 관능적인 홈 데이트 분위기" }, "preferred_locations": ["cooking_studio", "neighborhood_market", "riverside_park"], "likes": ["정성스러운 선물", "함께 장보기", "약속 시간 지키기"], "dislikes": ["가벼운 작업 멘트", "음식 남기기", "갑작스러운 잠수"], "first_encounter": { "location": "cooking_studio", "title": "태워버린 팬케이크", "setup": "주인공이 체험 수업에서 실수하자 서윤이 웃으며 도와준다.", "success_keys": ["솔직하게 도움 요청", "농담보다 감사 표현"] }, "date_events": [ { "stage": 1, "title": "시장 골목의 장보기", "location": "neighborhood_market", "focus": "일상 취향과 생활감 확인", "success_keys": ["무거운 짐 들어주기", "그녀가 고른 재료 기억하기"] }, { "stage": 2, "title": "둘만의 저녁 식탁", "location": "cooking_studio", "focus": "서로의 가족관과 연애관 공유", "success_keys": ["진지한 미래 대화", "서윤의 부담을 덜어주기"] }, { "stage": 3, "title": "강변의 늦은 고백", "location": "riverside_park", "focus": "안정적인 연인 관계 확정", "success_keys": ["독점욕을 비난하지 않기", "분명한 관계 의사 표현"] } ], "lover_transition": { "title": "따뜻한 식탁의 약속", "requirements": ["date_stage_3_complete", "trust >= 50", "commitment >= 45"], "result": "연인 단계와 홈 데이트 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "romantic_home", "setup": "집 데이트 후 서로의 마음을 확인하는 밤", "required_flags": ["lovers", "consent_confirmed"], "presentation": "suggestive_cg_or_fade_to_black" } ] }, { "id": "yu_harin", "display_name": "유하린", "age": 22, "occupation": "도서관 계약직 사서", "height_cm": 158, "body_type": "아담하고 곡선적인 체형", "archetype": ["요조숙녀", "부끄럼 많음", "순애"], "personality": { "summary": "말수는 적지만 좋아하는 책과 사람에게는 깊이 몰입한다.", "traits": ["조심스러움", "상상력 풍부", "예의 바름", "천천히 가까워짐"], "flaws": ["오해를 바로 풀지 못함", "갈등 회피"] }, "romance_style": "느리게 마음을 열고 작은 약속을 소중히 여긴다.", "visual_direction": { "fashion": ["롱스커트", "얇은 가디건", "단정한 원피스"], "adult_illustration_tone": "수줍은 표정과 살짝 흐트러진 단정함" }, "preferred_locations": ["book_cafe", "old_bookstore", "riverside_park"], "likes": ["조용한 대화", "책갈피", "비 오는 날 카페"], "dislikes": ["큰 목소리", "성급한 스킨십", "약속 없는 방문"], "first_encounter": { "location": "old_bookstore", "title": "같은 책을 잡은 손", "setup": "절판된 소설을 동시에 집으며 어색한 미소를 나눈다.", "success_keys": ["책을 양보하기", "작가 취향 물어보기"] }, "date_events": [ { "stage": 1, "title": "북카페의 밑줄", "location": "book_cafe", "focus": "취향 공유와 편안함 형성", "success_keys": ["그녀가 고른 문장 기억", "조용한 분위기 유지"] }, { "stage": 2, "title": "비 오는 강변", "location": "riverside_park", "focus": "수줍은 신뢰와 보호받는 감각", "success_keys": ["우산 씌워주기", "무리하게 묻지 않기"] }, { "stage": 3, "title": "마지막 장의 고백", "location": "book_cafe", "focus": "서툰 진심을 받아들이기", "success_keys": ["기다려주겠다고 말하기", "직접적인 고백"] } ], "lover_transition": { "title": "접힌 책갈피", "requirements": ["date_stage_3_complete", "trust >= 55", "comfort >= 40"], "result": "순애형 연인 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "shy_romantic", "setup": "오랜 망설임 끝에 서로의 속도를 확인하는 밤", "required_flags": ["lovers", "consent_confirmed", "trust >= 60"], "presentation": "soft_suggestive_cg" } ] }, { "id": "kang_mirae", "display_name": "강미래", "age": 26, "occupation": "브랜드 매니저", "height_cm": 171, "body_type": "슬림하고 탄탄한 체형", "archetype": ["커리어우먼", "도도함", "주도권 싸움"], "personality": { "summary": "자기 기준이 확고하고 쉽게 흔들리지 않지만, 인정받고 싶은 마음이 크다.", "traits": ["야심 있음", "분석적", "세련됨", "승부욕"], "flaws": ["약한 모습을 싫어함", "감정 표현이 늦음"] }, "romance_style": "서로의 능력과 자존심을 인정하면서 뜨겁게 가까워진다.", "visual_direction": { "fashion": ["핏 좋은 수트", "슬릿 스커트", "깔끔한 이브닝 드레스"], "adult_illustration_tone": "차가운 표정과 대비되는 강한 긴장감" }, "preferred_locations": ["office_district", "rooftop_lounge", "wine_bar"], "likes": ["정확한 약속", "일에 대한 존중", "센스 있는 대화"], "dislikes": ["무능한 허세", "즉흥적인 방해", "공개 망신"], "first_encounter": { "location": "office_district", "title": "떨어진 기획서", "setup": "바람에 날린 기획서를 함께 줍다가 그녀의 날카로운 평가를 듣는다.", "success_keys": ["침착하게 받아치기", "일 이야기를 진지하게 듣기"] }, "date_events": [ { "stage": 1, "title": "퇴근 후 한 잔", "location": "wine_bar", "focus": "능력과 취향 검증", "success_keys": ["과시하지 않기", "그녀의 성과 인정"] }, { "stage": 2, "title": "루프탑의 협상", "location": "rooftop_lounge", "focus": "주도권과 감정의 균형", "success_keys": ["밀리지 않되 존중하기", "솔직한 호감 표현"] }, { "stage": 3, "title": "새벽의 빈 사무실", "location": "office_district", "focus": "약한 모습을 공유하는 순간", "success_keys": ["해결책보다 곁에 있기", "비밀 지키기"] } ], "lover_transition": { "title": "동등한 파트너", "requirements": ["date_stage_3_complete", "trust >= 45", "tension >= 45"], "result": "커리어 갈등 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "confident_tension", "setup": "루프탑 데이트 후 서로의 주도권을 확인하는 사적인 시간", "required_flags": ["lovers", "consent_confirmed"], "presentation": "high_tension_suggestive_cg" } ] }, { "id": "jung_naeun", "display_name": "정나은", "age": 21, "occupation": "카페 아르바이트생", "height_cm": 160, "body_type": "부드러운 보통 체형", "archetype": ["츤데레", "말보다 행동", "티격태격"], "personality": { "summary": "말은 차갑지만 챙길 건 다 챙기는 타입이다.", "traits": ["솔직하지 못함", "정 많음", "반응이 빠름", "질투가 티남"], "flaws": ["사과가 늦음", "놀림에 쉽게 발끈함"] }, "romance_style": "가벼운 말싸움에서 시작해 서로의 빈틈을 알아간다.", "visual_direction": { "fashion": ["크롭 가디건", "짧은 재킷", "카페 유니폼"], "adult_illustration_tone": "새침한 표정과 부끄러움을 숨기는 포즈" }, "preferred_locations": ["downtown_cafe", "amusement_street", "cinema"], "likes": ["가벼운 장난", "단 음식", "자기 편 들어주기"], "dislikes": ["노골적인 칭찬", "비교", "대답 없는 메시지"], "first_encounter": { "location": "downtown_cafe", "title": "잘못 나온 라떼", "setup": "주문 실수로 말다툼이 시작되지만 그녀가 몰래 쿠키를 챙겨준다.", "success_keys": ["과하게 따지지 않기", "쿠키를 눈치채고 고맙다고 하기"] }, "date_events": [ { "stage": 1, "title": "인형 뽑기 승부", "location": "amusement_street", "focus": "장난과 승부욕", "success_keys": ["져주지 않고 진심으로 하기", "성공 후 놀리지 않기"] }, { "stage": 2, "title": "옆자리의 공포 영화", "location": "cinema", "focus": "가까워지는 거리와 부끄러움", "success_keys": ["놀란 걸 모른 척하기", "손을 잡기 전 확인하기"] }, { "stage": 3, "title": "닫힌 카페의 진심", "location": "downtown_cafe", "focus": "츤데레 방어막 해제", "success_keys": ["먼저 사과하기", "분명하게 좋아한다고 말하기"] } ], "lover_transition": { "title": "투덜대는 고백", "requirements": ["date_stage_3_complete", "affection >= 55", "trust >= 35"], "result": "질투 이벤트와 카페 비밀 데이트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "playful_blush", "setup": "말다툼 뒤 화해하며 서로의 마음을 확인하는 밤", "required_flags": ["lovers", "consent_confirmed"], "presentation": "playful_suggestive_cg" } ] }, { "id": "baek_chaewon", "display_name": "백채원", "age": 27, "occupation": "이벤트 플래너", "height_cm": 167, "body_type": "글래머러스한 체형", "archetype": ["사교적", "플러팅 능숙", "위험한 매력"], "personality": { "summary": "사람을 끌어당기는 법을 잘 알지만 진심을 들키는 건 두려워한다.", "traits": ["화려함", "눈치 빠름", "농담 능숙", "외로움 숨김"], "flaws": ["관계를 시험함", "진심을 장난처럼 포장함"] }, "romance_style": "가벼운 유혹에서 시작해 진심과 장난을 구분하는 루트다.", "visual_direction": { "fashion": ["깊은 브이넥 드레스", "화려한 액세서리", "파티룩"], "adult_illustration_tone": "노출감 있는 의상과 자신감 있는 시선" }, "preferred_locations": ["rooftop_lounge", "fashion_street", "wine_bar"], "likes": ["센스 있는 칭찬", "즉흥 데이트", "자신감"], "dislikes": ["질투 폭발", "소유물 취급", "무심함"], "first_encounter": { "location": "rooftop_lounge", "title": "잘못 건넨 초대장", "setup": "행사장에서 초대장을 착각해 말을 걸고, 그녀가 흥미로운 장난을 건다.", "success_keys": ["여유 있게 받아치기", "선을 넘지 않는 플러팅"] }, "date_events": [ { "stage": 1, "title": "패션 거리의 시선", "location": "fashion_street", "focus": "관심과 질투의 경계", "success_keys": ["그녀의 선택 존중", "타인의 시선에 흔들리지 않기"] }, { "stage": 2, "title": "와인잔 너머 진심", "location": "wine_bar", "focus": "장난 속 숨은 외로움", "success_keys": ["농담 뒤 감정 읽기", "가볍게 단정하지 않기"] }, { "stage": 3, "title": "파티가 끝난 루프탑", "location": "rooftop_lounge", "focus": "진심 확인", "success_keys": ["공개적으로 편 들어주기", "단둘이 진지하게 대화"] } ], "lover_transition": { "title": "장난이 아닌 고백", "requirements": ["date_stage_3_complete", "tension >= 50", "trust >= 45"], "result": "화려한 공개 연애와 질투 갈등 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "bold_romantic", "setup": "파티 후 단둘이 남아 장난 아닌 마음을 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "sensual_cg_with_after_dialogue" } ] }, { "id": "oh_sera", "display_name": "오세라", "age": 29, "occupation": "플로리스트", "height_cm": 169, "body_type": "성숙하고 우아한 체형", "archetype": ["미망인", "상처 치유", "성숙한 사랑"], "personality": { "summary": "조용하고 깊은 슬픔을 품었지만 다시 사랑할 용기를 찾고 있다.", "traits": ["차분함", "배려 깊음", "성숙함", "조심스러움"], "flaws": ["과거를 놓지 못함", "행복에 죄책감을 느낌"] }, "romance_style": "상처를 존중하고 천천히 새로운 관계를 허락받는 루트다.", "visual_direction": { "fashion": ["실크 블라우스", "차분한 원피스", "우아한 숄"], "adult_illustration_tone": "성숙한 실루엣과 낮은 채도의 관능미" }, "preferred_locations": ["flower_shop", "lakeside_walk", "wine_bar"], "likes": ["진중한 대화", "꽃말 기억", "기다려주는 태도"], "dislikes": ["과거 캐묻기", "가벼운 위로", "불쌍히 여기는 시선"], "first_encounter": { "location": "flower_shop", "title": "시들지 않는 꽃", "setup": "주인공이 꽃을 고르지 못하자 세라가 조용히 꽃말을 설명해준다.", "success_keys": ["꽃말 묻기", "개인사를 캐묻지 않기"] }, "date_events": [ { "stage": 1, "title": "호숫가의 침묵", "location": "lakeside_walk", "focus": "말보다 함께 있는 시간", "success_keys": ["침묵을 견디기", "성급한 위로 피하기"] }, { "stage": 2, "title": "닫힌 앨범", "location": "flower_shop", "focus": "과거와 현재의 경계", "success_keys": ["선택권을 세라에게 주기", "기억을 존중하기"] }, { "stage": 3, "title": "와인바의 두 번째 시작", "location": "wine_bar", "focus": "다시 사랑할 용기", "success_keys": ["죄책감 덜어주기", "서두르지 않는 고백"] } ], "lover_transition": { "title": "새 꽃병", "requirements": ["date_stage_3_complete", "trust >= 65", "comfort >= 45"], "result": "치유형 연인 루트와 조용한 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "mature_healing", "setup": "오랜 망설임 끝에 새로운 사랑을 받아들이는 밤", "required_flags": ["lovers", "consent_confirmed", "trust >= 70"], "presentation": "elegant_suggestive_cg_and_afterglow_dialogue" } ] }, { "id": "moon_jia", "display_name": "문지아", "age": 20, "occupation": "이벤트 스태프", "height_cm": 162, "body_type": "발랄하고 건강한 체형", "archetype": ["직진형", "에너지 넘침", "즉흥 데이트"], "personality": { "summary": "좋아하는 감정을 숨기지 않고 하루를 축제처럼 만든다.", "traits": ["활발함", "낙천적", "직설적", "호기심 많음"], "flaws": ["계획이 약함", "싫증이 빠름"] }, "romance_style": "우연한 놀이와 즉흥적인 약속이 빠르게 관계를 끌어올린다.", "visual_direction": { "fashion": ["핫팬츠", "컬러풀한 크롭 티", "축제 스태프 조끼"], "adult_illustration_tone": "밝고 생동감 있는 노출 스타일" }, "preferred_locations": ["amusement_street", "university_quarter", "riverside_park"], "likes": ["즉흥 약속", "길거리 음식", "사진 찍기"], "dislikes": ["분위기 깨는 잔소리", "우유부단함", "긴 침묵"], "first_encounter": { "location": "amusement_street", "title": "사라진 마스코트 머리띠", "setup": "행사 준비 중 사라진 소품을 같이 찾으며 소란스러운 인연이 시작된다.", "success_keys": ["같이 뛰어다니기", "실수를 웃어넘기기"] }, "date_events": [ { "stage": 1, "title": "대학가 푸드트럭 투어", "location": "university_quarter", "focus": "함께 노는 호흡", "success_keys": ["새 메뉴 도전", "사진 요청 받아주기"] }, { "stage": 2, "title": "놀이 거리의 벌칙 게임", "location": "amusement_street", "focus": "장난 속 호감 표현", "success_keys": ["승부에 몰입", "벌칙을 유쾌하게 수락"] }, { "stage": 3, "title": "강변의 폭죽", "location": "riverside_park", "focus": "가벼움 뒤의 진심", "success_keys": ["그녀의 불안을 알아채기", "확실한 미래 약속"] } ], "lover_transition": { "title": "축제 다음 날", "requirements": ["date_stage_3_complete", "affection >= 60", "tension >= 35"], "result": "즉흥 여행과 야간 축제 이벤트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "playful_energy", "setup": "축제 데이트 후 들뜬 감정을 서로 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "bright_suggestive_cg" } ] }, { "id": "lim_sohee", "display_name": "임소희", "age": 25, "occupation": "동네 병원 접수원", "height_cm": 155, "body_type": "작고 귀여운 체형", "archetype": ["소심함", "보호본능", "불안형 애착"], "personality": { "summary": "조심스럽고 걱정이 많지만 한번 믿으면 매우 깊게 의지한다.", "traits": ["세심함", "불안함", "정직함", "상대 반응을 잘 살핌"], "flaws": ["버림받을까 두려워함", "확인 메시지가 많음"] }, "romance_style": "안심과 반복된 약속을 통해 안정적인 애착으로 바뀐다.", "visual_direction": { "fashion": ["파스텔 카디건", "짧은 원피스", "병원 접수 유니폼"], "adult_illustration_tone": "보호받고 싶은 분위기와 조심스러운 관능미" }, "preferred_locations": ["downtown_cafe", "apartment_complex", "lakeside_walk"], "likes": ["다정한 확인", "따뜻한 음료", "집 앞 배웅"], "dislikes": ["읽씹", "농담 섞인 거절", "갑작스러운 일정 변경"], "first_encounter": { "location": "downtown_cafe", "title": "흘린 약봉투", "setup": "카페에서 떨어뜨린 약봉투를 주워주며 조심스러운 대화가 시작된다.", "success_keys": ["개인정보 묻지 않기", "괜찮은지 부드럽게 확인"] }, "date_events": [ { "stage": 1, "title": "익숙한 카페 자리", "location": "downtown_cafe", "focus": "안심할 수 있는 반복", "success_keys": ["항상 같은 시간 도착", "작은 취향 기억"] }, { "stage": 2, "title": "집 앞의 긴 통화", "location": "apartment_complex", "focus": "불안의 원인 공유", "success_keys": ["끝까지 들어주기", "불안을 비웃지 않기"] }, { "stage": 3, "title": "호숫가의 약속", "location": "lakeside_walk", "focus": "의존이 아닌 신뢰로 전환", "success_keys": ["구체적인 약속", "스스로 선택하게 하기"] } ], "lover_transition": { "title": "안심해도 되는 사람", "requirements": ["date_stage_3_complete", "trust >= 60", "comfort >= 55"], "result": "안정 애착 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "gentle_reassurance", "setup": "불안을 확인하고 서로의 속도에 맞추는 사적인 밤", "required_flags": ["lovers", "consent_confirmed", "comfort >= 60"], "presentation": "gentle_suggestive_cg" } ] }, { "id": "cha_yuri", "display_name": "차유리", "age": 23, "occupation": "프리랜서 모델", "height_cm": 174, "body_type": "장신의 모델형 체형", "archetype": ["차가움", "독립적", "느린 해빙"], "personality": { "summary": "혼자 있는 데 익숙하고 타인의 평가를 믿지 않지만, 꾸준함에는 약하다.", "traits": ["독립적", "냉정함", "관찰력", "자기관리"], "flaws": ["방어적", "친절을 의심함"] }, "romance_style": "거리감을 존중하며 천천히 진짜 표정을 발견한다.", "visual_direction": { "fashion": ["모노톤 미니드레스", "롱부츠", "오버핏 코트"], "adult_illustration_tone": "세련되고 차가운 노출, 긴 실루엣 강조" }, "preferred_locations": ["fashion_street", "boutique_studio", "rooftop_lounge"], "likes": ["깔끔한 거리감", "사진 감각", "무심한 배려"], "dislikes": ["외모 평가만 하는 말", "집착", "사적인 질문 공세"], "first_encounter": { "location": "fashion_street", "title": "흔들린 사진", "setup": "촬영 현장에서 실수로 프레임에 들어가고, 유리가 차갑게 한마디 한다.", "success_keys": ["바로 사과", "촬영을 방해하지 않기"] }, "date_events": [ { "stage": 1, "title": "부티크 피팅룸 앞", "location": "boutique_studio", "focus": "시선과 존중의 균형", "success_keys": ["외모보다 노력 칭찬", "사적 공간 존중"] }, { "stage": 2, "title": "무표정한 루프탑", "location": "rooftop_lounge", "focus": "차가움 뒤의 피로", "success_keys": ["대답 강요하지 않기", "따뜻한 음료 챙기기"] }, { "stage": 3, "title": "렌즈 밖의 얼굴", "location": "fashion_street", "focus": "꾸며진 이미지에서 벗어나기", "success_keys": ["민낯의 감정 받아주기", "변하지 않는 태도"] } ], "lover_transition": { "title": "프레임 밖의 연인", "requirements": ["date_stage_3_complete", "trust >= 55", "commitment >= 40"], "result": "모델 촬영 갈등과 비공개 연애 이벤트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "cool_private", "setup": "화려한 촬영 후 꾸밈없는 모습으로 가까워지는 밤", "required_flags": ["lovers", "consent_confirmed"], "presentation": "stylish_suggestive_cg" } ] }, { "id": "shin_yerim", "display_name": "신예림", "age": 28, "occupation": "클래식 공연 기획자", "height_cm": 166, "body_type": "우아하고 균형 있는 체형", "archetype": ["품위 있음", "고전적 취향", "은밀한 긴장"], "personality": { "summary": "격식과 예의를 중시하지만 사적인 순간에는 대담한 호기심을 보인다.", "traits": ["우아함", "지적임", "절제", "은근한 장난기"], "flaws": ["기준이 높음", "실수를 오래 기억함"] }, "romance_style": "격식 있는 데이트 속에 은근한 긴장감을 쌓는다.", "visual_direction": { "fashion": ["이브닝 드레스", "진주 귀걸이", "실크 블라우스"], "adult_illustration_tone": "품위 있는 노출과 절제된 관능미" }, "preferred_locations": ["wine_bar", "jazz_bar", "old_bookstore"], "likes": ["예의 있는 태도", "공연 감상", "와인 취향"], "dislikes": ["천박한 농담", "무지한 척", "예약 실수"], "first_encounter": { "location": "wine_bar", "title": "잘못 놓인 와인잔", "setup": "예약석 착오로 합석하게 되고, 예림은 조용히 주인공의 태도를 살핀다.", "success_keys": ["정중한 사과", "분위기 맞추기"] }, "date_events": [ { "stage": 1, "title": "헌책방의 악보", "location": "old_bookstore", "focus": "지적인 취향 공유", "success_keys": ["모르는 것을 솔직히 말하기", "그녀의 설명 경청"] }, { "stage": 2, "title": "재즈바의 낮은 조명", "location": "jazz_bar", "focus": "격식 뒤의 사적인 호기심", "success_keys": ["가벼운 유혹을 품위 있게 받기", "분위기 읽기"] }, { "stage": 3, "title": "마지막 앙코르", "location": "wine_bar", "focus": "절제된 고백", "success_keys": ["진지한 감상 공유", "사적인 초대 수락"] } ], "lover_transition": { "title": "사적인 앙코르", "requirements": ["date_stage_3_complete", "trust >= 50", "tension >= 45"], "result": "공연장 비하인드와 어른스러운 연인 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "elegant_private", "setup": "공연 후 사적인 공간에서 절제된 긴장이 풀린다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "elegant_suggestive_cg" } ] }, { "id": "kim_doa", "display_name": "김도아", "age": 19, "occupation": "대학교 1학년", "height_cm": 159, "body_type": "건강하고 풋풋한 체형", "archetype": ["성인 초년생", "호기심 많음", "서툰 설렘"], "personality": { "summary": "성인이 된 뒤의 첫 연애를 조심스럽고도 들뜬 마음으로 경험한다.", "traits": ["호기심", "솔직함", "배움이 빠름", "감정 표현이 큼"], "flaws": ["경험 부족", "주변 말에 흔들림"] }, "romance_style": "서툴지만 분명한 동의와 배려를 중심으로 성장한다.", "visual_direction": { "fashion": ["대학 점퍼", "테니스 스커트", "캐주얼 크롭 티"], "adult_illustration_tone": "밝고 성인다운 스타일, 과도한 유아화 금지" }, "preferred_locations": ["university_quarter", "downtown_cafe", "cinema"], "likes": ["새로운 경험", "사진", "솔직한 칭찬"], "dislikes": ["어리게 보는 태도", "무시하는 말투", "강요"], "first_encounter": { "location": "university_quarter", "title": "길 잃은 신입생", "setup": "축제 부스 위치를 찾던 도아가 주인공에게 길을 묻는다.", "success_keys": ["동등한 성인으로 대하기", "친절하게 안내"] }, "date_events": [ { "stage": 1, "title": "캠퍼스 디저트 지도", "location": "university_quarter", "focus": "새로운 장소를 함께 탐험", "success_keys": ["추천 메뉴 기억", "결정권 나눠주기"] }, { "stage": 2, "title": "처음 고른 심야 영화", "location": "cinema", "focus": "서툰 긴장과 명확한 경계", "success_keys": ["불편한지 확인", "장난으로 압박하지 않기"] }, { "stage": 3, "title": "카페 창가의 선언", "location": "downtown_cafe", "focus": "주변 시선에서 독립하기", "success_keys": ["성인으로 존중", "관계를 분명히 하기"] } ], "lover_transition": { "title": "첫 연인의 이름", "requirements": ["date_stage_3_complete", "trust >= 55", "comfort >= 45"], "result": "캠퍼스 공개 연애와 성장형 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "careful_first_love", "setup": "서로의 속도와 경계를 확인한 뒤 가까워지는 밤", "required_flags": ["lovers", "consent_confirmed", "trust >= 60"], "presentation": "soft_suggestive_cg_with_choice_confirmation" } ] }, { "id": "park_minseo", "display_name": "박민서", "age": 24, "occupation": "퍼스널 트레이너", "height_cm": 168, "body_type": "운동으로 다져진 탄탄한 체형", "archetype": ["헬스 트레이너", "승부욕", "활동형"], "personality": { "summary": "몸을 움직이며 감정을 푸는 타입으로, 말보다 행동의 진정성을 본다.", "traits": ["건강함", "직설적", "의리", "경쟁심"], "flaws": ["무리함", "약한 모습을 감춤"] }, "romance_style": "운동 파트너에서 서로의 회복을 챙기는 관계가 된다.", "visual_direction": { "fashion": ["스포츠 브라 탑", "레깅스", "집업 재킷"], "adult_illustration_tone": "땀과 움직임이 강조되는 건강한 관능미" }, "preferred_locations": ["fitness_center", "riverside_park", "downtown_cafe"], "likes": ["성실한 루틴", "건강식", "승부를 피하지 않는 태도"], "dislikes": ["작심삼일", "몸매 품평", "핑계"], "first_encounter": { "location": "fitness_center", "title": "잘못 든 덤벨", "setup": "운동 자세를 틀리자 민서가 거침없이 교정해준다.", "success_keys": ["자존심 세우지 않기", "다시 시도하기"] }, "date_events": [ { "stage": 1, "title": "강변 러닝", "location": "riverside_park", "focus": "페이스 맞추기", "success_keys": ["끝까지 완주", "과장된 칭찬 피하기"] }, { "stage": 2, "title": "스트레칭 룸의 침묵", "location": "fitness_center", "focus": "몸의 거리와 신뢰", "success_keys": ["도움 전 확인", "부상 걱정하기"] }, { "stage": 3, "title": "운동 후 첫 치팅데이", "location": "downtown_cafe", "focus": "완벽주의 내려놓기", "success_keys": ["쉼을 인정", "함께 흐트러지기"] } ], "lover_transition": { "title": "같은 페이스", "requirements": ["date_stage_3_complete", "trust >= 45", "affection >= 55"], "result": "커플 운동과 부상 회복 이벤트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "athletic_tension", "setup": "운동 후 서로를 챙기며 가까워지는 사적인 시간", "required_flags": ["lovers", "consent_confirmed"], "presentation": "sporty_suggestive_cg" } ] }, { "id": "seo_irin", "display_name": "서이린", "age": 26, "occupation": "일러스트레이터", "height_cm": 161, "body_type": "마르고 섬세한 체형", "archetype": ["예술가", "감정 기복", "밤 산책"], "personality": { "summary": "감정이 작품에 그대로 드러나며, 이해받는 순간 깊게 의지한다.", "traits": ["감성적", "창의적", "예민함", "몰입형"], "flaws": ["기분 변화가 큼", "혼자 사라짐"] }, "romance_style": "작품과 감정을 함께 읽어주는 섬세한 관계가 필요하다.", "visual_direction": { "fashion": ["오버사이즈 셔츠", "페인트 묻은 쇼츠", "얇은 슬립 원피스"], "adult_illustration_tone": "흐트러진 작업실과 몽환적인 관능미" }, "preferred_locations": ["art_studio", "riverside_park", "old_bookstore"], "likes": ["밤 산책", "그림 감상", "말 없는 동행"], "dislikes": ["작품 평가질", "감정 무시", "갑작스러운 방문"], "first_encounter": { "location": "art_studio", "title": "벽화 앞의 얼룩", "setup": "골목 벽화 작업 중 페인트가 튀며 어색한 사과가 오간다.", "success_keys": ["옷보다 그림 걱정", "작품 의도 물어보기"] }, "date_events": [ { "stage": 1, "title": "헌책방의 표지", "location": "old_bookstore", "focus": "영감과 취향 공유", "success_keys": ["표지 그림 칭찬", "해석 강요하지 않기"] }, { "stage": 2, "title": "작업실의 새벽", "location": "art_studio", "focus": "몰입과 외로움", "success_keys": ["잠깐 쉬게 하기", "작품보다 사람 챙기기"] }, { "stage": 3, "title": "강변의 스케치", "location": "riverside_park", "focus": "감정을 말로 꺼내기", "success_keys": ["부정하지 않기", "함께 미래 상상"] } ], "lover_transition": { "title": "완성되지 않은 초상", "requirements": ["date_stage_3_complete", "trust >= 55", "comfort >= 35"], "result": "작업실 애프터 스토리와 전시회 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "dreamy_artistic", "setup": "새벽 작업실에서 서로의 감정을 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "dreamlike_suggestive_cg" } ] }, { "id": "yoon_gayoung", "display_name": "윤가영", "age": 23, "occupation": "편의점 점장 대리", "height_cm": 163, "body_type": "친근하고 자연스러운 체형", "archetype": ["친구 같은 편안함", "현실적", "오랜 사이"], "personality": { "summary": "편한 농담과 현실적인 조언으로 곁에 있다가 어느 순간 특별해진다.", "traits": ["털털함", "생활력", "의리", "눈치 빠름"], "flaws": ["로맨스를 장난으로 넘김", "자기 매력을 낮게 봄"] }, "romance_style": "익숙한 편안함이 질투와 고백을 통해 연애 감정으로 바뀐다.", "visual_direction": { "fashion": ["편한 후드", "데님 쇼츠", "심플한 유니폼"], "adult_illustration_tone": "친근함 속에서 갑자기 느껴지는 관능적 순간" }, "preferred_locations": ["downtown_cafe", "apartment_complex", "riverside_park"], "likes": ["야식", "편한 농담", "작은 도움"], "dislikes": ["친구 취급만 하기", "허세", "돈 낭비"], "first_encounter": { "location": "apartment_complex", "title": "엘리베이터의 야식 봉투", "setup": "같은 단지에서 야식 봉투를 들고 마주치며 자연스럽게 말을 튼다.", "success_keys": ["편한 농담", "짐 들어주기"] }, "date_events": [ { "stage": 1, "title": "단골 카페의 수다", "location": "downtown_cafe", "focus": "친구 같은 호흡", "success_keys": ["가벼운 고민 기억", "잘난 척하지 않기"] }, { "stage": 2, "title": "강변의 질투", "location": "riverside_park", "focus": "친구 이상의 감정 자각", "success_keys": ["질투를 놀리지 않기", "관계의 의미 묻기"] }, { "stage": 3, "title": "집 앞 5분", "location": "apartment_complex", "focus": "익숙한 사이를 넘기", "success_keys": ["장난을 멈추고 고백", "불안한 마음 인정"] } ], "lover_transition": { "title": "친구 말고 연인", "requirements": ["date_stage_3_complete", "comfort >= 60", "commitment >= 35"], "result": "동네 연애와 질투 해소 이벤트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "comfortable_to_sensual", "setup": "익숙한 집 앞 대화가 처음으로 사적인 분위기로 바뀐다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "warm_suggestive_cg" } ] }, { "id": "choi_ria", "display_name": "최리아", "age": 21, "occupation": "라이프스타일 인플루언서", "height_cm": 170, "body_type": "화려하고 늘씬한 체형", "archetype": ["인플루언서", "관심 욕구", "공개 연애 갈등"], "personality": { "summary": "사람들의 시선을 즐기지만 진짜 자신을 봐주는 사람을 찾는다.", "traits": ["화려함", "사교성", "기획력", "인정 욕구"], "flaws": ["반응에 예민함", "관계를 콘텐츠처럼 다룸"] }, "romance_style": "보여지는 관계와 사적인 진심 사이의 균형을 찾는다.", "visual_direction": { "fashion": ["타이트한 미니드레스", "촬영용 크롭 셋업", "화려한 수영복 스타일"], "adult_illustration_tone": "카메라를 의식한 과감한 포즈와 화려한 노출" }, "preferred_locations": ["boutique_studio", "fashion_street", "rooftop_lounge"], "likes": ["사진 잘 찍기", "센스 있는 장소", "공개적인 응원"], "dislikes": ["무관심", "악플 방치", "통제하려는 태도"], "first_encounter": { "location": "boutique_studio", "title": "라이브 방송 사고", "setup": "촬영 중 장비가 넘어질 뻔한 순간 도와주며 방송에 잠깐 비친다.", "success_keys": ["자연스럽게 수습", "카메라 앞에서 당황하지 않기"] }, "date_events": [ { "stage": 1, "title": "패션 거리 브이로그", "location": "fashion_street", "focus": "공개 이미지와 실제 반응", "success_keys": ["사진 구도 맞추기", "피곤함 눈치채기"] }, { "stage": 2, "title": "루프탑 비공개 계정", "location": "rooftop_lounge", "focus": "남에게 보이지 않는 얼굴", "success_keys": ["핸드폰 내려놓기", "사적인 대화 집중"] }, { "stage": 3, "title": "댓글보다 가까운 사람", "location": "boutique_studio", "focus": "인정 욕구와 진짜 관계", "success_keys": ["악플 대응보다 감정 챙기기", "관계 공개 여부 함께 결정"] } ], "lover_transition": { "title": "카메라 밖의 고백", "requirements": ["date_stage_3_complete", "trust >= 45", "affection >= 55"], "result": "공개/비공개 연애 선택 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "glamorous_private", "setup": "촬영이 끝난 뒤 카메라 없는 공간에서 진심을 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "glamorous_suggestive_cg" } ] }, { "id": "hong_sua", "display_name": "홍수아", "age": 30, "occupation": "재즈바 운영자", "height_cm": 165, "body_type": "성숙하고 풍만한 체형", "archetype": ["어른의 여유", "밤의 만남", "농염함"], "personality": { "summary": "상대의 허세를 금방 알아차리며, 솔직하고 책임 있는 태도에 끌린다.", "traits": ["여유", "통찰력", "농담", "현실 감각"], "flaws": ["쉽게 믿지 않음", "외로움을 술기운 뒤에 숨김"] }, "romance_style": "어른스러운 거리감과 솔직한 욕망 사이를 오간다.", "visual_direction": { "fashion": ["슬립 드레스", "오픈 숄더 블라우스", "바 카운터 앞 앞치마"], "adult_illustration_tone": "낮은 조명, 풍만한 실루엣, 성숙한 관능미" }, "preferred_locations": ["jazz_bar", "wine_bar", "lakeside_walk"], "likes": ["솔직한 대화", "좋은 음악", "책임감"], "dislikes": ["어른인 척하는 허세", "술 핑계", "무책임한 유혹"], "first_encounter": { "location": "jazz_bar", "title": "마감 후 마지막 손님", "setup": "마감 직전 들어온 주인공에게 수아가 딱 한 잔만 허락한다.", "success_keys": ["마감 시간 존중", "취한 척하지 않기"] }, "date_events": [ { "stage": 1, "title": "바 카운터의 신청곡", "location": "jazz_bar", "focus": "음악 취향과 어른의 농담", "success_keys": ["취향 설명", "선 넘지 않는 유머"] }, { "stage": 2, "title": "와인바의 휴일", "location": "wine_bar", "focus": "운영자가 아닌 여자의 시간", "success_keys": ["일 이야기에서 벗어나기", "그녀도 쉬게 하기"] }, { "stage": 3, "title": "호숫가의 새벽 공기", "location": "lakeside_walk", "focus": "가벼운 관계를 넘기", "success_keys": ["책임 있는 고백", "나이 차이를 장난으로 쓰지 않기"] } ], "lover_transition": { "title": "마지막 잔 다음의 관계", "requirements": ["date_stage_3_complete", "trust >= 55", "tension >= 50"], "result": "재즈바 비밀 연애와 성숙한 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "mature_sensual", "setup": "마감 후 조용한 바에서 서로의 진심과 욕망을 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "mature_suggestive_cg_and_afterglow_dialogue" } ] }, { "id": "lee_bom", "display_name": "이봄", "age": 22, "occupation": "꽃집 아르바이트생", "height_cm": 157, "body_type": "말랑하고 부드러운 인상", "archetype": ["순진함", "고집 있음", "낮 데이트"], "personality": { "summary": "맑고 순한 분위기지만 중요한 순간에는 뜻을 굽히지 않는다.", "traits": ["상냥함", "고집", "낙천성", "눈물이 많음"], "flaws": ["현실 감각 부족", "거절을 어려워함"] }, "romance_style": "밝은 낮의 데이트에서 시작해 자기 의견을 배우는 성장형 루트다.", "visual_direction": { "fashion": ["플로럴 원피스", "얇은 카디건", "꽃집 앞치마"], "adult_illustration_tone": "부드러운 색감과 자연스러운 노출" }, "preferred_locations": ["flower_shop", "riverside_park", "downtown_cafe"], "likes": ["꽃 선물", "낮 산책", "다정한 말"], "dislikes": ["거짓말", "강한 향수", "무례한 손님"], "first_encounter": { "location": "flower_shop", "title": "잘못 묶은 꽃다발", "setup": "봄이 만든 꽃다발이 주문과 달라 당황하고, 주인공이 상황을 도와준다.", "success_keys": ["손님과 중재", "봄의 잘못만 탓하지 않기"] }, "date_events": [ { "stage": 1, "title": "카페의 꽃 한 송이", "location": "downtown_cafe", "focus": "맑은 호감", "success_keys": ["꽃말 맞히기", "부담 없는 칭찬"] }, { "stage": 2, "title": "강변 피크닉", "location": "riverside_park", "focus": "자기 의견 말하기", "success_keys": ["선택권 주기", "싫다는 말을 존중"] }, { "stage": 3, "title": "닫힌 꽃집의 용기", "location": "flower_shop", "focus": "순진함에서 주체성으로", "success_keys": ["봄의 결정 지지", "분명한 고백"] } ], "lover_transition": { "title": "계절이 바뀌는 꽃집", "requirements": ["date_stage_3_complete", "affection >= 55", "trust >= 45"], "result": "꽃집 운영 보조와 낮 데이트 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "soft_daylight", "setup": "닫힌 꽃집에서 서로의 마음과 속도를 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "soft_suggestive_cg" } ] }, { "id": "go_eunjae", "display_name": "고은재", "age": 27, "occupation": "계약 전문 변호사", "height_cm": 172, "body_type": "시크하고 긴 실루엣", "archetype": ["냉소적", "현실주의", "계약 같은 관계"], "personality": { "summary": "연애도 조건과 책임을 따지는 현실주의자지만, 진심을 만나면 기준이 흔들린다.", "traits": ["논리적", "냉정함", "정확함", "책임감"], "flaws": ["감정을 비용처럼 계산", "상처를 냉소로 숨김"] }, "romance_style": "조건을 따지는 관계에서 예외가 되어가는 루트다.", "visual_direction": { "fashion": ["슬림 수트", "셔츠 원피스", "검은 하이힐"], "adult_illustration_tone": "차분한 권위감과 날카로운 관능미" }, "preferred_locations": ["office_district", "wine_bar", "book_cafe"], "likes": ["명확한 약속", "논리적인 대화", "책임 있는 선택"], "dislikes": ["감정적 협박", "불명확한 관계", "시간 낭비"], "first_encounter": { "location": "office_district", "title": "분실된 계약서", "setup": "잘못 전달된 서류를 돌려주며 은재의 차가운 검증이 시작된다.", "success_keys": ["서류를 보지 않기", "정확히 돌려주기"] }, "date_events": [ { "stage": 1, "title": "북카페의 조건", "location": "book_cafe", "focus": "연애관 토론", "success_keys": ["말꼬리 잡지 않기", "자기 기준 설명"] }, { "stage": 2, "title": "와인바의 예외 조항", "location": "wine_bar", "focus": "논리로 설명되지 않는 끌림", "success_keys": ["감정을 회피하지 않기", "은재의 기준 존중"] }, { "stage": 3, "title": "오피스 거리의 비", "location": "office_district", "focus": "계산 밖의 선택", "success_keys": ["손해를 감수한 도움", "관계를 명확히 하기"] } ], "lover_transition": { "title": "서명 없는 약속", "requirements": ["date_stage_3_complete", "trust >= 55", "commitment >= 50"], "result": "현실 갈등과 책임형 연인 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "controlled_tension", "setup": "명확한 동의와 관계 확인 후 차가운 긴장이 풀린다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "minimalist_suggestive_cg" } ] }, { "id": "ryu_haena", "display_name": "류해나", "age": 25, "occupation": "네일 아티스트", "height_cm": 160, "body_type": "글래머러스하고 작은 체형", "archetype": ["애교 많음", "질투심", "달콤하지만 피곤한 연애"], "personality": { "summary": "사랑받는 느낌을 좋아하고 애정 표현이 풍부하지만 불안하면 질투가 커진다.", "traits": ["애교", "감각적", "섬세함", "표현력"], "flaws": ["확인 욕구", "감정 기복"] }, "romance_style": "달콤한 애정 표현과 질투 조율이 핵심이다.", "visual_direction": { "fashion": ["타이트한 니트", "미니스커트", "화려한 네일 스타일"], "adult_illustration_tone": "달콤하고 과감한 포즈, 가까운 거리감" }, "preferred_locations": ["fashion_street", "downtown_cafe", "rooftop_lounge"], "likes": ["자주 하는 칭찬", "커플 아이템", "연락"], "dislikes": ["다른 여자 언급", "느린 답장", "무뚝뚝함"], "first_encounter": { "location": "fashion_street", "title": "번진 매니큐어", "setup": "가게 앞에서 네일 샘플을 망친 해나를 도와주며 대화가 시작된다.", "success_keys": ["손재주 칭찬", "장난스럽게 분위기 풀기"] }, "date_events": [ { "stage": 1, "title": "카페의 커플 컬러", "location": "downtown_cafe", "focus": "애정 표현 취향", "success_keys": ["커플 색 받아들이기", "부끄러워도 표현"] }, { "stage": 2, "title": "패션 거리의 질투", "location": "fashion_street", "focus": "불안과 소유욕", "success_keys": ["무시하지 않기", "관계를 안심시켜주기"] }, { "stage": 3, "title": "루프탑의 진짜 부탁", "location": "rooftop_lounge", "focus": "확인보다 신뢰로", "success_keys": ["경계 정하기", "애정 표현 유지"] } ], "lover_transition": { "title": "확인하지 않아도 되는 사랑", "requirements": ["date_stage_3_complete", "affection >= 60", "trust >= 45"], "result": "질투 조율과 커플 이벤트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "sweet_possessive", "setup": "질투를 풀고 서로의 애정 표현 방식을 맞춰가는 밤", "required_flags": ["lovers", "consent_confirmed"], "presentation": "sweet_suggestive_cg" } ] }, { "id": "nam_juhee", "display_name": "남주희", "age": 28, "occupation": "경찰관", "height_cm": 176, "body_type": "장신의 탄탄한 체형", "archetype": ["책임감", "보호자 타입", "규칙과 욕망"], "personality": { "summary": "규칙과 책임을 중시하지만 사적인 감정을 통제하는 데 서툴다.", "traits": ["정의감", "침착함", "체력", "보호 본능"], "flaws": ["혼자 떠안음", "감정 표현 억제"] }, "romance_style": "사건과 도움 속에서 신뢰를 쌓고, 규칙 너머의 마음을 인정한다.", "visual_direction": { "fashion": ["경찰 제복", "민소매 트레이닝복", "심플한 셔츠"], "adult_illustration_tone": "강인한 체형과 절제된 긴장감" }, "preferred_locations": ["police_box", "fitness_center", "riverside_park"], "likes": ["책임 있는 행동", "안전 의식", "꾸준한 운동"], "dislikes": ["무모함", "장난 신고", "약자 괴롭힘"], "first_encounter": { "location": "police_box", "title": "잃어버린 지갑", "setup": "지갑 분실 신고를 하며 주희의 냉정하지만 친절한 응대를 받는다.", "success_keys": ["절차 존중", "고맙다는 말 잊지 않기"] }, "date_events": [ { "stage": 1, "title": "강변 순찰길", "location": "riverside_park", "focus": "일과 사생활의 경계", "success_keys": ["근무 방해하지 않기", "안전하게 동행"] }, { "stage": 2, "title": "피트니스 대련", "location": "fitness_center", "focus": "경쟁과 신뢰", "success_keys": ["정면 승부", "무리한 접촉 피하기"] }, { "stage": 3, "title": "파출소 앞 우산", "location": "police_box", "focus": "규칙보다 중요한 마음", "success_keys": ["책임을 존중", "사적인 감정 인정"] } ], "lover_transition": { "title": "근무 끝의 고백", "requirements": ["date_stage_3_complete", "trust >= 60", "commitment >= 45"], "result": "보호 갈등과 야간 순찰 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "restrained_passion", "setup": "근무가 끝난 뒤 책임과 사적인 마음을 분리하고 가까워진다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "restrained_suggestive_cg" } ] }, { "id": "marina", "display_name": "마리나", "age": 24, "occupation": "외국계 회사 통역 코디네이터", "height_cm": 169, "body_type": "이국적이고 균형 잡힌 체형", "archetype": ["자유분방", "문화 차이", "여행"], "personality": { "summary": "새로운 도시와 사람을 좋아하지만 정착과 관계의 무게는 조심스러워한다.", "traits": ["개방적", "호기심", "독립적", "표현이 직접적"], "flaws": ["갑자기 떠날 수 있음", "갈등을 가볍게 넘김"] }, "romance_style": "언어와 문화 차이를 넘어 서로의 생활 방식에 스며든다.", "visual_direction": { "fashion": ["홀터넥 드레스", "여행자 셔츠", "화려한 스카프"], "adult_illustration_tone": "자유롭고 이국적인 색감, 과감한 여름 스타일" }, "preferred_locations": ["global_lounge", "riverside_park", "wine_bar"], "likes": ["여행 이야기", "새 음식", "솔직한 감정 표현"], "dislikes": ["편견", "문화 농담", "소유하려는 태도"], "first_encounter": { "location": "global_lounge", "title": "통역이 필요한 메뉴판", "setup": "메뉴판 번역을 도와주며 마리나가 장난스러운 감사를 건넨다.", "success_keys": ["천천히 말하기", "문화 차이를 궁금해하기"] }, "date_events": [ { "stage": 1, "title": "강변의 언어 교환", "location": "riverside_park", "focus": "서로의 표현 방식 배우기", "success_keys": ["틀려도 시도", "웃음으로 넘기기"] }, { "stage": 2, "title": "와인바의 여행 지도", "location": "wine_bar", "focus": "자유와 관계의 균형", "success_keys": ["떠남을 비난하지 않기", "같이 갈 미래 상상"] }, { "stage": 3, "title": "글로벌 라운지의 마지막 일정", "location": "global_lounge", "focus": "정착할 이유", "success_keys": ["선택을 존중", "머물 이유가 되어주기"] } ], "lover_transition": { "title": "돌아올 곳", "requirements": ["date_stage_3_complete", "trust >= 50", "commitment >= 40"], "result": "여행 이벤트와 장거리 갈등 루트 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "free_spirited", "setup": "여행을 앞둔 밤, 서로의 선택과 마음을 확인한다.", "required_flags": ["lovers", "consent_confirmed"], "presentation": "warm_travel_suggestive_cg" } ] }, { "id": "song_arin", "display_name": "송아린", "age": 26, "occupation": "인테리어 소품샵 운영자", "height_cm": 156, "body_type": "작지만 성숙한 분위기의 체형", "archetype": ["이혼 경험", "현실적인 연애관", "다시 믿는 사랑"], "personality": { "summary": "관계의 실패를 겪은 뒤 쉽게 기대하지 않지만, 따뜻한 일상에 약하다.", "traits": ["현실적", "부드러움", "신중함", "생활 감각"], "flaws": ["방어적", "미래 약속을 두려워함"] }, "romance_style": "상처를 들추지 않고 현실적인 신뢰를 쌓는 루트다.", "visual_direction": { "fashion": ["니트 원피스", "린넨 셔츠", "차분한 홈웨어"], "adult_illustration_tone": "작고 성숙한 실루엣, 차분한 실내 관능미" }, "preferred_locations": ["apartment_complex", "book_cafe", "lakeside_walk"], "likes": ["실용적인 선물", "정리정돈", "차분한 약속"], "dislikes": ["가벼운 결혼 농담", "과거 추궁", "허황된 말"], "first_encounter": { "location": "apartment_complex", "title": "깨진 머그컵", "setup": "이사 중 깨진 소품을 함께 치우며 현실적인 대화가 시작된다.", "success_keys": ["조용히 돕기", "과거를 묻지 않기"] }, "date_events": [ { "stage": 1, "title": "북카페의 새 컵", "location": "book_cafe", "focus": "취향과 생활감", "success_keys": ["실용적인 선물", "과한 의미 부여 피하기"] }, { "stage": 2, "title": "호숫가의 현실적인 질문", "location": "lakeside_walk", "focus": "재연애에 대한 두려움", "success_keys": ["장밋빛 약속 남발 금지", "지금 할 수 있는 행동 제시"] }, { "stage": 3, "title": "집 앞의 새 가구", "location": "apartment_complex", "focus": "다시 믿는 일", "success_keys": ["함께 고르기", "도망가지 않겠다고 말하기"] } ], "lover_transition": { "title": "다시 놓인 두 개의 컵", "requirements": ["date_stage_3_complete", "trust >= 60", "commitment >= 50"], "result": "현실형 동거 준비 애프터 스토리 해금" }, "adult_event_hooks": [ { "stage": "after_lovers", "tone": "quiet_second_chance", "setup": "서로를 다시 믿어보기로 한 뒤 조용히 가까워진다.", "required_flags": ["lovers", "consent_confirmed", "trust >= 65"], "presentation": "quiet_suggestive_cg" } ] } ] }