• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

3D 이동 동기화

24.04.19 16:18 작성 조회수 91

0

안녕하세요 강사님!

저는 강의 Part4,5 수강하고 서버 제작한 뒤에

원래 제가 만들어놨던 컨텐츠에 서버 붙이는 중인데요

 

패킷 송수신까지 잘 마무리 되었고

이동 동기화를 진행하는 도중에, 강의에서 연습했던 환경(평지)과 달리 제가 만든 컨텐츠에서는 울퉁불퉁한 지경도 있고 다양한 오브젝트들(몬스터, 건물, 나무...etx)이 있어 충돌을 고려해야 하는 상황인데요.

 

충돌이 발생하면 오차가 점점 커기는걸로 봐서 추측하건데,

한 명의 클라이언트의 움직임에 대해서 각각의 클라이언트에서 충돌처리가 일어나기때문에 오차가 점점 커진다고 판단이 되었습니다.

 

이러한 충돌로 인한 이동 동기화 오차를 줄일 수 있는 방법으로는 어떤 방법이 있을까요?

제가 생각해본걸로는.. 다음과 같은 방법이 생각났는데

  1. 클라가 먼저 이동해서 발생하는 충돌이벤트도 같이 서버에 패킷으로 보내준다. (위치정보+방향+충돌이벤트)

  2. 서버는 받은 패킷을 모든 클라에게 뿌린다.

  3. 다른 클라들은 해당 캐릭터를 기존과 같은 방식으로 이동시키되(방향으로만 전진) 충돌이벤트가 있다면 받은 위치정보로 AI 기능(?)을 활용해서 추가로 이동시킨다.

 

이러면 충돌이 발생할 때마다 AI로 움직여주고. 그럼 그 사이에 해당 캐릭터가 또 움직이면 움직임 자체에 텀이 생겨버릴것이라는 문제점이 나타나네요 ㅠㅠ..

 

이러한 이동 동기화 문제점을 어떤방식으로 해결하는지 궁금합니다!

답변 1

답변을 작성해보세요.

0

FM대로 하려면 서버쪽에도 navigation 정보를 추출해서 들고 있어서 판정을 해줘야 합니다.
그 부분은 어렵진 않지만 엔진 코드를 좀 분석해서 들고 와야 해요 (애당초 언리얼에서도 3rd party 라이브러리 사용)