| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- C++
- unity
- os
- 언리얼 엔진
- 게임 개발
- 유니티
- animation
- MAC
- gas
- listen server
- gameplay tag
- local prediction
- UI
- Multiplay
- linear regression
- Unreal Engine
- gameplay ability system
- Aegis
- 언리얼엔진
- rpc
- 보안
- Replication
- photon fusion2
- widget
- gameplay effect
- attribute
- CTF
- ability task
- stride
- 게임개발
- Today
- Total
Replicated
[Teck Interview] 네트워크 및 멀티플레이 본문
클라이언트-서버 모델과 P2P 모델의 차이점
| 항목 | 클라이언트-서버 (Client-Server) | P2P (Peer-to-Peer) |
| 구조 | 중앙 서버가 모든 통신과 상태를 관리 | 모든 클라이언트가 서로 직접 통신 |
| 권위(Authority) | 서버가 진실의 기준 (권위) | 클라이언트 간 권한 공유 (종종 호스트에게 위임) |
| 보안 | 상대적으로 안전 (서버 검증 가능) | 취약 (해킹/조작에 취약) |
| 동기화 | 서버 기준으로 일관된 상태 유지 | 각 클라이언트 상태가 불일치할 수 있음 |
| 성능 | 서버 성능에 의존, 확장성 필요 | 지연이 적을 수 있지만 불안정 가능성 있음 |
| 호스팅 비용 | 서버 인프라 필요 (비용 높음) | 서버 불필요 (비용 절감 가능) |
클라이언트-서버 모델
장점
- 일관된 상태 유지
- 보안 관리 쉬움
- 데이터 저장 용이
단점
- 서버 운영 비용
- 서버 지연 시 전체 영향
P2P 모델
장점
- 빠른 반응 속도
- 서버 비용 없음
단점
- 보안 취약
- 호스트 유저 나가면 게임 중단
- NAT, 방화벽 등 네트워크 연결 문제 가능
리슨 서버?
클라이언트-서버 모델과 P2P 중간 형태
한 플레이어가 클라이언트이자 동시에 서버 역할
패킷 유실 시 클라이언트 대응 전략
- TCP or Reliable UDP => 아크를 비롯한 신뢰성 있는 통신 TCP 단에서 알아서..
- 예측 및 보간: 이전, 다음 패킷 기준 추측 보간 (이동/회전같은 건 유실을 허용해도 됨)
- 중복 패킷 처리: 패킷 유실을 감안하여 중복 데이터를 여러 번 전송
RTT가 높아지면 클라이언트에 발생하는 현상?
RTT(Round Trip Time)
- 클라이언트가 서버로 데이터를 보내고 응답을 받기까지 걸리는 시간
| 현상 | 설명 |
| 입력 지연 | 눌렀는데 늦게 나감 |
| 텔레포트/워프 현상 | 위치 동기화 지연/보정 실패 |
| 판정 오차/판정 밀림 | 총알, 스킬 등 시간 차로 어긋남 |
| 동기화 불일치 | 다른 유저 위치, 애니메이션, 상태가 늦게 반영됨 |
| 상호작용 실패 | 문 열기, 아이템 줍기 등이 늦게 되거나 무시됨 |
| 오디오 지연 | 소리가 실제보다 늦게 출력 |
| 게임 끊김/버벅임 | 버벅이는 느낌 발생 |
대응 방법
- 클라이언트 예측 + 보정
- 입력 큐잉, 버퍼링 (지연 감추기)
- 서버 지연 허용 시간 확장
보간(interpolation)과 예측(prediction) 차이
완전히 다른 거임
보간
- 과거 데이터를 자연스럽게 이어주는 것
- 이전에 받은 서버 상태들 기반
- 다른 플레이어의 위치 표시
- 약간의 지연을 감추기 위해 사용
- 그냥 부드럽게 잇는 것
예측
- 미래 예상
- 클라이언트 입력 정보 기반
- 자기 자신의 조작 반응 향상
- 반응성을 높이기 위해 지연 없이 먼저 실행
- 서버와 다를 경우 롤백, 보정 필요
'지식' 카테고리의 다른 글
| [Graphics] Draw Call과 CPU, GPU 병목 (0) | 2025.05.28 |
|---|---|
| [Teck Interview] UI/UX 개발 시 고려 사항 (0) | 2025.05.28 |
| [Teck Interview] 게임 클라이언트 구조, MVC, MVVM, 상태 동기화, 씬 전환 메모리 최적화 (0) | 2025.05.28 |
| [Teck Interview] C++, 동기, 비동기, 블로킹, 논블로킹, 게임 최적화 (0) | 2025.05.28 |
| [Math] 외적 (0) | 2025.05.28 |