최종 갱신 (KST)

← 일감 목록
T-024

슬롯 1칸 동기화 패킷 추가

진우 Closed 우선순위 높음 목표 미정 · 보관됨

배경

클라이언트가 슬롯 상태를 받는 시점이 로그인(전체 스냅샷)과 배치 변경(1칸) 두 곳뿐이었다. 채취 결과(S_GatherResultResponse)에는 슬롯 상태가 없어서:

  1. 시각 오차가 교정되지 않았다 — 정산 후 서버의 LastTickAt이 갱신되지만 클라는 옛 값으로 외삽
  2. 속도 변화를 클라가 몰랐다 — 버프·스탯으로 CurrentWorkSpeed가 바뀌어도 반영 안 됨

→ GitHub 이슈 #12

결정

S_GatherResultResponse에 슬롯을 합치지 않고 별도 패킷으로 분리했다. 채취 결과는 "뭐가 나왔다"이고 슬롯 동기화는 다른 관심사다. 분리하면 정산·속도 변경·이후 새 트리거에서 모두 같은 패킷 하나로 1칸씩 내려줄 수 있다.

변경 내역

파일 변경
Server/MikaProtocol/MikaPacket.cs PacketId = 18, S_WorkStationSlotSyncResponse 추가
Server/WSGameServer/User/User.WorkStation.cs SettleWorkStation — 정산 후 동기화 전송. RefreshWorkStationSpeed — 전체 스냅샷 대신 바뀐 슬롯만 전송
Server/MikaDummyClient/Network/ServerPacketHandler.cs 핸들러 추가
Assets/Scripts_Server/Network/MikaNetwork.Unity/ServerPacketHandler.cs 이벤트 + 핸들러 추가
Assets/Scripts_Client/Managers/PlayerDataModel.cs 구독 + 캐시 병합 + WorkStationSlotsChanged 발행
GameDesign/design/workslot/README.md "교정 안 됨" → "매 정산마다 교정됨"
Assets/Scripts_Client/서버동작이해.md 수신 패킷·수량 규칙에 반영 + 미러 재생성 명령 기록

완료 조건

  • [x] 정산할 때마다 해당 슬롯의 최신 상태가 클라에 도착한다
  • [x] 속도가 바뀔 때 바뀐 슬롯만 내려간다 (전체 스냅샷 아님)
  • [x] 클라가 수신하면 캐시를 병합하고 WorkStationSlotsChanged를 발행한다
  • [x] 기존 테스트 194개 전부 통과

잘려 나간 조각 — Unity 프로토콜 미러

Assets/Scripts_Server/Protocol/MikaPacket.cs가 커밋에서 빠졌다. 이 파일은 MikaProtocol 빌드 시 post-build로 sync-protocol-to-unity.ps1이 만드는 서버 생성물인데, 빌드를 돌리지 않아 서버 원본과 클라 사용처만 들어왔다. Unity가 S_WorkStationSlotSyncResponse를 못 찾아 클라 컴파일이 CS0246으로 깨진 상태다.

미러는 서버 담당 폴더라 클라가 대신 커밋하지 않는다 → T-025 로 등록.

관련

  • GitHub 이슈 #12 — 미러가 들어올 때까지 열어 둔다
  • T-025 — 미러 커밋 (서버)