10. 질문 — 실시간 동기화 모델과 네트워크 권위 (종합)
난이도 최상내 답안
모범답안
모범답안 — 실시간 동기화 모델과 권위, 지연/손실 대응 (종합)
난이도: 최상
핵심 답변
서버 권위는 서버가 최종 게임 상태를 결정해 치팅에 강하지만 지연을 클라가 체감한다 → 클라 예측 + 서버 재조정으로 가린다. 결정론적 락스텝은 입력만 주고받아 대역폭이 엔티티 수와 무관하지만, 완전 결정론과 모든 입력 도착을 요구해 한 명이라도 늦으면 전원이 멈춘다(RTS에 적합). 손실·지터에는 **지터 버퍼·보간(과거 상태 사이 부드럽게)·외삽(미래 추정)·롤백 넷코드(예측 후 틀리면 되감아 재시뮬)**로 대응한다.
깊이 있는 설명
동기화 모델 비교
- 서버 권위 + 상태 동기화: 서버가 시뮬레이션의 진실. 클라는 입력을 보내고 상태를 받는다. 치팅 방어 강함. 대역폭은 동기화하는 엔티티 수에 비례 → 관심영역(AoI)으로 컷.
- 클라이언트 권위: 클라가 자기 위치/판정을 정함 → 지연 체감 적지만 치팅에 무방비(좌표 핵). 캐주얼·비경쟁 게임 외엔 지양.
- 결정론적 락스텝: 모든 클라가 같은 입력으로 같은 시뮬레이션을 독립 실행. 입력만 전송 → 유닛 수천 개라도 대역폭 일정(RTS의 정석). 단, 부동소수점까지 완전 결정론적이어야 하고, 가장 느린 플레이어에 전체가 동기화됨(입력 지연).
손실·지터 대응
- 지터 버퍼: 도착 시각이 들쭉날쭉한 패킷을 잠깐 버퍼링해 일정 간격으로 재생(지연↑ 대신 부드러움↑).
- 보간(interpolation): 약간 과거 시점을 렌더링하며 수신된 상태들 사이를 보간 → 끊김 없음.
- 외삽(extrapolation/dead reckoning): 다음 상태가 안 왔을 때 속도/방향으로 추정 → 틀리면 보정 튐.
- 롤백 넷코드: 상대 입력을 예측해 즉시 진행, 실제 입력이 오면 그 시점으로 되감아 재시뮬(격투게임). 반응성 최고지만 CPU·구현 복잡.
응용/실무 연결
- FPS: 서버 권위 + 클라 예측 + lag compensation(서버가 발사 시점의 과거 상태로 판정).
- 격투: 롤백 넷코드(GGPO 계열).
- RTS: 결정론적 락스텝.
- MMO: 서버 권위 상태 동기화 + AoI(관심영역) 필터링으로 대역폭 관리.
흔한 오답·함정
- "UDP 쓰면 지연이 사라진다" — UDP는 재전송 오버헤드를 없앨 뿐, 물리적 RTT는 그대로. 동기화 기법으로 가리는 것.
- 외삽 과신 → 순간이동/고무줄 현상. 보간 기반이 보통 더 안정적.
- 락스텝에 비결정론(부동소수점 차이, 컨테이너 순회 순서) 섞이면 클라마다 시뮬레이션이 갈라져(desync) 게임이 깨진다.
꼬리질문 대비
- Q. lag compensation의 부작용은? "엄폐물 뒤에서 맞는" 현상 — 쏜 사람 기준 과거로 판정하므로 맞은 사람은 억울할 수 있음. 공정성 트레이드오프.
- Q. 관심영역(AoI)이란? 플레이어 주변 일정 범위의 엔티티만 동기화해 대역폭을 줄이는 기법(그리드/격자 기반이 흔함).
- Q. 서버 틱레이트(tickrate)가 체감에 주는 영향? 틱이 낮으면 입력 반영·판정 해상도가 거칠어져 "맞췄는데 안 맞음"이 늘어난다.