배경
캐릭터 종류가 1종뿐인 것이 지금 게임 전체의 병목이다.
시작 지급 1001(전 산업 적성 1) 하나라 배치 화면의 잠금 표시가 화면에 나타나지 않고,
산업 레벨 해금 조건 ①(보유 캐릭터 중 그 산업 적성의 최댓값 ≥ N)도 검증할 수 없다
→ 산업 레벨 3장.
가챠는 이미 돌고 있지만 아이템만 준다. GachaService · GachaPoolCatalog ·
Gacha.xlsx → GachaTable이 완성돼 있고, 현재 풀 1번은 테스트용 아이템 6종
(100001~100006)을 준다. 여기에 보상 종류 축을 넣어 캐릭터를 줄 수 있게 한다.
기획상 캐릭터 획득 경로는 "가챠가 유력하나 미확정" 이었다 → 캐릭터 5장 #4. 이 일감으로 가챠로 확정하고 문서에 반영한다.
할 일
- [x] 기획 확정 반영 — 캐릭터 획득 경로 = 가챠
- [x] 엑셀 — 보상 종류 축 (⚠️ 컬럼 분기 대신 시트를 갈랐다)
- [x]
Enum.xlsx에GachaRewardType신설 (Item = 1·Character = 2) — 뒤에만 추가 - [x]
GachaTable→GachaItemTable개명 ·GachaCharacterTable신설 (컬럼에 종류를 적는 대신 출처 시트가 종류를 정한다 —Ref가 각 시트에서 그대로 산다) - [x] 캐릭터 풀 신설 (
GachaId = 2) —CharacterTable30종을 등급별 가중치로 - [x]
generate-tables.ps1실행 · 엑셀 + 생성물 같은 커밋
- [x]
- [x] 캐릭터 30종 (사용자 요청으로 이 일감에 합류)
- [x]
CharacterTable에GlobalRarity컬럼 추가 — 등급이 곧 최고 적성의 상한 - [x]
1007~103024종 입력 → 총 30종 (등급별 6/8/7/5/3/1)
- [x]
- [x] 서버
- [x]
GachaEntry에RewardType·RewardTID반영 ·GachaPoolCatalog가 두 시트를 한 풀로 합친다 - [x]
GachaService.Draw에 캐릭터 지급 분기 (GrantCharacterRepository재사용) - [x]
S_GachaDrawResponse의GachaRewardInfo에RewardType·CharacterTid추가 - [x] 뽑은 뒤
S_CharacterListResponse를 갱신해 내려보낸다 (User.OnGachaCharactersGranted) - [x] 테스트 — 캐릭터 풀 추첨 · 지급 요청 수 · 아이템 풀 기존 동작 유지 (
GachaServiceTest)
- [x]
- [x] 프로토콜 미러 커밋 —
Assets/Scripts_Server/Protocol갱신분을 같은 커밋에 담는다
결정된 것
| 항목 | 결정 |
|---|---|
| 중복 캐릭터 처리 | 그대로 개체를 늘린다. 조각·강화로 바꾸지 않는다 |
| 캐릭터 정원 | 두지 않는다. 목록 UI가 감당하지 못할 때 다시 본다 |
| 보상 종류 축의 형태 | 컬럼 분기가 아니라 시트 분리(GachaItemTable / GachaCharacterTable) |
| 캐릭터 등급 | GlobalRarity 재사용. 등급 = 최고 적성의 상한 (총합이 아니다) |
Mythic(
1030별빛드래곤)은 전 산업 7이고 단일 산업 1위가 아니다. 한 명이 모든 산업에서 최고면 배치가 "그 캐릭터부터 채우기"로 수렴해 퍼즐이 무너진다.
완료 조건
더미 클라에서 캐릭터 풀을 10연차로 뽑으면 보유 캐릭터가 10명 늘고, 그중 적성이 다른 캐릭터를 슬롯에 배치해 산업별 속도 차이가 실제로 나타난다.
⏳ 실물 확인은 남았다. 서버 유닛 테스트(208개)는 전부 통과했지만, 더미 클라 왕복은 골드가 있어야 돌릴 수 있다 → T-028 즉시 판매.
막고 있는 것 / 선행 일감
- 없음
관련 커밋
- 미커밋 (
worktree-T-026-character-gacha)
참고
Server/WSGameServer/Gacha/GachaService.cs·GachaPoolCatalog.csServer/WSGameServer/Repository/GrantCharacterRepository.cs·User/User.Character.csGameDesign/Excel/Gacha.xlsx·Character.xlsx·Enum.xlsx