4인 멀티플레이 게임에서 플레이어 캐릭터는 총 16명이다.
위 문장을 정확히 이해하고 있다면 네트워크 개념을 잘 이해하고 있는 것입니다.
이해가 잘 되지 않는다면 1번 글 참고!
게임 서버의 종류
기본적으로 네트워크 기반 게임은 대기 중인 서버에 클라이언트들이 참가하는 서버-클라이언트 방식으로 동작한다.
서버: 클라이언트들이 참가할 수 있는 네트워크 공간을 마련하는 컴퓨터, 호스트(host), 게임 속 상호작용 연산 담당.
클라이언트: 서버에 참가하여 게임을 플레이하는 컴퓨터
네트워크 게임의 서버-클라이언트 방식은 대부분 다음과 같은 방식으로 구현된다.
- 전용 서버(Dedicated Server)
- 리슨 서버(Listen Server)
- P2P(Peer - to - Peer)
1. 전용 서버
전용 서버는 서버의 모든 자원이 온전히 네트워크 서비스를 유지하는 데 사용되며, 서버가 플레이어로서 게임에 직접 참가하지 않는 형태이다. 클라이언트 A, B, C가 전용 서버 D에 접속한 경우 각자의 컴퓨터에서 그려지는 게임 월드의 모습은 다음과 같다.
장점
- 언제든지 참가 가능
- 고정된 고성능 서버를 제공하기 떄문에 서버에 접속한 클라이언트가 쾌적한 환경에서 게임을 즐길 수 있음
단점
- 전용 서버는 다른 방식에 비해 많은 고정비용이 발생한다.
2. 리슨 서버
리슨 서버 방식은 전용 서버가 없는 대신 플레이어 클라이언트 중 하나가 서버 역할을 맡는다. 리슨 서버는 게임에 플레이어로 참가하기 떄문에 리슨 서버 방식을 Play as Host 라고 부르기도 한다. 서버 역할을 맡은 클라이언트를 방장, 호스트, 마스터 클라이언트 등으로 부른다.
다음 그림은 클라이언트 A,B,C 중에서 C가 호스트를 맡아 리슨 서버 방식으로 게임을 진행하는 경우를 보여준다.
장점
- 리슨 서버 방식은 전용 서버에 비해 서비스 유지비용이 적다.
- 물리적으로 매우 가까운 위치에 있는 플레이어들끼리는 네트워크 반응 속도가 전용 서버보다 빠를 수 있다.
단점
- 호스트 플레이어의 컴퓨터 성능에 따라 네트워크 품질이 크게 달라진다.
- 호스트가 게임을 종료할 경우, 진행 중인 게임을 일시 정지하고 남은 클라이언트 중에서 새로운 호스트를 선정하는 절차 필요.
3. P2P
P2P방식은 게임에 참가한 클라이언트 모두가 호스트 역할을 겸한다. P2P는 클라이언트들이 특정 단일 호스트에 참가하는 방식이 아니라 서로 직접 연결된 형태이다.
일반적으로 네트워크 게임에서 호스트는 클라이언트에 비해 연산 부담이 크다. 호스트는 네트워크 룸을 유지하는데 필요한 연산과 게임 속 중요한 연산 대부분을 수행한다.
반면 P2P방식에서는 연산 대부분을 독점하는 특정 호스트가 없다. 클라이언트가 각자 자신의 월드에서 자신의 담당 연산을 실행하고 다른 클라이언트에 결과를 전파한다.
장점
- 이 방식은 전용 서버가 없다는 점에서 리슨 서버 방식과 유사하지만, 호스트가 게임 도중 접속을 종료했을 때 호스트를 교체하는 과정이 불필요하다.
- 서버 유지비용 또한 발생하지 않는다.
- 클라이언트끼리 직접 연결되기 때문에 클라이언트 수가 적은 경우에 한해서 다른 방법보다 네트워크 반응 속도가 빠르다.
- 개발자 입장에서 P2P를 사용하면 프로그램의 처리 흐름을 직관적으로 설계할 수 있다.
단점
- 참가자가 증가할수록 반응 속도가 눈에 띄게 느려진다.
: 따라서 P2P방식에서는 통상 16명을 참가자 상한선으로 여긴다. 다른 방법보다 참가자 인원 대비 유지해야 하는 연결 회선 수가 많기 때문이다. - 연결의 불편함
: 호스트가 정해져 있는 방식에서는 호스트를 통해 다른 클라이언트의 정보를 알 수 있지만, P2P방식에서는 각각의 클라이언트가 자신을 제외한 다른 모든 클라이언트와 직접 연결되어 있어야 한다. - P2P방식은 수치 변조에 가장 취약
: 호스트만 있으면 중요한 연산과 데이터는 호스트에서 관리하고, 클라이언트는 호스트의 실행 결과만 받는다. 이 경우 특정 클라이언트가 점수나 체력 등과 관련된 중요한 연산과 수치를 위조하는 것이 상대적으로 어렵다. 반면 P2P방식에서는 각 클라이언트가 연산을 실행하고 서로 동기화하기 때문에 특정 중요 수치를 위조하여 다른 클라이언트에 전파할 위헙이 크다.
매치메이킹 서버
리슨 서버나 P2P방식을 사용하더라도 참가할 클라이언트들이 서로를 찾아 방 하나에 모이는 과정에서 사용할 전용 서버가 필요하다. 이러한 전용 서버를 매치메이킹 서버라고 부른다.
MMORPG게임에서는 대부분의 요소를 전용 서버로 처리한다. 반면 플레이어들이 한 룸(세션)에 모여 레이드나 팀 데스매치를 진행하는 종류의 게임에서는 매치메이킹은 전용 서버를 사용하지만, 룸이 구성되고 라운드를 시작할 때는 플레이어 중 한 명을 호스트로 삼는 리슨 서버 방식을 많이 사용한다.
포톤 룸
게임을 플레이하기 위해서는 네트워크를 통해 여러 클라이언트가 하나의 세션에 모여야만 한다. 포톤은 이렇게 여러 클라이언트가 모인 네트워크상의 가상의 공간을 룸이라는 단위로 부른다.
단, 포톤의 룸은 유니티의 씬이 아니라는 것을 주의해야 한다. 포톤의 룸은 유니티의 씬과 다른 계층에서 동작한다. 따라서 플레이어들이 같은 룸에 있지만 서로 다른 씬을 로드하는 것도 가능하다.
하나의 룸에 플레이어들이 모인 상태는 여러 사람이 각자 무전기를 든 채 같은 주파수를 공유하고 있는 것과 같다. 주파수를 공유한 사람끼리 정보를 공유하고 같은 장소로 이동할 수 있다. 하지만 주파수를 공유한다는 사실(같은 룸에 입장) 자체와 사람들이 위치한 물리적인 장소(씬) 사이에는 연관성이 없다.
'유니티 C# > 서버, 네트워크' 카테고리의 다른 글
1. 네트워크 동기화 (0) | 2023.05.17 |
---|