안녕하세요. 루키스님, DirectX기반 자체엔진으로 FPS 게임을 만들고 있는 학생입니다. 포트폴리오를 만들다가 제가 올바른 방향으로 만드는지 의구심이 들어 이렇게 글 남김니다.
현재 서버에서 XZ 격자로 나눠서 충돌 후보군을 추리고 DX에서 제공하는 충돌체(AABB,ODD,Sphere)를 사용해서 ray 충돌 처리를 하고 있는데 몇 가지 질문이 있습니다.
먼저 서버에서 DX에서 제공하는 충돌체를 사용하는 방향이 맞는건지 의문이 듦니다. 서버에서 3D 충돌을 하고 있는 셈인데.. 너무 무거울 수 있다는 생각이 듦니다.
만약 충돌체 사용에 문제가 없다면, 애니메이션 뼈에 종속된 콜라이더 충돌은 어떻게 해야할지 모르겠습니다. 현재는 그냥 모델 전체를 감싸는 충돌체를 써서 월드 위치 단위로 충돌하고 있는데.. 정밀도가 너무 떨어져서.. 애니메이션에 따라 충돌체가 움직이게 하고 싶은데, 서버 권위 충돌에서 이부분을 클라랑 어떻게 연동 시켜야할지 좀 막막합니다.
충돌체 사용은 당연합니다. DX에서 제공하는 것을 활용하거나 직접 개발하거나 그건 선택이겠지만요.
일단 FPS의 경우 "부분적"으로는 클라 판정을 믿고 가는 것이 필요합니다.
왜냐하면 인터넷 통신 때문에 오차가 발생해서 클라/서버 상태가 미세하게 다를 수밖에 없는데,
그렇다고 전혀 히트 판정이 안 된다면 문제가 있기 때문이죠.
그렇다고 너무 100% 클라를 신뢰하면 해킹 이슈가 있으니
클라가 히트 판정을 내린 시간으로 서버가 되돌아가서 체크를 하는 경우가 많습니다.
정말 미세한 히트 판정은 클라 판정을 믿고, 서버에서 러프하게 체크하는 방법이 있을 수 있고.
더더더 정확하게 하려면 서버에서도 애니메이션 시뮬레이션을 돌릴 수밖에 없습니다.
답글