Files
Dansori_Characters/Noeul_Profile/08_Roadmap/App_Integration.md
T
2026-07-04 10:34:46 +09:00

2.2 KiB

앱 통합 (App Integration)

노을 반응 시스템을 DansoriEQ(및 향후 Dansori 앱) 에 탑재하는 방식.

런타임 호스트 두 선택지 (O1 — 결정 예정)

옵션 방식 장점 단점
A. WPF-C# 이식 리그·시퀀서를 C#로 포팅, WPF 캔버스에 렌더 네이티브·경량·기존 AlphaTools 재활용 런타임을 두 벌(웹/C#) 유지
B. WebView2 임베드 웹 런타임(뷰어 진화형)을 WPF WebView2에 임베드 런타임 1벌(데이터·코드 공유) WebView2 의존·상호작용 브리지 필요

프로토타입은 웹으로 계속. Phase 3에서 A/B 결정. 어느 쪽이든 데이터(rig.json·클립·reactions.json·이미지)는 그대로 재사용.

트리거 API (앱 ↔ 마스코트)

Mascot.SetIdle("dance_idle")          // 배경 기본 루프 지정
Mascot.React("success")               // 상황키 → reactions.json → 클립 재생 → 끝나면 return(idle)
Mascot.React("error")
Mascot.Say("환영합니다", "smile")      // 임시 대사(mouth+face)만, 포즈 유지
Mascot.Stop() / Mascot.SetVisible(b)
  • 앱 이벤트(버튼 실패/성공, 화면 진입 등)에서 상황키만 던진다. 표현 방법은 마스코트가 데이터로 결정.

리소스 번들

  • 필요한 PNG만 앱 리소스로 복사(전부 아님): 리그 16파츠 + 사용하는 표정 세트 + 사용하는 baked 포즈 + hairmask.
  • 데이터 파일(rig.json·클립·reactions.json)은 소스로 번들.

좌표·정렬 규약

  • 스테이지 캔버스 기준(현재 리그 520×900). 앱 배치 시 전체 스케일/위치만 트랜스폼.
  • 파츠 앵커 정렬은 기존 Character_Builder/AlphaTools.cs(알파 기반 목/어깨 검출)와 동일 알고리즘 재활용.
  • 색 변형은 런타임 hairmask hue-shift(이미지 추가 없음).

배경 마스코트 연동(DansoriEQ 예시)

  • 메인화면 배경 노을를 통짜 → 리그로 교체(부유+말하기 동기화는 기존 MainWindow.SetBgMascotTalking 훅 활용).
  • 참고: ../../HANDOFF.md, DansoriEQ docs/HANDOFF.md §8.

포터블 원칙

  • 절대경로 금지. Noeul_Profile은 통째 이동 가능하게 상대경로만 사용.