본문 바로가기

관심분야/게임

객체 이동 관리

1) 이동된 경로를 레코딩하여 일정 주기로 서버에 전송 하는 방식은...
     : 해당 방식을 통해 서버는 사용자별 네트워크 트레픽을 예측할수 있다.
     : 예측이 포함되지 않으므로 정확한 이동에 대한 처리가 가능하다.

     : 이와는 반대되는 방식이 클라이언트에서 움직일 경로를 미리 서버에 전송하여 처리 하는 방식이 있는데,
       해당 방식은 중간에 경로를 수정하고자 할때 서버의  연산 처리(거리 예측 계산 등)가 증가될수 있는 원인이
       되며, 이로 인해 이동 패킷 이외의 보정 패킷이 필요하게 된다.

     - 그러나, 위에서 언급한 방식은 이러한 위치 연산을 최소화 할수 있다.

     : 이 방식의 단점은 바로 일정 시간 이후에 다른 플레이어가 내 화면에서 움직인다는 것이다.
     : 이동 방식의 정리

    1. 일정 주기(시간)로 이동 경로를 레코딩하여 서버에 전송하는 방식
          장점)
            - 플레이어의 잦은 위치 변화에 대한 대응이 쉽다.
              : 빠른 액션성(전투)을 필요로 하지 않는 MMORPG계열에 적합

            - 일정한 주기로 네트워크에 이벤트가 발생되므로 서버의 부하 예측 용이
            - 객체 이동의 표현에 있어, 위치 오차가 적다(거의 발생되지 않는다고 봐도 무방하다)

          단점)
            - 타 플레이어의 화면에서 자신의 움직임이 늦게 표현된다.
            - 전투시 데이터 판단 오차를 줄이기 위해, 서버는 각 플레이어의 이동 경로를 시간대 별로 관리해야
              한다. (전투 전, 객체의 위치 동기화가 필요)


      2. 위치 변화(방향,이동)가 발생 될 때마다 서버로 전송 하는 방식
          장점)
            - 타 플레이어의 화면과 자신의 화면의 표현(이동) 오차가 적다.
              : FPS와 같은 빠른 액션성(전투)을 요구하는 빠른 이동 표현에 적합

          단점)
            - 플레이어의 잦은 위치 변화 발생시 서버의 연산이 많아 진다.
              : 반대로, 플레이어가 한 방향으로 계속 이동만 할 경우 네트워크량이 적다.
              : 그러나, 전투와 같이 위치 변화가 많아지는 상황에서는 서버의 부하가 증가된다.

            - 일정한 주기가 아닌 비 정기적인 이벤트 발생으로 인해 서버 부하 예측 어려움
            - 플레이어의 H/W 및 네트워크의 성능에 따른 오차가 커질수 있다.
              : 순간적인 위치 이동을 서버로 전송해야 하는 상황에서 상대적으로 느린 H/W나 네트워크를
                사용하는 플레이어가 손해 볼수 있는 상황이 발생된다. (주기적 위치 보정 필요)

  2) 나는 다른 플레이어의 화면에서 늦게 움직인다.
     : 그러나, 반대로 말하자면 다른 플레이어 또한 내 화면에서 늦게 움직인다.
       - 이러한 처리를 할 경우, WOW(World of warcraft)와 같이 보일수 있다.
       - 그러나 NPC의 경우는 서버가 제어를 하므로 두 플레이어는 같은 화면을 보게 된다.

  3) 다중의 Relevant를 객체의 표현을 다양화 할수 있다.
     : 가까운 거리에 위치한 객체에 대한 정보를 자세히 표현하고 거리가 멀어질수록 표현에 대한 정보를
       축소하여 네트워크의 대여폭을 줄인다.

     : 예를 들어, 멀리 있는 플레이어 또는 몬스터의 경우 대표 이동경로만 전송하고,
       먼 거리에서 발생되는 전투에 대해서는 전투의 시작/마침 등을 전송하여 처리 할수 있다.