PetAI 최종 기능 정의서
제품·세계관·기능 설명 담당용 문서
갱신: 2026-07-23
이 문서는 최종 제품 범위를 다룬다. MVP 순서와 구현 일정은 별도 WBS에서 관리한다.
먼저 읽을 결론
PetAI는 알림이나 습관 체크를 앞세운 앱이 아니라, 사용자의 시간과 행동이 캐릭터의 생활·관계·공간·추억으로 남는 게임 중심 캐릭터 육성 경험이다. 로그인, 날씨, 위젯, 푸시 알림, 친구 기능은 이 경험을 넓히는 보조 장치이며, 어느 기능도 캐릭터와 놀고 성장하는 핵심 루프를 대체하지 않는다.
범위 표기
| 표기 | 뜻 |
|---|---|
| 확정 방향 | 팀이 구현을 전제로 설계해야 하는 원칙 |
| 우선 결정 | 다음 기획 회의에서 값·정책을 확정해야 하는 항목 |
| 가설 수치 | 밸런스 검증 전의 예시. 코드나 상점 가격으로 고정하지 않음 |
| 후속 확장 | 최종 제품에는 넣되 핵심 루프 검증 뒤에 구현하는 기능 |
최종 제품의 기능 축
- 캐릭터와 함께 놀고 선택하며 관계를 쌓는다.
- 날짜·날씨·현실 행동이 캐릭터의 생활과 추억을 바꾼다.
- 육성, 수집, 방 꾸미기, 미니게임으로 장기 플레이 이유를 만든다.
- 위젯·알림·친구는 사용자가 게임 세계로 자연스럽게 돌아오게 돕는다.
- 대화 원문·장기 기억 원문·건강 정보는 기본적으로 로컬에 남긴다.
1. 첫 진입과 튜토리얼
기능 설명
첫 실행은 세계관을 길게 설명하는 시간이 아니라, 사용자가 “이 캐릭터와 함께 놀면 시간이 쌓이고 결과가 남는다”는 규칙을 실제 행동으로 이해하는 과정이다.
사용자가 하는 일
- 캐릭터 후보 또는 고정 주인공의 첫 반응을 보고 관계를 시작할 대상을 정한다.
- 사용자 호칭과 캐릭터 이름 또는 별명을 정한다.
- 기본 방에서 캐릭터를 누르고, 짧은 대화 또는 공동 행동을 한 번 경험한다.
- 첫 기념품 또는 기본 가구를 받아 방에 놓고, 결과가 홈에 남는 것을 본다.
- 필요한 기능을 켜려 할 때만 알림·위치 등 권한의 이유를 확인하고 선택한다.
저장해야 하는 정보
tutorialStep,tutorialCompleted, 마지막 완료 단계와 갱신 시각characterId, 캐릭터 표시 이름, 사용자 호칭, 첫 만남 선택, 첫 만남 날짜- 시작 재화·기본 가구·첫 기념품 지급 여부
- 권한 요청을 본 시점과 사용자의 선택 결과. 권한 원문이나 위치값은 저장하지 않는다.
중단·기기 이전 규칙
- 앱이 중단되면 마지막으로 완료한 단계 다음부터 시작한다.
- 초기 캐릭터·방·재화·기본 가구는 하나의 원자적 초기화 단위로 만든다. 재시도해도 중복 지급되지 않아야 한다.
- 로그인 전에는 로컬 임시 상태에 저장하고, 계정 연결 시 충돌 정책을 보여 준다. 조용히 덮어쓰지 않는다.
- 권한을 거절해도 홈, 대화, 육성, 저장, 미니게임은 계속 가능해야 한다.
우선순위
| 항목 | 우선순위 | 이유 |
|---|---|---|
| 선택 캐릭터·진행 상태 저장 | 높음 | 기기 이전과 관계 연속성의 기반 |
| 상황별 권한 요청 | 높음 | 이후 알림·날씨·위젯 기능의 신뢰 기반 |
| 세계관 연출과 긴 서사 | 낮음 | 핵심 게임 루프 검증 후 확장 가능 |
우선 결정
- 캐릭터를 선택형으로 갈지, 고정 주인공 한 명으로 시작할지
- 튜토리얼 스킵 허용 범위와 스킵 후 기본 지급 정책
- 이름 변경, 캐릭터 변경, 다중 캐릭터 슬롯의 최종 정책
2. 육성 시스템과 일일 리듬
기능 설명
육성은 숫자를 올리는 일이 아니라, 캐릭터가 사용자를 더 잘 이해하고 생활이 달라지며 새로운 사건과 추억이 열리는 과정이다. 미접속·실패·권한 거절은 관계 하락이나 영구 손실을 만들지 않는다.
최종 상태 모델
| 상태 | 역할 | 사용자에게 보이는 방식 | 변경 예시 |
|---|---|---|---|
| 유대 | 관계 단계와 친밀 사건 조건 | 단계, 반응, 추억으로 간접 표시 | 같이 놀기, 약속, 사건 선택 |
| 체력 | 당일 행동 가능 범위와 휴식 연출 | 표정·행동·간단한 상태 | 공동 활동, 휴식, 수면 |
| 스트레스 | 보상 효율과 회복 장면의 단기 상태 | 과도한 수치 대신 상태 설명 | 과도한 반복, 휴식, 수면 |
| 경험치 | 성장 단계와 보상 진척 | 성장 바 또는 단계 | 미션, 사건, 미니게임 |
| 이해도 | 취향을 얼마나 발견했는지 | 대사와 맞춤 사건으로 간접 표시 | 선택, 선물, 대화 주제 |
| 거주 만족도 | 방과 생활 공간의 애착 상태 | 방 반응, 배경 변화 | 가구, 테마, 기념품 배치 |
| 특기 | 특정 놀이·활동의 숙련 | 동작·자신감·콘텐츠 해금 | 미니게임·행동 반복 |
유대·체력·스트레스·경험치는 1차 밸런싱 대상이다. 이해도·거주 만족도·특기는 최종 제품에 포함하되, 처음부터 모든 숫자를 전면 노출하지 않는다.
성장 규칙: 권고안
- 스토리와 관계는 천천히, 플레이 자체는 자유롭게 둔다.
- 서로 다른 첫 활동과 사건은 온전한 성장 보상을 준다.
- 같은 날 같은 행동을 반복하면 유대·경험치 보상은 완만하게 감소하지만, 플레이 자체와 기본 재화 획득은 막지 않는다.
- 관계 단계는
유대 + 이해도 + 대표 추억 + 최소 경과 일수를 함께 본다. 현금 결제나 단순 점수 반복만으로 열리지 않는다. - 캐릭터의 진화·변화는 외형, 복장, 방 행동, 대사, 사건의 변화로 보여 준다.
스트레스와 회복
- 스트레스가 높을수록 경험치 보상 효율은 내려갈 수 있다. 단, 사용자에게 벌처럼 느껴지지 않게 회복 행동과 이유를 함께 제시한다.
- 스트레스가 최대치일 때 24시간에 걸쳐 자연 감소하는 방향을 검토한다.
- 헬스킷 등 수면 연동을 사용자가 명시적으로 허용한 경우에만 수면 구간에서 더 빠른 회복 연출을 제공할 수 있다. 원본 건강 정보는 서버로 보내지 않는다.
- 화면에 적을 공식은 원시 값
e^(-stress)가 아니라 정규화·하한을 포함해야 한다. 예:rewardMultiplier = max(0.4, exp(-k * normalizedStress)).k, 하한, 스트레스 증가량은 플레이테스트 뒤 확정한다.
우선 결정
- 일일 성장 제한을
부드러운 감소로 확정할지, 일부 스토리에만 천장을 둘지 - 스트레스 증가 행동, 감소 행동, 최대치 상태의 실제 연출
- 체력과 스트레스를 모두 공개 수치로 보여 줄지, 상태 아이콘·대사 중심으로 보여 줄지
- 각 활동이 어떤 상태를 얼마나 바꾸는지와 부정적 루프 방지 기준
우선순위
높음. 이 시스템이 관계·미션·보상·진화·달력의 공통 언어가 된다.
3. 미션, 미니게임과 보상
기능 설명
사용자는 미션과 플레이로 재화를 얻고, 그 결과를 캐릭터 복장과 생활 공간에 남긴다. 미션은 출석 체크가 아니라 캐릭터와 함께 놀거나 살아갈 이유를 만드는 장치다.
획득 경로
- 미니게임 목표 점수 또는 개인 최고 기록 달성
- 하루 성장 목표와 서로 다른 활동 첫 달성
- 대화·사건의 선택 완료, 대표 추억 생성
- 기간 이벤트, 업적, 관계 단계, 친구 교류의 외형 보상
미니게임 경계
- 1차 미니게임은 짧은 조작과 빠른 피드백을 지향한다.
- 리듬게임의 규칙, 노트 판정, 곡/저작권, 난이도, 수익화는 별도 HTMLBook 문서에서 정의한다.
- 본 문서는 리듬게임을
미션과 보상의 한 공급원으로만 다루며, 구체 설계를 선행 결정으로 만들지 않는다.
우선순위
미션·기본 보상은 높음, 개별 미니게임의 다양화는 후속 확장이다.
4. 재화, 결제와 경제
기능 설명
재화는 캐릭터의 관계나 필수 스토리를 사는 수단이 아니라, 복장·가구·장식·생활 공간 테마를 고르는 수단이다. 확률형 뽑기, 광고 강요, 관계 수치 판매는 하지 않는다.
재화 흐름
| 구분 | 얻는 방법 | 쓰는 곳 | 금지하는 쓰임 |
|---|---|---|---|
| 무료 재화 | 미션, 공동 플레이, 사건, 업적, 기간 이벤트 | 복장, 가구, 장식, 테마 | 관계·필수 스토리·능력치 직구매 |
| 유료 재화 또는 상품 | 직접 구매, 정액 구독의 명시 보너스 | 꾸미기 상품, 편의성 논의 대상 | 확률형, 유저 우위 성능, 스토리 잠금 해제 |
가설 수치: 아직 확정 아님
- 재화명:
루비후보 - 일반 일일 퀘스트 보상: 약 50루비 후보
- 캐릭터 의상 가격: 1,980루비 후보
- 월 정액: 5,900원과 일일 추가 90루비 후보
위 수치는 경제성·상점 정책·플랫폼 수수료·콘텐츠 소모 속도 검증 전의 예시다. “약 40일 플레이로 의상 1개” 같은 결론을 고정하지 않으며, 정액제는 무료 플레이가 캐릭터 관계에서 불리해지지 않는지 먼저 검토한다.
상품과 반영 규칙
- 복장과 가구는 구매 즉시 소유 상태가 저장되고, 홈·방·친구 방문 스냅샷에 실제 반영된다.
- 복장은 캐릭터 특성에 맞는 시각·연출 변화를 줄 수 있으나, 경쟁 우위나 필수 성장 보너스가 되지 않는다.
- 구매 복원, 환불, 중복 지급, 가격 변경, 기간 종료 후 재등장 정책을 상품 데이터에 둔다.
- 결제 기록은 서버에 최소한으로 보관한다. 대화 원문·기억 원문·건강 정보와 결제 기록을 결합하지 않는다.
우선순위
중간~높음. 결제 구현 전에도 중간평가에서 재화 흐름, 구매 화면, 구매 후 반영, 환불·복원 원칙까지 설명할 수 있어야 한다.
5. 아이템, 도감과 생활 공간
기능 설명
아이템은 단순 목록이 아니라 캐릭터와 사용자가 어떤 날 무엇을 했는지 남기는 수집과 회고의 장치다. 아이템마다 획득 경로와 남은 이야기를 보여 준다.
아이템 종류
| 종류 | 획득 방식 | 표시해야 할 정보 |
|---|---|---|
| 상시 상점 | 재화로 언제든 구매 | 가격, 미리보기, 소유 여부, 배치·장착 가능 위치 |
| 미션·업적 | 목표 점수, 하루 목표, 첫 달성 | 조건, 진행도, 달성 날짜 |
| 관계·스토리 | 관계 단계, 선택, 대표 추억 | 연결된 사건과 획득 날짜 |
| 히든 | 장소 방문, 시간대, 가구 조합, 취향 발견 | 실루엣 또는 공정한 힌트 |
| 시즌·한정 | 계절, 기념일, 이벤트 | 시작·종료일, 획득 조건, 재등장 정책 |
| 친구·협동 | 방문, 정해진 교류, 추후 협동 놀이 | 친구 필요 여부와 대체 획득 여부 |
| 기능 아이템 | 달력, 앨범, 특별 상호작용 등 | 기능 설명, 기본 제공·해금·구매 여부 |
아이템 도감
- 소유/미소유 필터, 카테고리 필터, 획득 경로 필터, 한정 상태 필터를 제공한다.
- 미소유 히든 아이템은 제목·조건을 모두 노출하지 않아도 되지만, 영원히 찾을 수 없는 불공정 조건은 피한다.
- 예: 특정 장소 방문 후 그 장소와 연결된 의상 또는 기념품을 얻는 형태는 가능하다. 정밀 GPS·건강 데이터·친구 수·유료 결제를 히든 해금 조건으로 쓰지 않는다.
- 한정 상품은 “남은 시간”뿐 아니라 종료 뒤
매년 재등장,다른 형태로 재등장,재등장 미정,한 번만 제공중 하나를 보여 준다. - 중복 보상과 재지급의 자동 환산 규칙은 사전에 고지한다.
방 꾸미기
- 구매, 장착, 해제, 배치, 회전, 회수, 저장, 복원을 지원한다.
- 공개를 허용한 경우에만 친구에게 마지막 방 스냅샷을 보여 준다.
- 친구는 가구를 가져가거나 이동할 수 없다.
우선순위
기본 복장·가구·소유·배치·도감은 중간~높음. 복잡한 테마·희귀도·협동 보상은 후속 확장이다.
6. 날짜, 날씨, 위젯과 알림
날짜와 날씨
- 시간대·계절·날씨는 배경, 복장, 생활 행동, 사건, 추억 카드에 반영한다.
- 위치 기반 날씨는 사용자가 동의할 때만 GPS 위치를 조회 순간에만 날씨 프록시로 전송한다.
- 서버는 날씨 응답을 위해 필요한 최소 위치 정보만 처리하며, 정밀 좌표·이동 경로를 저장·분석·친구 공유하지 않는다.
- 위치 권한 거절·조회 실패 시에는 사용자가 고른 도시 또는 기본 날씨로 대체한다.
- 위치 기반 날씨를 끄면 이후 GPS 조회와 서버 전송을 즉시 멈춘다.
위젯
목적: 앱을 열기 전에도 캐릭터가 현재 세계에 있다는 감각을 주고, 한 번의 가벼운 상호작용으로 관련 장면에 들어가게 한다.
| 표시 가능 | 표시 금지 |
|---|---|
| 캐릭터 얼굴 또는 짧은 생활 동작 | 대화·기억 원문 |
| 짧은 상태, 현재 활동, 마지막 갱신 시각 | 정확한 위치, 이동 경로 |
| 오늘 날씨·방 배경의 안전한 요약 | 관계 수치 상세, 건강 정보 |
| 앱 진입·미리 정한 가벼운 반응 | 자유 입력, 결제, 민감 설정 변경 |
- 위젯의 배경·복장·날씨는 앱의 마지막 확정된 방/환경 상태와 일치해야 한다.
- 허용 상호작용은
앱으로 열기,미리 정한 인사/반응,사용자가 시작한 타이머 확인정도로 제한한다. - 위젯에서 관계·재화·아이템 상태를 직접 바꾸는 행위는 하지 않는다.
푸시 알림
| 종류 | 목적 | 기본 정책 |
|---|---|---|
| 사용자 설정 알림 | 사용자가 직접 만든 약속·타이머 | 사용자가 켠 항목만 로컬 알림 |
| 게임 사건·준비 완료 | 새 사건, 제작·휴식·약속의 완료 | 맥락 있는 초대, 딥링크 제공 |
| 미접속 재방문 | 일정 기간 접속하지 않은 사용자에게 재회 계기 제공 | 빈도 상한과 조용한 시간 필수 |
| 친구 요청 | 수락 대기 중인 요청 안내 | 수신 거부·차단 상태 반영 |
| 스트레스 회복 | 스트레스가 0 또는 회복 상태가 된 사실 알림 | 기본값 끔 또는 명시 동의, 불안 유발 문구 금지 |
- 알림을 누르면 관련 홈·사건·추억·공동 놀이 화면으로 이동한다.
- 종류별 수신 설정, 조용한 시간, 전체 해제, 최근 발송 이력을 제공한다.
- 미접속을 죄책감으로 압박하거나, 읽지 않은 알림을 계속 쌓아 불안을 유도하지 않는다.
- 원격 푸시는 친구 요청, 서버 사건, 콘텐츠 공지처럼 서버가 필요한 경우에만 사용한다. 타이머와 개인 약속은 가능한 로컬 알림으로 처리한다.
우선순위
날짜·날씨·기본 알림·딥링크는 높음. 위젯과 고도화된 원격 푸시는 중간, Live Activity 등 플랫폼 확장은 후속 확장이다.
7. 로그인, 백업과 개인정보 경계
로그인 기능
- 자체 이메일/비밀번호와 OAuth 2.0 기반 SNS 로그인을 함께 제공한다.
- 1차 SNS 후보는 Google, X(트위터), Kakao, Naver다.
- 로그인하지 않아도 혼자 하는 핵심 게임은 진행할 수 있다.
- 로그인은 기기 이전, 선택 백업, 친구 식별, 구매 복원을 위한 선택 기능이며 대화 기록 수집의 통로가 아니다.
서버로 동기화 가능한 최소 정보
- 계정 UID, 인증 제공자 식별자, 동의 상태
- 선택 캐릭터 ID·표시 이름, 성장 상태 요약, 재화·소유 아이템·가구·공개 방 스냅샷
- 튜토리얼 진행, 구매 검증·복원에 필요한 거래 식별자
- 친구 요청·수락·차단·신고 상태
서버로 기본 전송하지 않는 정보
- 대화 원문과 장기 기억 원문
- 건강·수면 원본, 정확한 위치, 이동 경로, 일정 제목
- 자유 입력 원문, 민감한 개인 프로필, 로컬 AI 프롬프트 원문
저장과 복구
- 로컬 저장은 primary/backup과 무결성 검증을 사용한다.
- 손상 시 자동 덮어쓰기 대신
상태 확인 → 복원 → 사본 내보내기 → 새 시작을 사용자가 선택한다. - 계정 삭제·백업 해제 시 서버 사본의 처리와 로컬 기록 유지 여부를 명시적으로 고른다.
우선순위
로컬 저장·복구는 높음. OAuth와 선택 백업은 높음. 모든 SNS 기능을 한 번에 여는 일은 제공자별 심사·정책 검토 뒤 단계적으로 진행한다.
8. 친구와 제한된 캐릭터 교류
친구 추가
- 연동 SNS, 초대 링크, 친구 UID로 요청을 보낸다.
- 상대의 명시 수락 뒤에만 친구 목록에 추가한다.
- 자동 친구 추가·연락처 전체 수집은 하지 않는다.
친구 방 방문과 교류
- 친구가 공개한 마지막 방 스냅샷을 비동기로 방문한다.
- 두 캐릭터는 인사, 같이 놀기, 선물 감상, 미리 만든 짧은 장면처럼 제한된 행동만 한다.
- 소통은 미리 정한 스티커·반응만 제공한다. 자유 채팅, 이미지 업로드, 외부 링크, 실시간 음성은 제공하지 않는다.
- 공개 범위, 친구 요청 허용, 방 방문 허용, 캐릭터 교류 허용은 각각 독립적으로 설정한다.
- 차단, 신고, 친구 삭제는 친구 기능과 같은 우선순위로 제공한다.
후속 확장
친구 초대 기반 협동 미니게임은 검토할 수 있다. 랭킹, 대전, 랜덤 매칭, 친구가 없어도 불리해지는 성장 보상은 제외한다.
우선순위
친구 식별·공개 설정·차단/신고는 높음. 방 방문·교류·스티커는 중간. 협동 미니게임은 낮음이다.
9. 역할 분담과 완료 증거
| 영역 | 주 책임 | 완료로 인정하는 증거 |
|---|---|---|
| 제품·콘텐츠 | Product/Design | 기능별 목적·포함·제외·우선순위·결정 대기값이 문서화됨 |
| Unity 클라이언트 | Unity | 저장/복구, 홈/상점/도감/튜토리얼/알림 딥링크의 플레이·회귀 테스트와 390×844 QA |
| 백엔드 | Backend | OAuth, 날씨 프록시, 푸시, 친구, 구매 복원의 최소 API와 허용/금지 payload 검증 |
| 로컬 AI | AI | 승인된 상태를 대사로 표현하고, 관계·재화·해금을 직접 결정하지 않는 계약 테스트 |
| 아트 | Art | 승인된 자산의 provenance, 임포트 계약, 게임 화면 가독성 QA |
| QA/Release | QA/DevOps | 오프라인·권한 거절·저장 손상·푸시 비수신·계정 이전·결제 복원 시나리오와 릴리즈 Gate |
이미지 산출물이나 AI 생성 여부는 이 기능 명세의 완료 조건이 아니다. 기능은 사용자 경험, 데이터 경계, 실패 처리, 검증 증거로 완료를 판정한다.
10. 이번 문서에서 명시적으로 제외하는 것
- 미접속에 따른 관계 하락, 연속 출석 벌칙, 죄책감형 알림
- 확률형 가챠, 광고 시청 강요, 사용자 간 거래와 경매장
- 친구 DM, 공개 커뮤니티, 랜덤 매칭, 실시간 음성·영상
- 무제한 범용 챗봇, 대화 원문의 기본 서버 전송
- 정밀 GPS 상시 추적, 이동 경로 저장, 건강 데이터의 서버 수집
- 관계·필수 스토리·성장 능력치를 기간 한정 또는 유료로 잠그는 구조
- 리듬게임의 세부 규칙을 이 문서에서 확정하는 일
11. 다음 회의에서 확정할 순서
- 육성 파라미터의 공개 방식, 스트레스 회복 규칙, 일일 성장 감소식
- 관계 단계·진화·스토리 진행 조건과 대표 추억의 기준
- 무료/유료 재화 분리 여부, 가설 수치의 경제 검증, 결제 복원·환불 정책
- 아이템 도감의 기능 아이템·히든·한정·재등장 정책
- 위젯 허용 상호작용과 푸시 종류별 opt-in·빈도 상한
- OAuth 제공자 도입 순서, 친구 공개 범위, 차단·신고 운영 정책
- 별도 리듬게임 명세 문서의 링크와 도입 조건
이 문서의 결론은 최종 제품 기능 범위 의사결정서, 극상세 WBS 마스터, Unity 클라이언트 WBS, 백엔드·데이터·보안 WBS에 같은 용어로 반영한다.