King of the Hill 챌린지에 참여하기 위해 봇을 만들기위한 일반적인 팁은 무엇입니까? 챌린지를 고려하는 것에서 봇을 만드는 것까지 어떤 전략을 사용합니까? 가장 유용한 데이터 구조는 무엇입니까?
답변 당 하나의 팁을 게시하십시오.
King of the Hill 챌린지에 참여하기 위해 봇을 만들기위한 일반적인 팁은 무엇입니까? 챌린지를 고려하는 것에서 봇을 만드는 것까지 어떤 전략을 사용합니까? 가장 유용한 데이터 구조는 무엇입니까?
답변 당 하나의 팁을 게시하십시오.
답변:
이것은 KOTH가 비교적 단순한 결정을 내릴 때 매우 중요한 개념이며, 소수의 플레이어 (일반적으로 2 명) 만 포함하며 결정 론적입니다. 내쉬 평형은 "그리드 락 (gridlock)"위치를 설명합니다. 만약 두 선수가 두 전략을 결정했다면 두 선수는 그 위치에 효과적으로 고정되어 있습니다.
내쉬 평형이 중요한 게임의 예는 다음과 같습니다.
평형을 찾는 방법
실제로 평형을 찾는 것은 실제로 대부분의 간단한 게임에서 매우 간단하며 종종 매우 직관적입니다. 톤 다양한 방법에 대한 세부 사항은 인터넷에서 찾을 수 있습니다. 일반적으로 적용 할 수있는 기본 개념은 두 플레이어가 사용할 수있는 가능한 전략 목록 (게임에서 제공하는 옵션)을 만드는 것입니다. 한 전략이 다른 전략에 의해 "지배"되면 해당 전략을 목록에서 제거 할 수 있으며 프로세스가 반복됩니다. "지배"라는 말은 전략 A가 나머지 모든 상대 전략에 대해 전략 B와 항상 같거나 더 나은 결과를 제공하는 경우 전략 B를 목록에서 제거 할 수 있음을 의미합니다.
예 : 가위 바위 보
RPS에는 "혼합"평형이라 불리는 것이 있는데, 이는 분포 가 관련되어 있음을 의미합니다 . 평형은 같은 움직임을 반복적으로 재생하는 대신 (빠른 패배로 이어짐) 무작위 분포에서 1/3 바위, 1/3 종이 및 1/3 가위를 연주하는 것입니다. 내가 무작위로 플레이하면 상대방이 나에게 우위를 점할 수있는 일이 없습니다. 상대방이 무작위로 플레이하지 않기로 선택한다면, 그 부분에만 취약점이 생깁니다.
혼합 평형을 가진 게임은 아마도 PPCG에서 가장 일반적 일 것입니다. 왜냐하면 그들은 많은 형태를 취할 수 있기 때문입니다 ( 순수한 평형으로 생각할 수 있는 유일한 재미있는 게임은 죄수의 딜레마입니다). 혼합 평형이 균일하게 무작위 일 필요는 없으며 매번 같은 움직임을하는 것 이외의 다른 것입니다.
이 정보 사용
게임의 내쉬 평형은 종종 조작을 시도해야하는 "기준"을 나타냅니다. RPS에서 무작위로 게임을하면 팩 중앙 주위의 마무리 지점이 보장됩니다. 맨 위로 이동하려면 다른 플레이어의 약점을 식별해야합니다.
이렇게하려면 상대방의 약점을 확신 할 수 없을 때 균형을 유지해야합니다. 이러한 약점이 확인되면 (상대방이 평형 상태에 있지 않다는 것을 발견 한 경우) 상대방을 이용하기 위해 평형 밖으로 부드럽게 이동해야합니다. 이 행동은 차례로 당신 자신의 약점을 만듭니다. 그런 다음 상대가 자신의 전략을 바꾸는시기를 감지하여 공격을 중단하고 무작위 경기를 재개 할 수 있어야합니다.
평형에서 변동 탐지
이것은 매우 어렵고 전문가가 아닙니다. 변형은 여러 형태로 나타날 수 있습니다.
일반적으로 팀을 돕는 작업을 완료하기 위해 단독으로 작동하는 봇을 작성할 수 있지만 게임 안팎에서 조정할 때 훨씬 큰 이점이 있습니다. 이에 대한 대표적인 예는 Red vs. Blue-Pixel Team Battlebots 에서 볼 수 있습니다 .
개발 과정에서 팀은 봇을 혼자서보다 잘 작동하도록 조정하는 방법에 대해 대화하고 토론 할 수있었습니다. 기술적으로 동일한 봇인 반면 SphiNotPi3000 은 다른 봇 과 함께 작동하도록 작성되었으며 자체적으로 직면했을 때의 약점을 설명하는 방식으로 이동할 수있었습니다. 최종 결과는 전 팀이 다른 두 팀에 비해 전장을 거의 완전히 장악 할 수 있었다는 것 입니다.
따라서 게임 밖에서, 어떤 전략을 다루어야하는지 팀원과 계획하고 조정하십시오. 누군가가지도를 대각선으로 스캔하는 봇을 가지고 있습니까? 수평으로 스캔하십시오 (예를 들어). 게임 내에서 도전이 팀 커뮤니케이션을 허용한다면, 그것을 활용하십시오. 예를 들어 배틀 봇 게임에서는 시야 밖에서 봇 위치에 대해 팀원에게 메시지를 보낸 다음 해당 신호를 사용하기 위해 봇을 호환 가능한 방식으로 작성하도록 권장 할 수 있습니다.
거의 모든 영리한 전략에는 전략을 능가하는 또 다른 전략이 있습니다. 이제 상대를 다시 추측하려고 할 수도 있지만 언제 중지 해야하는지 알기가 어렵습니다 .
또 다른 문제는 영리한 상대방을 추측하는 데 적합한 전략이 더 단순한 상대방에 비해 최적이 아닐 수 있다는 것입니다.
어떻게 해결할 수 있습니까? 당신은 봇이 어떤 전략을 사용해야하는지 즉시 결정하게합니다!
이를 위해 봇에게 다양한 전략의 레퍼토리를 제공하는 것으로 시작하십시오. 그런 다음 각 이동 전에 봇은 지금까지 기록 된 게임 기록을보고 이러한 다양한 전략이 어떻게 진행되었는지 평가합니다. 그런 다음 가장 성공했을 것입니다.
우선 강력한 전략을 포함 시키면 봇에게 좋은 옵션을 제공하는 데 도움이됩니다. 그러나 당신은 또한 멍청한 상대에 대해 더 잘 작동하기 때문에 정말 간단한 것을 포함해야합니다.
과적 합을 피하기 위해 (예를 들어 상대방이 무작위로 행동하는 패턴을이기려고하는 경우) 아직 정보가 많지 않은 경우 처음에 특정 전략을 선호하기 위해 일부 전략에 편향을 두는 것을 고려할 수 있습니다.
물론,이 접근법은 특정 종류의 도전 과제에 대해서만 작동합니다. Rock-Paper-Scissors-Lizard-Spock 경기 에서 정말 잘되었습니다 . 다른 게임에서는 특정 전략이 실제로 실행되지 않은 경우 어떻게 진행되었는지 평가하는 것이 거의 불가능합니다.
이 메타 접근 방식의 극단적 인 형태 (속임수에 경계를 두는)는 다른 모든 봇의 알려진 동작을 자신의 봇에 포함시켜 자신의 움직임을 완벽하게 예측할 수 있습니다.