# {프로젝트명} — 기술스택 결정

> **버전**: 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건 반영 |
