"완벽하지 않은"AI 전투원을 만들려면 어떤 행동을 취해야합니까?


19

NPC 전투원을 만들 때 전투 전술, 타이밍 및 공격 유형을 최적화하여 로봇 죽음의 기계를 얻는 방법 쉽게 수 있지만, 특유의 예측할 수없는 적을 얻기는 더 어렵고 (싸움에서 더 흥미 롭습니다). 보다 유기적이고 비 전통적인 적을 만드는 데 어떤 행동 (알고리즘?)이 유용합니까?

편집 : 내 구체적인 사용 사례는 그래픽이 적을지라도 MMO와 같은 적, 예를 들어 월드 오브 워크래프트와 관련이 있습니다. 이는 인간과 인간이 아닌 적 (동물, 몬스터 등)을 의미합니다.

답변:


14

Mama West의 Gamasutra : Intelligent Mistakes : AI 코드에 어리 석음을 통합하는 방법 에 관한 문제에 대한 흥미로운 기사가 있습니다.

이 기사에서는 풀 게임 AI에 대해 설명합니다. 그러한 AI를 구현할 때, 매 촬영마다 공을 만드는 것이 매우 쉽습니다. 다른 답변에서 제안한 것처럼 AI를 "스마트"하게 만드는 간단한 방법은 계산에 임의의 요소를 추가하여 AI를 더 많이 그리워하는 것입니다.

그러나 이러한 접근 방식에는 두 가지 주요 결함이 있습니다. 첫째, 그것은 예측할 수 없습니다. "쉬운"모드에서 플레이하는 플레이어의 경우 AI가 "럭키"를 얻는 것은 용납 할 수 없습니다. 임의의 요인으로 인해 AI가 더 나은 샷을 만들거나 더 가치있는 공을 치거나 콤보를 할 수 있다면 어떨까요? 무슨 일이 일어날 지 모른다. 운이 좋은 것은 쉬운 모드에서 AI를위한 옵션이되어서는 안된다.

다른 결점은 플레이어가 AI 행동에서 패턴을 식별하려고한다는 것입니다. 그리고 단순한 랜덤 팩터를 사용하면 패턴이 없습니다. 그러나 그렇다고 플레이어가 어떤 패턴도 보지 못한다는 것을 의미하지는 않습니다. AI가 운이 좋으면 플레이어는 그 행동에 전략을 보게 될 것입니다. 이 기사에서 플레이어는 AI가 포지션 전략을 연주하는 것에 대해 불평합니다. 각도 정밀도에 임의의 요인이있는 경우 .

내 관점에서 볼 때,이 눈길을 끄는 기사를 읽은 후, 완전하지 않은 AI는 무작위 화를 단순화 요인으로 사용해서는 안됩니다. 그것은 정반대입니다. 더 쉬운 AI는 더 똑똑해야하지만 플레이어를 돕기 위해 노력하고 있습니다.

기사 풀 게임 예제에서, "쉬운 모드"AI를 구현하기위한 최상의 옵션은 실제로 모든 임의의 요소를 제거하고 포지셔닝 전략을 추가하는 것이 었습니다. AI는 플레이어를위한 쉽고 멋진 샷을 준비하기 위해 공을 치기 위해 노력할 것 입니다 .

이 방법은, 플레이어는 생각한다 그가 운이 있어요. 그리고 그것이 쉬운 게임을 할 때 기대하는 것입니다.


1
AI가 플레이어가 활용할 수있는 것을 기억하는 것도 유용 할 것입니다. 개발자는 자신이 '쉬운 냄비'를 가지고 있다고 생각할 수 있지만, 냄비를 쓸 수 없다면 AI에서 사례 전술을 덜 사용해야합니다. 또한 플레이어를 훈련시키고, 할 수없는 일을 기억하고, 플레이어가 지루하거나 좌절하지 않도록 할 수있을 때까지이를 자주 활용하는 것이 좋습니다.
Jonathan Connell

나는 무작위 화를 사용하지 않는 것에 동의하지만, "플레이어 돕기"에 동의하지 않습니다 : 부정 행위와 같을 것 입니다. 플레이어에게 거짓말 을 하기 때문에 훨씬 더 나쁩니다 .
o0 '.

@ Lo'oris : 글쎄, 나는 그것을 거짓말로 보지 않습니다. 플레이어가 게임을 쉽게 진행하라고 지시하면 게임이 완만 할 것으로 기대합니다. 당신이 게임을 할 때, 당신은 그것을 발견하고있는 친구와 정말 잘 지내고 있습니다. 그에게 기회를주는 것은 괜찮습니다. 모든 사람이 게임을 더 즐겁게 만듭니다.
Tyn

1
Shawn Hargreaves의 무작위 블로그 와 인간이 무작위 패턴을 발견하는 능력에 대한 좋은 블로그 게시물이 있습니다. 이 경우 톤이 AI 플레이어의 전술을 잘못 판단하는 것으로 해석됩니다.
Jonathan Connell

1
실제로 정확성에 대한 무작위 추출이 좋은 방법이라고 생각합니다. 그렇게 크지 않은 실제 선수와 함께, 때때로 그는 실수를하고 더 나은 공을 치게됩니다.
AttackingHobo

10

핵심 개념은 NPC에 "완벽한 지식"을주지 않는 것입니다.

  • 계산과 관련된 모든 결정 또는 조치에 대한 무작위 오차 한계. 조준중인 명백한 예 (예 : 스톰 트루퍼 저격병). 그들이 항상 당신을 때리지 않는다면, 그것은 더 현실적입니다.
  • 시선 ... 그들이 당신을 볼 수 없다면, 그것은 고양이와 마우스의 재미있는 게임을 만들 수 있습니다.
  • 팀 전술은 게임 유형에 따라 상황에 맞는 적보다 훨씬 흥미로울 수 있습니다. 예를 들어, 총격을당하는 경우 맹목적으로 청구되지 않으며 들어오는 화재가 발생할 때까지 엄호를받습니다. 또는 근처에 팀원이 있으면 서두르는 것이 더 편할 것입니다. NPC가 마치 살아있는 것처럼 행동하도록 이러한 행동을 시뮬레이션 할 수 있습니다.

나는 더 많은 예제가 주어질 것이라고 확신합니다. 아마도 게임에 대해 알려 주시면 더 구체적으로 알 수 있습니다 :-)


4

완벽한 AI 전투를 가능하게하는 빠른 방법 중 하나는 입력 또는 출력에 '노이즈'를 추가하여 불완전한 결정을 내리는 것입니다. 소음으로 나는 임의의 요인을 의미합니다.

다음은 출력에 대한 작은 예입니다.

  • 완벽한 알고리즘은 점수로 순위가 매겨진 세 가지 가능한 작업을 생성합니다.
  • 각 점수에 임의의 값을 추가하십시오.
  • 최고 점수를 선택하십시오.

입력에 대한 아이디어는 다음과 같습니다.

  • 행동이 상대방의 건강을 기반으로하는 경우 인공 지능으로 감지 된 상태에 임의의 요인 (예 : 0-100 건강 막대의 경우 +/- 10)을 추가합니다.
  • AI가 일부 공격이 다른 공격보다 강력하다는 것을 알고 있다면 행동 등급에 대해서도 동일하게 임의로 값을 더하거나 뺍니다.

고려해야 할 한 가지 분명한 것은 AI의 속도입니다. 대부분의 게임에서 AI는 인간보다 (특히 전투에서) MUCH에 더 빠르게 반응 하고 명백한 멀티 태스킹 (RTS 게임에서 매우 눈에))을 수행 할 수 있습니다. 따라서 AI를 약간 느리게 유지하고 (적응 적으로 가능할 수 있음) 결정된 시간 프레임 내에서 수행 할 수있는 작업의 양을 제한하여 (즉, 0.5 초마다 한 번의 작업)이를 수행해야합니다.

이것이 도움이 되길 바랍니다. 행운을 빌어 요!


3

정확히 무엇을 하려는지 모른 채 직접적으로 유용한 대답을하기는 어렵습니다.

나는 당신을 도울 수있는 주제에 대해 말할 두 가지가 있습니다.

첫 번째는 (그리고 이것이 가장 중요한 것입니다) 적을 더 흥미롭고 인간적으로 만들려고한다면 전투 전술은 무의미합니다. 플레이어가 적을 "믿게"만드는 비결은 애니메이션, 사운드 및 작은 세부 사항을 사용하여 인간의 행동을 암시하는 것입니다. 완벽한 AI는 모퉁이를 돌아 다니며 플레이어를보고 촬영할 수 있습니다. 인간의 인공 지능은 모퉁이를 돌아 다니며, 선수를보고, 얼굴을보고 놀란 표정으로 소리를 지르고, 쏴 버릴 수 있습니다. 첫 번째는 로봇처럼 보입니다. 두 번째는 인간 인 것 같습니다. 둘 다 촬영 직전에 애니메이션을 삽입하는 것 외에 (또는 촬영 중에 전술 동작을 동일하게 유지하기 위해) 모든 방식으로 동일한 AI를 사용하고 있습니다 .

둘째, 무작위 화를 피하십시오. 디자이너들은 디자이너들이 생각하고 싶어하는만큼 감사하지 않습니다. 플레이어는 "컴퓨터가 100 개 중 1 개를 생성 한 다음 5, 3, 4를 표시하므로 마지막 4 번의 오류 요소는 1 %, 5 %, 3 % 및 4 %에 불과했습니다. 이번 라운드에서 0.5 초 만에 왜 죽었습니까? " 플레이어는 때때로 그리워하는 적을 보았고 다른 경우에는 명백한 이유없이 반복적으로 못 박는 경우가 있습니다. 좋은 게임 디자인은 인간 플레이어가 할 수있는 건물 패턴에 관한 것입니다.플레이어가 운이 좋았는지 여부를 판단하기보다는 자신의 판단과 기술과 직관을 바탕으로 플레이어의 성공을 관찰하고 배우고 이길 수 있습니다. 무작위 화 욕구는 탁상용 게임과 도박 게임에 대한 경험에서 비롯된 것입니다. 두 게임 모두 비디오 게임과는 매우 다른 매체입니다.


1

대학의 AI 과정에서 AI를 "인간"으로 만들고 덜 완벽하게 만드는 주제가 있다는 것을 기억합니다. 그것은 몇 년 전 이었으므로 나는 단지 내 마음의 꼭대기에서 몇 가지 글 머리 기호를 기억합니다.

  • "이동 라이브러리"를 사용하십시오. 오크와 싸우고 있다면, 가끔씩 반복되는 3 가지 전투 루틴을 말해주십시오. 이것은 당신이 원하는 것과는 정반대 인 것처럼 보이지만, 더 쉽게 예측할 수있게함으로써 전투를보다 쉽게 ​​만들어줍니다. 그러나 AI는 "완벽한 기계"와 "같은 움직임을 반복해서 반복하는 것"을 줄입니다.
  • 가능하면 하위 최적화하십시오. 당신이 말한 것처럼 AI가 최고의 움직임을 계산하는 것을 기반으로한다면이 계산에 인공 한계를 두십시오. 검색을 더 얕게 만들거나 단계 수를 제한하십시오. AI는 최고의 움직임 대신에 단순히 좋은 움직임을 선택합니다. 이것은 최고의 움직임보다 좋은 것이 많기 때문에 적의 행동에 많은 다양성을 추가 할 수 있습니다.
  • 의도적으로 실수하십시오. 최선의 이동 대신 두 번째 또는 세 번째 최선을 선택하십시오. 또는 유용성이 나쁜 움직임을 선택하십시오. 이것은 "예측 불가능"지점을 해결할 수 있습니다.

물론 이것은 각 경우에 대해 연구하고 플레이 테스트해야 할 일반적인 조언 일 뿐이며 실제로 AI를 의도보다 인공적으로 보이게 만들 수 있습니다. 그러나 나는 그들이 좋은 출발점이라고 생각합니다.


0

방금이 팝업을보고 과거에 사용한 아이디어를 공유하고 싶었습니다.

캐릭터가 세 번의 움직임을 가지고 있고 각각이 득점을한다고하자. (다른 답변은이 점수를 만드는 데 소음을 추가하는 것에 대해 이야기합니다.)

  • 칼로 공격 (30 점)
  • 불 주문 (50 포인트)
  • 아이스 스펠 (20 점)

총 포인트 합산 (100)

캐릭터의 지능 능력치를이 능력치의 최대 값에서 빼십시오 (100 명 중 60 명이라고합시다).

총점 (100)을 곱하여 0 (또는 다른 층)과 지능 비율 (0.6) 사이의 난수를 생성하십시오. 이 예에서는 결과가 45라고 가정하겠습니다.

이제 0에 도달 할 때까지이 값에서 잘못된 동작을 빼기 시작합니다. (순서 빼기)

먼저, 우리는 20 점을받은 Ice 주문을 고려합니다. 45-20 = 25. 이것은 0보다 높으므로 Ice 주문을 버립니다.

둘째, 30 포인트의 검으로 공격을보십시오. 25-30 = -5. 임계 값에 도달하면 검 동작으로 공격을 선택합니다.

이 시스템에서 지능이 낮은 캐릭터는 최고의 움직임을 선택하지 않습니다. 그리고 지능이 높은 캐릭터가 종종 최고의 움직임을 선택합니다. (이 예에서는 완벽한 지능을 가진 캐릭터가 시간의 50 %를 가장 잘 움직입니다.)

난수에 플로어 메커니즘을 추가하면 더 나은 움직임이 선택 될 가능성이 높아집니다.

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