BurningTimesAi/프로젝트/신규 프로젝트/개발/02_기술스택_결정.md

95 lines
4.2 KiB
Markdown
Raw Normal View History

# {프로젝트명} — 기술스택 결정
> **버전**: v1
> **작성일**: {날짜}
> **담당**: 개발팀장
> **적용 범위**: {프로젝트명} 전 개발 스택
---
## 1. 서버/백엔드
| 항목 | 선택 | 대안 | 근거 |
|------|------|------|------|
| **백엔드 서비스** | `{선택 예: PlayFab / 자체 서버}` | `{대안}` | `{선택 근거}` |
| **인증 방식** | `{선택 예: 디바이스ID / 구글 로그인}` | `{대안}` | `{근거}` |
| **실시간 통신** | `{선택 예: 불필요 / WebSocket}` | `{대안}` | `{근거}` |
| **데이터 저장** | `{선택 예: 서버 계정 데이터 + 로컬 캐시}` | `{대안}` | `{근거}` |
**결정 미완료 항목**: 위 표에서 `{}`로 표기된 항목은 착수 전 팀장 확정 필수. 결정 후 이 섹션을 갱신한다.
---
## 2. 클라이언트 핵심 스택
| 영역 | 선택 | 비고 |
|------|------|------|
feat(BT·신설): 조직 전환 Phase 2-A — Skill/Framework rename + 조직명 치환 + 새 프로젝트 셋업 PD님 2026-04-21 지시 8개 중 ②③④⑤⑥⑦⑧ 구조 전환부 이행 (①③ 노하우 재정리는 Phase 2-B, 삭제는 Phase 2-C). ## 집행 내역 1. .claude/skills/너드나비스-코어룰/ → BurningTimes-코어룰/ (Move-Item, R096·R100) 2. 코어코드/NerdNavis.Framework/ → 코어코드/BT.Framework/ (Move-Item, R100·R073·R081) 3. sed 일괄 치환 201파일 (치환 순서: NerdNavis.Framework → BT.Framework **선행** → NerdNavis → BurningTimes → 너드나비스 → BurningTimes) - 제외: .git/·.live/·.bak_*·memory/org/audit_logs/ 4. paths.local.json.template: DISCORD_WEBHOOK 추가 + Unity/Framework __SET_PER_PC__ placeholder 5. paths.local.json 실파일 생성 (gitignore, 본 PC 실값: Unity E:/NerdNavis/EerieVillage + Discord 웹훅) 6. 프로젝트/EerieVillage/ 신설 (개발·기획·관리 + README: 기묘한 고을: 조선퇴마뎐, Unity 6000.3.13f1 LTS, 2D PlatformerMicrogame) 7. README.md clone URL NerdNavis_AiDev/BurningTimesAi.git 실 URL 정정 8. 대화로그 공유/대화로그/조직운영/2026-04-21.md 신설 9. PD 지시 로그 양팀 BT1·BT2 항목 등록 (진행중) ## NerdNavis 의도적 잔존 3종 (C5 정직성) - GIT_REMOTE URL: Gitea 조직 hierarchy NerdNavis_AiDev (PD 별도 결정 영역) - UNITY_PROJECT_ROOT 실값: E:/NerdNavis/EerieVillage (PD 지시 6번) - EerieVillage README "BT.Framework (구 NerdNavis.Framework 계승)" 이력 표기 ## 감사 pm-auditor 사전 감사 Critical 2건 (대화로그·PD 지시 로그 선등록) 정정 완료. 매니페스트: bt-phase2a. ## 보류 (Phase 2-B → 2-C 예정) - Phase 2-B: 전 에이전트 동원 수상한잡화점 시행착오 노하우 추출·조직 자산화 - Phase 2-C: 수상한잡화점 일괄 삭제 + memory/org feedback "수상한잡화점" → "이전 프로젝트" 추상화 + PD 지시 로그 초기화 + 조직공지 정리 + SKILL P17·P29 재해석 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 15:44:48 +00:00
| **UI 시스템** | UGUI 주력, UIToolkit 보조 | BT.Framework 정책 (01_아키텍처_개요 참조) |
| **리소스 관리** | Unity Addressables | Resources.Load 남용 금지 (03_코딩_컨벤션 참조) |
| **JSON 라이브러리** | Newtonsoft.Json (Unity 패키지) | `com.unity.nuget.newtonsoft-json` |
feat(BT·신설): 조직 전환 Phase 2-A — Skill/Framework rename + 조직명 치환 + 새 프로젝트 셋업 PD님 2026-04-21 지시 8개 중 ②③④⑤⑥⑦⑧ 구조 전환부 이행 (①③ 노하우 재정리는 Phase 2-B, 삭제는 Phase 2-C). ## 집행 내역 1. .claude/skills/너드나비스-코어룰/ → BurningTimes-코어룰/ (Move-Item, R096·R100) 2. 코어코드/NerdNavis.Framework/ → 코어코드/BT.Framework/ (Move-Item, R100·R073·R081) 3. sed 일괄 치환 201파일 (치환 순서: NerdNavis.Framework → BT.Framework **선행** → NerdNavis → BurningTimes → 너드나비스 → BurningTimes) - 제외: .git/·.live/·.bak_*·memory/org/audit_logs/ 4. paths.local.json.template: DISCORD_WEBHOOK 추가 + Unity/Framework __SET_PER_PC__ placeholder 5. paths.local.json 실파일 생성 (gitignore, 본 PC 실값: Unity E:/NerdNavis/EerieVillage + Discord 웹훅) 6. 프로젝트/EerieVillage/ 신설 (개발·기획·관리 + README: 기묘한 고을: 조선퇴마뎐, Unity 6000.3.13f1 LTS, 2D PlatformerMicrogame) 7. README.md clone URL NerdNavis_AiDev/BurningTimesAi.git 실 URL 정정 8. 대화로그 공유/대화로그/조직운영/2026-04-21.md 신설 9. PD 지시 로그 양팀 BT1·BT2 항목 등록 (진행중) ## NerdNavis 의도적 잔존 3종 (C5 정직성) - GIT_REMOTE URL: Gitea 조직 hierarchy NerdNavis_AiDev (PD 별도 결정 영역) - UNITY_PROJECT_ROOT 실값: E:/NerdNavis/EerieVillage (PD 지시 6번) - EerieVillage README "BT.Framework (구 NerdNavis.Framework 계승)" 이력 표기 ## 감사 pm-auditor 사전 감사 Critical 2건 (대화로그·PD 지시 로그 선등록) 정정 완료. 매니페스트: bt-phase2a. ## 보류 (Phase 2-B → 2-C 예정) - Phase 2-B: 전 에이전트 동원 수상한잡화점 시행착오 노하우 추출·조직 자산화 - Phase 2-C: 수상한잡화점 일괄 삭제 + memory/org feedback "수상한잡화점" → "이전 프로젝트" 추상화 + PD 지시 로그 초기화 + 조직공지 정리 + SKILL P17·P29 재해석 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 15:44:48 +00:00
| **비동기 패턴** | async/await + `BurningTimes.Core.Coroutine.CoroutineRunner` | UniTask 도입 여부는 별도 결정 |
| **DI** | `BurningTimes.Core.Patterns.ServiceLocator` | 인터페이스 기반 등록·조회 |
| **이벤트** | `BurningTimes.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. 개발 도구
| 도구 | 용도 | 비고 |
|------|------|------|
feat(BT·신설): 조직 전환 Phase 2-A — Skill/Framework rename + 조직명 치환 + 새 프로젝트 셋업 PD님 2026-04-21 지시 8개 중 ②③④⑤⑥⑦⑧ 구조 전환부 이행 (①③ 노하우 재정리는 Phase 2-B, 삭제는 Phase 2-C). ## 집행 내역 1. .claude/skills/너드나비스-코어룰/ → BurningTimes-코어룰/ (Move-Item, R096·R100) 2. 코어코드/NerdNavis.Framework/ → 코어코드/BT.Framework/ (Move-Item, R100·R073·R081) 3. sed 일괄 치환 201파일 (치환 순서: NerdNavis.Framework → BT.Framework **선행** → NerdNavis → BurningTimes → 너드나비스 → BurningTimes) - 제외: .git/·.live/·.bak_*·memory/org/audit_logs/ 4. paths.local.json.template: DISCORD_WEBHOOK 추가 + Unity/Framework __SET_PER_PC__ placeholder 5. paths.local.json 실파일 생성 (gitignore, 본 PC 실값: Unity E:/NerdNavis/EerieVillage + Discord 웹훅) 6. 프로젝트/EerieVillage/ 신설 (개발·기획·관리 + README: 기묘한 고을: 조선퇴마뎐, Unity 6000.3.13f1 LTS, 2D PlatformerMicrogame) 7. README.md clone URL NerdNavis_AiDev/BurningTimesAi.git 실 URL 정정 8. 대화로그 공유/대화로그/조직운영/2026-04-21.md 신설 9. PD 지시 로그 양팀 BT1·BT2 항목 등록 (진행중) ## NerdNavis 의도적 잔존 3종 (C5 정직성) - GIT_REMOTE URL: Gitea 조직 hierarchy NerdNavis_AiDev (PD 별도 결정 영역) - UNITY_PROJECT_ROOT 실값: E:/NerdNavis/EerieVillage (PD 지시 6번) - EerieVillage README "BT.Framework (구 NerdNavis.Framework 계승)" 이력 표기 ## 감사 pm-auditor 사전 감사 Critical 2건 (대화로그·PD 지시 로그 선등록) 정정 완료. 매니페스트: bt-phase2a. ## 보류 (Phase 2-B → 2-C 예정) - Phase 2-B: 전 에이전트 동원 수상한잡화점 시행착오 노하우 추출·조직 자산화 - Phase 2-C: 수상한잡화점 일괄 삭제 + memory/org feedback "수상한잡화점" → "이전 프로젝트" 추상화 + PD 지시 로그 초기화 + 조직공지 정리 + SKILL P17·P29 재해석 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 15:44:48 +00:00
| Claude Code (Claude Code) | 코드 생성·리뷰·문서 | BurningTimes 조직 표준 |
| Unity MCP | Claude ↔ Unity Editor 연동 | `unity-mcp` 패키지 |
| `{추가 도구}` | `{용도}` | |
---
## 변경 이력
| 버전 | 일자 | 작성자 | 내용 |
|------|------|--------|------|
| v1 | {날짜} | 개발팀장 | 템플릿 초안. 보안 체크리스트 수상한잡화점 3건 반영 |