위치동기화 모델 논의 과정
채택 가능한 위치동기화 모델 3가지를 고려
1. 서버 권위형 모델

🤔방식:
- 서버가 이동로직 처리 및 위치계산을 모두 담당
- 클라이언트는 서버로부터 결과값을 받아서 수동적으로 위치를 업데이트하고 보간처리만 담당
💪장점:
- 완벽한 동기화
- 서버에서 계산한 위치값을 두 클라이언트에 동시에 전송하므로 동일시간 기준 모든 게임화면의 유닛의 위치가 동일함
- 강력한 안티치트
- 모든 계산을 서버가 처리하니 클라이언트가 위치값을 조작할 여지가 없음
❌단점:
- 서버에 물리엔진 구현 필요
- 이동로직을 모두 서버가 처리하기 위해서는 이동로직 처리에 필요한 물리엔진을 구현할 필요가 있음
- 충돌현상을 포함한 3D 게임이라면 navMesh, 콜리전박스 등 매우 정밀한 로직 구현 필요
- 이로 인해 서버비용 및 구현 난이도가 대폭 상승
- 동기화 비용
- 자연스러운 움직임 연출을 위해서는 짧은 간격마다 동기화 패킷을 주고받아야 함
- 이로 인해 네트워크 비용 상승
2. 동기화 중심형 검증 모델

🤔방식:
- 클라이언트가 이동로직을 담당
- 서버는 위치 검증, 보정 및 동기화만 담당
💪장점:
- 가벼운 서버 구조
- 서버에서 정밀한 이동로직 구현 불필요
- 이로 인해 서버비용 및 구현난이도 하락
- 적절한 수준의 안티치트
- 지속적인 동기화를 통해 대부분의 클라이언트 변조에 대처 가능
❌단점:
- 불완전한 동기화
- A 클라이언트 → 서버 → B 클라이언트의 경로로 데이터를 교환하므로 A 와 B 클라이언트 사이에 필연적으로 시간적 오차가 발생
- 이에 따라 동일시간 기준 각 게임화면 내 보이는 본인 유닛과 상대방 유닛의 위치가 달라지게 됨
- 동기화 비용
- 이로 인해 네트워크 비용 상승
- 자연스러운 움직임 연출을 위해서는 짧은 간격마다 동기화 패킷을 주고받아야 함
- 이로 인해 네트워크 비용 상승
- 보수적인 클라이언트 변조 허용
- 이로 인해 네트워크 비용 상승
- 클라이언트 이동로직을 완벽하게 예측할 수 없으므로 예측값에 허용 오차범위를 상정하는 것이 필수적
- 이에 따라 보수적인 클라이언트 변조를 허용하게 됨
- 충돌, 시야확보, 병목 등의 현상에 대한 예측 및 대처가 취약함
- 길막힘을 무시하고 이동하는 벽뚫, 짧텔 등의 핵을 막기가 어려움
- 뒤의 유닛에게 밀쳐져서 평소보다 더 빠르게 이동하는 등의 정상적인 현상을 핵으로 오인할 가능성이 있음
3. 이벤트 중심형 검증 모델