p2p 멀티 플레이어 게임과 클라이언트-서버의 한계 [폐쇄]


12

멀티 플레이어 게임 아키텍처를 읽고 있습니다.

지금까지 찾은 대부분의 기사는 클라이언트-서버 모델을 다루고 있습니다.

p2p 아키텍처 사용에 대한 제한 사항이 무엇인지 알고 싶습니다. 어떤 "클래스"게임을 사용하여 구현할 수 있습니까? 아닌가? 일반적으로 클라이언트-서버 모델에 대한 주요 차이점과 제한 사항은 무엇입니까?



진정한 P2P 게임의 예를 들어, 멀티 플레이어와 이로 인해 해킹에 큰 문제가있는 Gunz : The Duel을 볼 수 있습니다.
fhyve

답변:


11

여기 내 두 센트가 있습니다 :

P2P :

  • 장점 :
    • 중앙 서버 불필요 : 저예산 인디 게임에서 훨씬 저렴하고 실용적입니다.
    • 매우 잘 확장됩니다 (일반 클라이언트가 대역폭을 처리 할 수없는 특정 지점까지).
    • 데이터 배포에 매우 적합 : 사용자 제작 콘텐츠가 동적으로 동기화되는 게임 (예 : 급류)에 적합합니다.
    • 더 안정적 : 서버에 문제가 발생하여 아무도 재생할 수 없습니다 (구현에 따라 다름).
  • 단점 :
    • 구현 하기 어려움 : 서버 클라이언트보다 견고한 P2P 아키텍처를 만드는 것이 훨씬 어렵습니다.
    • 권위있는 동료를 지정하지 않으면 그러한 시스템에서 부정 행위를 방지하기가 매우 어렵습니다 (P2P에서 확장의 이점을 방해 할 것임).
    • 보안은 달성하기 어렵다.
    • 클라이언트의 인터넷 연결은 다른 사람의 게임에도 영향을 줄 수 있습니다.
    • 대기 시간은 일반적으로 훨씬 큽니다 (예를 들어 LAN 네트워크에서 여러 사람과 인터넷 게임에 참여할 때 더 좋을 수 있지만).
    • 포트 포워딩이 필요할 수 있음 : 인터넷을 통한 P2P 는 포트 포워딩이 필요하지만 모든 사람이 기술적으로 기울어 진 것은 아닙니다. 또한 ISP는 포트 전달을 막을 수 있으며 진입 장벽을 높입니다.

서버 클라이언트 :

  • 장점 :
    • 손쉬운 구현 : 얻는 것만 큼 간단합니다.
    • 제대로 구현되면 확장 성이 매우 뛰어납니다 (작업이 여러 서버에 분산 될 수있는 경우).
    • 부정 행위는 쉽게 피할 수 있습니다 (P2P와 비교).
    • 대기 시간 감소 : 서버가 연결 상태이면 대기 시간이 매우 짧을 수 있습니다.
    • 플레이어의 인터넷 연결은 다른 사람의 게임에 영향을 미치지 않습니다.
  • 단점 :
    • 서버 운영 비용 : 무료 게임에는 적합하지 않습니다 (플레이어가 전용 서버를 설정하지 않으면 보안 문제 일 수 있음).
    • 서버에 문제가 있으면 모든 사람이 그렇습니다.

평균 인터넷 연결이 점점 좋아지고 있기 때문에 P2P를 선택하는 것이 좋습니다. 향후 P2P 대기 시간은 전혀 문제가되지 않을 수 있습니다. 또한 P2P에 대한 많은 부분은 특정 구현에 따라 다릅니다.

P2P와 서버 클라이언트를 결합한 아키텍처도 있습니다.


P2P Con : 매치 메이킹. LAN 게임이 아니라면 동료를 찾는 방법을 모릅니다. CS : 한 선수가 독일에 있고 다른 선수가 호주에있을 때는 대기 시간짧지 않습니다. 6 년 후에도 여전히 문제입니다. CS : 돈은 그렇게 많이 들지 않습니다. 서버는 다소 저렴 해집니다. 또한 웹 프록시를 사용하여 자신의 PC에서 게임을 호스팅하여 시작할 수 있습니다.
badunius

2

피어 투 피어 게임의 큰 위험은 중립 서버 형태의 중앙 권한이 없으면 부정 행위를 막을 방법이 없다는 것입니다. 각 클라이언트는 원하는 게임 결과를 해석 할 수 있습니다. 일부 게임은 클라이언트 중 하나를 호스트로 선언하고 그를 판사로 지정하지만 해당 클라이언트가 사기꾼 일 경우 전체 게임의 결과를 결정합니다.

플레이어의 빠른 반응이 필요한 게임과 같이 낮은 대기 시간과 높은 대역폭이 필요한 게임의 경우 호스트가 고성능 백본이있는 데이터 센터에 앉아 있지 않고 소비자 급 인터넷 연결을 사용하고 있다는 문제도 있습니다. 연결. 즉, 사용자 경험이 어려움을 겪습니다. 보다 전략적인 "느린"게임에서는 큰 문제가되지 않습니다.


컨센서스 모델을 사용하면 부정 행위는 클라이언트-서버 모델에서보다 더 이상 문제가되지 않습니다.
Jeroen

1

P2P 멀티 플레이어 게임을 구현하는 것은 쉽지 않으며 현재 적용 할 수 없습니다.

문제는 각 피어에 대해 다른 피어를 아는 사람이 없으므로 각 메시지에 대해 여러 번의 홉을 가지므로 클라이언트 서버 모델에 비해 대기 시간이 길다는 것입니다. 자세한 내용은 백서를 참조 하십시오.

라운드 기반 게임은 지연 시간에 크게 의존하지 않기 때문에 이러한 프로토콜을 쉽게 사용할 수 있습니다. 또한 세션에 호스트가 거의 없으므로 모든 메시지를 다른 모든 플레이어에게 브로드 캐스트 할 수 있습니다.

피어 투 피어를 사용하는 다른 게임은 Peer 중 하나를 동적으로 선택하여 게임을 호스팅합니다 (예 : CoD MW2). 호스트 연결이 끊어지면 호스트 마이그레이션과 같은 문제가 발생합니다.


3
"현재 적용 할 수 없음"은 무엇을 의미합니까? 네트워킹에 P2P를 사용하는 게임이 많이 있습니다. 또한 "아무도 다른 동료를 아는 사람은 없다"는 말이 잘못되었습니다. 실제로 견고성을 향상시키기 위해 중계기를 지원해야하지만, 특히 소규모 피어 수가 있거나 NAT 라우터가 방해가되지 않는 LAN에서 모든 사람과 모든 사람의 네트워크 토폴로지를 완벽하게 구축 할 수 있습니다.
Tapio

@Tapio 물론 게임용 p2p 네트워크를 구축 할 수 있지만 지연 시간, 사용자 수 또는 사용 환경에 따라 제한됩니다. 이러한 이유로 대부분의 게임은 p2p 방식을 사용하지 않습니다.
Horstinator

@Horstinator 내가 FPS 게임을 위해 P2P를 사용하는 게임을 알고, 그것은 단단하게 어떠한 지연 문제없이 50 ~ 100 플레이어를 지원 (해당 호출 stickman의 전쟁을 누군가를 위해 누가 염려를).
akaltar

@akaltar 공개 소스입니까? 그들이 어떻게하는지보고 싶습니다.
Horstinator

@Horstinator 너무 나쁘지만, 아는 한 그렇지 않습니다. 포럼에서 제작자에게 요청할 수 있습니다 (작은 프로젝트이므로 누군가 응답해야 함).
akaltar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.