MMO에서 서버 측의 모든 객체의 좌표 저장


12

MMORPG에서 :

충돌 감지를 위해 서버 측에 모든 나무, 덤불 등의 좌표를 저장하는 것이 일반적입니까?

그렇다면 그렇게 많은 수의 좌표 (데이터 구조 및 성능 문제 처리)를 저장하는 가능한 방법은 무엇입니까?

그렇지 않은 경우,이 유형의 충돌 감지는 서버에서 전혀 확인하지 않고 클라이언트 측에서 완전히 수행됩니까?

아니면 클라이언트가 충돌을 확인하고 서버를 확인하면서 중간 지점이 있습니까? 그렇다면 서버가 좌표를 서버에 유지하지 않고 어떻게 동일한 것을 확인합니까?


2
나는 이것에 대해 충분한 답을 줄만큼 잘 모르겠지만, 클라이언트 측에서만 충돌 감지를 수행하면 사기꾼은 모든 것을 클립하거나 멀리 떨어져있는 파워 업을 선택할 수있는 방법을 찾을 것입니다.
Peethor

2
-1 "질문은 연구 노력을 보여주지 않습니다".
Vaillancourt


실제로, 아마도 복제본이 아니며, 다른 질문에는 없었던 공간 분할 체계와 공간 데이터 구조에 대해 배웠습니다
Sajith Dilshan Jamal

답변:


15

타당성 (예 : 규모에 따라)과 무관하게 더 나은 방법이 있습니다.

예를 들어 일반적인 MMO에서 서버는 AI 및 플레이어 경로 찾기에 사용되는 대략적인 탐색 맵에 대해서만 알아야합니다. 트리의 위치를 ​​저장하는 대신 트리의 위치에서 탐색 맵의 구멍을자를 수 있습니다. 다른 큰 장애물도 마찬가지입니다.

보다 심층적 인 충돌 감지가 필요한 게임조차도 종종 서버 및 클라이언트 측 감지로 나눌 수 있습니다. 클라이언트는 더 애니메이션에 민감한 충돌 감지를 처리하는 동안 서버는 거친 경로 지정에 관심을 가질 수 있습니다. 예를 들어, 부상당한 플레이어는 큰 바위를 따라 기어 다니면서 적의 은신처를 찾습니다. 서버는 플레이어가 바위의 가장자리를 따라 움직일 수 있다고 판단 (서버가 아무 생각이없는 것입니다 클라이언트가 바위가 있는지 알고 동안 플레이어가 unpathable 영역 옆에 취할 수있는 경로가 그냥 것으로, 바위를) 그리고 걷는 동안 바위에 대항하는 캐릭터의 애니메이션을 재생합니다. 클라이언트는 움직이지 않습니다.이 경우 어떤 식 으로든 캐릭터 또는 영향을 미치는 게임 플레이; 그냥 애니메이션으로 주변 물체에 반응합니다.

서버에 많은 수의 객체를 저장할 수 있습니다. 오픈 월드 게임과 다르지 않습니다. 좋은 공간 분할 구성표를 사용하고 객체의 메모리 공간을 최대한 가볍게 유지하십시오. 여기 머리에 다른 버전의 "큰 숫자"가있을 수 있습니다. 게임에있는 모든 작은 조약돌 또는 바위 같은 돌기를 별도의 개체로 저장하려는 경우 단일 플레이어 게임의 경우에도 어리 석습니다. . :)


7

예-가능합니다. MMO는 종종 게임 세계를 여러 영역으로 나누므로 작업이 쉬워 지지만 하나의 대규모 영역으로도 할 수 있습니다. 좋은 공간 분할 체계 만 사용하면됩니다.

MMO의 대부분의 개체는 이동하지 않으므로 개체를 사용하여 충돌 검사 트리를 만드는 사전 처리 단계를 수행 할 수도 있습니다.

인스 턴싱을 사용하는 한 메모리 풋 프린트는 큰 문제가되지 않습니다. 객체 당 몇 개의 수레를 저장하는 것은 웅대 한 사물의 계획에 아무것도 아닙니다. 현재 겸손한 PC에는 4 기가 바이트가 있고, 위치를 저장하는 것은 단지 3 개의 실수 (또는 3 배)이므로 게임 내에서 수백만 개의 저장된 객체를 쉽게 허용합니다.

각 플레이어의 인벤토리와 같은 것을 저장하면 의심의 여지없이 더 많은 데이터를 차지할 것입니다.하지만 디스크에 쉽게 캐시하고 플레이어가 로그인 할 때만로드 할 수 있습니다.

클라이언트는 서버뿐만 아니라 클라이언트에서도 중복 검사를 수행해야합니다. 이렇게하면 클라이언트가 환경에보다 신속하게 반응 할 수 있습니다. 플레이어가 벽으로 걸어 들어간 경우 서버가 응답 할 때 0.5 초 후에가 아니라 즉시 이동을 멈추기를 원합니다.

당신은 또한 권위있는 것에 서버를 사용하고 싶습니다. 예를 들어, 덜 효율적인 경로를 사용하여 부정 행위를 할 수 없으므로 클라이언트에서만 경로 찾기를 수행합니다!


공간적 파티셔닝 기법에 대한 팁을 주셔서 감사합니다, 나는 새로운 것을 배웠다
Sajith Dilshan 자말
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.