멀티 플레이어 게임을위한 완전히/반 자율 P2P 네트워크가 얼마나 가능합니까?

StackOverflow https://stackoverflow.com/questions/597303

  •  11-09-2019
  •  | 
  •  

문제

나는 멀티 플레이어 게임을위한 P2P 시스템 (파일의 경우)을 만드는 방법에 대해 졸업했습니다. 아이디어는 멀티 플레이어 아키텍처에서 기존 서버를 제거하는 것입니다. 통신을 시작하고 세계 업데이트를 보내기 위해서는 일종의 서버가 필요할 수 있지만 서버의 부하 및 대역폭 압력을 줄이는 방법에 관심이 있습니다.

그건 그렇고, 이것은 2 명의 플레이어 체커 게임에서 30 명 이상의 플레이어가있는 FPS에 이르기까지 모든 크기의 게임에 적용됩니다.

내가 미쳤어?

도움이 되었습니까?

해결책

나는 같은 것에 대해 생각하고있다. 나는 분산 시스템이 배포, 중앙 컨트롤러가 필요하지 않습니다. MMO 또는 이와 유사한 게임의 문제는 모든 플레이어가 동일한 "세계"를 볼 수 있어야한다는 것입니다. 당신은 아인슈타인-안정 상대성과 비슷한 문제로 끝납니다.

일반적으로 솔루션은 직접 이웃의 다른 고객에게 정보를 전파 할 수 있어야한다는 것입니다 (반드시 물리적 공간이 아닌 가머 공간에서)는 모든 지역 플레이어에게 업데이트가 동시에 나타날 정도로 빠릅니다.

답은 플레이어를 월드 서버에서 벡터로 표현하는 대신 플레이어 당 "서버"또는 월드 모델을 갖는 것입니다.

다른 팁

큰 문제는 대역 또는 대기 시간 또는 게임 상태에 변화를 분배하지 않습니다. 큰 문제는 신뢰입니다.

내가 괴물을 죽였다고 말하면 실제로 내가 실제로했는지 어떻게 확인합니까? 내가 실제로 레벨 45인지 어떻게 확인합니까? 내가 전 세계로 순간 이동하지 않는지 어떻게 확인합니까? 모든 작은 세부 사항에 대해 서버를 확인할 수는 없습니다. 그것이 우리가 피하려고하는 것입니다!

당신은 플레이어를 보는 선수가 필요하고 심지어는 함께 일할 수도 있습니다. 나는 누군가가 언제라도 신뢰할 수있는 P2P MMO를 엔지니어링 할 것이라고 정말로 의심합니다.

질문에는 고려해야 할 사항이 많이 있습니다.

1) 분산 마스터 - 누가 게임을 시작합니까? 첫 번째 노드는 어디에서 찾을 수 있습니까? 모든 사람이 P2P 클라이언트를 동시에 닫기로 결정하면 어떻게됩니까? 세상이 끝나나요?

2) Distrubuted Rules- 102235 중 77 명이 X, Y, Z에서 괴물을 죽였다는 것을 누가 확인할 수 있습니까? 나는 "사령부의 최고"와 함께 해킹/부정 행위에 큰 문제를 본다 ... ...

3) 대기 시간 - 클라이언트가 언제 모든 데이터를 받았습니까? 인터넷이 분류되면 어떻게됩니까? 아니면 LAN 게임에서 하드 드라이브가 죽으면 어떻게해야합니까?

나는 P2P의 생각이 흥미 롭다고 믿지만, 모든 경쟁에서와 같이, 우리는 규칙을 처리 할 수있는 "판사"가 필요하다고 생각합니다. 왜냐하면 당신이 "익명 인민"과 경쟁 할 때 "괜찮은 속임수"A 많이 생각합니다.

나는 일종의 그리드 컴퓨팅이 그렇게하는 방법일지도 모른다고 생각하지만, 그리드의 일부가 떨어지거나 세상을 렌더링하고 결과를 다시 보내기에는 너무 느리면 .. 그러면 우리는 전체 게임 "Lagging"을 가지고 있습니다. . = 모든 사람을위한 끔찍한 게임 ... 이것은 이미 마스터 서버가있는 많은 FPS 게임에서 볼 수 있습니다. 네트워크 프로토콜이 지연을 너무 잘 처리하지 않으면, 실행하는 사람을 때리기가 점점 어려워 지거나 얼굴을 쏘는 곳에서 나오지 않습니다.

고가의 솔루션은 플레이어와 더 가까운 데이터가있는 "서브 서버"(프록시 게임 서버)가있는 것일 수 있습니다. 이것은 당신이 전 세계의 많은 서버 플랜트에 액세스해야한다고 생각합니다 (블리자드가 WOW와 마찬가지로) 또는 대역폭이있을 때 "지능적인"P2P 호스트 "를 발명해야합니다. 충분히 크고 충분히 플레이어가 가까이 다가 가면 (항상 관점에서 지연을 확인하는 것) ... 이제 가능하다고 가정 해 봅시다. 다시?

LOL ... 이건 계속 될 수 있습니다 ... 인터넷의 일반적인 문제와 비슷하게 들립니다 :-)

행복한 코딩 ...!

나는 확실히 전문가는 없지만 나에게는 조금 미쳤다. 내 경험상 대역폭과 성능으로 인해 전용 게임 서버가 필요합니다. P2P를 사용하면 두 가지를 모두 잃을 것입니다. 제 생각에는 P2P는 몇 가지에 좋습니다. 파일과 연구를 배포하는 것이 그 중 하나입니다. 그러나이 두 가지는 실시간 데이터가 필요하지 않습니다. 대량의 멀티 플레이어 게임 세계가 있다면 P2P를 사용하여 게임 파일을 배포하고 오프로드 번호 크런치를 배포 할 수 있습니다.

가능성이 있다고 말하지만, 그 수는 잠재적으로 강력하지만 제한적으로 보입니다.

나는 이것이 아마도 이론적으로 가능하다고 생각하지만 여전히 먼 길입니다.

다른 게시물에서 언급했듯이, 근처에있는 다른 플레이어에게만 업데이트를 보장함으로써 대기 시간을 낮게 유지할 수 있습니다. 이것은 분산 게임에서 수년 동안 이루어졌습니다.

여러 노드가 각 데이터에 대해 책임을 지도록함으로써 데이터 손실이 허용 가능한 수준으로 유지 될 수 있습니다.

신뢰 문제와 관련하여, 플레이어가 다른 플레이어가 부정 행위를 발견하기 위해 "도전"할 수있는 프로토콜을 가질 수 있습니다. 즉, 도전자는 다른 플레이어 계산의 일부를 복제하고 결과를 비교하도록 요청합니다. 이런 종류의 일을하는 암호화 프로토콜이 이미 있지만 세부 사항이나 실제로 실현 가능한지 여부는 모릅니다.

내가 보는 실제 문제는 시스템과 같은 개발에 대한 이유가 거의 없다는 것입니다. 비용은 높고 복잡성이 높지만 게임 경험 (제품)은 크게 향상되지 않습니다. 돈을 절약하는 활동은 실행 가능하기 위해 비용보다 더 많은 돈을 절약해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top