Study/Network

멀티 플레이어 게임 프로그래밍(1)

wnwnovo 2024. 8. 20. 14:45

1장 - 네트워크 게임의 개요

트라이브스 (1998, FPS) 

- 효율성 문제로 비신뢰성 프로토콜 사용(반드시 도착한다는 보장 없음)

- CS 모델 채용

P2P 모델 - O(n2)의 대역폭 필요, 각각의 플레이어들이 주어진 대역폭을 나눠써야함(128명이라면 16,384로 나눠서)

CS 모델 - 서버만 O(n) 대역폭 처리하면 됨

 

- 네트워킹 모델

 

1. 플랫폼 패킷 모듈

패킷 - 네트워크로 보내기 위해 데이터를 묶어놓은 한 단위

- 유일하게 플랫폼 종속적인 계층

- 표준 소켓 API를 감싸놓은 것. 다양한 패킷 형식을 조립하고 전송하려는 목적으로(버클리 소켓과 유사)

 

2. 연결 관리자

- 두 컴퓨터 사이의 연결 추상화

- 윗단의 스트림 관리자가 내려주는 데이터를 플랫폼 패킷 모듈로 전달해주는 역할

- DSN 보장(맡긴 패킷이 전달되었는지 까지만!!! 확실히 알려준다는 뜻)

- 스트림 관리자는 특정 데이터가 무사히 전달되었는지 판단 가능

- 배달 상태 통지는 수신 측의 확인 응답에 따라 비트 필드를 사용한 슬라이드 윈도 기법으로 구현됨

 

3. 스트림 관리자

- 다른 여러 상위 관리자를 대신하여 데이터를 연결 관리자에 보냄

- ((중요)) 허용 최대 데이터 전송률을 조절함

- 여러 시스템이 데이터 전송을 요청하므로, 우선순위 관리도 함

- 어떤 데이터를 보낼지 결정한 뒤 패킷을 꾸려 연결 관리자에 보내고, 잘 전달 되었는지 상위 관리자들한테 알려줌

- 패킷 하나에 이동 관리자 데이터 + 이벤트 관리자 데이터 + 고스트 관리자 데이터 이런 식으로 섞어 보내는 경우가 다반사

 

4. 이벤트 관리자

- 게임 시뮬레이션 중 발생하는 이벤트의 대기열 관리

- 일종의 간이 RPC로 여기면 됨

- RPC : 호출 시 원격 머신에서 실행되는 함수 또는 프로시저

- 이벤트의 우선순위를 매길 수 있는 권한

- 가장 우선순위가 높은 이벤트부터 처리하다가 특정 조건(패킷 꽉 차거나, 이벤트 큐가 비거나, 계류 중인 이벤트가 넘 많거나)이 되면 처리 중지

- 각 이벤트의 전송 기록을 추적하여 확실한 전달 보장

(보장하려는 이벤트의 확인 응답이 없으면 대기열 맨 앞에 해당 이벤트를 다시 끼워 넣어서 보냄)

 

5. 고스트 관리자

- 가장 중요한!!! 시스템

- 특정 클라이언트에게 유의미하다고 여겨지는 동적 객체를 복제 혹은 고스트 사본을 만드는 일을 함

- 고스트 : 클라이언트가 서버에서 받아둔 여러 객체 정보를 일컫는 말

- 고스트를 전송 또는 수신하는 일을 함

- 서버 -> 클라로 가능한 많은 객체 상태를 전송함. 모든 클라가 가장 최신의 상태로 업데이트 되어 있게끔 보장

 

6. 이동 관리자

- 플레이어의 이동 데이터를 최대한 빨리 전송하는 일을 함

 

 

에이지 오브 엠파이어(1997, RTS)

결정론적 락스텝 모델

- 컴퓨터 하나하나가 P2P 방식으로 다른 모든 컴퓨터에 연결하는 방식

- 유닛을 하나하나 동기화 하는 대신, 플레이어가 입력한 명령을 동기화하기로 함

- 대역폭 관리가 수월해짐, 대신 모든 플레이어의 게임 인스턴스는 스스로 시뮬레이션을 돌려야함

- 다른 인스턴스와 정확하게 동기화 할 수 있는지? 중요)

 

1. 턴 타이머

- 일정 기간마다 명령을 쌓아놓는 방식

- 예를 들어 200밀리초로 턴을 잡으면, 그 동안 모든 명령은 대기열 버퍼에 쌓임

200밀리초가 지나면 턴이 완료 되어 대기열에 쌓아둔 모든 명령이 다른 플레이어들에게 전송됨

*핵심* 수신 측이 명령 대기열을 받는 즉시 처리 X, 두 번의 턴 이후 처리한다는 것

- 장점 : 경기 내내 모든 입력을 모아 저장해놓더라도 메모리 용량이나 부담이 적음

 

2. 동기화

- 유사 난수 발생기를 사용해 동기화

- Seed값을 통일해 두어도 단 한 번이라도 서로 다른 횟수로 호출하면 더 이상 같은 값이 나오지 않게됨

- 장점 : 서로 동기화되는 것과 관련된 치트를 쓰기 어려워짐(다른 인스턴스가 즉각 알아챌 수 있음)

- 단점 : 보여줘선 안될 정보를 보여주는 치트(맵핵)에 무방비

 

'Study > Network' 카테고리의 다른 글

멀티 플레이어 프로그래밍(2)  (0) 2024.08.20