패스잇
게임 · 심화

클라이언트 예측을 적용한 액션 게임에서 평소에는 부드럽게 움직이는데, 특정 상황에서만 내 캐릭터가 뒤로 순간이동하듯 튕기는 고무줄 현상이 보고됐습니다. 원인을 어떻게 추정하고 어떤 방향으로 개선하시겠어요?

힌트 · 예측 실패(미스프리딕션)와 서버 리콘실리에이션의 재적용 과정, 입력 버퍼·시퀀스 번호 관리, 그리고 보정을 한 번에 적용하지 않고 분산하는 스무딩을 함께 설명하세요.

클라이언트 예측미스프리딕션서버 리콘실리에이션입력 시퀀스 번호보정 스무딩

모범답안

고무줄 현상은 대부분 예측 결과와 서버 권위 상태가 벌어졌을 때 그 차이를 한 번에 적용해서 생깁니다. 서버가 보낸 확정 상태와 시퀀스 번호를 받으면 클라이언트는 그 시점으로 되돌린 뒤 아직 확정되지 않은 입력을 다시 적용하는데, 이 재적용 결과가 크게 다르면 눈에 띄게 튑니다. 원인 후보는 서버와 클라이언트의 이동·충돌 로직 불일치, 패킷 손실이나 입력 버퍼 부족으로 서버가 입력을 누락한 경우, 넉백이나 마찰처럼 예측하기 어려운 요소입니다. 그래서 먼저 서버와 클라이언트의 확정 위치 차이를 로그로 재보고, 로직을 같은 코드로 공유하게 맞춘 뒤, 오차가 작을 때는 여러 프레임에 걸쳐 나눠 보정하는 스무딩을 적용하겠습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 게임 개발 면접 질문

← 게임 개발 면접 질문 전체 보기