fix: 크로스 프로젝트 통신 버그 수정 (8건) #1
Reference in New Issue
Block a user
Delete Branch "fix/cross-project-communication"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
배경
Unity 클라이언트 ↔ MMO 서버 ↔ Go API 서버 간 통신 로직을 전수 검증한 결과,
보스 레이드 진입 흐름에서 치명적 버그 2건을 포함하여 총 8건의 이슈를 발견하고 수정했습니다.
수정 내역
Critical (서버 시작 불가 / 기능 완전 불능)
1. Tokens 타입 불일치 — 보스 레이드 입장이 항상 실패
tokens를 JSON object({"user1":"abc..."})로 반환string?으로 역직렬화 시도 →JsonException발생 → 3회 재시도 후 null 반환BossRaidAccesssAsync가 항상 null을 반환하여 보스 레이드 입장이 100% 실패string? Tokens→Dictionary<string, string>? Tokens(BossRaidResult, BossRaidAccessResponse 양쪽)2.
return false;컴파일 에러 (409 핸들러)BossRaidAccesssAsync반환형이bool?→BossRaidResult?로 변경되었으나, 409 핸들러의return false;가 그대로 남음return false;→return null;Medium (잘못된 동작)
3. INTO_BOSS_RAID 패킷 전송 대상 오류
SendTo(peer, ...)→ 파티장에게 파티원 수만큼 중복 전송, 파티원은 0회 수신SendTo(memberPeer, ...)→ 각 파티원에게 본인의 entry token과 함께 1회씩 전달4. GetPlayer() NullReferenceException
channel.GetPlayer(memberId).Nickname호출 시 NRE 발생5. BossId 하드코딩
BossRaidAccesssAsync(userNames, 1)— 항상 bossId=1BossRaidAccesssAsync(userNames, packet.RaidId)— 클라이언트가 보낸 값 사용Low (데이터 불완전)
6. Player 클래스 전투 스탯 필드 누락
7. ToPlayerInfo 새 필드 미매핑
8. OnIntoChannelParty Nickname이 hashKey 숫자로 설정
Nickname = memberId.ToString()→ 닉네임이 "12345" 같은 숫자Session.UserName에서 가져오도록 변경변경 파일
Api/BossRaidResult.csApi/RestApi.csGame/GameServer.csGame/Player.cs참고
LobbySceneController.HandleBossRaidResult에서GoToBoss()호출 누락 이슈가 있었으나, 이번 수정(BUG 3)으로 파티원이 직접 INTO_BOSS_RAID 패킷을 수신하게 되어 해소됨fix: 크로스 프로젝트 통신 버그 수정to fix: 크로스 프로젝트 통신 버그 수정 (8건)View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.