임의의 스폰 포인트를 공정하게 만드시겠습니까?


22

모든 플레이어가 인접한 플레이어와 같은 거리에서 임의의 위치에 스폰되면, 플레이어 수는 스폰 위치가 불공평 할 가능성에 비례합니다. 플레이어가 맵 중앙에 더 가까이 스폰 될수록 맵 가장자리에있는 플레이어와 비교할 때 다른 플레이어를 만나고 생존 할 가능성이 줄어 듭니다. 모든 플레이어가 동시에 생성된다고 가정합니다.

스폰 포인트를 형성하거나 맵을 변경하는 방법이 있습니까?

  1. 모든 플레이어는 인접한 적의 수가 제한되어 있습니다.
  2. 모든 플레이어는 인접한 적을 만날 확률이 동일합니다.
  3. 맵 크기는 플레이어 수에 비례하여 증가하지 않아도됩니다.
  4. 이러한 제한은 임의의 통과 할 수없는 공간에는 적용되지 않습니다.

대답은 완벽 할 필요는 없으며 대안보다 분명히 좋습니다. 상자 밖으로 생각 환영.


10
서클에 스폰?
Zibelas

1
@Zibelas 전통적인 접근 방식이지만 요구 사항 3을 위반하며 많은 플레이어와 함께 거대한지도와 빈 내부를 만듭니다.
부적절한 코드

4
게임 유형에 따라 다릅니다. (2D / 3D, respawn / last man standing, etc) 완벽한 스폰은이 경우 볼 모양 세계에서만 가능합니다 (더 많은 플레이어, 더 가까운 스폰이지만 모두 같은 거리를 보장 할 수 있습니다). 고정 경계선이있는 2D 세계에서는 경계선을 생성 할 장소가 없기 때문에 경계선이 적은 플레이어가 항상 있습니다. 3D 게임 인 경우 여러 레이어를 가질 수 있습니다.
Zibelas

1
나는 당신이 어떤 종류의 게임을 만들고 있는지 아는 것이 도움이 될 것이라고 생각합니다. 일종의 전쟁 게임처럼 들리지만 세부 사항은 무엇입니까? 저격수인가요? 모든 무기로 시작합니까, 아니면 물건을 탐색하고 찾아야합니까? 승리 조건은 무엇입니까? 경기는 얼마나 오래 지속됩니까?
RothX

3
완전한 대답은 아니지만 모든 사람들이 "공정하고 균형 잡힌 산란"을 시도하고 있다고 생각합니다. 뛰어난 PUBG (및 다른 Battle Royale) 스폰을 살펴보십시오. 플레이어는 원하는 거의 모든 곳에서 "스폰"(웰, 점프 및 랜드 ...) 할 수 있습니다. Hight risk hight 보상, 그러나 플레이어가 원하는 경우에만. 당신은 숲 어딘가에 착륙 할 수 있습니다. 당신은 자신을 준비 할 시간이 있습니다. 무작위가 아니며 플레이어가 선택합니다.
Jan 'splite'K.

답변:


27

플레이어가 자신의 시작 위치를 스스로 선택하게하십시오.

게임 시작시, 맵 중앙에있는 모든 플레이어를 스폰하지만 다른 플레이어에게 해를 끼치 지 않습니다. 그런 다음 떼를 지어 서로를 끌어 들이기위한 수단을 확보해야합니다 (기지 건설, 무기 픽업, 자원 수집 등).

절차 상 또는 수제 맵 사용 여부에 따라 좋은 출발 위치를 조기에 찾는 데 약간의 운이나지도 지식이 있습니다. 그러나 언제 어디서 해결해야하는지가 대부분 전략적 결정입니다. 일찍 배포하면 시간이 많이 걸리지 만 위험한 위치에있게됩니다. 기지를 신중하게 고르면 게임 초반에 뒤떨어 지지만 게임 중반과 후반에 결정적인 이점이 될 수 있습니다.


3
@Shashimee 사실 저는이 방법을 Anno 1602에서 처음 본 적이 있다고 생각합니다. 또한 초기 C & C 게임 중 일부는 멀티 플레이어 게임 옵션 (선택 사항)으로 사용하고 있다고 생각합니다.
Philipp

3
@ 15 세 정도의 64 세를위한 상품을위한 @Philipp MULE : 당신도 당신의 입장을 고르도록 해주세요 :)
Zibelas

그런 다음 스폰 지점을 따르는 문제가 발생합니다. 물론 이것은 원하는 게임 방식 일 수도 있지만, 매우 실망스럽고 게임에서 원하는 것이 아닙니다. 캐릭터가 보이지 않고 플레이어 충돌없이 스폰되도록하고 게임을 시작하기 전에베이스를 찾는 것이 좋습니다.
Dent7777

이것이 Warcraft 3의 "Vampirism"및 "Tree Tag"커스텀 게임 모드 라인에서 사용 된 방법입니다. 모든 플레이어가 동맹 (적어도 초기에)에 속하고 반대 팀이 나중에 해제되기 때문에 가장 효과적입니다.
Kroltan

이것은 또한 불공평하다고 느끼는 이점이 있습니다. 무작위로 신속하게 산란하거나 불이익을받는다면 꽤 공정하더라도 불공평 할 수 있습니다. 스폰 지점을 선택하는 것은 그 자체로 기술이되고 더 잘 얻을 수있는 것이므로 죽음이나 페널티를 스폰 할 위치를 선택하는 경우 불공정하고 처벌이 덜 보일 수 있습니다. 즉, 스폰 지점을 선택하는 것이 정말 어렵다면 숙련 된 플레이어가 더 잘 할 수 있기 때문에 불공평 할 수 있습니다.
Anubian Noob

9

요구 사항 이해

  1. 모든 플레이어는 인접한 적의 수가 제한되어 있습니다.

먼저, 게임의 특정 지점에서 플레이어의 현재 위치가 아니라 플레이어의 스폰 지점에 대해 이야기합니다. 그냥 그 길에서 벗어나

Adjacent는 그래프에 대해 이야기 할 때 잘 정의되어 있습니다. 이제 "그래프"에서지도의 탐색 성을 나타내는지도를 생각할 수 있습니다.

노드가 최대 하나의 스폰 지점을 가질 수 있다면, "인접한"지점에 대해 말하는 것이 합리적입니다. 참고 : 노드가 최대 하나의 스폰 지점을 갖도록 제한하지는 않습니다.

그래프를 만들려면 벽, 다리, 사다리, 순간 이동 지점 등을 고려하거나 비행 할 수있는 플레이어가있을 경우 비행 공간을 고려해야합니다. 각 노드는 통과 가능한 위치를 나타냅니다. 각 연결은 가능한 움직임을 나타냅니다.

참고 : 노드의 크기와 모양을 알고 실제로 인접한 노드와 작업하십시오. 노드를 요점으로 생각하지 마십시오. 길이가 긴 연결을 고려하지 마십시오. 또한 볼록한 노드를 사용하십시오.

그래프는 사전 컴파일 될 수 있습니다 (맵은 디자이너가 작성했습니다). 그렇지 않으면 맵이 무작위로 생성되는 경우 즉석에서 만들 수 있습니다.

  1. 모든 플레이어는 인접한 적을 만날 확률이 동일합니다.

나는 적들이 다른 플레이어라고 가정합니다. 다시 말하지만, 그 길에서 벗어나는 것입니다.

각 플레이어가 무작위로 걷는다고 가정하면, 주어진 지점에서 장애물이없는 평평한 공간에서 플레이어를 찾을 확률은 스폰 지점까지의 거리 (가우시안) 기능에 의해 주어집니다. 기능".

그래프에서 작업하고 있으므로 그래프의 값에 주석을 달 것입니다.

  1. 맵 크기는 플레이어 수에 비례하여 증가하지 않아도됩니다.

노드 당 하나의 스폰 포인트를 갖는 데 제약이 있다면, 더 많은 플레이어를 추가하려면 더 작은 노드가 필요합니다. 플레이어 수를 알기 전에 그래프를 결정하면 특정 게임의 노드를 세분화해야 할 수도 있습니다.

  1. 이러한 제한은 임의의 통과 할 수없는 공간에는 적용되지 않습니다.

문제를 해결하기 위해 장애물을 추가하지 않습니다. Au contraire , 나는 장애물 주위에 일해야합니다. 그들이 거기에 없다면 구현이 더 간단 할 것입니다.


해결책

우리는 모든 스폰 지점에서 다른 플레이어를 만날 확률이 동일하도록 N 스폰 지점을 배치하려고합니다.

기회의 평균과 기회의 차이의 합으로 오차를 측정 할 수 있습니다. 우리는 그것을 최소화하려고 노력하고 있습니다 (사실, 우리는 그것을 0으로 만들고 싶습니다).

그러기 위해서는 그래프의 각 노드에서 플레이어를 만날 가능성을 알아야합니다.

그 기회를 계산하려면 0부터 시작하십시오. 주어진 노드에서 플레이어를 찾을 확률은 플레이어가 없을 때 0입니다. 그런 다음 각 스폰 지점에 대해 현재 스폰 지점에 대한 함수 값을 주석이 추가 된 기회에 추가하여 그래프를 이동하십시오.

참고 1 : 스폰 지점을 추가하거나 이동하면 모든 맵에서 플레이어를 만날 확률에 영향을줍니다.

참고 2 : 각 스폰 지점이 기회에 얼마나 영향을 미치는지 추적하면 일이 쉬워집니다.

참고 3 : 노드에는 크기가 있으므로 노드 크기에 따라 오류 = 0에 얼마나 근접 할 수 있습니까? 값 범위 (노드 내에서 스폰 지점의 특정 위치에 따라 최소 및 최대 기회)를 사용하여보다 정확하게 작업 할 수 있습니다.

스폰 지점을 무작위로 배치 한 다음, 오류가 작아지는 방식으로 이동을 시작하십시오 (가능한 움직임을 고려하고 오류가 줄어드는 경우 유지하십시오). 더 이상 개선 할 수 없을 때까지 계속하십시오 (개선없이 너무 많은 반복 또는 오류가 0 임).

참고 4 : 스폰 지점을 이동할 때 플레이어를 만날 확률 (이동할 스폰 지점 제외)을 사용하여 스폰 지점에 대한 새로운 위치를 무작위로 선택하여 플레이어와 더 가까이있을 수 있습니다. 평균이 더 가능성이 높습니다. 스폰 지점을 이동하면 평균에 영향을 미칩니다.

예상되는 동작은 너무 가까이있는 스폰 지점이 서로 떨어져 움직이고 너무 멀리 떨어진 스폰 지점이 더 가까이 오는 것입니다. 그들이 평형에 도달 할 때까지.

주어진 반복에서 노드에 여러 개의 스폰 지점이있는 경우 (이것은 같지 않을 것 같지만 충분히 큰 노드가있는 경우 가능할 수 있음) 노드를 분할하고 계속 해결하십시오. 노드의 모든 분할이 유효합니다.


위의 솔루션은 오류 = 0에 접근하지만 0에 도달한다고 보장하지는 않습니다. 로컬 최소값에 도달 할 때까지 실행할 수 있습니다 ... 이론적으로, 노드를 정확히 0으로 만들기 위해 분할 할 수 있습니다 ... 그러나 스폰 지점 좌표를 조정하는 것과 같습니다!

노드 내에서 스폰 지점을 이동하려면 시뮬레이션 어닐링을 시도하십시오. 솔직히 말해서 그러한 수준의 세부 사항을 귀찮게하는 것은 가치가 없을 것입니다.


장애물이없는 평평한지도의 결과가 균일하게 분포 된 점이 아님을 분명히하고 싶습니다. 대신 맵에 가장자리가있는 경우 (즉, 둘러싸 지 않는 경우) 가장자리에 더 가까운 스폰 지점이있을 것입니다. 이는 중앙의 점이 더 많은 방향에서 도달 할 수 있기 때문에 발생할 수있는 가능성이 높아지기 때문입니다 거기에 다른 플레이어. 따라서 보정하기 위해 중앙 부근에서 더 멀리 떨어져 있습니다.


6

어떤 종류의 게임을 만들고 싶은지와 얼마나 빨리 진행되는지에 달려 있습니다. 세계와 같은 구체 (예 : 행성 소멸)에서 균일 한 간격으로 완벽한 분포가 가능합니다. 그러나 이것이 게임에서 공정한 선택입니까? 모든 사람이 같은 거리에 스폰하더라도 일부 스폰은 여전히 ​​더 유리합니다.

  • 거리가 멀고 리소스가 많을수록 더 가까이 있고 더 나은 무기
  • 더 나은 커버 / 더 숨겨진 / 개요
  • 플레이어의 '흐름', 일부 장소는 다른 장소보다 더 매력적입니다 (해당 집의 위치에 관계없이 한 곳에서 단일 집이있는 전체 삼림지도를 생각하고 사람들이 체크 아웃 할 가능성이 높음)

지도가 고정 또는 절차 적으로 생성 된지도입니까? 그리고 2 인용지도에서 8 명의 사람들과 에이지 오브 엠파이어를 플레이하려했던 적이 있습니까? 맵 크기를 조정하지 않으면 플레이어를 무제한으로 확장 할 수 없습니다. 불공정 한 시작 배치조차도 게임에서 많은 역 동성을 가져올 수 있습니다 (웜 시리즈 참조). 다른 플레이어와의 한 라운드 동맹이 지속되거나 첫 라운드 이후에 가장 많이 살아남은 웜이 아닌 한, 큰 무리에서 바로 산란했다면 아무도 불평하지 않았습니다.

(귀하의 게임 유형에 대해 더 많이 알고 있다면 몇 가지 예를 더 추가하겠습니다.)


5

지금까지 제안되지 않은 것을 찾기 :지도의 중심이 없도록하십시오. 이것이 의미하는 바는지도 가장자리가 반대편에 결합한다는 것입니다. 이 작업에는 많은 프로그래밍 작업이 필요하지만 실제로 한 방향으로 걸 으면 레벨이 무한정 반복 될 수 있습니다. 이것은 센터가없고, 임의의 스폰 위치는 장단점이 없다는 것을 의미합니다.

정사각형 인 평면지도를 만들고 각 모서리를 반대쪽 모서리의 사본에 연결하면됩니다. 플레이어가 옆으로 걸어 갈 때 플레이어의 지식없이 반대편 가장자리로 순간 이동됩니다. 물론 이론적으로는 다른 쪽에서는 플레이어를 볼 수 없습니다. 이 문제를 해결하려면 경계의 다른 쪽에서 걸어 다니는 플레이어의 복제본을 만들어서 볼 수있게하고, 그들을 향해 달려 가면 텔레포트하고 실제 플레이어는 더미가 있던 곳에 서 있습니다.

또는 전체 맵이 구체 외부에 존재할 수 있지만, 좌표 생성이 어려워집니다.


2
또는 중심에서 잘 사냥하거나 사냥 할 수 있고 전리품을 더 쉽게 찾을 수있는지도를 만들 수 있지만, 이와 같이 사냥을하는 것이 훨씬 더 중요합니다. 플레이어가 다른 사용자를 찾고 전리품을 찾을 가능성이 적으므로 더 많은 전리품을 원하면 중앙으로 가야하고 더 오래 생존하려면 원래 위치에 있어야합니다. 따라서 기본적으로 랜덤 스폰의 단점이 유리합니다.
Ave

4

가능한 해결책은 다음과 같습니다.

  • 원의 둘레에 무작위로 생성
  • 반경에 무작위로 스폰 (중앙을 닫으려면 스폰하지 않음)
  • 임의의 스폰 시간 구성 요소 추가

스폰 메커니즘의 다이어그램


두 번째 이미지는 훌륭한 옵션입니다. 플레이어가 다른 모든 플레이어의 위치를 ​​정확히 아는 첫 번째 옵션의 문제를 해결합니다.
Zanon

@Zanon은 첫 번째 이미지 플레이어는 누군가가 오기 전에 떠날 수 있습니다. 두 번째는 불공정 한 산란을 일으키며 일부는 다른 곳에서 가깝습니다. 어쩌면 같은 2 원과 작은 더 큰 하나의 차이가있는 곳에는 그들이 어디에 산란, 그래서 두 번째 이미지처럼 미만의 중심에있다.
Ave

1

기본적으로 이것이 그래프 분포 문제라고 생각합니다. 데스 매치 상황을 가정하면 (다른 플레이어는 모두 적) 맵을 상호 연결된 그래프로 모델링하고 그래프에서 각 플레이어와 가장 가까운 노드를 추적해야합니다. 모든 노드가 스폰 지점 일 필요는 없지만 스폰 지점 간의 거리를 모델링하려면 복잡한 그래프가 필요합니다. 스폰 시간에 그래프를 반복하고 근처 노드에 플레이어가 있는지 여부에 따라 각 스폰 가능 노드의 점수를 매 깁니다.

이상적인 노드는 다음과 같습니다.

  • 현재 플레이어가 없습니다
  • 근처의 노드에서 플레이어가 0 명 이상 (일부 링크 수가 적음)

그래프가 정규화되었고 각 노드 주위에 동심원 영역을 그리고 있다고 상상해보십시오. 내부 영역에 이미 플레이어가있는 경우 노드에 불이익을주고, 원거리에 플레이어가있는 노드에 보상하십시오. 당신은 다른 플레이어들이 빠르게 관심을 찾을 수있을 정도로 가까이에 스폰을 장려하고 싶지만, 그들이 베어링을 얻을 기회를 갖기 전에 뛰지 않을 정도로 가까이 있지는 않습니다.

당신은 것이다 플레이어의 수가 증가함에 따라 맵의 크기를 늘려야하지만 k필요 하나 또는 그 이상을 할 수 없습니다. 최악의 경우는 그래프의 모든 노드에 최소한 한 명의 플레이어가 있다는 것입니다.이 경우 사용할 노드가 없으며,이 경우에 어려움을 겪고 플레이어가 바로 위에 착륙합니다. 스코어링 알고리즘은 노드에 가중치를 부여하여 다른 플레이어가 가장 적은 노드에 스폰됩니다.

지도, 경로, 모든 초크 포인트 및 실제 거리가 아닌 노드 포인트 간의 유효 거리에 대한 지식을 바탕으로 맵 그래프를 신중하게 작성해야합니다 . 마찬가지로 지형이 까다로워지기 때문에 측정 시간과 같은 거리를 사용하지 않고 노드 간을 이동합니다. 또한 개방성 대 덮개를 고려해야합니다. 두 개의 노드는 물리적으로 멀리 떨어져 있지만 매우 개방되어 있기 때문에 각 노드에서 플레이어를 스폰한다는 것은 마치 서로 바로 옆에 스폰 한 것처럼 똑같이 취약하다는 것을 의미 할 수 있습니다.

개선 :

  • 플레이어가 최근에 해당 노드에서 스폰했을 경우 점수를 매기려면 일시적인 페널티를 추가하십시오.
  • 더 많은 변화를 얻으려면 범위 내에서 임의성을 추가하십시오 (예 : 가장 좋은 3 개의 노드를 선택한 다음 동일한 확률로 무작위로 선택).
  • 아무도 스폰되지 않은 경우 맵 중앙 (또는 가장 흥미로운 포인트)에 초기 가중치를 추가하여 다른 플레이어가 없기 때문에 모든 노드의 점수가 0 인 경우에도 알려진 위치에 스폰합니다.

0

일부 다른 사람들은 이미 요구 사항의 한계에 대해 논의했으며 (과밀 한 위치를 피하기 위해 어느 시점에서 맵을 확장해야하는 등) 궁극적으로 "완벽한"배치 알고리즘이 없을 가능성이 높습니다. "완벽한"알고리즘이 없을 때는 항상 휴리스틱을 찾습니다. 매우 복잡한 검색 공간과 함께 직간접 적으로 서로 상충되는 몇 가지 기준이 있습니다. 최적의 솔루션을 찾는 것은 실현 가능하지 않거나 실용적이지 않지만 약간의 조정만으로 통계적 접근 방식이 대부분의 시간 동안 매우 잘 수행 될 수 있습니다.

세 번째 및 네 번째 기준을 해결 : "지도를 확장 할 필요가 없습니다."

처음에는 노드가 너무 많을 것입니다 (예 : 경로 찾기를위한 탐색 메쉬만큼 밀도가 높음). 이것은 다른 플레이어와의 거리를 계산하는 데 비용이 많이 들지만 (직접 인접한 노드는 아님), 이것은 라운드 당 두 번 이상 일어날 프로세스는 아닙니다 (제 생각). 이것의 보너스는 대부분의 작업에 미리 롤링 된 탐색 라이브러리를 사용할 수 있다는 것입니다. 또한 이것은 유클리드 거리가없는 공정한 방식으로 장애물 주위의 통과를 존중합니다 (미로의 플레이어는 열린 필드보다 서로 더 가까이 배치 될 수 있음)

원하는 스폰 특성에 대한 휴리스틱 계산 :

모든 플레이어를 무작위로 배치 한 후 기준 (다른 플레이어로부터의 거리, 스폰 거리 등)을 기준으로 주변 노드의 성능을 계산합니다. 값의 가중치를 조정할 수 있으며 성능을 정확하게 튜닝하기 위해 비선형으로 조작 할 수 있습니다 위생 처리 된 이상적인 경우 (장애물이없는 평평한 직사각형 그리드)를 원하고 월드를 다시 추가 할 때 성능이 비슷해야합니다. 거기서부터 검색 할 노드 수, 시작점 이동 임계 값을 결정할 수 있습니다. 스폰을 완료하고 게임을 시작하기 전에 수행 할 반복 횟수입니다.


0

경기장은 위상 원환 체 (즉, 사각형 반대 측에서 입력 수단 "아웃 오브 바운드"가는 곳)의 경우,이 좋은 답변이 될 가능성이 높습니다 : 플레이어 j에서 스폰 x = (pjW/N) mod W, y = (qjH/N) mod H, W,H사각형의 크기이다가, N은 IS 플레이어의 수, 그리고 p,q결정될 정수들; 그것들은 분명하고 (아마도) 비교적 소수이며, 그리 멀지 않습니다 sqrt(N). 스폰 지점은 비스듬한 '벽지'패턴을 형성합니다.

플레이어가 게임을 시작할 때만 스폰한다고 가정합니다. 나중에 생성되면 다른 플레이어가 정의한 보로 노이 다이어그램의 정점에서 플레이어의 현재 위치에서 가능한 한 멀리 배치하고 싶을 것입니다.


0

어때요?

각 플레이어는 비 발포 상자 (또는 원) 로 둘러싸여 있습니다.

마찬가지로 모든 플레이어 주위에 스폰되는 특정 크기의 사각형이 있습니다. 다른 플레이어는 해당 사각형 내에서 스폰 할 수 없습니다.

이 사각형은 스폰에만 영향을 미치며 게임 중 다른 움직임에는 영향을주지 않습니다.

이것은 초기 전용 스폰 또는 연속 스폰과 함께 작동합니다.

(Dots는 플레이어를 나타내고 녹색은 새로운 플레이어가 나타날 수있는 영역을 나타냅니다)

맵 크기는 플레이어 수에 비례하여 증가하지 않아도됩니다

이를 해결하기 위해 다음 두 가지 중 하나를 수행 할 수 있습니다.

  • 플레이어 수에 따라 비 발포 상자의 크기를 줄입니다.
  • 각 상자에 최대 X 명의 적 플레이어를 스폰 할 수 있습니다.
    • 이 숫자는 갈수록 증가 할 수 있습니다 (0에서 시작).
    • 변형 1 : 작은 생성 없음 상자와 더 큰 제한 생성 상자가 있습니다.
    • 변형 2 : 새로운 스폰이이 플레이어와 얼마나 가까운 지에 따른 가중치 확률 (상자 안에있는 경우)-효율적으로 구현하기가 어려울 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.