임의의 스폰 지점을 공정하게 만드시겠습니까?

inappropriateCode 08/22/2017. 9 answers, 4.496 views
game-design level-design

모든 플레이어가 인접 플레이어로부터 동일한 거리만큼 임의의 위치에 스폰되는 경우, 플레이어의 수는 자신의 스폰 위치가 불공정하다는 가능성에 비례합니다. 근접한 플레이어가 맵의 중심으로 스폰 될수록 맵의 가장자리에있는 플레이어와 비교하여 다른 플레이어와 만날 확률이 높아지고 생존 가능성은 낮아집니다. 모든 플레이어가 동시에 스폰되었다고 가정합니다.

스폰 지점을 형성하거나지도를 변경하는 방법이 있나요?

  1. 모든 플레이어는 제한된 수의 인접한 적을 소유합니다.
  2. 모든 플레이어는 인접한 적과 마주 칠 기회가 같습니다.
  3. 지도 크기는 플레이어 수에 비례하지 않아도됩니다.
  4. 이러한 제한 사항은 임의로 통행 할 수없는 공백으로 시행되지 않습니다.

대답은 완벽 할 필요는 없으며, 대안보다는 분명히 낫다. 밖에서 생각하는 것을 환영합니다.

5 Comments
10 Zibelas 07/28/2017
서클에서 스폰합니까?
1 inappropriateCode 07/28/2017
@Zibelas 전통적 접근 방식이지만 요구 사항 3을 위반하고 많은 플레이어가 있으면 거대한 맵과 빈 공간을 만듭니다.
4 Zibelas 07/28/2017
게임의 종류에 따라 다릅니다. (2D / 3D, respawn / last man standing 등) 완벽한 경우는 공 모양의 세계에서만 가능합니다 (더 많은 플레이어, 가까운 스폰하지만 모든 거리가 동일하다는 것을 보장 할 수 있습니다). 고정 된 보더가있는 2D 세계에서는 플레이어를 스폰 할 장소가 없기 때문에 항상 경계선을 좁히는 경우가 있습니다. 3D 게임 인 경우 여러 레이어를 사용할 수 있습니다.
1 RothX 07/28/2017
나는 그것이 당신이 어떤 종류의 게임을하고 있는지를 아는 데 도움이 될 것이라고 생각합니다. 그것은 일종의 전쟁 게임처럼 들리지만, 세부 사항은 무엇입니까? 사수인가? 당신은 모든 무기로 시작합니까, 아니면 탐험하고 물건을 찾아야합니까? 승리 조건은 무엇입니까? 경기가 얼마나 오래 지속될 것으로 예상됩니까?
3 Jan 'splite' K. 07/28/2017
완전한 대답은 아니지만, 모두가 "공정하고 균형 잡힌"스폰지를 구하려고 노력하고 있다고 생각합니다. 재미는 없습니다. 훌륭한 PUBG (및 다른 Battle Royale) 산란을보세요 : 플레이어는 거의 어디에서나 원하는대로 "산란"할 수 있습니다. 만약 당신이 갈등과 드라마를 원한다면, 대부분의 플레이어가 착륙 / 스폰하는 장소를 선택하십시오. Hight 위험 hight 보상,하지만 플레이어가 그것을 원한다면. 당신은 숲속 어딘가에 착륙 할 수 있습니다. 자신을 준비 할 시간이 있습니다 - 저 위험 낮은 보상이지만 일부 플레이어는 그것을 좋아할 것입니다 (예를 들어, 나처럼).). 그것의 무작위, 그것 선수 선택에 의하여 그것.

9 Answers


Philipp 07/28/2017.

플레이어가 시작 위치를 직접 선택하게하십시오.

게임을 시작할 때 모든 플레이어를 맵 중앙에 스폰하지만 다른 플레이어에게 해를 끼칠 수는 없습니다. 그런 다음 그들은 모여서 서로를 끌어 들이고 (기지를 건설하고, 무기를 들고, 자원을 모으는 등의) 수단을 습득해야합니다.

절차 나 수제지도를 사용하는지에 따라 일찍 좋은 ​​위치를 찾는 데는 운이나지도 지식이 필요합니다. 그러나 언제 어디에서 해결할지는 전략적 결정입니다. 일찍 배치하면 시간 이점을 얻을 수 있지만 위험한 위치에 놓이게됩니다. 기본 게임을 신중하게 선택하면 초기 게임에서 배후에 빠지게되지만 중반 및 후반 게임에서는 결정적인 이점이 될 수 있습니다.

5 comments
14 Shashimee 07/28/2017
헝거 게임 1 영화 산란 시스템 사용에 +1.
3 Philipp 07/28/2017
@Shashimee 실제로 나는 Anno 1602에서이 방법을 처음으로 본 것으로 믿습니다. 나는 초기 C & C 게임 중 일부가 멀티 플레이어 게임 옵션 (선택 사항)을 가지고 있다고 믿습니다.
3 Zibelas 07/28/2017
코모도어에 대한 @Philipp MULE은 약 15 세 이상이며 당신도 당신의 위치를 ​​선택하자 :)
Dent7777 07/28/2017
그러면 당신은 당신이 당신의 스폰 지점을 따라 가게되는 이슈를 실행하게됩니다. 이것은 물론 게임 메카닉을 원할 수도 있지만 게임에 필요한 결정적인 것이 아니라 극도로 좌절감을 줄 수도 있습니다. 좋은 아이디어는 등장 인물을 보이지 않게하고 플레이어가 충돌하지 않도록하고 게임을 시작하기 전에 그 기반을 찾아내는 것입니다.
Kroltan 07/28/2017
그것이 워크래프트 3의 커스텀 게임 모드의 "Vampirism"과 "Tree Tag"라인에서 사용되는 방법입니다. 모든 플레이어가 동맹을 맺고 (적어도 처음에는) 상대방 팀이 나중에 릴리스되기 때문에 가장 잘 작동합니다.

Theraot 07/28/2017.

요구 사항 이해

  1. 모든 플레이어는 제한된 수의 인접한 적을 소유합니다.

우선, 우리는 게임의 주어진 지점에서 플레이어의 현재 위치가 아니라 플레이어의 스폰 지점에 대해 이야기합니다. Just getting that out of the way.

인접성은 우리가 그래프에 대해 말할 때 잘 정의됩니다. 지도에서 탐색 가능성을 나타내는지도를 생각해 볼 수 있습니다. 지금부터는 "그래프"입니다.

can 노드가 최대 하나의 스폰 지점을 가질 수 있다면 "인접한"말하기가 의미가 있습니다. 참고 : 노드가 하나의 단일 스폰 지점을 갖도록 제한하지 않습니다. 이유는 나중에 설명합니다.

그래프를 만들려면 벽, 다리, 사다리, 순간 이동 지점 등을 고려해야하며, 날 수있는 플레이어가있을 수있는 비행 공간도 고려해야합니다. 각 노드는 이동 가능한 위치를 나타냅니다. 각 연결은 가능한 동작을 나타냅니다.

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

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

  1. 모든 플레이어는 인접한 적과 마주 칠 기회가 같습니다.

나는 적들이 다른 플레이어라고 생각할 것이다. Again, just getting that out of the way.

각 플레이어가 무작위 걸음 걸이를한다고 가정 할 때, 주어진 지점에서 플레이어가 장애물이없는 평평한 공간에서 발견 될 확률은 스폰 지점까지 거리의 (가우스) 함수에 의해 주어집니다 - 지금부터 " 기능".

그래프 작업을하고 있기 때문에 대신 그래프에 값을 주석으로 표시합니다.

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

노드 당 하나의 스폰 지점을 갖는 제약이 있다면 플레이어를 더 추가하기 위해 더 작은 노드가 필요할 것입니다. 우리가 얼마나 많은 플레이어를 가질지를 알기 전에 그래프를 결정한다면, 특정 게임을위한 노드를 세분화해야 할 수도 있습니다.

  1. 이러한 제한 사항은 임의로 통행 할 수없는 공백으로 시행되지 않습니다.

문제를 해결하기 위해 장애물을 추가 할 생각은 없습니다. Au contraire , 나는 장애물을 Au contraire 필요가있다. 그들이 없으면 구현이 더 간단해질 것입니다.


해결책

우리는 N 개의 스폰 지점을 배치하여 모든 스폰 지점에서 다른 플레이어와 만날 확률을 같게하려고합니다.

우리는 기회의 평균과의 차이의 합으로 오류의 척도를 얻을 수 있습니다. 우리는 그것을 최소화하려고 노력하고 있습니다. 사실 우리는 그것을 0으로 만들고 싶습니다.

이렇게하려면 그래프의 각 노드에서 플레이어와 마주 칠 기회를 알아야합니다.

그 기회를 계산하려면 0부터 시작하십시오. 주어진 노드에서 플레이어를 찾을 기회가 있기 때문에 플레이어가 없을 때 제로가됩니다. 그리고 나서, 각 스폰 지점에 대해, 그래프를 걸어 어노테이션 된 기회에 현재 스폰 지점에 대한 함수의 값을 추가하십시오.

참고 1 : 스폰 지점을 추가하거나 이동하면 모든지도에서 플레이어와 마주 칠 기회가 달라집니다.

참고 2 : 각 스폰 지점이 기회에 영향을 미치는 정도를 추적하면 더 쉽게 작업 할 수 있습니다.

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

스폰 지점을 무작위로 배치 한 다음 오류가 더 작아 지도록 이동을 시작합니다 (가능한 동작을 고려하고 오류로 인해 오류가 계속 발생하면 오류를 유지하고 그렇지 않으면 되돌릴 수 있음). 더 이상 개선 할 수 없을 때까지 계속 노력하십시오 (개선없이 너무 많은 반복 또는 오류가 0 임).

참고 4 : 스폰 지점을 이동할 때, 스폰 지점을 제외하고 플레이어가 발생할 확률을 사용하여 스폰 지점에 대한 새로운 위치를 무작위로 선택하여 플레이어가 더 가까이에있을 가능성이있는 위치 평균이 더 높습니다. 스폰 지점을 움직이면 평균에 영향을 미칠 것입니다.

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

임의의 반복에서 노드에 여러 개의 스폰 지점이있는 경우 (그렇지 않을 가능성이 있으므로 이동하기 쉽기 때문에 노드가 충분히 크면 가능할 수 있으므로) 노드를 분할하고 계속해서 해결하십시오. 노드의 모든 부분이 유효합니다.


위의 솔루션은 오류 = 0에 접근하지만 0에 도달하지는 않습니다. 이론적으로, 노드를 나눠서 정확히 0으로 만들 수 있습니다 ... 그러나 스폰 지점 좌표를 조정하는 것과 같습니다!

시뮬레이트 된 어닐링을 사용하여 노드 내에서 스폰 지점을 이동하십시오. 솔직히, 그런 수준의 세부 사항으로 귀찮게하는 것은 가치가 없을 것입니다.


장애물이없는 평면지도의 결과가 균일하게 분산 된 점이 아니라는 점을 분명히 밝힙니다. 대신지도에 모서리가있는 경우 (즉, 주변을 감싸지 않는 경우) 모서리에 가까운 스폰 지점이 더 많아집니다. 더 많은 방향에서 중심점에 도달 할 수 있기 때문에 발생 가능성이 커집니다 다른 플레이어들. 따라서, 보상하기 위해 센터 근처에서 더 멀리 포인트합니다.


Zibelas 07/28/2017.

그것은 당신이 만들고자하는 게임의 종류와 얼마나 빨리 진행되는지에 달려 있습니다. 세계와 같은 구체 (예 : 행성 소멸)에서 균등 한 간격으로 분포가 가능합니다. 하지만 게임에서 공정한 선택입니까? 모든 사람들이 동등한 거리에서 산란해도, 일부 산란은 여전히 ​​더 나은 이점을 가질 수 있습니다.

  • 범위가 넓어 지거나 더 많은 무기를 더 가까이에서 사용할 수 있습니다.
  • 더 나은 표지 / 더 숨겨진 / 개요
  • 플레이어의 '흐름', 일부 장소는 다른 것보다 매력적입니다 (한 곳에서 한 집으로 된 전체 포리스트 맵을 생각해보십시오. 집이 어디에 있든 관계없이 사람들이 체크 아웃하는 좋은 기회 임)

귀하의지도는 고정 된 것이 든 절차 적으로 생성 된 것입니까? 그리고 2 인칭지도에서 Age of Empires를 8 명의 사람들과 함께 플레이 해보려 한 적이 있습니까? 지도 크기를 조정하지 않고 플레이어를 무한대로 조정하는 것은 불가능합니다. 부당한 시작 배치조차도 게임에서 많은 역 동성을 발휘할 수 있습니다 (웜 시리즈 참조). 다른 플레이어와의 한 라운드 동맹이 지속되거나 첫 라운드 이후에 가장 살아남은 웜이 없다면, 큰 클러스터에서 바로 스폰하면 아무도 불평하지 않습니다.

(게임의 유형에 대해 더 많이 알고 있다면 몇 가지 예를 추가 할 것입니다.)


Aric Fowler 07/28/2017.

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

정사각형 인 평면 맵을 만들고 반대쪽 모서리의 복사본에 각 모서리를 결합하여이 작업을 수행 할 수 있습니다. 플레이어가 측면에서 걸어 나올 때 플레이어의 지식없이 반대쪽 가장자리로 순간 이동합니다. 물론, 이론적으로 당신은 경계의 다른쪽에있는 선수를 볼 수 없을 것입니다. 이 문제를 해결하려면 경계의 다른 쪽을 돌아 다니며 보일 수 있도록 해당 플레이어의 클론을 만들고, 그 플레이어를 향해 달릴 때 텔레포트하고 실제 플레이어가 더미가있는 곳에 서십시오.

또는지도 전체가 구의 외부에있을 수도 있지만 좌표가 산란하기가 어렵습니다.

1 comments
2 Avery 07/29/2017
또는 중심에있는지도를 만들면 훨씬 쉽게 사냥하거나 사냥을 할 수 있으며 전리품을 더 쉽게 찾을 수 있습니다. 그러나 다시 한 번 이런 사냥을 할 수 있고 비 중심 지역에서는 플레이어가 다른 사용자와 약탈자를 찾을 가능성이 적기 때문에 더 많은 약탈물을 원한다면 센터에 가야하며, 더 오래 살아남 으려면 그대로 있어야합니다. 그래서 기본적으로 랜덤 스폰의 단점을 유리하게 만듭니다.

dnk drone.vs.drones 07/28/2017.

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

  • 원의 둘레에 무작위로 산란합니다.
  • 반지름에 무작위로 산란 (중심을 닫기 위해 산란하지 않음)
  • 임의의 스폰 시간 구성 요소 추가

산란 메커니즘의 다이어그램

2 comments
Zanon 07/28/2017
두 번째 이미지는 훌륭한 옵션입니다. 그것은 플레이어가 다른 모든 플레이어의 위치를 ​​정확히 알고있는 첫 번째 옵션의 문제를 해결합니다.
Avery 07/29/2017
@ Zanon 비록 첫 번째 이미지 플레이어는 누군가가 오기 전에 멀리 이동할 수 있습니다. 두 번째 것은 불공정 한 산란을 일으키고 다른 산란과 가깝게 만듭니다. 어쩌면 2 개의 원이 있고 더 작은 것과 더 큰 것의 차이점은 두 번째 이미지와 비슷하지만 중심에서 덜 산란 부분 일 것입니다.

MrCranky 07/28/2017.

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

이상적인 노드는 다음을가집니다.

  • 현재 플레이어가 없습니다.
  • 근처에있는 노드에 0 명 이상의 플레이어가 있습니다 (몇 개의 링크가 떨어져 있음).

그래프가 정규화되었고 각 노드 주위에 동심원 영역을 그렸다고 가정 해보십시오. 안쪽 지역에 이미 플레이어가있는 경우 노드에 불이익을 주며 적기에 플레이어가있는 노드에게 보너스를줍니다. 당신은 다른 플레이어에게 충분히 가까이에서 산란을 장려하고 싶지만 빨리 관심을 가질 수는 있지만, 그들이 베어링을 얻을 수있는 기회를 갖기 전에 뛰어 들지는 않습니다.

플레이어 수가 늘어남에 따라 맵 크기를 늘려야하지만, k 는 1 이상일 필요는 없습니다. 최악의 경우는 여전히 그래프의 모든 노드에 적어도 하나의 플레이어가있는 것입니다.이 경우 사용하기 좋은 노드가 없기 때문에 플레이어는 해당 케이스에 시달리고 플레이어가 자신이 다른 사람의 위에 바로 땅. 스코어링 알고리즘은 노드에 가중치를 부여하여 다른 플레이어가 가장 적은 노드에 스폰하도록합니다.

맵 그래프, 경로, 임의의 초 점 및 actual 거리가 아닌 노드 점 사이의 effective 거리를 알고 있으면지도 그래프를 신중하게 작성해야합니다. 에서처럼, 측정 된 시간 같은 것을 거리보다는 노드 사이를 가로 질러 사용하여 더 어려운 지형을 설명하십시오. 또한 개방성 대 커버를 고려해야합니다. 두 개의 노드가 물리적으로 멀리 떨어져있을 수도 있지만 매우 개방되어 있기 때문에 각 노드에서 플레이어를 스폰하면 서로 바로 옆에서 스폰하는 것과 마찬가지로 취약 할 수 있습니다.

상세 검색 :

  • 플레이어가 최근에 그 노드에 스폰 된 경우, 쵸크 포인트가 형성되는 것을 멈추기 위해 일시적으로 패널티를 추가합니다 (같은 방향에서 오는 플레이어의 끊임없는 흐름과 뽑힘)
  • 범위 내에서 임의성을 추가합니다 (예 : 최상의 3 노드를 선택한 다음 동등한 확률로 무작위로 선택).
  • 아무도 아직 출현하지 않았 으면지도의 중심 (또는 가장 흥미로운 지점)에 초기 가중치를 추가하여 다른 플레이어가 없기 때문에 모든 노드의 점수가 0 인 경우에도 알려진 위치에 스폰합니다.

Aaron 07/28/2017.

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

세 번째 및 네 번째 기준을 다룬다 : "The map shouldn't have to expand."

처음에는 노드가 너무 많다는 것을 확인할 것입니다 (예 : 경로 찾기 용 네비게이션 메쉬와 같이 밀도가 높음). 이렇게하면 다른 플레이어와의 거리를 더 비싸게 계산할 수 있습니다 (직접 이웃 노드가 아님). 그러나 이것은 라운드 당 두 번 이상 일어날 프로세스는 아닙니다. 보너스로, 대부분의 작업에 사전 압연 된 nav 라이브러리를 사용할 수 있습니다. 또한 이것은 유클리드 거리가 없을 수도있는 공정한 방식으로 장애물 주변의 순회를 존중합니다 (미로의 선수는 공개 필드에서보다 가까이 배치 될 수 있습니다)

원하는 스폰 산물의 추론을 계산합니다.

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


Anton Sherwood 07/29/2017.

경기장이 토폴로지 토러스 (즉, "out of bounds"가 반대편으로 들어가는 것을 의미하는 직사각형) 인 경우, 이는 플레이어 A가 x = (pjW/N) mod W, y = (qjH/N) mod H 에서 스폰하는 좋은 대답 x = (pjW/N) mod W, y = (qjH/N) mod H 여기서 W,H 는 사각형의 크기, N 은 선수의 수, 그리고 p,q 는 결정될 정수이다. 그것들은 뚜렷하고 (아마도) 상대적으로 소수이며, sqrt(N) 과 너무 멀지 않다. 스폰 지점은 비스듬한 '벽지'패턴을 형성합니다.

그것은 플레이어가 게임 시작시에만 스폰한다고 가정합니다. 나중에 스폰하는 경우 다른 플레이어가 정의한 보로 노이 다이어그램의 정점에서 플레이어의 현재 위치에서 최대한 멀리 배치하고 싶을 것입니다.


NotThatGuy 07/31/2017.

어때?

각 플레이어는 산란하지 않는 상자 (또는 원) 로 둘러싸여 있습니다.

에서 것과 같이, 각 선수의 주위에 생성하고 그 선수를 주변에 따라 오는 특정 크기의 사각이있다 - 다른 선수는 그 사각 안에 산란 할 수 있지 않는다.

이 사각형은 산란에만 영향을 주며 게임 중에는 다른 어떤 움직임에도 영향을 미치지 않습니다.

이것은 초기 생성 산란 또는 연속 산란과 함께 작동합니다.

(점은 플레이어를 나타내며 녹색은 새 플레이어의 스폰 지역을 나타냅니다)

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

이를 처리하기 위해 다음 두 가지 중 하나를 수행 할 수 있습니다. (또는 둘 다)

  • 플레이어 수에 따라 스폰 상자가 아닌 크기를 줄이십시오.
  • 각 상자에 최대 X 명의 적 플레이어를 스폰시킵니다.
    • 이 숫자는 당신이 갈수록 증가 할 수 있습니다 (0에서 시작).
    • 변형 1 : 스폰 상자가 작고 제한된 스폰 상자가 더 커야합니다.
    • 변형 2 : 새로운 스폰이 얼마나 가까운가에 따라 (상자 안에 있다면) 효율적으로 구현하기 어려울 수도 있습니다.

Related questions

Hot questions

Language

Popular Tags