MatchEnd 실패

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 베이스/채팅/데이터베이스/월드 SDK 버전 : 5.18.10
  • 프로젝트명 : MergeGame
  • 스테이터스 코드 : 400
  • 에러 코드 : BadParameterException
  • 에러 메시지 : bad headCount, 잘못된 headCount 입니다.

var opponent = record.Pop();
var me = record.Pop();

_matchGameResult = new MatchGameResult();

if (_matchInfo != null && _matchInfo.MatchModeType == MatchModeType.Melee)
{
var ranked = matchResultType == Definition.MatchResultType.Lose
? new List { opponent, me }
: new List { me, opponent };
_matchGameResult.m_winners = ranked;
_matchGameResult.m_losers = null;
_matchGameResult.m_draws = null;
}
else
{
switch (matchResultType)
{
case Definition.MatchResultType.Draw:
_matchGameResult.m_winners = null;
_matchGameResult.m_losers = null;
_matchGameResult.m_draws = new List { me, opponent };
break;
case Definition.MatchResultType.Win:
_matchGameResult.m_winners = new List { me };
_matchGameResult.m_losers = new List { opponent };
break;
default: // Lose
_matchGameResult.m_winners = new List { opponent };
_matchGameResult.m_losers = new List { me };
break;
}
}

var sdkIsSuperGamer = Backend.Match.IsSuperGamer();
if (!sdkIsSuperGamer)
{
Debug.Log($"[Match] 슈퍼게이머 아님");
return;
}
Backend.Match.MatchEnd(_matchGameResult);

로그찍는 부분은 생략하고 부분적으로만 올린 코드 입니다.
1:1매칭, 슈퍼게이머로 매칭 정보 설정되어 있는 상태이며 승리, 패배 세션도 일치함을 로그를 통해 확인했고
슈퍼게이머만 결과를 리턴해주고 있습니다.

해당 에러가 뜨는 이유를 모르겠어서 문의 합니다.

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

안녕하세요, 개발자님.
bad headCount 에러는 결과 메시지에 포함된 세션 수가 게임을 시작한 유저 수와 일치하지 않거나, 세션 값이 정상적으로 전달되지 않았을 때 발생합니다.

아래 순서로 확인해 주시면 원인 파악에 도움이 됩니다.

  1. 콘솔 매치 카드 설정
    매치 모드, 인원수, 결과 처리 방식이 실제 게임 구성과 일치하는지 확인해 주세요.

  2. 에러 발생 시점의 상황
    게임 도중 상대 유저의 이탈이나 재접속이 있었는지 확인해 주세요. 이탈이 발생한 경우에도 게임을 시작한 시점의 유저 수를 기준으로 결과를 전송해야 하며, 이탈한 유저의 세션도 결과에 포함되어야 합니다.

  3. 전송되는 세션 값
    MatchEnd() 호출 직전에 m_winners / m_losers / m_draws에 담긴 세션 ID와 개수를 로그로 확인해 주세요. 서로 다른 유효한 세션이 인원수만큼 포함되어야 합니다.

참고로 record.Pop()은 값을 꺼내면서 제거하는 연산이므로, 결과 산출 로직이 중복으로 호출될 경우 의도하지 않은 값이 반환될 수 있습니다. 이 부분도 함께 확인 부탁드립니다.

확인 후에도 동일한 증상이 지속될 경우, 위 로그와 매치 카드 설정 화면을 공유해 주시면 추가로 확인해 드리겠습니다.
감사합니다.