# {프로젝트명} — 기술스택 결정 > **버전**: v1 > **작성일**: {날짜} > **담당**: 개발팀장 > **적용 범위**: {프로젝트명} 전 개발 스택 --- ## 1. 서버/백엔드 | 항목 | 선택 | 대안 | 근거 | |------|------|------|------| | **백엔드 서비스** | `{선택 예: PlayFab / 자체 서버}` | `{대안}` | `{선택 근거}` | | **인증 방식** | `{선택 예: 디바이스ID / 구글 로그인}` | `{대안}` | `{근거}` | | **실시간 통신** | `{선택 예: 불필요 / WebSocket}` | `{대안}` | `{근거}` | | **데이터 저장** | `{선택 예: 서버 계정 데이터 + 로컬 캐시}` | `{대안}` | `{근거}` | **결정 미완료 항목**: 위 표에서 `{}`로 표기된 항목은 착수 전 팀장 확정 필수. 결정 후 이 섹션을 갱신한다. --- ## 2. 클라이언트 핵심 스택 | 영역 | 선택 | 비고 | |------|------|------| | **UI 시스템** | UGUI 주력, UIToolkit 보조 | NerdNavis.Framework 정책 (01_아키텍처_개요 참조) | | **리소스 관리** | Unity Addressables | Resources.Load 남용 금지 (03_코딩_컨벤션 참조) | | **JSON 라이브러리** | Newtonsoft.Json (Unity 패키지) | `com.unity.nuget.newtonsoft-json` | | **비동기 패턴** | async/await + `NerdNavis.Core.Coroutine.CoroutineRunner` | UniTask 도입 여부는 별도 결정 | | **DI** | `NerdNavis.Core.Patterns.ServiceLocator` | 인터페이스 기반 등록·조회 | | **이벤트** | `NerdNavis.Core.Event.EventBus` (타입 안전) | 문자열 키 이벤트 금지 | --- ## 3. 🔴 보안 안티패턴 체크리스트 > **수상한잡화점 Critical 3건에서 도출된 필수 점검 항목.** 착수 전 개발팀장이 전수 검토하고, 해당 항목의 설계 결정을 이 섹션에 기록한다. ### 3.1 전투/핵심 연산 서버 검증 - [ ] **전투·핵심 게임 연산의 서버 검증 구조 확보 (100% 클라이언트 연산 금지)** - 위반 사례: 수상한잡화점 HP/Shield/Buff 전부 클라 계산 → 클라 변조 시 서버 검증 불가 - 적용 방향: `{선택 예: 클리어 판정·보상 지급은 서버 재연산 / 최소 HMAC 서명 검증}` - 결정 상태: `{미결 / 완료}` ### 3.2 암호화 키 관리 - [ ] **암호화 키·비밀값 하드코딩 금지 (서버 측 키 관리 또는 환경변수)** - 위반 사례: 수상한잡화점 CryptoUtil.cs에 AES 키(32byte), IV(16byte) 평문 하드코딩 - 적용 방향: `{선택 예: 런타임 디바이스ID 유도 키 / 서버 전달 키 / 환경변수}` - 결정 상태: `{미결 / 완료}` ### 3.3 IAP 영수증 서버 검증 - [ ] **IAP 영수증 서버 검증 필수 (클라이언트 단독 결제 처리 금지)** - 위반 사례: 수상한잡화점 영수증 검증 전부 주석처리 → 결제 우회 가능, 매출 직접 손실 - 적용 방향: `{선택 예: PlayFab ValidateXXXReceipt API / 자체 서버 검증 엔드포인트}` - 결정 상태: `{미결 / 완료 / 해당 없음(IAP 미포함 프로젝트)}` ### 3.4 추가 보안 항목 - [ ] **SpeedHack/TimeCheck Detector 적용** (AntiCheatToolkit 또는 자체 구현) - [ ] **전투 스탯·재화·레벨 핵심 필드 `Obscured*` 적용** (AntiCheatToolkit 사용 시) - [ ] **빌드 시 JSON 평문 노출 대응** (APK 분해 시 데이터 테이블 노출 위험) --- ## 4. CI/CD | 항목 | 선택 | 비고 | |------|------|------| | **버전 관리** | Git (main 브랜치 기준) | C18 조직 공유 완료 기준 | | **빌드 자동화** | `{선택 예: GitHub Actions / Jenkins / 수동}` | `{근거}` | | **배포 채널** | `{선택 예: Firebase App Distribution / TestFlight / 사내 공유}` | QA 배포용 | | **스토어 배포** | `{선택 예: 수동 / fastlane}` | Release 빌드 | --- ## 5. 개발 도구 | 도구 | 용도 | 비고 | |------|------|------| | Claude Code (Claude Code) | 코드 생성·리뷰·문서 | NerdNavis 조직 표준 | | Unity MCP | Claude ↔ Unity Editor 연동 | `unity-mcp` 패키지 | | `{추가 도구}` | `{용도}` | | --- ## 변경 이력 | 버전 | 일자 | 작성자 | 내용 | |------|------|--------|------| | v1 | {날짜} | 개발팀장 | 템플릿 초안. 보안 체크리스트 수상한잡화점 3건 반영 |