← 일감 목록
T-002

캐릭터 장비 시스템

서버 대기 우선순위 보통 마감 미정

배경

유저-캐릭터 구조로 전환하면서 인벤토리는 유저 소유, 장비 슬롯은 캐릭터 소유로 정했다. 캐릭터 쪽 구현은 끝났지만 장비는 아직 없다.

설계는 이미 합의됐다 — 매핑 테이블 + 유저 소유 장비 개체(안 (i)). 행을 테이블 사이로 옮기는 방식은 쓰지 않는다. DB 계층에 트랜잭션 경계가 없어서 옮기는 도중 실패하면 아이템이 사라진다.

EquipSlot 부위 목록 — 확정 (2026-07-30)

부위 4칸. 캐릭터 1명이 동시에 착용하는 장비는 최대 4개다.

EID 부위 개수 비고
1 Weapon (무기) 1
2 Accessory1 (장신구) 1 장신구는 서로 다른 칸으로 둔다
3 Accessory2 (장신구) 1 같은 값 2칸으로 두면 매핑 테이블에서 두 행을 구분할 수 없다
4 Gem (보석) 1
  • EquipSlot enum은 Enum.xlsx에 추가한다. DB(t_character_equip.slot)에 정수로 저장되므로 뒤에만 추가하고 값을 재할당하지 않는다 (게임기획코어 4장 식별자 규칙).
  • 장신구를 Accessory 하나로 두고 개수 2를 허용하면 매핑 행의 유일키가 (character_id, slot)으로 성립하지 않는다. 칸을 나눠 두면 유일키가 그대로 유지된다.

할 일

  • [x] EquipSlot 부위 목록 결정 (기획) — 무기1·장신구2·보석1로 확정
  • [ ] Enum.xlsxEquipSlot 추가 후 generate-tables.ps1 실행
  • [ ] 장비 개체 테이블 — 유저 소유. 강화 수치 등 개체별 상태를 갖는다
  • [ ] t_character_equip — 캐릭터 ↔ 장비 개체 매핑
  • [ ] 장착/해제 패킷과 핸들러
  • [ ] 장비 효과가 채취 속도에 반영되는 경로 — User.WorkStation.ResolveSlotSpeed에 곱한다 (정산 → 속도 변경 순서를 타므로 소급되지 않는다)

완료 조건

장비를 장착·해제할 수 있고, 장착 상태가 재접속 후에도 유지되며, 장비가 붙은 캐릭터의 슬롯 속도가 실제로 달라진다.

막고 있는 것 / 선행 일감

  • 없음 (부위 목록이 확정돼 보류가 풀렸다)
  • 장비 효과 수치는 T-009(회당 산출)와 함께 봐야 밸런스가 맞는다
  • ⚠️ 장비가 어떻게 속도에 곱해지는지는 작업속도 계산식 재구성 결과에 달려 있다. 현재 ResolveSlotSpeed적성 → WorkSpeedTable → 전역배수 곱 하나뿐이다.

남은 질문

  • 보석은 독립 부위인가, 무기에 박는 소켓인가? 위 표는 독립 부위로 적었다. 소켓이라면 EquipSlot이 아니라 장비 개체의 속성이 되어 스키마가 달라진다.

관련 커밋

  • 없음

참고

  • Server/WSGameServer/User/User.WorkStation.csResolveSlotSpeed
  • sqlite-sql-creator 스킬 (STRICT 테이블·주석 규칙)