• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

이동 동기화가 너무 어렵습니다..

24.02.15 15:40 작성 24.02.16 08:52 수정 조회수 173

0

안녕하세요 루키스님

이번 강의 보고 열심히 따라해봤는데 이상하게 똑같이 동작을 안하네요,,

 

지금 10시간 넘게 강사님의 코드 차이점을 찾고 있는데 못찾았습니다..

혹시 몰라서 코드를 복사해서 직접 갖다 붙여도 비슷한 상황이 나오게 됩니다.

 

물론 강사님과의 코드와 간소한 차이가 있지만 로직틀은 벗어나지 않았습니다.

 

그나마 차이를 찾자면 유니티 에디터 버전 차이인것 같은데

강사님꺼는 2019.3.15f 이고 제꺼는 2022.3.16f입니다.

 

제 코드로 서버를 돌리고 버전 바꾸고 강사님 코드로 클라를 돌렸을 때는 잘 작동했었습니다.

 

하지만 클라를 제 코드로 하면 이상하게 CellPos는 정상적으로 바뀌고 Object.Find로 확인해서 이동이 막히는것 까지는 정상 처리가 됩니다.

 

PacketHandler 에서 여러번 확인해봤는데 MyPlayer와 Player의 id가 다른 패킷을 받는걸 봤습니다.

 

패킷의 내용도 예상대로 잘 받고 있는데 이상하게 Player컴포넌트를 들고있는 오브젝트만 MoveToNextPos로 이동하지 않습니다.

 

혹시 예상되는 부분이 있으실까해서 적어봅니다

답변 1

답변을 작성해보세요.

1

이 정도 난이도의 강의가 되면 사실 저도 원인을 예측하긴 힘듭니다.
하지만 용기의 말씀을 드리자면, 어차피 회사에서 하는 것이 이런
요상한 버그를 찾는 것이니 이번 한 번 고통으로 인해 성장하실거에요.

원래 클라 코드를 그대로 해도 발생하지 않는데 고친 코드로 하면 오동작한다면,
정말 어딘가 다른 부분이 있을테니 찬찬히 고민해보시기 바랍니다.
유니티 버전 문제일 확률은 거의 없습니다.

dpcks5959님의 프로필

dpcks5959

질문자

2024.02.16

도저히 못찾겠어서 마지막 지푸라기라도 잡는 심정으로 2019.3.15f 버전으로 다시 만들어서 해본 결과

 

이동 동기화가 됩니다!!

 

이 외에도 다른점을 여러개 발견했었는데

2022.3.16f 버전으로 했을 때 서버의 Enter 패킷을 받는 경우 Managers.Object.Add 부분에서

PosInfo를 초기화 -> CreaturController의 PosInfo Set -> UpdateController로 가는데

 

Start의 Init이 초기화 되어 있지 않은 상태로 가서 renderer와 animator가 null인 경우도 있었고

 

가끔씩 에디터에서 직접 플레이를 실행할 때 한쪽만 이동 동기화가 되는 경우도 있었습니다.

 

버전마다 차이가 있는것 같고 정확하진 않지만 이전 버전 보다 불안정한 부분이 있는것 같습니다.

 

다시 확인해 보니 MoveToNextPos 또한 정상적으로 실행 되고 있었고

Player의 CellPos의 값을 직접 수정하는걸 디버그로 확인 했습니다.

그래서 UpdateMoving 또한 잘 실행되고 있었고요

 

버전별로 차이가 있는것 같은데 정확한 이유는 아직 모르겠습니다