문제

나는 두 명의 선수를 가지고 있고 그들 사이의 게임을 시뮬레이션하고 싶습니다. 둘 다 일부 속성 (전원, 인텔리전스 ...) 및 다른 작업이 있습니다. 일부 조치의 결과는 속성 값과 운이 포함됩니다.

알고리즘 :

  • 두 플레이어 모두를위한 모든 가능한 이동의 게임 트리를 구성합니다.
    • 게임 트리는 아마도 깊이가 제한되어있을 것입니다
    • 모든 레벨은 다른 플레이어 에 속할 것입니다.
    • 잎 노드에서 휴리스틱을 사용하여 이동을 해야하는 플레이어를위한 확률을 찾아
    • 미니멀 알고리즘과 같은 확률을 전파하십시오.
    • 확률이 가장 높은 이동
    • 이 알고리즘의 시작 부분에서 계속

      그래서 기본적으로 이것은 미니 맥스 알고리즘입니다. 비록 질문이 거의 없습니다.

      1. 계정에서 운을 취하는 방법은 무엇입니까?
      2. 한 번 움직일 때 전체 알고리즘을 다시 실행해야합니까? (+1 깊이와 새 루트 노드가있는 트리 빌드, 새로운 확률 계산 ...)
      3. 전투를 시뮬레이트하는 다른 아이디어

        감사합니다.

도움이 되었습니까?

해결책

일반적으로 알고리즘은이 알고리즘이 가장 좋은 방법을 보장 할 수있는 방법이 없습니다. 예를 들어 두 게임을 상상해 보겠습니다.

  1. 첫 번째 게임에서 각 플레이어는 으로 파업으로 2 개의 행동을 가지고 있습니다. 이 게임에서 각 단계는 다른 단계에 영향을 미치지 않으므로 트리 을 빌드하는 것은 어떤 의미가 있지 않습니다. 각 플레이어는 무기를 선택하고 방패로 '을 계속해서 발사 / 눈에 띄는 소리를 내거나 '을 ''죽음이나 이기기까지.
  2. 두 번째 게임은 또한 훔친 상대방의 방패 을 훔친다. 이 경우 트리 은 꽤 분명하기 때문에 더 의미가 있으므로 칼로 눈을 훔쳐서 훔치는 것이 더 많은 의미가 있습니다.

    트리 이동 이 필요 하든지 또는 게임 규칙에 크게 의존하지 않아도됩니다.

    luck factor 에 관한 주요 옵션은 트리 에 영향을 미치는지 여부를 알 수 있습니다. 그것은 luck factor 이 같은 방식으로 모든 행동에 영향을 미치는지에 달려 있습니다. 그것이 사실이라면 트리 을 계산하고 선택한 조치의 결과를 계산할 때 트리 을 계산하는 동안 운이 생략 될 수 있습니다. 그렇지 않으면 운이 다른 방식으로 다른 행동에 영향을 미치는 경우 (예를 들어 완전한 패자는 총을 쏜 적을 쏜 적이 스푼으로 kill ill luchope)을 필요로합니다. 행운을 수여해야합니다. 이동 트리에서 확률을 계산하는 동안

    각 노드가 선택한 후에 전체 트리를 100 %로 예측할 수 있는지 여부에 따라 전체 트리를 다시 계산할 필요가 있는지 여부. 예를 들어 체스에서 당신이 전당포를 옮기기로 결정했다면 그 전당포는 당신이 결정한 곳으로 확실히 움직일 것이라고 예측할 수 있습니다. 이렇게하면 각 단계에서 트리 이동에서 선택한 지점을 선택하고 전체 트리를 아무 것도 다시 계산하는 대신 해당 시나리오마다 하나 이상의 이동을 계산할 수 있습니다. 하지만 플레이어가 총을 쏘기로 결정할 수 있지만 그가 불행한 날 때문에 그가 다리에서 자신을 쏠 것입니다.

다른 팁

몬테 카를로 트리 검색을 살펴보아야합니다. 문제로 훌륭하게 맞을 만합니다.

휴리스틱을 사용하는 것이 아니라 트리를 확장하기 전에 각 지점에서 임의의 플레이어를 사용하여 전체 게임을 실행합니다. 이것에 대한 좋은 점은 당신이 실제로 확률의 나무를 구축하고있는 것입니다. 그리고 당신은 in minmax와 같은 휴리스틱으로 끝이나 일부 컷오프로 나무를 확장 할 필요가 없습니다.

MCTS는 또한 게임 이동에서 최상의 방법이기도합니다. 현재 알려지지 않은 규칙을 가진 게임을하는 데 가장 적합합니다. 추가 효과를 위해 무작위 플레이어가 아닌 일부 유한 상태 머신 에이전트를 사용하여 확률을보다 정확하게 만듭니다. 또한 기계 학습 유래의 휴리스틱을 사용하여 특정 분기를 건너 뛴 디스크를 사용하여 분기 요소를 줄일 수도 있습니다. (하지만 기술의 속도를 높이기 위해 마지막으로하는 것입니다)

MinMax를 수행 할 수있는 경우 너무 많은 문제없이 MCT를 수행 할 수 있습니다. (게임의 규칙을 지속적으로 확장하려는 경우)

관심이 있으시면 여기를 클릭하십시오.

http://www.aai.org/papers/aiide/ 2008 / AIIDE08-036.PDF

및 예, 모든 플레이어의 모든 이동 에서이 작업을 수행해야합니다. 그래서 minmax와 mct는 느리게 될 것입니다. 모든 게임 트리 기반 기술이 느리게됩니다.

minmax를 사용하면 나무 중 일부를 보존 할 수 있습니다. 새로운 상태이며 부모와 연결된 하위 트리를 제거하는 브랜치로 이동하십시오. 그런 다음 남아있는 하위 트리에서 하나의 깊이를 확장하십시오. 그러나 이것은 추측입니다. 나는 이전에 그렇게 할 시간이 없었습니다. :) (그러나 확률 계산의 실수를 보존 할 수 있습니다)

이러한 기술에 대해 좋은 점은 그들이 일을 건설했을 때입니다. 기계 학습 기술은 훨씬 더 빨리 실행되지만 사용하기 전에 훈련의 날이 아니라면 시간이 필요합니다.)

당신이 요구하고있는 것은 매우 "광대 한"... 그러나 많은 개발자가 수행 한 것입니다.

이와 같은 게임 디자인에 대한 책을 읽기 시작하는 것이 좋습니다. http://www.amazon.com/game-design-practice-wordware-developers/DP / 1556229127 / ref= cm_cr_pr_product_top

... 또한 www.codeproject.com www.codeplex.com/korea 게임 구현 예제에 대한

행운을 빌어 요,

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top