<Age of Empires>: RTS(Real-Time Strategy) 게임, 대역폭 문제와 인터넷 전화 접속 레이턴시 문제
결정론적 락스텝(deterministic lockstep)
결정론적: 현재 그리고 앞으로 모든 것이 한 치의 오차도 없이 예측대로 진행됨
- 컴퓨터 하나하나가 P2P 방식으로 다른 모든 컴퓨터에 연결하는 방식
- 개별 유닛을 하나하나 동기화하는 대신 플레이어가 입력한 명령 동기화
1. 턴 타이머
- P2P 형태의 토폴로지 -> 컴퓨터 사이에 데이터가 빠르게 오감(서버가 중간에서 데이터를 중개하지 않음)
- 각 플레이어는 다 다른 프레임 레이트를 사용하고 접속 환경, 품질 등 차이가 날 수 밖에 없음 그렇다고 모두 준비가 되었을 때 동시에 적용한다? 응답 속도가 매우 느리게 됨 -> 턴 타이머 추가
- 턴의 기본 길이가 200ms라고 했을 때, 200ms 동안 모든 명령은 대기열 buffer에 쌓이게 되고, 200ms가 지나면 턴이 완료되며 buffer에 쌓인 명령이 전송됨 수신측에서는 바로 반응하지 않고 두 번의 턴이 지난 다음에 처리함
- 그러나 플레이어 한명에게 심한 랙이 발생하여 200ms 가 버거울 땐? rendering frame rate를 동적으로 조절하는 매커니즘 사용
2. 동기화
- 미세한 오차가 누적될 경우 스노우볼 효과로 다른 것들이 다 달라질 수 있음
- 유사 난수 발생기(pseudo-random number generator, PRNG)
- 동기화 검사시에는 자원 추가와 같은 치트를 사용할 수 없음
- 맵핵 같은 보여주어선 안되는 정보를 드러내 버리는 종류의 치트에는 무방함 -> 보안의 중요성
책 출처: 멀티플레이어 게임 프로그래밍(조슈아 글레이저)
http://www.yes24.com/Product/Goods/38868446
멀티플레이어 게임 프로그래밍 - YES24
랙 없는 서버를 위해한방에 무너지지 않는 서버를 위해!현업 개발자가 알려주는 탄탄한 멀티플레이어 게임 프로그래밍〈리그 오브 레전드〉, 〈디스트로이 올 휴먼즈〉 시리즈를 컨설팅하고
www.yes24.com
'게임 개발 > 네트워크' 카테고리의 다른 글
인터넷 - #2. TCP/IP 스택의 계층 구조 (2) (0) | 2021.09.04 |
---|---|
인터넷 - #2. TCP/IP 스택의 계층 구조 (1) (0) | 2021.08.30 |
인터넷 - #1. 패킷 스위칭 (0) | 2021.08.29 |
네트워크 게임 - #2. <스타시즈: 트라이브스> 네트워킹 모델 (0) | 2021.08.29 |
네트워크 게임 - #1. 역사 (0) | 2021.08.29 |