네트워크 지연 보상 처리를 피하기 위해 게임 메커니즘의 요령?


20

네트워크 지연 보상을 구현하는 것이 어렵습니다. 피하는 방법은 무엇입니까?

지연이 중요하지 않거나 게임의 자연스러운 부분으로 인식되는 방식으로 트릭을 사용하고 게임 메커니즘을 구축하는 것이 가능할까요?

그러한 기술은 무엇이며 그러한 기술을 사용하는 기존 게임 (MMORPG, 전략 등)이 있습니까?

최신 정보:

턴 기반 게임에는 지연 보상이 필요하지 않지만 실시간에 대한 접근 방식을 보는 것이 흥미로울 것입니다.

지연 보상을 피해야하는 주된 이유는 단순성입니다.


1
이 링크는 도움이 될 수 있습니다. developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
John McDonald

6
대기 시간이 중요하지 않은 게임을 구축하려는 경우; 몇 초가 허용되는 곳에 기반을 둔 무언가를 만드는 것을 고려하십시오.
Vaughan Hilts

3
그 밸브 링크는 네트워크 지연 보상이 구현되는 상당히 복잡한 방법에 관한 것이므로 질문과는 반대입니다.
Kylotan

@JohnMcDonald Yep, Valve의 기사에 대해 알고 있으며 언급 한 바와 같이 내가 묻는 것과 반대입니다. :).
Alexey Petrushin

GGPO도 살펴보고 싶을 것입니다 : ggpo.net
Decency

답변:


16

클라이언트가 선택한 동작이 등록되었음을 즉시 알리기 위해 일종의 피드백을 구현하는 것이 일반적입니다.

  • 인터페이스 사운드 (예 : 버튼 클릭)
  • 월드 내 사운드 (예 : "한 번에 사령관"이라고 말하는 캐릭터)
  • 애니메이션 (예 : 칼 스윙 시작)

이는 정보가 서버로 이동하는 동안 발생할 수 있으므로 플레이어는 아직 자신의 동작이 시작되지 않았다는 것을 인식하지 못합니다. 서버가 즉시 응답하고 조치가 곧 시작되는 한 플레이어는 지연을 알지 못할 수 있습니다.

이러한 트릭은 플레이어 입력이 드물게 발생하는 게임에서 작동하므로 입력이 적용되기를 기다리는 데 걸리는 시간은 총 재생 시간의 상대적으로 적은 비율입니다. 따라서 플레이어가 적은 입력을 할 수 있도록 게임을 구성하는 방법을 찾고 싶을 것입니다. 이것은 아마도 플레이어 액션을보다 추상적으로 만들고 게임이 낮은 수준의 동작을 구현하도록하는 것을 의미합니다. 예 :

  • 조향 역학을 경로 역학으로 대체
  • 조준 역학을 목표 선택 역학으로 대체
  • 보다 전략적 또는 전략적 계획으로 라운드 전투 전투 지시를 대체
  • 이산 / 턴 기반 시스템으로 실시간 / 연속 게임 플레이 대체

1
고마워요, 당신은 내가 묻는 것을 공식화합니다-플레이어로부터 가끔씩 지연되는 입력을 사용하십시오. 그것을 사용하는 실제 게임을 보는 것이 흥미로울 것입니다.
Alexey Petrushin

2
수백 개의 게임이 이런 식으로 어떤 식 으로든 사용되지만, 유리한 부작용으로 지연을 숨기고 다른 이유로 수행되었을 가능성이 큽니다.
Kylotan 2013

7

임의의 생각 :

  1. 컨닝 : 로켓 사용 . 로켓은 반경에서 폭발하여 이상한 것을 숨 깁니다.
  2. 속임수 : 결과를 미리 결정 하고 조건이 시각적으로 발생하도록합니다.
  3. 속임수 : 공격에 시간이 걸리고 공격 + 애니메이션 + 결과 불연속에서 대기 시간 숨기기
  4. 속임수 : 네트워킹에서 로컬 피드백 연결 끊기
  5. 치트 : 모든 이상한 점을 다루는 많은 VFX 또는 스크린 활동.
  6. 계속하기 전에 해결이 필요한 조치 반응 설계 를 사용하십시오.

예, 많이 속이십시오.


4

대답은 매우 간단합니다. 시간이 중요한 섹션이없는 게임을 빌드하십시오. 내가 취하는 특정 이유 때문에 이러한 유형의 보간을 구현하지 않으려 고합니다. 즉, 복잡하고 빠른 게임 플레이에 대해 걱정하지 않아도됩니다. 이것은 전략 게임 인 문명을 포함한 많은 게임에 완벽하게 적용됩니다. 그러나 가변 타이밍으로 네트워크를 통해 많은 데이터를 전달해야하는 REAL TIME 전략 게임에서는 이것이 허용되지 않습니다 . 대기 시간이 매우 긴 네트워크를 중심으로 게임을 디자인하려면 다음을 고려하십시오.

  1. 턴 기반 게임을 빌드하십시오. 이러한 유형의 게임에서는 상태의 실시간 입력이 필요하지 않으며 다른 플레이어는 자신의 차례가되면 클라이언트에 게임 상태를 푸시 할 수 있습니다. 이렇게하면 네트워크의 압력이 줄어들고 원하는 경우 몇 초 이상 지연 될 수 있습니다. 문명 은 매우 인기있는 전략 기반의 턴 기반 게임입니다.
  2. 다른 플레이어의 결정은 최소한으로 유지하십시오. 게임이 전략적이고 턴제로 플레이 할 수 없다면 지연된 패킷의 영향을 줄이십시오. 클라이언트가 대부분의 시뮬레이션을 수행 할 수 있습니까? 예를 들어 전략 게임은 한동안 단독으로 플레이 한 후 16 분이 지나면 다른 플레이어 (아마도 x 간격마다 부대를 보내고 y 간격마다보고하는 전투 게임)에 대해 시뮬레이트됩니다.

이것이 조금이라도 도움이되기를 바랍니다. 정확한 게임 아이디어를 모른 채 어렵습니다. 이러한 패턴을 중심으로 게임을 만들고자하는 이유가 있다고 가정합니다 (단순성, 대역폭 절약, 네트워크 복잡성 감소).


4

지연을 "현실주의"를위한 게임 플레이의 일부로 만들 수도 있습니다. 플레이어가 일부 로봇을 먼 거리에서 제어해야한다고 가정하면 지연을 최소 500ms 또는 1 초로 설정할 수 있습니다 (동적 래그 패딩 시스템을 구현해야 함).


이것은 좋은 비틀기입니다
o0 '.

0

단순히 플레이어의 행동을 숨기는 것도 좋은 방법입니다. 많은 FPS 게임이이 작업을 정확하게 수행합니다. 그들은 총알의 대부분의 시각을 보여주지 않고 소리 만 재생되며 플레이어에게 피해의 형태로 결과를 얻습니다.

나는 고정밀 무기 (스나이퍼 등)가 매우 명확한 시각 효과를 가진 일부 FPS 게임을 해왔으며 실제로 다른 플레이어가 당신을 뒤쫓았다는 것을 알 수 있었지만 지연 보상으로 인해 사망했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.