내가 할 수있는 최선을 다해 답변 할 수 있는지 살펴 보겠습니다.
게임 산업에서 청취 서버 모델이 얼마나 자주 사용됩니까?
대부분의 온라인 게임에 관해서는, 대부분의 게임이 항상 생각하는 방식은 아니지만 클라이언트-서버 아키텍처를 사용한다는 것을 알게 될 것입니다. 예를 들어 모든 소스 게임을 선택하십시오. 대부분은 마스터 서버 아키텍처 (사용 가능한 게임 목록)와 함께 표준 클라이언트 서버를 사용합니다. 한 사람이 전용 서버를 호스트하고 클라이언트가있는 사람은 누구나 참여할 수 있습니다.
그러나 약간 다른 접근 방식을 취하는 일부 게임과 서비스가 있습니다. 예를 들어 Left 4 Dead, League of Legends 및 일부 XBox Live 게임이 있습니다. 이들은 모두 제어 서버와 함께 클라이언트-서버 아키텍처를 사용합니다. 여기서 중요한 아이디어는 누군가 어떤 게임도 "실행하지 않는"전용 서버를 만드는 것입니다. 제어 서버는 일종의 "로비"를 생성하고, 게임이 시작될 때 제어 서버는이를 대기열에 추가하고 로비 차례가되면 일치하는 전용 서버를 선택합니다 (위치 / 속도, 가용성, 수많은 요소) 및 플레이어를 해당 서버에 할당합니다. 그래야 서버가 실제로 게임을 "실행"합니다. 클라이언트가 서버를 "선택"할 필요가 없기 때문에 같은 생각이지만 약간 단순화됩니다.
물론 가장 큰 클라이언트-서버 모델은 MMO 모델로, 하나 이상의 서버가 거의 모든 데이터와 논리를 처리하는 영구적 인 세계를 운영합니다. 이 모델을 사용하는 가장 유명한 게임 중 일부는 월드 오브 워크래프트, 에버 퀘스트 등입니다.
청취 서버는 어디에 적합합니까? 솔직히 말해서, 실제로는 잘하지는 않지만 여전히 많은 게임을 사용합니다. 예를 들어, 대부분의 소스 게임에서는 청취 서버를 만들 수 있고 많은 XBox Live 게임을 만들 수 있습니다 (한참이되었지만 카운터 스트라이크는 물론 Quake 4 및 기타 여러 가지 기능이 있다고 생각합니다). 그러나 일반적으로 클라이언트-서버 모델의 장점으로 인해 눈살을 찌푸리는 것처럼 보이며, 이는 우리를 다음 시점으로 안내합니다.
그것의 장점은 무엇입니까?
최우선 : 성능. 클라이언트-서버 모델에서 클라이언트는 게임의 각주기마다 로컬 변경 (입력, 그래픽, 사운드 등)을 처리합니다. 사이클이 끝나면 관련 데이터가 패키징됩니다 (예 : 플레이어 이동 여부, 위치, 현재 위치, 속도, 촬영 여부, 그렇다면 총알에 대한 정보). 등) 처리하기 위해 서버로 보냅니다. 서버는이 데이터를 가져 와서 해킹을 나타내는 방식으로 사용자가 이동하는지 (나중에 더 자세히 설명), 이동이 유효한지 (방법에 어떤 것이 있습니까?) 1 명이 2 번을 맞았습니까? 그런 다음 서버는 이것을 패키지로 묶어 클라이언트에게 보낸 다음 플레이어가 총에 맞았을 때 상태 조정, 해킹 중이라고 판단되면 플레이어를 걷어차는 등 필요한 모든 것을 업데이트합니다.
그러나 청취 서버는이 모든 것을 동시에 처리해야합니다. 프로그래밍에 익숙하다고 가정하기 때문에 게임, 특히 제대로 설계되지 않은 게임에서 게임이 얼마나 많은 전력을 끌어낼 수 있는지 알고있을 것입니다. 클라이언트 처리 뿐만 아니라 네트워크 처리, 보안 처리 및 기타 기능을 추가 하면 최소한 표준 처리가 수행되는 한 성능이 어느 정도 심각한 타격을 받는지 알 수 있습니다. 또한 대부분의 서버는 빠른 네트워크에서 실행되며 네트워크 트래픽을 견딜 수 있도록 설계된 서버입니다. 청취 서버의 네트워크 속도가 느리면 전체 게임이 중단됩니다.
두 번째 보안 ( 앞서 언급했듯이 서버가 수행 할 주요 작업 중 하나는 플레이어가 게임을 악용하고 있는지 확인하는 것입니다. 당신은 이것을 Punkbuster, VAC 등으로 보았을 것입니다. 해커와 아주 좋은 플레이어의 차이를 결정하는 것과 같이 이러한 프로그램을 실행하는 매우 복잡한 규칙이 있습니다. 해커를 잡을 수 없다면 게임에 좋지 않을 수 있지만, 잘못 고발 된 사람에 대해 조치를 취하면 더 나빠질 수 있습니다.
청취 서버는 일반적으로 클라이언트의 게임, 서버 처리 및 해킹 탐지를 처리 할 수 없으며 대부분의 경우 Punkbuster와 같은 탐지기는 청취 서버에서 실행이 불가능하지는 않지만 매우 어렵습니다. 일반적으로 게임 로직이 보안보다 우선 순위가 높기 때문에 필요한 처리 능력없이 올바르게 작동하기 어렵고 탐지기가 한 프레임 동안 처리 할 수없는 경우 누군가를 유죄 판결하는 데 필요한 데이터가 손실 될 수 있습니다.
마지막으로 게임 플레이 . 서버의 가장 큰 점은 서버가 영구적이라는 것입니다. 즉, 모든 사람이 떠나더라도 서버는 계속 실행됩니다. 야간에 많은 활동이없는 인기있는 서버가있는 경우, 사람들은 게임을 할 준비가 되어도 참여할 수 있으며 온라인으로 돌아올 때까지 기다릴 필요가 없습니다.
청취 서버에서 주된 단점은 청취 서버를 호스팅하는 클라이언트가 떠나 자마자 게임을 다른 플레이어에게 전송하거나 (경우에 따라 몇 분 동안 지속될 수있는 게임에서 lul 생성) 완전히 종료해야한다는 것입니다. . 호스트가 온라인 상태를 유지하거나 (서버의 슬롯을 낭비하고 컴퓨터의 전원을 차단하여 게임 속도를 늦출 수 있음) 모두를 위해 게임을 종료해야하므로 큰 서버에서는 바람직하지 않습니다.
그러나 이러한 문제에도 불구하고 청취 서버에는 몇 가지 장점이 있습니다.
손쉬운 설정 : 대부분의 청취 서버는 "새 게임"을 치고 사람들을 참여시키는 것 이상입니다. 이것은 친구들과 놀고 싶어하는 사람들에게는 쉽고, 빈 전용 서버를 찾거나 다른 사람들과 놀아보고 싶지는 않습니다.
테스트에 적합 : 전용 서버를 소유하고 있고 구성을 변경하려는 경우 일반적으로 테스트 하는 것이 좋습니다.먼저 구성. 사용자는 전용 서버의 백업을 생성하고 변경 사항에 맹목적으로 들어가야합니다. 문제가 발생하면 롤백하고 새로운 전용 서버를 생성하여 테스트하기 만하면됩니다. 그들을 테스트하십시오. 그리고 지점 1에서는 일반적으로 시작 및 구성이 더 쉽습니다. 대부분의 전용 서버는 관리자가 즉시 액세스 할 수 없으므로 대부분의 전용 서버는 원격 위치에서 임대됩니다. 구성 변경 및 재시작 명령 등을 관리자가 현재있는 시스템보다 원격 위치로 푸시하는 데 시간이 훨씬 더 걸립니다.
적은 리소스 : 대부분의 전용 서버에서 동일한 IP를 가진 사용자는 전용 서버에 연결할 수 없습니다 (즉, 클라이언트는 서버를 호스팅하거나 두 서버 모두를 재생할 수 없음). 클라이언트가 자신의 서버에서 게임을하려면 서버를 호스팅하거나 실제로 서버에서 게임을 할 수 있도록 전용 서버를 구입하거나 임대 할 두 번째 컴퓨터가 필요 합니다. 청취 서버에는 하나의 시스템 만 필요하며 클라이언트가 사용할 수있는 유일한 시스템 일 수 있습니다.
두 경우 모두 장단점이 있으며 설계 및 구현하려는 목표에 따라 평가해야합니다. 내 경험상, 당신이 청취 서버를 구현한다면, 친구들과 놀기를 원하는 몇 명의 사용자 또는 테스트 설정을 위해서라면 그것이 사용될 것이라고 믿는다.
마지막으로 :
다른 옵션이 있습니까?
이것은 벌레의 산업 캔입니다. 실제로 모든 유형의 네트워크 아키텍처를 비디오 게임에 적용 할 수 있습니다. 그러나 대부분의 인터넷 통신과 같이 내가 본 것에서 대부분 클라이언트 서버 모델의 형태로 요약됩니다.
귀하의 질문에 대한 답변이 없거나 확장 된 것이 필요한 경우 알려주십시오.