배경
유저-캐릭터 구조로 전환하면서 인벤토리는 유저 소유, 장비 슬롯은 캐릭터 소유로 정했다. 캐릭터 쪽 구현은 끝났지만 장비는 아직 없다.
설계는 이미 합의됐다 — 매핑 테이블 + 유저 소유 장비 개체(안 (i)). 행을 테이블 사이로 옮기는 방식은 쓰지 않는다. DB 계층에 트랜잭션 경계가 없어서 옮기는 도중 실패하면 아이템이 사라진다.
EquipSlot 부위 목록 — 확정 (2026-07-30)
부위 4칸. 캐릭터 1명이 동시에 착용하는 장비는 최대 4개다.
| EID | 부위 | 개수 | 비고 |
|---|---|---|---|
| 1 | Weapon (무기) |
1 | |
| 2 | Accessory1 (장신구) |
1 | 장신구는 서로 다른 칸으로 둔다 |
| 3 | Accessory2 (장신구) |
1 | 같은 값 2칸으로 두면 매핑 테이블에서 두 행을 구분할 수 없다 |
| 4 | Gem (보석) |
1 |
EquipSlotenum은Enum.xlsx에 추가한다. DB(t_character_equip.slot)에 정수로 저장되므로 뒤에만 추가하고 값을 재할당하지 않는다 (게임기획코어 4장 식별자 규칙).- 장신구를
Accessory하나로 두고 개수 2를 허용하면 매핑 행의 유일키가(character_id, slot)으로 성립하지 않는다. 칸을 나눠 두면 유일키가 그대로 유지된다.
할 일
- [x]
EquipSlot부위 목록 결정 (기획) — 무기1·장신구2·보석1로 확정 - [ ]
Enum.xlsx에EquipSlot추가 후generate-tables.ps1실행 - [ ] 장비 개체 테이블 — 유저 소유. 강화 수치 등 개체별 상태를 갖는다
- [ ]
t_character_equip— 캐릭터 ↔ 장비 개체 매핑 - [ ] 장착/해제 패킷과 핸들러
- [ ] 장비 효과가 채취 속도에 반영되는 경로 —
User.WorkStation.ResolveSlotSpeed에 곱한다 (정산 → 속도 변경 순서를 타므로 소급되지 않는다)
완료 조건
장비를 장착·해제할 수 있고, 장착 상태가 재접속 후에도 유지되며, 장비가 붙은 캐릭터의 슬롯 속도가 실제로 달라진다.
막고 있는 것 / 선행 일감
- 없음 (부위 목록이 확정돼 보류가 풀렸다)
- 장비 효과 수치는 T-009(회당 산출)와 함께 봐야 밸런스가 맞는다
- ⚠️ 장비가 어떻게 속도에 곱해지는지는 작업속도 계산식 재구성 결과에 달려 있다.
현재
ResolveSlotSpeed는적성 → WorkSpeedTable → 전역배수곱 하나뿐이다.
남은 질문
- 보석은 독립 부위인가, 무기에 박는 소켓인가? 위 표는 독립 부위로 적었다.
소켓이라면
EquipSlot이 아니라 장비 개체의 속성이 되어 스키마가 달라진다.
관련 커밋
- 없음
참고
Server/WSGameServer/User/User.WorkStation.cs—ResolveSlotSpeedsqlite-sql-creator스킬 (STRICT 테이블·주석 규칙)