# Unity 프로젝트 문서화 가이드 ## 📋 개요 이 가이드는 Unity 게임 개발 프로젝트에서 체계적이고 효율적인 문서화를 위한 표준과 베스트 프랙티스를 제시합니다. ## 🏗️ 문서 구조 체계 ### 📁 Documents 폴더 구조 ``` Documents/ ├── Requirements/ # 요구사항 관련 문서 │ ├── PRD/ # 제품 요구사항 문서 │ │ ├── PRD_Template.md │ │ ├── PRD_[FeatureName].md │ │ └── Archive/ # 구버전 보관 │ └── TRD/ # 기술 요구사항 문서 │ ├── TRD_Template.md │ ├── TRD_Architecture.md │ └── Archive/ ├── Planning/ # 계획 및 관리 문서 │ ├── Todo/ # 작업 관리 │ │ ├── TODO_Template.md │ │ ├── Sprint_Planning.md │ │ ├── Task_Management_Guide.md │ │ └── Weekly/ # 주간 계획들 │ └── Roadmap/ # 로드맵 문서 │ ├── Product_Roadmap.md │ └── Technical_Roadmap.md ├── Guides/ # 가이드 문서 │ ├── Documentation_Guide.md (이 문서) │ ├── Workflow_Guide.md │ ├── Coding_Standards.md │ └── Setup_Guide.md ├── Design/ # 디자인 문서 │ ├── Game_Design/ │ │ ├── GDD_Template.md │ │ └── Level_Design/ │ ├── UI_UX/ │ │ ├── UI_Specifications.md │ │ └── UX_Guidelines.md │ └── Art_Direction/ │ └── Art_Style_Guide.md ├── Meeting_Notes/ # 회의록 │ ├── YYYY-MM/ # 월별 폴더 │ │ ├── Daily_Scrum/ │ │ ├── Sprint_Review/ │ │ └── Retrospective/ │ └── Templates/ │ └── Meeting_Template.md └── Archive/ # 완료/폐기된 문서들 ├── Completed_Projects/ └── Deprecated/ ``` ## 📝 문서 작성 원칙 ### 1. 명확성 (Clarity) - **목적 명시**: 각 문서의 목적과 대상 독자를 명확히 기술 - **구체적 표현**: 모호한 표현 대신 구체적이고 측정 가능한 표현 사용 - **예시 활용**: 추상적 개념은 구체적 예시로 설명 ### 2. 일관성 (Consistency) - **표준 템플릿**: 문서 유형별 표준 템플릿 사용 - **네이밍 규칙**: 일관된 파일 및 섹션 명명 규칙 적용 - **용어 통일**: 프로젝트 전체에서 동일한 용어 사용 ### 3. 최신성 (Currency) - **정기 검토**: 월 1회 이상 문서 내용 검토 및 업데이트 - **버전 관리**: 문서 변경 이력 추적 및 버전 관리 - **책임자 지정**: 각 문서별 관리 책임자 지정 ### 4. 접근성 (Accessibility) - **검색 최적화**: 키워드와 태그를 활용한 검색 최적화 - **링크 연결**: 관련 문서 간 상호 참조 링크 제공 - **다국어 고려**: 필요시 다국어 버전 제공 ## 📋 문서 유형별 가이드 ### PRD (Product Requirements Document) **목적**: 제품/기능의 비즈니스 요구사항과 사용자 관점의 요구사항 정의 #### 작성 시점 - 새로운 기능/제품 개발 시작 전 - 기존 기능의 대대적 개선 시 - 스테이크홀더와의 요구사항 정렬이 필요할 때 #### 핵심 구성 요소 ```markdown 1. 제품 개요 (목적, 목표, 대상 사용자) 2. 기능 요구사항 (Core/Additional/Out of Scope) 3. Unity 특화 요구사항 (플랫폼, 성능, 게임플레이) 4. UI/UX 요구사항 5. 일정 및 마일스톤 ``` #### 작성 베스트 프랙티스 - **사용자 관점**: 사용자 스토리 형태로 요구사항 기술 - **우선순위**: Must-have, Should-have, Could-have로 분류 - **수용 기준**: 각 기능별 명확한 완료 기준 제시 ### TRD (Technical Requirements Document) **목적**: PRD의 기술적 구현 방안과 아키텍처 설계 정의 #### 작성 시점 - PRD 승인 후, 개발 시작 전 - 아키텍처 변경이 필요한 시점 - 기술적 리스크 식별 시 #### 핵심 구성 요소 ```markdown 1. 아키텍처 설계 (시스템 구조, 디자인 패턴) 2. 기술 스택 (Unity 버전, 필수 패키지) 3. 기능별 구현 방안 (클래스 설계, API 설계) 4. 성능 최적화 계획 5. 테스트 전략 ``` #### Unity 특화 고려사항 - **MVVM 패턴**: View-ViewModel-Model 분리 - **DI 컨테이너**: VContainer 활용한 의존성 관리 - **메시징 시스템**: MessagePipe를 통한 모듈 간 통신 - **성능 프로파일링**: 메모리, CPU, GPU 사용량 목표치 ### Todo 관리 문서 **목적**: 개발 작업의 체계적 관리와 진행 상황 추적 #### 작성 주기 - **스프린트 계획**: 스프린트 시작 시 - **일일 업데이트**: 매일 스크럼 시 - **주간 리뷰**: 주 단위 회고 #### 구성 요소 ```markdown 1. 우선순위별 작업 분류 (High/Medium/Low) 2. 진행 상황 (To Do/In Progress/Done/Blocked) 3. 담당자 및 예상 소요 시간 4. 의존성 관계 및 차단 요소 5. 완료 조건 및 성공 기준 ``` ## ✍️ 마크다운 작성 가이드 ### 기본 문법 ```markdown # 제목 1 (H1) - 문서 제목용 ## 제목 2 (H2) - 주요 섹션용 ### 제목 3 (H3) - 하위 섹션용 **굵게** 또는 __굵게__ - 중요한 내용 *기울임* 또는 _기울임_ - 강조 - 순서 없는 목록 - 하위 목록 1. 순서 있는 목록 1. 하위 순서 목록 [링크 텍스트](URL) ![이미지 설명](이미지_경로) `인라인 코드` ```코드 블록``` > 인용문 | 테이블 | 헤더 | |--------|------| | 셀1 | 셀2 | ``` ### Unity 특화 문법 ```markdown #### Unity 컴포넌트 참조 `PlayerController` - 클래스명 `GameObject.Find()` - 메서드명 `[SerializeField]` - 속성명 #### 폴더 구조 표현 ``` Assets/ ├── Scripts/ │ ├── Controllers/ │ └── Models/ └── Prefabs/ ``` #### 코드 예시 ```csharp public class PlayerController : MonoBehaviour { [SerializeField] private float moveSpeed = 5f; private void Update() { // 플레이어 이동 로직 } } ``` #### 체크리스트 - [ ] 미완료 항목 - [x] 완료된 항목 ``` ### 이모지 활용 가이드 ```markdown 📋 정보/목록 🎯 목표/타겟 🔧 기술/도구 ⚠️ 주의/경고 ✅ 완료/성공 ❌ 실패/금지 🔄 진행중/프로세스 📊 데이터/차트 🎮 게임 관련 🎨 UI/디자인 관련 ``` ## 🔄 문서 생명주기 관리 ### 1. 작성 단계 (Creation) - **템플릿 활용**: 해당 문서 유형의 표준 템플릿 사용 - **초안 작성**: Draft 상태로 초기 버전 작성 - **내부 검토**: 팀 내 기본 검토 후 Review 상태로 변경 ### 2. 검토 단계 (Review) - **이해관계자 리뷰**: 해당 문서의 주요 이해관계자들의 검토 - **피드백 수집**: 댓글이나 별도 문서로 피드백 수집 - **수정 반영**: 피드백을 바탕으로 문서 개선 ### 3. 승인 단계 (Approval) - **최종 승인**: 프로젝트 리드나 제품 오너의 승인 - **Approved 상태**: 공식 문서로 확정 - **배포**: 팀 전체에 문서 공유 및 교육 ### 4. 유지보수 단계 (Maintenance) - **정기 검토**: 월 1회 이상 문서 내용 점검 - **업데이트**: 변경사항 발생 시 즉시 반영 - **버전 관리**: 변경 이력 추적 및 버전 번호 관리 ### 5. 아카이브 단계 (Archive) - **완료/폐기**: 프로젝트 완료나 요구사항 변경 시 - **아카이브 이동**: Archive 폴더로 이동 - **참조 유지**: 필요 시 참조할 수 있도록 링크 유지 ## 📊 문서 품질 관리 ### 품질 체크리스트 #### 내용 품질 - [ ] 목적과 범위가 명확히 정의되어 있는가? - [ ] 대상 독자가 이해하기 쉬운 언어로 작성되었는가? - [ ] 구체적이고 실행 가능한 내용인가? - [ ] 예시와 다이어그램이 적절히 활용되었는가? #### 구조 품질 - [ ] 표준 템플릿을 따르고 있는가? - [ ] 논리적 순서로 구성되어 있는가? - [ ] 제목과 소제목이 일관성 있게 작성되었는가? - [ ] 목차나 인덱스가 필요하다면 제공되었는가? #### 기술 품질 - [ ] 오타나 문법 오류가 없는가? - [ ] 링크가 정상적으로 작동하는가? - [ ] 이미지나 다이어그램이 선명한가? - [ ] 버전 정보와 작성자 정보가 정확한가? ### 문서 메트릭스 - **완성도**: 필수 섹션 작성 완료율 - **최신성**: 마지막 업데이트 이후 경과 시간 - **활용도**: 문서 조회수, 참조 횟수 - **피드백**: 리뷰어 만족도, 개선 제안 수 ## 🔧 도구 및 환경 ### 권장 마크다운 에디터 - **Typora**: WYSIWYG 지원, 실시간 미리보기 - **Mark Text**: 오픈소스, 크로스 플랫폼 - **Visual Studio Code**: 플러그인을 통한 마크다운 지원 - **Notion**: 협업 기능 강화된 문서 작성 ### 버전 관리 - **Git**: 문서 버전 관리 (코드와 동일한 저장소) - **파일 명명**: `문서명_v1.2_YYYYMMDD.md` 형식 - **브랜치 전략**: `docs/feature-name` 형식의 브랜치 ### 협업 도구 - **GitHub/GitLab**: Pull Request 기반 리뷰 - **Confluence**: 위키 형태의 문서 관리 - **Google Docs**: 실시간 협업 편집 - **Slack/Discord**: 문서 관련 논의 ## 📚 템플릿 활용법 ### 신규 문서 생성 시 1. **템플릿 선택**: 문서 유형에 맞는 템플릿 복사 2. **파일명 변경**: 규칙에 따른 의미 있는 파일명 설정 3. **기본 정보 입력**: 작성자, 날짜, 버전 정보 입력 4. **내용 작성**: 템플릿의 가이드에 따라 섹션별 작성 ### 템플릿 커스터마이징 - **프로젝트별 적용**: 프로젝트 특성에 맞게 템플릿 조정 - **팀 합의**: 템플릿 변경 시 팀 전체 합의 필요 - **버전 관리**: 템플릿 자체도 버전 관리 대상 ## 🎓 교육 및 온보딩 ### 신규 팀원 온보딩 1. **문서 구조 소개**: Documents 폴더 구조 및 각 문서 유형 설명 2. **템플릿 사용법**: 각 템플릿의 목적과 작성 방법 교육 3. **실습**: 간단한 문서 작성 실습 4. **피드백**: 작성한 문서에 대한 리뷰 및 피드백 ### 지속적 개선 - **문서 작성 워크샵**: 분기별 문서 작성 스킬 향상 교육 - **베스트 프랙티스 공유**: 잘 작성된 문서 사례 공유 - **프로세스 개선**: 문서화 프로세스 지속적 개선 --- ## 📖 참고 자료 - [Markdown Guide](https://www.markdownguide.org/) - [GitHub Flavored Markdown](https://github.github.com/gfm/) - [Unity Documentation Best Practices](https://docs.unity3d.com/) - [Technical Writing Guidelines](https://developers.google.com/tech-writing) --- *최종 업데이트: 2024-01-01* *작성자: Unity Development Team* *버전: v1.0*