요즘 게이머들은 멀티 플레이어 게임을 안 하고 있는 사람은 없을 것입니다. 그럼 이런 멀티 플레이어 게임은 어떤 통신 체계를 갖추고 있는지 궁금한 사람도 있을 것입니다.
처음에는 단순히 로컬 컴퓨터에 두 명의 사람들이 두 개의 컨트롤러를 달고 게임을 하던 시절이 있었습니다. 제가 어렸을 때 했든 게임중 재밌게 했던 게임인 버추얼 캅도 대표적인 게임 중 하나입니다.
그 이후로 발전해서 이젠 두 개 이상의 컴퓨터나 인스턴스 상에서 돌아갈 수 있게 되었습니다. 그 중 하나의 방식으론 Peer To Peer 방식으로 내가 어떤 일을 하면 그 전부에 대한 정보가 다른 컴퓨터로 전부 전송되는 방식입니다.
그리고 그 반대로도 마찬가지입니다. 하지만 이 방식은 제 3의 플레이어가 있다고 하면 그 사람에게도 보내야 하는 식입니다. 즉 플레이어가 늘어나면 늘어날 수록 보내야 할 데이터가 많아지는 단점이 존재합니다. 즉 예로 들어 만 명이 있다면 1명의 플레이어는 나머지 9999명에게 일일히 보내야 되는 식인 것입니다.
이러한 방식은 게임의 로직을 실행하기도 바쁜 게임 컴퓨터에게 너무나도 치명적인 문제입니다. 그래서 게임 개발사들은 이러한 플레이어의 입력 처리를 받아서 나머지들에게 뿌리는 전용 컴퓨터를 만들어내니, 이것이 바로 서버입니다.
그리고 기존의 플레이를 하고 있는 각각의 유저(프로그램)을 클라이언트라고 하며, 이러한 서버와 클라이언트 간의 통신 체계를 클리이언트-서버(Client - Server) 방식이라고 합니다.
사실 게임 쪽에서는 클라이언트-서버 모델은 더욱 더 나뉘는 편입니다.
1. 리슨 서버
리슨 서버는 클라이언트 중 하나의 컴퓨터가 서버가 되는 식입니다. P2P와 다른 점은 모든 행동에 대한 패킷이 하나의 서버를 담당하는 클라이언트로 간다는 점입니다. 즉 리슨 서버는 게임도 실행하고, 그래픽도 실행하며, 동시에 네트워킹 또한 전부 담당을 해야한다는 뜻입니다.
2. 데디케이티드 서버
데디케이티트 서버는 게임을 플레이 용도로 사용하지 않고 그래픽을 따로 렌더링 하고 있지 않습니다. 단순히 패킷을 받고 이에 대한 로직만 실행한 뒤 이를 뿌려주는 역할만을 진행하죠.
즉 배틀그라운드로 따진다면, 리슨서버는 어떤 플레이어가 서버 역할까지 동시에 담당하기 때문에 그 컴퓨터가 좋지 않다면 전부 느려지는 현상을 발견할 수 있게 됩니다. 하지만 회사가 제공해주는 데디케이티드 서버를 담당하면 회사가 제공받는 네트워크 망에 문제가 있지 않는 한 게임 유저들 각기의 네트워크 상황에 더욱 더 연관될 것입니다.
배틀그라운드 개발에 사용된 언리얼 엔진은 권한 기반의 클라이언트 서버 모델을 제공하고 있으며 만약 싱글 플레이어 게임을 개발하는 경우 사실 그 게임은 클라이언트와 서버의 역할을 전부 담당하는 것과 비슷하다고 보면 된다.
'Unreal Engine' 카테고리의 다른 글
[게임서버/언리얼엔진] 심리스/논심리스 서버 (0) | 2022.09.06 |
---|---|
[언리얼 엔진/서버] 온라인 서브시스템과 세션 (0) | 2022.09.02 |
[언리얼 엔진/서버] 온라인 서브시스템 (0) | 2022.09.02 |
[언리얼 엔진] 월드와 액터 (0) | 2022.06.06 |
[언리얼 엔진4] TEXT 재정의 문제 (0) | 2022.06.04 |