컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 달러일 수도 있고, 수만 명이 함께 놀 수 있을까요?

달러일 수도 있고, 수만 명이 함께 놀 수 있을까요?

디자인과 놀이를 벗기고, 우리는 기술적인 관점에서 이 문제를 분석해 보자.

멀티플레이어 게임의 규모는 줄곧 종잡을 수 없는 문제였다. MUD 에서 발전한 MMORPG 동시 온라인 인원수가 5 자리 이상인 것은 드문 일이 아니지만' 방주: 생존과 진화',' 아틀라스',' 닭 먹기' 등의 작품에서는 서버나 한 방에 수용된 인원수가 보통 70 명에서 200 명 사이를 배회한다.

많은 게이머들이' 황야 다트객: 구속 2' 의 세심한 싱글 체험이 하나의 대형 MMO 로 형성될 것으로 예상하고 있으며, 수만 명의 카우보이들이 westworld 에서 즐겁게 서로 적대시하는 장면이 장관이다. 하지만 기술력이 이렇게 강력한 록스타도' 32 인 대전' 디자인 방식을 채택하여 일부 내용을 삭제한' Fistful of Dollars 온라인' 을 선보일 수 있다. (윌리엄 셰익스피어, 스튜어트, Northern Exposure (미국 TV 드라마), 기술명언)

때로는 멀티플레이어 게임의 규모를 확대하는 병목 현상은 단지 서버를 사는데 돈을 쓸 의향이 있는지의 여부만은 아니다. (윌리엄 셰익스피어, 햄릿, 게임명언) 디자인과 놀이에 대한 고려를 제외하고 많은 개발팀들은' 크게 하고 싶지만 크게 할 수 없다' 는 기술적 어려움에 직면해 있다. 배틀그라운드' 과' 보루의 밤' 은 인원수를 100 으로 정했다. 모두 좋은 사인은 아닐 수도 있다. 블루홀과 Epic 가 고건광춘의 소설' 대탈출' 에 경의를 표하고 싶다면 42 명이 서로 싸우는 세상이어야 한다.

공교롭게도 올해 CJ 에서 전시회를 볼 때 다산을 만났다. 그는 EA 에서 온라인 게임의 기능 설계를 담당했고, 나중에는 Improbable 에서 게임 솔루션 엔지니어로 일했다. 그는 5 개의 MMO 프로젝트를 따라 멀티플레이어 온라인 게임의 구조를 잘 알고 있다. 우리는' 닭을 먹는 자' 의 수에서' 황야 다트객: 구속 2' 의 멀티모델에 대해 이야기하면서 이 코프가 생겨났다.

왜 MMORPG 가 수만 명을 먹여살릴 수 있을까요?

인터넷 멀티 플레이어 게임의 규모가 오늘에 이를 수 있다는 것은 확실히 단번에 이뤄지는 것이 아니다. 1996 MUD' 협객' 은 일찍이 한 대학에서 서버로 일했다. 플레이어 크기가 1000 명으로 늘어나 동시에 온라인상에 있을 때, 그 부하는 순식간에 한계로 밀려난다.

동시에 그래픽 온라인 게임은 더욱 "불쌍하다" 고 말했다. 온라인 게임 사용자는 여러 가지 상태를 가지고 있기 때문에 MUD 라는 단어를 한 문장으로만 설명하면 그래픽 상태에는 위치, 동작, 빈도 등 다양한 요소가 포함될 수 있습니다. 초당 여러 번 동기화하여 데이터 용량이 특히 큽니다. 따라서 시대를 앞서가는 Meridian 59 는 서버당 250 명만 수용할 수 있다.

물론, 그 시대 자오선 59 의 같은 화면 수는 이미 충분히 충격적이었다.

창세기의 인터넷상의 제작팀은 당시 사용자 규모에 대해 걱정했다. 알파 테스트를 할 때, 그들은 250 명이' 대규모 멀티플레이어 상호 작용' 이라는 개념과는 거리가 멀다고 느꼈기 때문에 베타 테스트 전에 하드웨어를 사서 신기술을 연구했다. 1997 에 이르러 이 사람들은 이미 대량의 버그 상황에서 동시에 수용할 수 있는 동시 사용자 수를 3000 명으로 줄이려고 노력했고, 그 결과 많은 허점이 플레이어에 의해 이용되었다.

다산의 관점에서 볼 때, 90 년대는 급속한 발전의 시대였기 때문에, 그는 초기 사용자 규모의 확장이 힙 대역폭과 하드웨어에 편향되어 있다는 것을 이해했다. 하지만 지금은 비용이 점점 높아지고 있고, 이런 방식을 채택하는 것은 비용이 너무 많이 든다. 한 측면의 현상은 CPU 의 클럭 속도가 수년 동안 크게 향상되지 않았다는 것이다. 기술적으로 기존의 MMORPG 아키텍처는 C/S (server-client) 로 10 년 이상 사용되어' 강호',' 월드 오브 워크래프트' 등의 작품 디자인에 널리 퍼져 있다. 수만 명을 지원하는 동시에 온라인은 온라인 게임의 기본이라고 할 수 있다.

이름에서 알 수 있듯이 C/S 는 처음에는 2 층 구조였다. 클라이언트, 즉 플레이어의 컴퓨터 (호스트) 는 렌더링을 담당하고 서버는 게임 논리를 처리합니다. 나중에' 데이터베이스' 를 추가했는데 게임 결과를 저장하는 메모리가 장착되어 있어 코프를 많이 할 필요가 없을 것 같다. (윌리엄 셰익스피어, 데이터베이스, 데이터베이스, 데이터베이스, 데이터베이스, 데이터베이스, 데이터베이스, 데이터베이스, 데이터베이스)

일반적인 C/S 아키텍처 상호 작용

방대한 사용자 규모를 보장하기 위해 전통적인 MMORPG 는' 충실도' 에 많은 희생을 치렀다. 현실감이란 벽에 부딪친 후의 반응과 같은 물리적 시뮬레이션을 포함한 게임의 세부 사항으로 간단히 이해될 수 있으며, 반생명 2 처럼 항아리를 손에 들고 주워 주울 수도 있다. (윌리엄 셰익스피어, 햄릿, 지혜명언) (윌리엄 셰익스피어, 오페라, 지혜명언) 여기에는 지연 및 동기화도 포함됩니다. 액션 게임, FPS 게임 등 서버 프레임 속도에 대한 요구가 매우 높다.

전산의 설명에 따르면 기존의 C/S 클라이언트는 시뮬레이션을 하지 않거나 가벼운 시뮬레이션을 한다. 이들은 이러한 상태를 낮은 주파수로 서버에 전송하므로 서버 부하가 적기 때문에 더 많은 플레이어가 동시에 온라인 상태를 유지할 수 있습니다.

MMORPG 의' 블랙 사막' 충실도는 좋지만 싱글 게임보다 조금 나쁘다.

충실도의 차이는 독립 실행형 게임과 MMO 의 렌더링 논리에서도 볼 수 있습니다. 독립 실행형 게임의 미러는 가능한 한 GPU 에서 로드되므로 하드 드라이브와 주 메모리에 액세스하지 않는 것이 좋습니다. 슈퍼 마리오 브라더스' 에서는 각 관문의 정사각형과 각 괴물이 나타나는 위치가 고정되어 있다. 게임 시작 시 캐릭터, 적, 장면을 렌더링한 다음 GPU 메모리에 넣습니다.

MMO 는 더 많은' 다른 플레이어' 변수와 수많은 기술, 효과, 위치의 조합을 도입하여 무엇을 렌더링할지 미리 결정할 수 없고, 메인 메모리와 하드 드라이브에서 텍스처 등을 동적으로 읽을 수 있습니다. 클라이언트와 서버의 상호 작용은 처음에는 플레이어의 위치만 결정한 다음 윤곽을 부분적으로 렌더링한 다음 프레임 속도를 유지한 상태에서 조금씩 화면을 읽는 것이 더 나쁠 것이다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 서버명언)

갑자기 이렇게 많은 사람들이 튀어나와, 온라인 멀티플레이어 게임의 화면은 예측할 수 없다.

실제로 C/S 아키텍처는 충실도를 희생할 경우 매우 복잡한 백엔드를 작성하여 사용자가 서버 로드를 최소화할 수 있도록 해야 합니다. 월드 오브 워크래프트의 처리 방식을 보면 그 시대의 폭설 엔지니어의 천부적인 재능이 이렇게 높다는 것을 알 수 있다.

가장 일반적인 방법은 "공간 분할" 을 통해 게임의 지리 (지도) 를 분할하여 서로 다른 서버 프로세스나 장치에 하나씩 할당하는 것입니다.

공간 분할법

한 가지 변형은 "공간 복제법" 입니다. 즉, 세계를 여러 부분으로 복제하여 각각 하나의 서버에 집어넣습니다. 게이머들이 보물칠과 고난도 괴물에 도전하여 대량으로 모이는 문제를 해결하기 위해' 모범법' 을 개발해 각 웨이브 플레이어에게 극히 제한된 영역을 복사본으로 제공했다.

공간 복제 방법

따라서 다산의 눈에는 C/S 기반 MMORPG 가 상당히 높은 기술 문턱을 가지고 있습니다.

"시장 선호도를 버리고 말하지 마라. MMORPG 의 기술 임계 값은 DS 보다 높습니다. 개인적으로 UE 의 DS 는' 방주: 생존과 진화' 와 같은 많은 스튜디오와 같은 훌륭한 제품이라고 생각한다. 그들은 너무 많은 백엔드 축적이 필요 없이 게임을 그 수준으로 할 수 있다. "

여기서 말하는 DS(DedicatedServer) 는 현재 많은 주요 온라인 멀티 플레이어 게임에서 사용되는 기술일 뿐만 아니라 "닭을 먹는 플레이어 수가 100 인 이유" (물론 DS 와 C/S 는 개념이 아님) 라고 대답할 수 있다.

왜 게임은 100 플레이어가 닭을 먹어야 합니까?

먼저 100 명은 단지 수량급일 뿐 조사될 수치가 아니라는 것을 설명해야 한다.

간단히 말해서 DS 는 "방 시스템" 과 비교할 수 있습니다. 예를 들어,' 배틀그라운드',' 요새의 밤',' 전지5',' 내 세계',' 서버',' 독립 호스트

현재 시중에 나와 있는 주류 게임 엔진 (예: 허황된, Unity 등) 은 모두 온라인 멀티플레이어 게임을 제공하는 솔루션이며, 모두 DS 입니다. 이 아키텍처는 온라인 게임의 충실도를 극대화할 수 있다. 첫 번째 목적은 FPS 의 동기화 문제를 해결하고 클라이언트 예측, 서버 검증, 지연 보상 등 다양한 기술을 포괄하는 정확도가 낮은 지연 시간을 추구하는 것이었습니다.

GTA5 의 전쟁도 DS 입니다.

Tian 사우나 언리얼 엔진은 예를 들어, "DS 아키텍처에서, 서버에 엔진을 실행 하 고, 클라이언트 렌더링의 관련 부분을 분리 하 고, 물리적, AI 와 같은 순수 논리를 실행 합니다." 서버가 물리적 컴퓨팅을 실행할 수 있기 때문에, 온라인 게임은 물리적 동기화를 실현하여 매우 현실적인 게임 경험을 실현할 수 있다. "

허황된 엔진의 DS 에서 서버는 충돌 동기화를 계산하는 임무를 맡고 있다. 예를 들면 무기가 명중되었는지, 환경 폭발이 파편을 만들어내는 궤적을 판단하는 것과 같다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 전쟁명언) 또한 역할의 AI 동작 트리의 동기화도 ds 에 의존하므로 서버는 고주파 처리 상태를 가지며 부하가 심하다. 이로 인해 ds 아키텍처는 고화질 게임을 지원할 수 있다는 장점이 있지만 소비가 많고 부하가 적은 단점도 있습니다.

전형적인 예는' 후광 5' 의 극장 모델이다. DS 아키텍처를 사용하는 이 모델은 최대 24 명의 플레이어를 지원하며 AI, 캐리어, 목표 수에는 제한이 있습니다. 이는 서버의 용량을 초과하지 않도록 하기 위해서입니다. 이 때문에 개발팀이 AI 논리를 단순화했기 때문에 NPC 는 전역 모드보다' 어리석은' 것처럼 보일 것이다. (윌리엄 셰익스피어, Northern Exposure (미국 TV 드라마), 전쟁명언)

C/S 아키텍처에서 확장 아이디어를 계속하면 플레이어가 혼란스러울 수 있습니다. 서버 한 대가 너무 무거운데 아예 서버 몇 대를 더 추가하지 않는 이유는 무엇입니까?

그러나 DS 아키텍처는 여전히 게임 엔진의 제한을 받고 있습니다.

"언리얼 엔진의 주요 논리는 단일 스레드 작동입니다. 서버 클럭 속도가 16 코어에서 32 코어로 바뀌면 로드할 수 있는 인원수를 늘릴 수 없습니다. 그리고 한 대의 기계에서 두 대의 기계로 늘려도 수용할 수 있는 플레이어 수는 변하지 않는다. 기술적인 아키텍처 제한이 있기 때문이다. 커널 수를 늘리는 것이 유용한지 여부는 엔진 자체가 멀티 스레드 확장을 지원하는지 여부에 따라 달라집니다. "

Epic 는' 보루의 밤' 100 명을 지원하기 위해 한동안 허황된 엔진을 최적화했다. 예를 들어 스카이다이빙 중 장거리 통화에 필요한 대역폭을 능동적으로 낮춥니다. 또 다른 예로, 클라이언트가 서버에 모바일 업데이트를 전송하는 빈도를 제한하여 클라이언트 프레임 속도가 너무 높기 때문에 서버가 과부하되는 것을 방지합니다.

Epic 는 한 회사가 대규모 MMO 를 하려면 고유한 요구 사항과 백엔드 솔루션이 있어야 한다는 점을 언급했습니다. 그들의 DS 를 복제하기에 적합하지 않다. 허황된 자체 연구 자료영화는 너무 자질구레할 수 있다. 개발자들은 이 기술을 바탕으로 그들 자신의 해결책을 찾도록 장려되었다.

주요 논리는 단일 스레드 Unity 이며, 실제로는 허황된 엔진과 같은 문제에 직면해 있다.

수만 명의 사람들과 달러가 될 수 있을까요?

이 두 부분의 토론에서, 우리는 인터넷 멀티 플레이어 게임이 곤경에 처해 있다는 것을 쉽게 알 수 있다. 기존의 C/S 를 답습하거나, 직접 백엔드를 써서 충실도를 낮추는 대가로 규모화를 추구한다. DS 아키텍처로 일을 하거나, 규모를 줄이고, 충실도를 높이거나.

하지만 어떻게 그것들을 결합할 수 있을까요? 사실 많은 개발팀이 이 문제에 대해 생각하고 있습니다.

시중에 이런 특징을 갖춘 제품은 많지 않아 평가가 다른 해적 모험 멀티 플레이어 게임 아틀라스가 겨우 한 가지라고 할 수 있다. (윌리엄 셰익스피어, 해적 모험, 모험, 모험, 모험, 모험, 모험, 모험, 모험) 제품 품질 외에 아틀라스는 ATLAS 아키텍처를 채택하고 있으며, "이론적으로" 4 만 명의 플레이어가 동시에 게임을 할 수 있도록 지원합니다.

《지도집》

그들의 접근 방식은 DS 외부에 자체 백그라운드 세계 서버와 데이터 서버를 작성하는 것입니다. 먼저 여러 DS 인스턴스를 함께 배치한 다음 세계 서버가 통합 관리를 담당합니다. 예를 들어 플레이어가 지도를 통과하면 플레이어의 데이터가 다른 서버로 이동합니다. 월드 오브 워크래프트의' 공간 구분 방법' 과 비교될 수 있습니다. 물론 기술이 아직 성숙하지 않은 것은 분명하다. Steam 에 대한 부정적인 평가가 가장 많은 것은' 카드' 와' 연결되지 않음' 이다.

영박은 원래 거대하고 하이파이 게임 세계를 만들려고 했는데, 기술 방면이 모두 구덩이라는 것을 알게 되었다. 그래서 먼저 DS 의 문제를 분명히 해야 향후 게임 제작의 문턱과 위험을 줄일 수 있기 때문에 솔루션 (도구): SpatialOS 가 탄생했다.

SpatialOS 는 기본 공용 클라우드 리소스를 기반으로 하는 게임 개발 환경입니다. 한편으로는 클라우드 서버 호스팅을 제공하고, 다른 한편으로는 다기능 플러그인과 비슷한 기술 지원을 제공합니다. 이 도구는 허황된 통합 엔진, 심지어 다른 타사 엔진에 쉽게 연결할 수 있습니다. 주로 DS 아키텍처에서 멀티플레이어 게임 규모를 확대하는 수단을 제공한다.

확장 아이디어 중 하나는 아틀라스 (ATLAS) 와 약간 비슷합니다. 하나의 DS 가 충분하지 않으면 여러 DS 를 결합하여 일관되게 제어합니다. SpatialOS 허황된 개발 제품군의 방향은 멀티프로세스이기 때문에 멀티코어 또는 멀티머신 컴퓨팅 리소스를 더 쉽게 사용할 수 있어 기존 DS 의 한계를 극복할 수 있습니다. 즉, 게임에 서버를 추가하는 것이 유용합니다.

위의 이 말은 약간 우회적이어서' DS 를 함께 놓아라' 는 예도를 직접 보면 더 직관적이다. 다음 그림의 9 개 정사각형은 9 DS 를 나타내며 각 게임 서버의 관할 구역은 서로 다른 색상으로 표시됩니다. 플레이어는 서버 경계를 원활하게 넘을 수 있을 뿐만 아니라 다른 지역의 다른 플레이어와도 상호 작용할 수 있습니다.

다산의 설명에 따르면 이 배후의 비밀은 9ds 위에' 네트워크 계층' 이 있어 모든 게임 상태 관리를 담당하고 있다. DS 는 모든 지역을 통해 연결된 지역입니다. 클라이언트는 모든 DS 가 아닌 이 경영진에 연결됩니다.

여러 게임 서버를 사용하여 게임 표준의 다양한 영역을 시뮬레이션합니다.

계층화의 개념에 대해 말하자면, SpatialOS 에는' AI 부하 분할' 이라는 기능이 있어' 고리 5' 의 극장 모드 문제를 해결할 수 있다. 이론은 AI 의 부하를 다른 서버에 던지면 플레이어의 확장을 위한 공간을 마련하거나 NPC 를' 멍청하게' 할 필요도 없고 일거양득이라는 것이다.

이 방법은 적용범위가 넓어 지연 요구가 낮아 핵심 시스템과 결합도가 낮은 것 (예: 물리적) 을 분리할 수 있다. 예를 들면 날씨 시스템. 분리된 레이어는 다른 클라우드 기반 가상 시스템에 배치됩니다.

영보 자신도 몇 가지 실험을 했다. 네이티브 언리얼 엔진을 사용하여 100 플레이어를 기준으로 최대 229 개의 AI 를 실행할 수 있습니다. AI 로드를 다른 서버로 옮긴 후 서버 프레임 속도를 그대로 유지하면서 AI 의 수는 479 개에 이를 수 있으며, 이는 용량을 두 배로 늘리는 것과 같습니다.

현재 테스트 중인 모험 생존 게임' 청소부' 는 AI 부하 분류 기술을 채택하고 있다. 개발자 MidwinterEntertainment 에 따르면 게이머는 극단적인 날씨, 괴물, 외국 침입자, 상대 선수 팀의 위협을 받을 수 있습니다. AI 부하의 분할은 이러한 하이파이 경험을 보장하는 한편, 3x3 km 지도에서' 60 플레이어 +300 AI' 의 규모를 달성합니다.

물론, 층감이 핍박해 보이지만 은탄환은 존재하지 않는다. 티안 상 (Tian sang) 은 한 가지 예를 들었다.

"A 1 구역에 10000 명이 있고 부하가 맞지 않는다고 가정합니다. 그런 다음 A 1 을 A 1 과 A2 로 썰어 각각 5000 명을 넣거나 A 1 에 한 층 더 올려 개발자가 직접 통제한다. 그러나 이 물건은 비용을 가져올 수 있다. 두 판 사이에 많은 통신이 있어서 서버 하드웨어에 의존하여 쌓아야 하기 때문이다.

예를 들어, 서버가 1000 명에서 3000 명으로 확장되려면 3 층으로 나누어야 합니다. 레이어당 추가 성능 손실이 50% 인 경우 레이어당 500 명, 3 층은 1500 명밖에 달릴 수 없습니다. 그리고 당신은 그것을 몇 층으로 다시 나누어야 합니다. 이때 손실은 50% 이상일 수 있다. ""

따라서 DS 프레임 워크에서 플레이어 규모를 확대하려면 여러 가지 방법을 통합해야 합니다. SpatialOS 에는 실제로 동기화 빈도를 줄이고 일부 네트워크 로드 문제를 해결할 수 있는 QBI 라는 시스템이 있습니다. 예를 들어, 한 가지 표현은 플레이어에게 가까이 다가갈수록 움직이는 물체를 더 매끄럽게 보이게 하고, 멀리 떨어질수록 개발자가 상상력을 발휘하는 방법에 따라 달라진다는 것이다. (존 F. 케네디, Northern Exposure (미국 TV 드라마), 스포츠명언)

앞서 언급했듯이, MMORPG 의 수는 수천 개에 달할 정도로 매우 크지만, 기본적으로 사교, 괴투, 사본 상호 작용에 집중되어 실제 물리적 시뮬레이션을 거의 볼 수 없습니다. 또 다른 방향은' 요새의 밤과 방주: 생존과 진화' 와 같은 게임이다. 그들 중 일부는 매우 세심하지만, 인원수는 병목에 걸리기 쉬우며, 일반적으로 방 위주이다.

이것은 우리가 수만 명을 수용할 수 있는' 황야 다트객: 구속 2' 를 만들 수 있는지에 대한 질문을 불러일으켰다. 다산은 이론적으로는 가능하다고 생각하지만, 아직 개발상이 이 분야에 손을 대지 않았다. 기술 문제를 해결한 후에도 주제는 불가피한 개발 위험과 비용으로 돌아갔다.

하지만 미래에는 온라인 멀티플레이어 게임이 오늘날의 표준보다 더 멀리 갈 수 있도록 이 두 가지 요구 사항이 수렴되어야 합니다. 즉, 더 많은 플레이어를 지원할 수 있고, 보다 현실적인 시뮬레이션을 보장할 수 있습니다. 적어도 현재 누군가는 이 방향으로 노력하고 있다. 아마 얼마 지나지 않아 하이파이 대형 멀티플레이어 온라인 게임은 더 이상 환상에 머물지 않을 것이다.

上篇: 불교 설치 기계 비디오 자습서 전집 下篇: Jingqi와 Huaqiangbei 중 어느 것이 더 좋나요?
관련 내용