★★★★★
#앱별 실전 패턴 · claude-code
게임 점수 저장 & 랭킹 (학교/학년/반)
{{GAME_NAME}}에서 플레이어들의 점수를 저장하고, 학교·학년·반별로 랭킹을 표시하려고 해(question_bank 패턴).
#gaming#firestore#ranking#leaderboard
변수 1개 — 여기 채우면 아래 프롬프트에 바로 들어가요
{{GAME_NAME}}에서 플레이어들의 점수를 저장하고, 학교·학년·반별로 랭킹을 표시하려고 해(question_bank 패턴).
Firestore 구조:
```
/games/{gameId}/scores/{userId}
├── score: 12345
├── timestamp: 2026-05-28T...
├── school: "서울고등학교"
├── grade: 2 (학년)
├── class: 5 (반)
└── nickname: "플레이어123"
```
랭킹 쿼리:
- **전체 랭킹**: 점수 높은 순 정렬
- **학교별**: where('school', '==', ...) + orderBy('score')
- **학년별**: where('grade', '==', 2) + orderBy('score')
- **반별**: where('school', '==', ...) && where('grade', '==', 2) && where('class', '==', 5)
Index 설정:
- firestore.indexes.json에 composite index 정의
- Firestore Console에서 자동 생성
최적화:
- aggregation query로 전체 순위 빠르게 계산
- 로컬 캐시 (CachedNetworkImage처럼)
- 실시간 업데이트 vs 배치 업데이트 선택
부정 행위 방지 (비정상적으로 높은 점수), 익명 참여 vs 이름 공개, 월간/주간/일간 랭킹 자동 초기화까지 설명해줄래?
쓰는 법 — 위 칸에 본인 값을 채우면 아래 프롬프트에 바로 반영돼요. 복사 버튼을 누르면 채워진 그대로 클립보드에 담기니까, claude-code(또는 본인이 쓰는 AI)에 붙여넣기만 하면 됩니다. 변수가 없으면 그냥 복사해서 쓰세요.

