기능 명세 보완본

본 문서는 원본 기능명세.md를 직접 수정하지 않고, 기존 내용을 바탕으로 누락된 기능 정의, 데이터 요구사항, 화면 상태, 예외 처리, 권한 처리, 반복 사용 시나리오를 보완한 새 문서이다. 문서 전체의 어투는 ~한다, ~해야 한다 형식으로 통일한다.

1. 문서 목적

이 문서는 생활 관리형 육성 앱의 1차 구현 범위를 정의한다. 대상 기능은 온보딩, 첫 실행 튜토리얼, 홈 화면, 대화, 프로필, 상점, 가구 배치, HealthKit 동기화, 알림, 위젯, 설정 및 데이터 관리이다.

본 문서는 기획, 개발, 아트, 시나리오, QA가 같은 기준으로 기능을 이해할 수 있도록 작성한다. 세부 수치, 과금 정책, 최종 명칭, 캐릭터 공식명은 추후 확정될 수 있다.

2. 보완된 주요 항목

  • 원본의 세계관 및 튜토리얼 흐름을 유지하되, 기능별 목적과 진입 조건을 명확히 정의한다.
  • 유저, 생명체, 대화, 성장도, 알림, 가구, HealthKit, 위젯에 필요한 데이터 항목을 추가한다.
  • 첫 실행, 튜토리얼 중단, 재진입, 권한 거부, 데이터 없음, 알림 실패, 위젯 갱신 실패 등 예외 상태를 추가한다.
  • 대화 내용을 성장도, 기억, 알림, 캐릭터 반응으로 변환하는 규칙을 추가한다.
  • HealthKit 연동 시 필요한 동의, 데이터 범위, 동기화 주기, 권한 철회 처리를 추가한다.
  • 위젯의 표시 조건, 갱신 조건, 터치 동작, 빈 상태를 추가한다.
  • 상점과 가구 배치의 구매 상태, 배치 상태, 회전, 수납, 보유 수량 처리 방식을 추가한다.
  • 계정, 백업, 데이터 삭제, 문의, 개인정보 관련 메뉴를 정리한다.

3. 프로젝트 컨셉

3.1 핵심 컨셉

본 프로젝트는 피곤에 쩌든 대학원생이 신비한 링크 생명체의 보호자가 되어, 자신의 생활 습관과 건강 상태를 바탕으로 생명체를 성장시키는 육성 및 생활 관리형 게임이다.

유저는 생명체를 일방적으로 키우는 것이 아니라, 생명체와 함께 생활 패턴을 만들어간다. 생명체는 유저의 수면, 식습관, 활동량, 대화, 감정 상태를 학습하며 성장한다. 성장 과정에서 생명체는 단순한 관찰 대상에서 유저를 챙겨주는 동반자로 변화한다.

3.2 주인공

주인공은 과로와 피로에 찌든 대학원생이다. 명확한 외형을 강하게 부여하지 않고, 실루엣 또는 저디테일 아바타로 표현한다. 이를 통해 유저가 자기 자신을 투영할 수 있도록 한다.

주인공은 초반에는 수동적으로 과제를 떠맡는 인물이지만, 생명체와의 링크를 통해 자신의 생활 습관을 돌아보고 조금씩 변화한다.

3.3 링크 생명체

링크 생명체는 인간과 유사한 외형을 지녔지만 인간은 아니다. 이들은 지성을 가지고 있으며, 인간의 대화를 어느 정도 모방하고 학습할 수 있다. 머리 위에 솟은 링크 케이블이 가장 큰 외형적 특징이다.

링크 생명체는 독립적으로 성장할 수 없다. 반드시 인간과 링크 케이블을 통해 연결되어야 성장한다. 링크한 인간의 생활 습관, 건강 상태, 활동량, 수면, 식습관, 감정 상태, 대화 패턴이 성장에 영향을 준다.

3.4 교수 캐릭터

초기 컨셉에서 교수는 튜토리얼 안내자 역할을 맡는다. 교수는 신비한 생명체를 발견한 연구자이며, 주인공에게 세 종류의 생명체 중 하나를 보호하고 연구 관찰하는 과제를 맡긴다.

교수는 피곤에 찌든 연구자 느낌을 가진다. 엄격하지만 모르는 부분은 자세히 설명해주고, 유일한 대학원생인 주인공을 여러모로 챙긴다. 후반에는 주인공이 선택하지 않은 생명체 중 하나를 직접 키우며 점차 건강해진 모습을 보인다.

교수의 외형은 갈색 머리, 엉클어진 포니테일, 다크서클, 연구실 가운, 슬리퍼 차림으로 설정한다. 성별은 여성으로 설정하며, 음침하지만 귀여운 연구자 분위기를 지향한다.

3.5 배경 공간

주요 배경은 대학생 자취방 느낌의 원룸이다. 기본 방은 책상, 컴퓨터, 책장, 소파 침대 등 최소한의 가구로 구성한다. 방은 홈 화면의 기본 배경이 되며, 가구 구매와 배치를 통해 커스터마이징할 수 있다.

가구 커스터마이징은 BM 요소로 확장할 수 있다. 일부 가구는 단순 장식이 아니라 생명체의 성장, 능력 각성, 알림 기능, 대화 이벤트에 영향을 줄 수 있다.

3.6 비주얼 방향

비주얼은 2D/SD 일러스트를 지향한다. 3D 렌더링 느낌을 줄이고, 매트한 2D 채색, 따뜻한 갈색 선, 둥글고 말랑한 SD 비율, 뽀얀 볼터치, 단순한 면채색, 손그림 같은 스티커 및 이모티콘 감성을 사용한다.

캐릭터는 과도하게 정교하거나 광택이 강한 모바일 게임풍보다, 납작하고 따뜻한 손그림 느낌을 우선한다.

4. 캐릭터 정의

4.1 생명체 1번

생명체 1번은 활동적이고 산책 나가는 것을 좋아하는 캐릭터이다. 열혈캐에 가까운 성격이며, 건강을 걱정해서 산책을 요구하기보다는 야외 활동 자체를 좋아해서 주인공과 함께 나가고 싶어 한다.

성체 기준 외형은 분홍 머리, 갈색 눈, 단발, 반바지와 자켓, 살짝 날카로운 눈매, 해 모양 머리 장식으로 구성한다. 성격은 밝고 적극적이며, 유저에게 직접적으로 행동을 권유한다.

4.2 생명체 2번

생명체 2번은 활동적인 것을 좋아하지 않고 약간 소심한 캐릭터이다. 걱정이 많아 주인공이 건강하지 않은 생활 패턴을 보이면 많이 걱정한다. 산책을 강하게 조르기보다는 “무슨 일 있나요?”처럼 조심스럽게 묻는다.

성체 기준 외형은 하얀 머리, 빨간 눈, 스트레이트 장발, 약간 처진 눈, 원피스와 긴 바지, 안에 입는 상의가 겹쳐진 복장, 달 모양 머리 장식으로 구성한다.

4.3 생명체 3번

생명체 3번은 잔소리를 많이 하는 캐릭터이다. 식습관, 수면 패턴, 걸음 수 등 여러 영역에서 유저에게 태클을 건다. 단순히 불평하는 것이 아니라, 잔소리 안에 실질적인 조언과 팁이 들어 있다.

성체 기준 외형은 초록 머리, 노란 눈, 풍성한 트윈테일, 살짝 표독한 표정, 무릎 길이의 갈색 스커트, 흰색 블라우스, 별 모양 머리 장식으로 구성한다.

4.4 성장 단계별 발화 수준

성장 단계 발화 수준 기능적 역할 예시
기본 단계 기초적인 의사 표현 감정, 욕구, 단순 반응을 표현한다. “기분 좋았어!”, “산책 나가자.”
1차 진화 기초 리마인더와 감정 표현 반복 행동을 기억하고 기대, 서운함, 걱정을 표현한다. “며칠째 산책 안 했어. 오늘은 갈 거지?”
2차 진화 복합 감정 표현과 조언 유저의 생활 패턴을 해석하고 이유를 묻거나 조언한다. “꾸준히 산책하고 있어서 좋은 습관이 만들어지고 있어요. 그런데 오늘은 나가지 않은 것 같은데 무슨 일이에요?”

5. 공통 데이터 요구사항

5.1 유저 데이터

앱은 온보딩 과정에서 다음 정보를 저장한다.

항목 설명 필수 여부
유저 식별자 내부 저장 및 계정 연동에 사용하는 고유값이다. 필수
유저 이름 스토리와 대화에서 사용한다. 필수
생년월일 캐릭터 대화와 일부 이벤트 조건에 사용할 수 있다. 선택 또는 필수 여부 추후 확정
성별 스토리 호칭 또는 대화 톤에 사용할 수 있다. 선택 또는 필수 여부 추후 확정
최초 실행 일시 첫 실행과 복귀 보상 판단에 사용한다. 필수
튜토리얼 진행 상태 튜토리얼 중단 및 재개에 사용한다. 필수
계정 연동 상태 소셜 로그인, 데이터 백업, 계정 이전 및 데이터 복원에 사용한다. 선택

5.2 생명체 데이터

앱은 선택된 생명체에 대해 다음 정보를 저장한다.

항목 설명
생명체 종류 1번, 2번, 3번 중 하나이다.
생명체 이름 유저가 직접 지정한 이름이다.
처음 만난 날짜와 시간 프로필과 기념일 이벤트에 사용한다.
성장 단계 기본 단계, 1차 진화, 2차 진화 등으로 구분한다.
성장도 다음 진화까지의 진행도를 표시한다.
성격 타입 선택한 생명체 종류에 따라 결정된다.
현재 감정 상태 대화, HealthKit, 알림, 최근 행동에 따라 변화한다.
기억 목록 대화, 일정, 반복 패턴, 특별 이벤트를 저장한다.
해금 능력 가구, 성장 단계, 튜토리얼 진행에 따라 해금된다.

5.3 방 및 가구 데이터

항목 설명
보유 가구 목록 상점에서 구매한 가구와 수량을 저장한다.
배치된 가구 목록 방 안에 배치된 가구의 위치, 방향, 상태를 저장한다.
기본 방 상태 첫 실행 시 제공되는 방의 초기 구성이다.
가구 효과 알림, 성장, 대화 이벤트, 능력 각성 등에 영향을 줄 수 있다.

5.4 대화 및 기억 데이터

항목 설명
대화 로그 유저 입력과 캐릭터 응답을 저장한다.
에피소드 기억 특정 사건, 일정, 감정이 포함된 기억이다.
패턴 기억 반복되는 생활 습관, 활동 시간, 수면 경향 등을 저장한다.
알림 후보 대화 속 일정, 할 일, 약속 등을 추출한 데이터이다.
성장 반영 기록 어떤 대화 또는 행동이 성장도에 영향을 줬는지 저장한다.

6. 앱 실행 및 로딩

6.1 앱 아이콘 실행

유저가 메뉴 또는 배경화면에서 앱 아이콘을 클릭하면 앱이 실행된다. 앱은 먼저 앱 이름과 로고를 표시한 뒤 로딩 화면으로 전환한다.

6.2 로딩 화면

로딩 화면은 기본 상태의 플레이어 방을 배경으로 사용한다. 생명체 1번, 2번, 3번이 함께 노는 모습이 표시되며, 그 위에 로딩... 문구가 나타난다. 점 3개는 순차적으로 희미해졌다 선명해지는 애니메이션을 반복한다.

로딩 화면은 다음 항목을 확인한다.

  • 로컬 저장 데이터 존재 여부
  • 첫 실행 여부
  • 튜토리얼 완료 여부
  • 튜토리얼 중단 지점
  • 계정 연동 여부
  • 알림 권한 상태
  • HealthKit 연동 상태
  • 위젯 표시용 최신 데이터 존재 여부

6.3 실행 후 분기

조건 이동 화면
첫 실행이며 튜토리얼 기록이 없는 경우 세계관 설명 스토리 시작
튜토리얼 도중 중단한 기록이 있는 경우 중단한 튜토리얼 단계부터 재개
튜토리얼을 완료한 경우 홈 화면으로 이동
저장 데이터가 손상된 경우 데이터 복구 안내 화면으로 이동
다른 기기에서 계정 이전 및 데이터 복원이 필요한 경우 계정 이전 및 데이터 복원 선택 화면으로 이동

7. 온보딩 및 첫 실행 튜토리얼

7.1 온보딩 목적

온보딩은 유저가 세계관, 생명체 선택, 이름 설정, 기본 조작, 대화, 성장도, 상점, 가구 배치, 알림 기능을 자연스럽게 이해하도록 구성한다.

튜토리얼은 한 번에 모든 기능을 설명하지 않고, 유저가 실제로 조작해야 하는 순간에 해당 기능을 안내한다.

7.2 세계관 설명

세계관 설명 스토리에서는 교수 캐릭터가 신비한 생명체의 존재와 링크 성장 구조를 설명한다. 이 과정에서 유저는 세 종류의 생명체 중 하나를 선택한다.

세계관 설명 중 저장해야 하는 항목은 다음과 같다.

  • 유저 이름
  • 생년월일
  • 성별
  • 선택한 생명체 종류
  • 생명체 이름
  • 생명체를 처음 만난 날짜와 시간
  • 온보딩 진행 단계

7.3 생명체 선택

생명체 선택 화면은 세 종류의 생명체를 같은 비중으로 보여준다. 각 생명체는 기본 단계의 외형, 짧은 성격 설명, 성장 방향성을 가진다.

선택 전에는 각 생명체를 눌러 미리보기 대사와 간단한 애니메이션을 확인할 수 있어야 한다. 선택 확정 후에는 생명체 이름을 입력한다.

생명체 선택은 초기 튜토리얼 완료 후 쉽게 변경할 수 없도록 한다. 단, 개발 단계 또는 운영 정책에 따라 초기화 기능을 제공할 수 있다.

7.4 홈 화면 첫 진입

세계관 설명이 종료되면 홈 화면으로 진입한다. 이때 처음으로 기본 UI가 노출된다.

홈 화면 배경은 플레이어의 기본 방이다. 책상, 컴퓨터, 책장, 소파 침대가 기본으로 배치되어 있다. 선택한 생명체는 기본 단계이므로 소파 근처에서 아장아장 걷거나 주변을 살피는 정도의 움직임을 보인다.

7.5 홈 화면 기본 버튼

홈 화면에는 다음 6개의 버튼이 존재한다.

버튼 기능
대화 생명체를 탭하면 대화 입력창을 연다.
상점 가구 및 BM 요소를 구매한다.
가구 보유 가구를 확인하고 방에 배치한다.
알림 일정, 할 일, 캐릭터가 생성한 알림을 관리한다.
프로필 생명체의 프로필, 성장도, 성장 단계, 처음 만난 날을 확인한다.
기타 메뉴 계정, 백업, 데이터 삭제, 고객센터, 개인정보 관련 메뉴를 제공한다.

알림 버튼은 달력 가구를 구매하고 배치하기 전까지 숨기거나 비활성화한다.

7.6 튜토리얼 강조 연출

튜토리얼 중에는 조작해야 하는 UI 또는 캐릭터에 초점을 맞춘다. 초점 영역을 제외한 화면은 반투명한 검정색 막으로 덮고, 안내창을 함께 표시한다.

유저가 안내된 조작을 완료하기 전까지 다음 단계로 넘어가지 않는다. 단, 접근성 또는 재방문 유저를 고려해 스킵 버튼 제공 여부를 추후 결정한다.

7.7 대화 튜토리얼

첫 번째 기능 튜토리얼은 대화 기능이다.

  1. “생명체를 탭해서 말을 걸 수 있어요!”라는 안내 메시지를 표시한다.
  2. 캐릭터 주변을 하이라이트한다.
  3. 유저가 생명체를 탭하면 대화창을 연다.
  4. “생명체에게 하고 싶은 말을 해봐요. 처음이니까 이름으로 불러보는 걸 추천드려요.”라는 안내문을 표시한다.
  5. 유저가 처음 말을 걸면 캐릭터가 응답한다.
  6. 응답 성질에 맞게 캐릭터 표정을 변경한다.
  7. 대화가 성장도로 변환되어 스탯이 상승하는 연출을 보여준다.
  8. 프로필 튜토리얼로 이동한다.

7.8 프로필 튜토리얼

프로필 튜토리얼은 다음 순서로 진행한다.

  1. “다음은 프로필을 눌러봅시다.”라는 안내 메시지를 표시한다.
  2. 프로필 버튼을 하이라이트한다.
  3. 유저가 프로필을 누르면 프로필 화면을 연다.
  4. “프로필 탭에서는 생명체의 프로필, 성장도, 성장 단계, 처음 만난 날을 확인할 수 있습니다.”라는 안내문을 표시한다.
  5. 성장도와 성장 단계 영역을 순서대로 강조한다.
  6. “한번 나만의 방식대로 생명체를 육성해봐요!”라는 안내문을 표시한다.
  7. 홈 화면으로 돌아온다.

7.9 상점 튜토리얼

상점 튜토리얼은 다음 순서로 진행한다.

  1. “다음은 상점을 확인해봅시다.”라는 안내 메시지를 표시한다.
  2. 상점 버튼을 하이라이트한다.
  3. 유저가 상점을 누르면 상점 화면을 연다.
  4. “상점에서는 다양한 가구를 구매하거나 커스터마이징할 수 있습니다.”라는 안내문을 표시한다.
  5. “가구 중에는 생명체에게 영감을 주어 특수한 능력을 각성하게 도와주는 아이템도 존재합니다.”라는 안내문을 표시한다.
  6. 예시 아이템으로 달력을 구매하도록 유도한다.
  7. 달력은 튜토리얼용 무료 아이템으로 제공한다.

상점 화면 상단에는 보유 재화량과 재화 구매 버튼을 표시한다. 첫 접속 시 유저에게 인게임 재화 300개를 지급한다.

7.10 가구 배치 튜토리얼

달력 구매 후 홈 화면으로 돌아오면 가구 배치 튜토리얼을 진행한다.

  1. “직전에 구매한 달력을 방에 배치하기 위해 가구 메뉴를 선택해봅시다.”라는 안내 메시지를 표시한다.
  2. 가구 메뉴를 하이라이트한다.
  3. 유저가 가구 메뉴를 누르면 보유 가구 드롭다운을 연다.
  4. 달력 아이템을 하이라이트한다.
  5. 유저가 달력을 선택하면 오른쪽 아래에 + 버튼을 표시한다.
  6. 유저가 + 버튼을 누르면 달력을 빈 칸에 자동 배치한다.
  7. “달력을 드래그해서 책상 위로 옮겨봅시다.”라는 안내 메시지를 표시한다.
  8. 배치해야 하는 위치를 하이라이트한다.
  9. 유저가 달력을 책상 위에 배치하면 알림 기능이 해금된다.

배치된 가구를 누르면 회전 버튼과 수납 버튼을 표시한다. 회전 버튼은 시계방향 90도 회전을 수행하며, 수납 버튼은 가구를 방에서 제거하고 보유 목록으로 되돌린다.

7.11 튜토리얼 종료

가구 배치가 완료되면 다음 문구를 표시하고 튜토리얼을 종료한다.

“이상으로 튜토리얼을 마치겠습니다. 앞으로 생명체와 함께 매일매일 보람차고 즐거운 하루를 보내시길 바랍니다.”

튜토리얼 종료 시점에는 다음 상태를 저장한다.

  • 튜토리얼 완료 여부
  • 알림 메뉴 해금 여부
  • 달력 보유 및 배치 상태
  • 첫 대화 완료 여부
  • 프로필 최초 확인 여부
  • 상점 최초 진입 여부

8. 홈 화면

8.1 홈 화면 목적

홈 화면은 유저가 생명체와 상호작용하고, 방을 꾸미고, 기능 메뉴로 이동하는 기본 허브이다.

8.2 홈 화면 구성

홈 화면은 다음 요소로 구성한다.

  • 플레이어의 방 배경
  • 현재 선택한 생명체
  • 생명체 상태 표현
  • 대화 진입 조작
  • 상점 버튼
  • 가구 버튼
  • 알림 버튼
  • 프로필 버튼
  • 기타 메뉴 버튼
  • 보유 재화 요약 표시
  • 필요한 경우 튜토리얼 오버레이

8.3 생명체 기본 행동

생명체는 홈 화면에서 다음 행동을 수행한다.

  • 방 안을 짧게 이동한다.
  • 유저를 바라본다.
  • 가구에 반응한다.
  • 감정 상태에 맞는 표정을 보인다.
  • 일정 시간 조작이 없을 때 말풍선 또는 작은 반응을 표시한다.

성장 단계가 높아질수록 행동 종류가 늘어난다. 기본 단계에서는 단순 이동과 감정 표현 위주로 동작하고, 1차 진화 이후에는 알림, 일정, 생활 습관에 반응한다. 2차 진화 이후에는 유저의 반복 패턴을 바탕으로 더 복합적인 반응을 보인다.

8.4 시간대별 반응

앱은 현재 시간대에 따라 생명체의 기본 대사와 상태를 변경할 수 있다.

시간대 예시 반응
아침 기상, 아침 식사, 오늘 일정에 대한 반응을 표시한다.
점심 식사 여부, 활동량, 피로도에 대한 반응을 표시한다.
저녁 하루 활동 정리, 산책 여부, 휴식 권유를 표시한다.
밤 수면 준비, 늦은 시간 사용에 대한 반응을 표시한다.

9. 대화 시스템

9.1 대화 기능 목적

대화 기능은 유저와 생명체의 정서적 연결을 형성하는 핵심 기능이다. 대화는 단순한 텍스트 응답에 그치지 않고, 성장도, 기억, 감정 상태, 알림 생성, 이벤트 발생에 영향을 준다.

9.2 대화 진입

유저가 홈 화면의 생명체를 탭하면 대화창이 열린다. 대화창에는 최근 대화, 입력창, 전송 버튼, 닫기 버튼이 표시된다.

대화 입력은 텍스트 입력을 기본으로 한다. 음성 입력은 후속 기능으로 고려할 수 있다.

9.3 대화 처리 흐름

  1. 유저가 메시지를 입력한다.
  2. 앱은 메시지에서 감정, 일정, 건강 관련 키워드, 생명체 이름 호출 여부를 분석한다.
  3. 생명체의 성격, 성장 단계, 최근 기억을 반영해 응답을 생성한다.
  4. 응답 내용에 맞는 표정과 모션을 재생한다.
  5. 대화 결과를 성장도와 기억에 반영한다.
  6. 일정 또는 할 일이 감지되면 알림 후보로 저장한다.
  7. 유저에게 알림 등록 여부를 확인하거나, 성장 단계에 따라 생명체가 자동으로 달력에 기록할 수 있다.

9.4 대화와 성장도

대화는 성장도에 영향을 준다. 단, 무한 반복 입력을 통한 성장도 남용을 막기 위해 하루 성장 반영량에 제한을 둘 수 있다.

성장도 반영 기준은 다음과 같다.

입력 유형 성장 반영
생명체 이름을 부르는 대화 친밀도와 기초 성장도를 소량 상승시킨다.
감정을 공유하는 대화 정서 연결 성장도를 상승시킨다.
일정 또는 목표를 말하는 대화 알림 기능과 패턴 기억에 반영한다.
건강 관련 대화 HealthKit 또는 생활 패턴 조언과 연결한다.
반복성 없는 무의미 입력 성장도 반영을 제한한다.

9.5 기억 분류

대화에서 추출한 정보는 다음과 같이 분류한다.

기억 유형 설명 예시
에피소드 기억 특정 날짜나 사건과 연결되는 기억이다. “내일 발표가 있다.”
패턴 기억 반복되는 생활 습관에 대한 기억이다. “요즘 늦게 잔다.”
선호 기억 유저가 좋아하거나 싫어하는 것에 대한 기억이다. “비 오는 날 산책은 싫다.”
감정 기억 유저의 감정 상태와 연결되는 기억이다. “오늘 많이 지쳤다.”
알림 후보 일정 또는 할 일로 등록 가능한 기억이다. “금요일에 병원 예약이 있다.”

9.6 캐릭터별 대화 톤

생명체 1번은 밝고 직접적인 표현을 사용한다. 야외 활동, 산책, 함께 움직이는 행동에 적극적으로 반응한다.

생명체 2번은 조심스럽고 걱정이 많은 표현을 사용한다. 유저를 몰아붙이지 않고, 상태를 확인하거나 안부를 묻는 방식으로 반응한다.

생명체 3번은 잔소리와 조언을 섞어 표현한다. 다만 비난이 아니라 케어로 느껴지도록, 마지막에는 해결책이나 짧은 팁을 함께 제공한다.

10. 프로필

10.1 프로필 화면 목적

프로필 화면은 생명체의 정체성, 성장 상태, 처음 만난 날, 현재 능력, 기억 요약을 확인하는 화면이다.

10.2 표시 항목

프로필 화면에는 다음 항목을 표시한다.

  • 생명체 이름
  • 생명체 종류
  • 성장 단계
  • 성장도
  • 처음 만난 날짜
  • 함께한 일수
  • 현재 감정 상태
  • 해금된 능력
  • 최근 기억 요약
  • HealthKit 연동 상태
  • 알림 기능 사용 상태

10.3 성장도 표시

성장도는 다음 진화까지의 진행률로 표시한다. 성장도 바를 누르면 어떤 활동이 성장에 기여했는지 간단한 설명을 표시한다.

성장도 상승 요인은 대화, 일정 수행, 건강 데이터, 산책, 수면 패턴 개선, 가구 효과, 이벤트 완료 등으로 구성한다.

11. 상점

11.1 상점 목적

상점은 가구, 기능성 아이템, 커스터마이징 요소, BM 요소를 구매하는 화면이다.

11.2 상점 화면 구성

상점 UI는 3열로 진열된 정사각형 형태의 아이템 버튼으로 구성한다. 각 버튼에는 아이템 일러스트, 아이템 이름, 인게임 재화 가격, 보유 여부를 표시한다.

화면 상단에는 보유 재화량과 재화 구매 버튼을 표시한다. 첫 접속 시 유저에게 300 재화를 지급한다.

11.3 구매 상태

상태 처리 방식
구매 가능 가격과 구매 버튼을 표시한다.
재화 부족 구매 버튼을 비활성화하고 재화 부족 안내를 표시한다.
1회 한정 구매 완료 대각선 SOLD OUT 표시와 함께 버튼을 비활성화한다.
여러 번 구매 가능 구매 후 보유 수량을 증가시킨다.
성장 단계 미달 잠금 표시와 해금 조건을 표시한다.
권한 필요 필요한 권한을 안내하고 동의 절차로 연결한다.

11.4 주요 아이템

아이템 해금 조건 기능
달력 튜토리얼 중 무료 구매 알림 메뉴를 해금하고 일정 등록을 가능하게 한다.
스마트워치 생명체 1차 진화 이후 HealthKit 및 스마트워치 연동을 가능하게 한다.
일반 가구 상점 기본 진열 방 꾸미기와 생명체 반응을 제공한다.
기능성 가구 성장 단계 또는 이벤트 조건 충족 특수 능력, 대화 이벤트, 알림 기능을 확장한다.

12. 가구 배치

12.1 가구 기능 목적

가구 기능은 유저가 방을 꾸미고, 생명체의 생활 공간을 변화시키며, 일부 기능성 효과를 해금하는 시스템이다.

12.2 가구 메뉴

가구 메뉴는 별도 화면으로 이동하지 않고, 홈 화면 위에 둥근 테두리의 가로로 긴 드롭다운 메뉴를 연다. 이 메뉴에서 구매한 가구와 보유 수량을 확인할 수 있다.

12.3 배치 조작

  1. 유저가 가구 메뉴에서 가구를 선택한다.
  2. 오른쪽 아래에 + 버튼을 표시한다.
  3. 유저가 + 버튼을 누르면 가구를 빈 칸에 자동 배치한다.
  4. 유저는 배치된 가구를 홀드하고 드래그해 원하는 위치로 이동한다.
  5. 배치된 가구를 누르면 회전 버튼과 수납 버튼을 표시한다.
  6. 회전 버튼은 가구를 시계방향으로 90도 회전한다.
  7. 수납 버튼은 가구를 방에서 제거하고 보유 목록으로 되돌린다.

12.4 배치 제한

가구는 방의 배치 가능 영역에만 놓을 수 있다. 다른 가구와 겹치거나, 생명체 이동 경로를 완전히 막거나, 배경 구조물 위에 부자연스럽게 겹치는 배치는 허용하지 않는다.

배치할 수 없는 위치에 가구를 놓으면 원래 위치로 되돌리고 짧은 안내 메시지를 표시한다.

12.5 가구 효과

가구 효과는 다음 유형으로 구분한다.

유형 설명
장식형 방의 외형과 생명체의 간단한 반응만 변경한다.
기능형 알림, 대화, 성장도, HealthKit 등 기능과 연결된다.
이벤트형 특정 조건에서 캐릭터 이벤트를 발생시킨다.
성장 보조형 생명체에게 영감을 주어 특수 능력 각성에 영향을 준다.

13. HealthKit 동기화

13.1 기능 목적

HealthKit 동기화는 유저의 건강 및 활동 기록을 생명체 성장과 생활 조언에 반영하는 기능이다. 이 기능은 유저가 상점에서 스마트워치를 구매한 뒤 활성화한다.

13.2 활성화 조건

HealthKit 동기화는 다음 조건을 모두 만족해야 활성화된다.

  • 생명체가 1차 진화 단계에 도달해야 한다.
  • 상점에서 스마트워치 아이템을 구매해야 한다.
  • 유저가 HealthKit 권한 설정에 동의해야 한다.
  • 기기에서 HealthKit 사용이 가능해야 한다.

13.3 구매 전 안내

스마트워치 구매 시 다음 안내 문구를 표시한다.

“주의: 이 아이템은 HealthKit 및 스마트워치 연동이 필요합니다. 이 아이템을 구매하고 사용하기 위해서는 HealthKit 권한 설정에 동의하고 스마트워치 연동을 진행해야 합니다.”

버튼은 동의와 비동의로 구성한다. 유저가 동의를 선택하면 권한 설정으로 이동하고, 비동의를 선택하면 구매창을 닫는다.

13.4 연동 컷신

스마트워치 구매 후 홈 화면으로 이동하면 컷신을 진행한다. 대사는 캐릭터별로 다르게 구성할 수 있으며, 아래는 1번 생명체 기준 예시이다.

생명체: “OOO, 손목에 그건 뭐야?”
주인공: “이건 스마트워치라는 건데, 손목시계이면서 동시에 내 몸 상태를 모니터링해준다고 하더라고.”
생명체: “음... 손목 좀 잠시 보여줄 수 있어?”
주인공: “으앗! 아니, 잠시만. 뭐 하는 거야?”
생명체: “됐다. 이러면 내가 그 기계에 있는 데이터를 볼 수 있을 것 같아.”
주인공: “우와, 이런 것도 할 줄 아는구나...? 그런데 이 데이터를 어떻게 사용하려고?”
생명체: “내 성장은 너의 건강과 감정에 달려 있으니까. 이걸 이용하면 너를 더 잘 이해해서 더 빠르게 성장할 수 있을 것 같아!”
주인공: “흠... 그렇구나. 한번 테스트해볼까?”

컷신 후 다음 안내를 표시한다.

“HealthKit 연동이 완료되었습니다. 여러분의 운동 및 건강 기록을 토대로 XXX가 실시간으로 성장할 수 있게 되었습니다.”

“건강한 보호자야말로 건강한 육성의 첫걸음입니다. 서로를 위해 조금만 더 노력해봅시다.”

13.5 동기화 대상 데이터

1차 구현에서는 다음 데이터를 우선 고려한다.

데이터 사용 목적
걸음 수 산책, 활동량, 일일 목표 달성 판단에 사용한다.
이동 거리 산책량과 활동 이벤트에 사용한다.
운동 기록 운동 완료 이벤트와 성장도 반영에 사용한다.
수면 기록 수면 패턴 조언과 캐릭터 걱정 반응에 사용한다.
심박수 피로도 또는 긴장도 추정에 사용할 수 있다.

정확한 데이터 항목과 권한 범위는 개발 단계에서 플랫폼 정책과 구현 가능성을 확인한 뒤 확정한다.

13.6 동기화 주기

앱 실행 중에는 홈 화면 진입 시와 일정 주기마다 HealthKit 데이터를 갱신한다. 백그라운드 갱신은 운영체제 정책에 따라 제한될 수 있으므로, 마지막 동기화 시간을 표시해야 한다.

데이터가 오래된 경우에는 “최근 건강 데이터를 아직 불러오지 못했습니다.”라는 안내를 표시한다.

13.7 권한 거부 및 철회

유저가 HealthKit 권한을 거부하면 스마트워치 아이템은 구매되지 않거나, 구매 상태는 유지하되 기능이 비활성화된다. 최종 정책은 과금 정책과 함께 확정한다.

권한이 철회된 경우 앱은 다음을 수행한다.

  • HealthKit 동기화를 중단한다.
  • 프로필 또는 설정에 권한 비활성 상태를 표시한다.
  • 생명체가 권한이 꺼졌음을 자연스럽게 언급한다.
  • 유저가 설정에서 다시 권한을 켤 수 있도록 안내한다.

13.8 개인정보 처리

HealthKit 데이터는 생명체 성장, 생활 조언, 유저 본인에게 표시되는 기록에만 사용한다. 광고, 외부 판매, 불필요한 외부 전송에는 사용하지 않는다.

건강 데이터는 민감 정보로 취급해야 하며, 앱은 유저가 어떤 데이터가 어떤 목적으로 쓰이는지 이해할 수 있도록 명확한 설명을 제공해야 한다.

14. 알림

14.1 알림 기능 목적

알림 기능은 달력 또는 캐릭터와의 대화를 통해 생성된 일정과 할 일을 관리하는 기능이다. 알림은 단순한 시스템 알림이 아니라, 생명체가 유저를 챙겨주는 관계성을 강화하는 장치로 사용한다.

14.2 해금 조건

알림 메뉴는 처음에는 보이지 않거나 비활성화된다. 튜토리얼 중 달력 가구를 구매하고 방에 배치하면 알림 메뉴가 생성된다.

14.3 첫 진입 설명

유저가 알림 메뉴를 처음 클릭하면 다음 안내를 표시한다.

“이곳에서는 달력 또는 캐릭터와의 대화를 통해 생성된 알림을 관리할 수 있습니다.”

“캐릭터와의 대화 속에서 할 일에 대한 이야기가 있었을 경우, 캐릭터가 스스로 달력에 일정을 기록해주기도 합니다.”

“일방적인 육성이 아닌, 서로에게 도움을 주는 진정한 동반자가 되어주는 XXX를 위해 오늘도 힘내봅시다.”

14.4 알림 목록

알림 화면 중앙에는 큰 둥근 테두리의 직사각형 메뉴를 배치한다. 내부에는 스크롤 가능한 알림 목록을 표시한다.

알림 목록에는 다음 정보를 표시한다.

  • 알림 제목
  • 예정 날짜와 시간
  • 반복 여부
  • 생명체가 생성한 알림인지 유저가 직접 만든 알림인지 여부
  • 완료 여부

알림 항목을 누르면 상세 보기 화면으로 이동한다.

14.5 알림 상세 보기

상세 보기 화면에는 다음 정보를 표시한다.

  • 알림 용건
  • 일정 날짜
  • 일정 시간
  • 알림 생성 시간
  • 반복 주기
  • 알림 발송 시간
  • 일정 전 반복 알림 횟수
  • 알림 삭제 버튼
  • 완료 처리 버튼

14.6 알림 생성

알림 생성 버튼은 화면 오른쪽 하단에 배치한다. 유저가 버튼을 누르면 알림 생성 화면을 표시한다.

알림 생성 화면에서는 다음 항목을 입력한다.

  • 제목 또는 용건
  • 반복 주기
  • 날짜
  • 시간
  • 알림을 보내줄 시간
  • 실제 일정 전까지 알림을 몇 번 반복할지 여부

반복 주기는 반복 안 함, 매주, 매달, 매년을 제공한다. 모든 필수 항목을 입력한 뒤 저장 버튼을 누르면 알림을 저장한다.

14.7 대화 기반 알림 생성

유저와 생명체의 대화에서 일정 또는 할 일이 감지되면 앱은 알림 후보를 생성한다.

기본 단계에서는 유저에게 알림 등록 여부를 직접 묻는다. 1차 진화 이후에는 생명체가 더 적극적으로 제안할 수 있다. 2차 진화 이후에는 유저의 반복 패턴을 바탕으로 “이번에도 등록할까요?”처럼 맥락 있는 제안을 할 수 있다.

14.8 알림 권한

알림 기능을 실제로 사용하려면 운영체제 알림 권한이 필요하다. 유저가 권한을 거부하면 앱 내부 알림 목록은 사용할 수 있지만, 푸시 또는 로컬 알림은 발송하지 않는다.

권한이 꺼진 경우 알림 화면 상단에 권한 안내 배너를 표시한다.

15. 위젯

15.1 위젯 목적

위젯은 앱을 열지 않아도 생명체의 상태와 일정 알림을 확인할 수 있게 하는 기능이다. 위젯은 유저와 생명체의 관계를 바탕화면에서도 이어주는 역할을 한다.

15.2 위젯 표시 조건

위젯은 다음 데이터를 사용한다.

  • 선택한 생명체
  • 생명체 이름
  • 생명체 현재 감정 상태
  • 곧 다가오는 알림
  • 최근 패턴 기억
  • 마지막 앱 실행 시간
  • 마지막 HealthKit 동기화 시간

15.3 위젯 상태 1: 예정 이벤트가 있는 경우

예정 이벤트가 있는 경우 위젯 속 캐릭터가 말풍선을 띄워 할 일이 있음을 알려준다. 말풍선을 누르면 앱의 알림 상세 화면으로 이동한다.

이 상태는 에피소드 기억과 알림 데이터를 활용한다.

예시:

  • “곧 일정이 있어요.”
  • “아까 말했던 거, 잊지 않았죠?”
  • “끝나면 나한테도 알려줘요.”

15.4 위젯 상태 2: 예정 이벤트가 없는 경우

예정 이벤트가 없는 경우 일정 시간마다 시간대와 패턴에 맞는 간단한 대화를 표시한다.

기본 표시 시간대는 오전 9시, 오후 1시, 오후 7시, 오후 10시로 설정한다. 실제 갱신 주기는 운영체제 위젯 정책에 따라 달라질 수 있다.

이 상태는 패턴 기억을 활용한다.

예시:

  • 오전: “오늘도 천천히 시작해봐요.”
  • 점심: “밥은 먹었어요?”
  • 저녁: “오늘 많이 걸었나요?”
  • 밤: “슬슬 잘 준비를 해도 괜찮아요.”

15.5 위젯 빈 상태

다음 상황에서는 빈 상태 또는 안내 상태를 표시한다.

상황 표시 내용
생명체를 아직 선택하지 않음 앱을 열어 첫 만남을 시작하라고 안내한다.
알림 데이터가 없음 캐릭터의 기본 시간대 대사를 표시한다.
데이터 갱신 실패 마지막으로 확인된 캐릭터 상태를 표시하고 앱 실행을 유도한다.
알림 권한 꺼짐 앱에서 알림 권한을 확인하라고 안내한다.
HealthKit 연동 꺼짐 건강 데이터가 없는 일반 대사를 표시한다.

15.6 위젯 터치 동작

터치 위치 동작
캐릭터 앱 홈 화면으로 이동한다.
일정 말풍선 해당 알림 상세 화면으로 이동한다.
완료 버튼이 있는 경우 앱으로 이동해 완료 처리를 진행한다.

운영체제 정책상 위젯 내부에서 직접 완료 처리가 제한될 수 있으므로, 기본 동작은 앱 이동으로 정의한다.

16. 설정 및 기타 메뉴

16.1 기타 메뉴 목적

기타 메뉴는 계정, 데이터, 고객지원, 권한, 개인정보 관련 기능을 제공한다.

16.2 제공 항목

기타 메뉴에는 다음 항목을 제공한다.

  • 계정 생성
  • 소셜 계정 연동
  • 플레이 데이터 백업
  • 계정 이전 및 데이터 복원
  • 데이터 삭제
  • 계정 삭제
  • 알림 권한 설정
  • HealthKit 권한 상태 확인
  • 고객센터 및 문의
  • 이용약관
  • 개인정보 처리방침
  • 앱 버전 정보

16.3 데이터 삭제

데이터 삭제는 로컬 플레이 데이터를 삭제하는 기능이다. 삭제 전에는 반드시 확인창을 표시한다.

삭제 대상은 다음과 같다.

  • 유저 프로필
  • 생명체 선택 정보
  • 생명체 이름
  • 성장도
  • 대화 로그
  • 기억 데이터
  • 알림 데이터
  • 방 배치 정보
  • 보유 가구 정보

계정 삭제와 데이터 삭제는 별도 기능으로 구분한다.

16.4 계정 연동, 백업, 계정 이전 및 데이터 복원

계정 연동은 현재 기기의 플레이 데이터를 특정 계정에 연결하는 기능이다. 계정 연동이 완료되면 유저는 데이터 백업, 데이터 복원, 다른 기기로의 계정 이전 기능을 사용할 수 있다.

플레이 데이터 백업은 현재 기기의 플레이 데이터를 서버 또는 클라우드 저장소에 저장하는 기능이다. 백업 대상은 유저 프로필, 생명체 상태, 성장도, 가구 보유 및 배치, 알림, 주요 기억 데이터이다.

데이터 복원은 계정에 저장된 백업 데이터를 현재 기기로 불러오는 기능이다. 앱 재설치, 기기 초기화, 저장 데이터 손상 이후 기존 플레이를 이어가기 위해 사용한다.

계정 이전은 기존 기기에서 사용하던 계정으로 새 기기에 로그인하고, 저장된 백업 데이터를 새 기기에서 이어서 사용하는 시나리오를 의미한다. 계정 이전 시 앱은 기존 백업 데이터의 마지막 저장 시각, 생명체 이름, 성장 단계, 보유 가구 요약을 표시해 유저가 올바른 데이터를 선택했는지 확인할 수 있게 해야 한다.

현재 기기에 이미 플레이 데이터가 있는 상태에서 데이터 복원을 시도하는 경우, 앱은 기존 데이터를 덮어쓸 수 있음을 명확히 안내해야 한다. 필요한 경우 현재 데이터를 먼저 백업하도록 유도한다.

HealthKit 원본 데이터는 앱 백업 대상에 포함하지 않는다. 앱은 필요한 요약값만 저장하거나, 재연동 후 다시 불러온다.

17. 성장 및 진화 시스템

17.1 성장도 획득 경로

생명체는 다음 행동을 통해 성장도를 획득한다.

  • 유저와의 대화
  • 감정 공유
  • 일정 수행
  • 알림 완료
  • 걸음 수 또는 산책 목표 달성
  • 수면 패턴 개선
  • 식사 관련 기록
  • 가구 배치 및 기능성 가구 사용
  • 이벤트 완료

17.2 성장도 제한

반복 입력이나 단순 조작을 통한 성장도 남용을 막기 위해 하루 최대 성장도 획득량을 둘 수 있다. 단, 정서적 경험과 주요 이벤트는 별도 보너스로 처리할 수 있다.

17.3 진화 조건

진화는 성장도만으로 발생하지 않고, 특정 기능 경험 또는 이벤트 완료를 함께 요구할 수 있다.

예시 조건은 다음과 같다.

진화 조건 예시
기본 단계에서 1차 진화 일정 횟수 이상 대화, 첫 알림 생성, 일정 기간 함께 생활
1차 진화에서 2차 진화 HealthKit 또는 생활 패턴 데이터 누적, 주요 이벤트 완료, 친밀도 기준 충족

정확한 수치는 밸런싱 단계에서 확정한다.

18. 이벤트 및 컷신

18.1 이벤트 유형

이벤트는 다음 유형으로 구분한다.

유형 설명
메인 이벤트 세계관과 생명체 성장에 직접 연결되는 이벤트이다.
기능 해금 이벤트 알림, HealthKit, 위젯 등 기능 해금 시 발생한다.
생활 이벤트 산책, 수면, 식사, 대화 패턴에 따라 발생한다.
가구 이벤트 특정 가구를 배치하거나 사용할 때 발생한다.
기념일 이벤트 처음 만난 날, 생일 등 날짜 기반 이벤트이다.

18.2 이벤트 재생 조건

이벤트는 조건을 만족했을 때 자동으로 발생하거나, 홈 화면에서 생명체가 말풍선으로 유저를 부르는 방식으로 시작한다.

중요 이벤트는 다시보기 기능 제공을 고려한다. 다시보기는 프로필 또는 기타 메뉴의 추억 기록에서 접근할 수 있다.

19. 권한 및 개인정보

19.1 필요한 권한

앱은 기능에 따라 다음 권한을 요청할 수 있다.

권한 사용 기능 요청 시점
알림 권한 일정 알림, 캐릭터 알림 달력 배치 후 알림 기능 최초 사용 시
HealthKit 권한 건강 데이터 동기화 스마트워치 구매 및 연동 시
네트워크 권한 계정 연동, 백업, 고객센터 해당 기능 사용 시

권한은 앱 최초 실행 시 한꺼번에 요청하지 않고, 기능 사용 맥락에 맞춰 요청한다.

19.2 권한 거부 처리

권한이 거부되어도 앱의 기본 육성 기능은 가능한 범위 내에서 유지해야 한다. 다만 권한이 필요한 기능은 비활성화하고, 유저가 설정에서 권한을 다시 켤 수 있도록 안내한다.

20. 예외 처리

20.1 튜토리얼 중단

튜토리얼 도중 앱이 종료되면 현재 단계, 선택 정보, 완료한 조작을 저장한다. 다음 실행 시 중단 지점부터 이어서 진행한다.

20.2 저장 데이터 손상

저장 데이터가 손상된 경우 앱은 가능한 범위에서 백업 데이터를 찾는다. 복구가 불가능하면 유저에게 새로 시작할지 문의한다.

20.3 알림 생성 실패

날짜 또는 시간이 올바르지 않거나 권한이 꺼져 있으면 알림 생성에 실패할 수 있다. 이 경우 실패 이유를 안내하고, 입력값을 유지한 상태로 수정할 수 있게 한다.

20.4 HealthKit 데이터 없음

HealthKit 연동은 완료되었지만 데이터가 없는 경우 생명체는 데이터가 없음을 자연스럽게 언급한다. 예를 들어 “아직 오늘 기록이 안 보이는 것 같아요.”처럼 표현한다.

20.5 네트워크 실패

계정 연동, 데이터 백업, 계정 이전 및 데이터 복원, 고객센터 요청 중 네트워크 오류가 발생하면 재시도 버튼을 제공한다. 로컬 기능은 가능한 한 정상적으로 유지한다.

21. 접근성 및 사용성

앱은 다음 접근성 기준을 고려한다.

  • 주요 텍스트는 작은 화면에서도 읽을 수 있어야 한다.
  • 튜토리얼 안내창은 배경과 충분히 대비되어야 한다.
  • 색상만으로 상태를 구분하지 않아야 한다.
  • 중요한 조작에는 충분한 터치 영역을 제공해야 한다.
  • 대화와 알림 문구는 지나치게 비난하거나 압박하는 표현을 피해야 한다.
  • 건강 조언은 의학적 진단처럼 표현하지 않아야 한다.

22. 1차 구현 우선순위

22.1 필수 구현

  • 앱 실행 및 로딩 화면
  • 첫 실행 온보딩
  • 생명체 선택 및 이름 설정
  • 홈 화면
  • 생명체 탭 대화
  • 대화 기반 성장도 반영
  • 프로필 화면
  • 상점 기본 구조
  • 달력 구매
  • 가구 배치
  • 알림 메뉴 해금
  • 알림 생성, 목록, 상세, 삭제
  • 튜토리얼 중단 및 재개

22.2 2차 구현

  • HealthKit 연동
  • 스마트워치 구매 및 컷신
  • 건강 데이터 기반 성장 반영
  • 위젯
  • 캐릭터별 알림 대사
  • 가구 효과
  • 성장 단계별 대화 확장

22.3 후속 구현

  • 계정 생성
  • 소셜 연동
  • 클라우드 백업
  • 계정 이전 및 데이터 복원
  • 상세 BM 상점
  • 기념일 이벤트
  • 추억 다시보기
  • 고급 방 꾸미기
  • 캐릭터 이모티콘 및 스티커 활용

23. 미정 사항

다음 항목은 추후 확정이 필요하다.

  • 앱 공식 이름
  • 링크 생명체의 공식 종족명
  • 각 생명체의 공식 이름
  • 성장도 수치 공식
  • 진화 단계 수
  • HealthKit 세부 데이터 항목
  • 스마트워치 구매 정책
  • 과금 재화 명칭과 가격
  • 튜토리얼 스킵 제공 여부
  • 생명체 선택 변경 가능 여부
  • 교수 캐릭터의 최종 유지 여부
  • 주인공 직업 설정 유지 여부
  • 위젯 지원 크기
  • 백업 방식과 서버 사용 여부