# Unity 프로젝트 워크플로우 가이드 ## 📋 개요 Unity 게임 개발 프로젝트에서 PRD, TRD, Todo 문서를 활용한 체계적인 개발 워크플로우를 제시하는 가이드입니다. ## 🔄 전체 개발 워크플로우 ```mermaid graph TD A[프로젝트 시작] --> B[PRD 작성] B --> C[이해관계자 검토] C --> D{PRD 승인?} D -->|No| B D -->|Yes| E[TRD 작성] E --> F[기술 검토] F --> G{TRD 승인?} G -->|No| E G -->|Yes| H[스프린트 계획] H --> I[Todo 생성] I --> J[개발 진행] J --> K[일일 스크럼] K --> L{스프린트 완료?} L -->|No| J L -->|Yes| M[스프린트 리뷰] M --> N[회고] N --> O{프로젝트 완료?} O -->|No| H O -->|Yes| P[프로젝트 완료] ``` ## 1️⃣ 프로젝트 시작 단계 ### 📋 PRD (Product Requirements Document) 작성 #### 작성 책임자 - **주 담당자**: 기획자 또는 프로덕트 오너 - **참여자**: 개발 리드, 아트 디렉터, 마케팅 담당자 #### 작성 프로세스 ``` 1. 비즈니스 요구사항 분석 ↓ 2. 사용자 리서치 및 페르소나 정의 ↓ 3. 핵심 기능 정의 및 우선순위 결정 ↓ 4. Unity 특화 요구사항 정의 ↓ 5. 일정 및 리소스 계획 ``` #### 체크포인트 - [ ] 비즈니스 목표가 명확히 정의되었는가? - [ ] 타겟 사용자층이 구체적으로 식별되었는가? - [ ] 핵심 기능과 부가 기능이 명확히 분류되었는가? - [ ] 성공 지표(KPI)가 측정 가능하게 정의되었는가? - [ ] Unity 플랫폼별 요구사항이 포함되었는가? #### 이해관계자 검토 ``` 기획자 → 개발 리드 → 아트 디렉터 → 마케팅 → 경영진 ↓ ↓ ↓ ↓ ↓ 피드백 수집 → 수정 반영 → 재검토 → 최종 승인 ``` ## 2️⃣ 기술 설계 단계 ### 🔧 TRD (Technical Requirements Document) 작성 #### 작성 책임자 - **주 담당자**: 기술 리드 또는 시니어 개발자 - **참여자**: 개발팀 전체, 인프라 담당자 #### 작성 프로세스 ``` 1. PRD 분석 및 기술적 요구사항 추출 ↓ 2. 아키텍처 설계 (MVVM + DI + 메시징) ↓ 3. 기술 스택 및 라이브러리 선정 (R3, UniTask, VContainer, MessagePipe, Google Protobuf) ↓ 4. 네트워크 통신 및 데이터 직렬화 설계 (Protobuf 스키마) ↓ 5. 성능 요구사항 및 최적화 계획 ↓ 6. 개발 환경 및 빌드 프로세스 정의 ``` #### Unity 특화 고려사항 - **아키텍처 패턴**: MVVM 패턴을 중심으로 한 모듈화 - **의존성 주입**: VContainer를 활용한 DI 설계 - **메시징 시스템**: MessagePipe를 통한 모듈 간 통신 - **비동기 처리**: UniTask 활용한 성능 최적화 - **반응형 프로그래밍**: R3(UniRx) 활용한 이벤트 처리 - **데이터 직렬화**: Google Protobuf를 통한 고성능 네트워크 통신 #### 기술 검토 프로세스 ``` 기술 리드 작성 → 시니어 개발자 검토 → 팀 전체 리뷰 → 최종 승인 ↓ ↓ ↓ ↓ 기술 검증 → 구현 가능성 평가 → 리스크 식별 → 대응 방안 수립 ``` ## 3️⃣ 개발 계획 단계 ### 📅 스프린트 계획 (Sprint Planning) #### 참여자 - **스크럼 마스터**: 진행 및 촉진 - **프로덕트 오너**: 우선순위 결정 - **개발팀**: 작업 분해 및 추정 #### 계획 프로세스 ``` 1. 백로그 정리 및 우선순위 확인 ↓ 2. 팀 벨로시티 및 용량 계산 ↓ 3. 사용자 스토리 분해 및 태스크 생성 ↓ 4. 스토리 포인트 추정 (Planning Poker) ↓ 5. 스프린트 목표 설정 ``` #### 사용자 스토리 분해 예시 ``` Epic: 플레이어 시스템 ├── User Story: 플레이어 캐릭터 생성 │ ├── Task: Character Model 클래스 구현 │ ├── Task: CharacterView UI 작성 │ ├── Task: CharacterViewModel 바인딩 │ └── Task: 캐릭터 생성 테스트 작성 ├── User Story: 플레이어 스탯 관리 │ ├── Task: StatsModel ScriptableObject 작성 │ ├── Task: StatsViewModel 구현 │ └── Task: 스탯 UI 연결 ``` ### ✅ Todo 작업 생성 #### Todo 작성 원칙 1. **SMART 원칙**: Specific, Measurable, Achievable, Relevant, Time-bound 2. **단일 책임**: 하나의 Todo는 하나의 기능만 담당 3. **명확한 완료 조건**: 체크 가능한 구체적 기준 제시 4. **의존성 명시**: 다른 작업과의 관계 명확히 표시 #### 우선순위 분류 (아이젠하워 매트릭스) ``` 🔥 긴급 & 중요 (Do First) ├── 게임 크래시 버그 수정 ├── 빌드 실패 이슈 해결 └── 데드라인 임박 핵심 기능 📈 중요 & 비긴급 (Schedule) ├── 핵심 게임플레이 구현 ├── 아키텍처 개선 └── 성능 최적화 ⚡ 긴급 & 비중요 (Delegate) ├── 사소한 UI 버그 ├── 문서 업데이트 └── 환경 설정 이슈 📝 비긴급 & 비중요 (Eliminate) ├── 추가 기능 ├── 실험적 기능 └── 불필요한 최적화 ``` ## 4️⃣ 개발 실행 단계 ### 🔄 일일 워크플로우 #### 일일 스크럼 (Daily Scrum) **시간**: 매일 오전 9:00 (15분) **형식**: 3가지 질문 기반 1. **어제 무엇을 했는가?** - 완료한 Todo 항목 공유 - 구현한 기능이나 해결한 문제점 2. **오늘 무엇을 할 것인가?** - 계획된 Todo 항목 - 예상 소요 시간 및 완료 목표 3. **차단 요소가 있는가?** - 진행을 막는 기술적/인적 문제 - 도움이 필요한 부분 #### 작업 진행 프로세스 ``` Todo 선택 → 브랜치 생성 → 개발 → 로컬 테스트 → PR 생성 → 코드 리뷰 → 병합 → Todo 완료 ``` #### 코드 리뷰 체크리스트 - [ ] **Unity 코딩 표준 준수**: 네이밍 규칙, 들여쓰기 등 - [ ] **MVVM 패턴 적용**: View-ViewModel-Model 분리 - [ ] **성능 최적화**: GetComponent 캐싱, GC 최소화 - [ ] **메모리 관리**: 이벤트 구독 해제, 오브젝트 풀링 - [ ] **테스트 커버리지**: 단위 테스트 작성 여부 - [ ] **문서화**: 주석 및 README 업데이트 ### 📊 진행 상황 추적 #### 칸반 보드 운영 ``` 📋 Backlog → 🔄 In Progress → 👀 Review → ✅ Done ↑ ↑ ↑ ↑ 새로운 작업 진행 중 작업 리뷰 대기 완료된 작업 ``` #### 번다운 차트 관리 - **업데이트 주기**: 매일 스크럼 후 - **추적 항목**: 남은 스토리 포인트, 완료된 작업 - **경고 기준**: 이상적 번다운 대비 20% 이상 지연 ## 5️⃣ 스프린트 완료 단계 ### 📊 스프린트 리뷰 (Sprint Review) #### 참여자 - **개발팀**: 구현 내용 데모 - **프로덕트 오너**: 수용 여부 결정 - **이해관계자**: 피드백 제공 #### 리뷰 프로세스 ``` 1. 스프린트 목표 달성도 확인 ↓ 2. 완료된 기능 데모 ↓ 3. 이해관계자 피드백 수집 ↓ 4. 백로그 우선순위 재조정 ↓ 5. 다음 스프린트 방향성 논의 ``` #### 데모 가이드라인 - **실제 기기에서 시연**: Unity 에디터가 아닌 빌드 버전 - **사용자 시나리오 기반**: 실제 사용 패턴 시연 - **성능 지표 포함**: FPS, 로딩 시간 등 수치 제시 ### 🔄 스프린트 회고 (Sprint Retrospective) #### 참여자: 개발팀만 (Scrum Team) #### 회고 형식: Start-Stop-Continue **Start (시작할 것)** - 새로 도입하면 좋을 프로세스나 도구 - 팀 생산성 향상을 위한 아이디어 **Stop (중단할 것)** - 비효율적이거나 방해가 되는 요소 - 시간 낭비를 유발하는 활동 **Continue (지속할 것)** - 잘 작동하고 있는 프로세스 - 팀에 도움이 되는 관행들 #### 액션 아이템 도출 - [ ] **구체적 개선 사항**: [내용] - 담당자: [이름] - 기한: [날짜] - [ ] **실험적 시도**: [내용] - 담당자: [이름] - 기한: [날짜] ## 6️⃣ 품질 관리 프로세스 ### 🧪 테스트 전략 #### 테스트 피라미드 ``` /\ / \ / UI \ ← End-to-End Tests (적은 수) /______\ / \ /Integration\ ← Integration Tests (중간 수) /__________\ / \ / Unit Tests \ ← Unit Tests (많은 수) /______________\ ``` #### Unity 특화 테스트 - **Play Mode Tests**: 실제 게임 환경에서의 통합 테스트 - **Edit Mode Tests**: 로직 중심의 단위 테스트 - **Performance Tests**: 성능 및 메모리 사용량 테스트 ### 📋 Definition of Done (완료 기준) #### 개발 완료 기준 - [ ] 기능 구현 완료 (수용 기준 100% 충족) - [ ] 단위 테스트 작성 및 통과 (커버리지 80% 이상) - [ ] 코드 리뷰 완료 및 승인 (최소 2명) - [ ] 정적 분석 도구 통과 (Linting, 컴파일 경고 0개) #### 품질 검증 기준 - [ ] 통합 테스트 통과 - [ ] 성능 기준 충족 (목표 FPS, 메모리 사용량) - [ ] UI/UX 가이드라인 준수 - [ ] 접근성 기준 충족 (다국어, 색약 지원 등) #### 배포 준비 기준 - [ ] QA 테스트 통과 - [ ] 문서 업데이트 완료 (API 문서, 사용자 매뉴얼) - [ ] 빌드 스크립트 검증 - [ ] 프로덕트 오너 최종 승인 ## 7️⃣ 위기 대응 프로세스 ### ⚠️ 차단 요소 해결 #### 즉시 대응 (24시간 내) - **크리티컬 버그**: 게임 크래시, 데이터 손실 - **빌드 실패**: CI/CD 파이프라인 중단 - **외부 의존성 문제**: 라이브러리 오류, API 장애 #### 해결 프로세스 ``` 문제 발생 → 즉시 보고 → 원인 분석 → 우선순위 조정 → 해결 → 사후 검토 ↓ ↓ ↓ ↓ ↓ ↓ 이슈 생성 → 담당자 지정 → 임시 방안 → 근본 해결 → 테스트 → 문서화 ``` ### 📈 리스크 관리 #### Unity 개발 특화 리스크 - **메모리 부족**: 모바일 플랫폼에서 메모리 사용량 초과 - **성능 저하**: 목표 FPS 미달성 - **플랫폼 호환성**: 다양한 디바이스 대응 문제 - **에셋 관리**: 용량 초과, 로딩 시간 지연 #### 대응 전략 1. **예방**: 정기적 성능 테스트, 코드 리뷰 2. **완화**: 프로토타입으로 미리 검증 3. **전가**: 외부 라이브러리나 외주 활용 4. **수용**: 발생 시 대응 계획 수립 ## 8️⃣ 도구 및 환경 ### 🛠️ 개발 도구 통합 #### 버전 관리 - **Git**: 소스 코드 및 문서 버전 관리 - **Git LFS**: 대용량 에셋 관리 (아트, 오디오) - **브랜치 전략**: Git Flow 기반 #### 프로젝트 관리 - **GitHub Issues**: 버그 리포트, 기능 요청 - **GitHub Projects**: 칸반 보드, 마일스톤 관리 - **Slack/Discord**: 팀 커뮤니케이션 #### CI/CD 파이프라인 ``` 코드 커밋 → 자동 빌드 → 자동 테스트 → 배포 → 알림 ↓ ↓ ↓ ↓ ↓ Git Hook → Unity Cloud → Test Runner → Deployment → Team Notification ``` ### 📊 모니터링 및 분석 #### 개발 메트릭스 - **코드 품질**: SonarQube를 통한 정적 분석 - **테스트 커버리지**: 단위 테스트 커버리지 추적 - **빌드 성공률**: CI/CD 파이프라인 성공률 #### 팀 생산성 - **벨로시티**: 스프린트별 완료 스토리 포인트 - **리드 타임**: 작업 시작부터 완료까지 시간 - **사이클 타임**: 실제 작업 진행 시간 ## 🎓 베스트 프랙티스 ### 📝 문서 관리 - **실시간 업데이트**: 변경사항 발생 시 즉시 문서 반영 - **버전 관리**: 중요 문서는 버전 히스토리 유지 - **접근성**: 모든 팀원이 쉽게 접근 가능한 위치에 저장 ### 🤝 팀 협업 - **투명한 소통**: 진행 상황과 문제점 공유 - **지식 공유**: 정기적인 기술 세미나나 코드 리뷰 - **지속적 개선**: 회고를 통한 프로세스 개선 ### 🔧 기술적 우수 사례 - **모듈화**: 기능별로 독립적인 모듈 설계 - **테스트 자동화**: 지속적인 품질 보증 - **성능 모니터링**: 정기적인 프로파일링 --- ## 📚 참고 자료 - [Scrum Guide](https://scrumguides.org/) - [Unity Best Practices](https://docs.unity3d.com/Manual/BestPractice.html) - [Agile Manifesto](https://agilemanifesto.org/) - [Clean Code 원칙](https://clean-code-developer.com/) --- *최종 업데이트: 2024-01-03* *작성자: Unity Development Team* *버전: v1.0*