PvP 매치 후 연결끊킴 현상 / 위치 갱신 관련

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

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

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

  • 뒤끝 SDK 버전 :
  • 프로젝트명 : 무사키우기
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :
    Exception: Exception: Not connected.

ongLEbTfBwyW0uDCOD4.i4sq0xTkJke3hmDjVVJ.MWEGCvTNIa (System.Byte[] , System.Int32 , System.Int32 ) (at <1fbb3a648c4b490dab96b29eecd05adf>:0)
ongLEbTfBwyW0uDCOD4.i4sq0xTkJke3hmDjVVJ.eXiGxbWd5n (System.Byte[] , System.Int32 , System.Int32 ) (at <1fbb3a648c4b490dab96b29eecd05adf>:0)
BackEnd.RealTime.GameMatch.SendDataToInGameRoom (System.Byte[] data) (at <1fbb3a648c4b490dab96b29eecd05adf>:0)MatchInGameManager.SendDataToInGame[T] (T msg) (at Assets/01.Scripts/Manager/MatchInGameManager.cs:528)
Hero.set_IsMoving (System.Boolean value) (at Assets/01.Scripts/InGame/Entity/Hero/Hero.cs:222)
Entity.Movement () (at Assets/01.Scripts/InGame/Entity/Entity.cs:305)
Hero.Movement () (at Assets/01.Scripts/InGame/Entity/Hero/Hero.cs:934)
Entity.FixedUpdate () (at Assets/01.Scripts/InGame/Entity/Entity.cs:193)
Hero.FixedUpdate () (at Assets/01.Scripts/InGame/Entity/Hero/Hero.cs:551

1.위는 유저와 유저간 실시간 1:1 매치 후 플레이 중에 간혹 연결끊킴시 나오는 에러입니다
생각보다 빈번하게 발생하는데 발생률을 줄이려면
무엇을 유의 해야할지 무엇을 검토 해야할지 답변 받을 수 있는 내용이 있을까요

2.유저와 유저간 실시간 매치 상황에서 캐릭터간에 충돌시 서로 밀리지 않도록 처리 하였습니다
자신의 화면에서는 서로의 위치 오차가 발생하지 않는데 상대방 화면에서는 서로 위치(특히 자신의 위치)가 많이 달라지는 경우가 발생합니다
플레이어간 충돌하여 자신이 멈추게 된다면 뛰기 등의 이동로직 중단해야할 것으로 보이는데 플레어간에 충돌 상황을 판단 및 서버에 처리하기가 어려운것으로 내부에서 전달 받았습니다
플레이어간에 충돌시 처리방법에 대하여 조언이 있을까요
(플레이어의 위치 갱신등을 보완하기 위해 n초마다 n범위이상 오차가나면 위치를 갱신해주는 로직은 구현 함)

안녕하세요, 개발자님.
문의하신 내용 답변드립니다.

  1. 연결 끊김시 OnSessionOffline이 발생하고 이 부분은 자동으로 다시 연결됩니다.
    연결이 되지 않을 경우에는 OnLeaveInGameServer가 호출되고, 만약 호출되지 않는다면 LeaveGameServer 호출 후 다시 JoinGameServer를 해야합니다.

  2. 벽과의 충돌로 인해 움직이지 않는 것은 각자 클라이언트에서 처리하고(리지드바디와 콜라이더 기능),
    총알 타격은 슈퍼 게이머의 클라이언트가 다른 유저가 보낸 패킷으로 자신의 클라이언트에서 총알이나 플레이어 위치를 움직이고, 거기서 충돌이 발생하면 다른 클라이언트에게 총알 충돌 이벤트를 전달하는 방식으로 구현할 수 있습니다.

감사합니다.

상세한 답변 감사드립니다

  1. 질문에서 플레이어와 플레이어의 출돌상황이라는 점을 추가 설명을 드립니다
    실시간으로 움직이는 플레이어간에 충돌 상황으로 ‘리그 오브 레전드’ 처럼 충돌시 서로에게 밀리거나 하진 않습니다
    현재의 이슈는 플레이어간에 충돌 상황이 많아지면 각자의 화면에서 서로의 위치가 상이 해지는 상황이 자주 발생합니다

내부에서 재검토 결과 플레이어와 플레이어 충돌상황을 판별 할 수 있다고 하여 해당시기에 위치 갱신을 하는 방향으로 보완을 해보려고는 하고 있습니다

충돌에 따른 처리는 각 클라이언트마다 세세하게 달라질 수 있어서, 해당 과정이 클라이언트에서 처리되는 이상 완벽한 보완은 어려운 것으로 확인됩니다.

충돌한 객체를 일정 시간 이후에 다시 한번 위치 패킷을 보내서 싱크를 맞추는 식으로 보완해서 이용해 주시면 감사하겠습니다.