Client 3

멀티 플레이 게임서버 구현 4편: 지연 보정

들어가며 이 글은 https://www.gabrielgambetta.com/lag-compensation.html의 글을 공부하면서 옮긴 것으로, 번역과 의역이 섞여있습니다. 이전 3편에 걸친 글에서 다룬 클라이언트 - 서버 아키텍쳐에대한 설명은 다음과 같이 요약할 수 있습니다. 서버는 모든 클라이언트에서 타임스탬프와 함께 입력을 받습니다. 서버는 입력을 처리하고 월드 상태를 업데이트 합니다. 서버는 모든 클라이언트에게 정기적으로 월드 스냅샷을 전송합니다. 클라이언트는 입력을 전송하고 로컬에서 그것을 시뮬레이션 합니다. 클라이언트는 월드를 업데이트 받고 로컬에서 예측한 상태를 서버에서 받은 상태와 동기화 합니다. 다른 엔티티의 과거 상태를 보간합니다. 플레이어의 관점에서 이것은 2가지 중요한 결과를 가져..

멀티 플레이 게임서버 구현 2편: 클라이언트측 예측과 서버측 재조정

들어가며 이 글은 https://www.gabrielgambetta.com/client-side-prediction-server-reconciliation.html 글을 공부하면서 옮긴 것으로, 번역과 의역이 섞여있습니다. 이전 글에서는 권위 있는 서버와 입력만 서버로 보내고 서버가 업데이트된 게임 상태를 보낼 때까지 렌더링하는 멍청한 클라이언트를 가진 클라이언트-서버 모델을 알아보았습니다. 그러나 이런 시스템을 그냥 구현하게 되면 사용자 입력과 화면 변경 사이에 지연이 발생하게 됩니다. 예를 들어, 플레이어가 오른쪽 화살표 키를 누르면 캐릭터가 움직이기 시작하기 전에 0.5초 정도의 시간이 걸립니다. 이는 클라이언트 입력이 먼저 서버로 이동하고, 서버가 입력을 처리하고 새로운 상태를 계산하며, 업데이트..