답변:
Mama West의 Gamasutra : Intelligent Mistakes : AI 코드에 어리 석음을 통합하는 방법 에 관한 문제에 대한 흥미로운 기사가 있습니다.
이 기사에서는 풀 게임 AI에 대해 설명합니다. 그러한 AI를 구현할 때, 매 촬영마다 공을 만드는 것이 매우 쉽습니다. 다른 답변에서 제안한 것처럼 AI를 "스마트"하게 만드는 간단한 방법은 계산에 임의의 요소를 추가하여 AI를 더 많이 그리워하는 것입니다.
그러나 이러한 접근 방식에는 두 가지 주요 결함이 있습니다. 첫째, 그것은 예측할 수 없습니다. "쉬운"모드에서 플레이하는 플레이어의 경우 AI가 "럭키"를 얻는 것은 용납 할 수 없습니다. 임의의 요인으로 인해 AI가 더 나은 샷을 만들거나 더 가치있는 공을 치거나 콤보를 할 수 있다면 어떨까요? 무슨 일이 일어날 지 모른다. 운이 좋은 것은 쉬운 모드에서 AI를위한 옵션이되어서는 안된다.
다른 결점은 플레이어가 AI 행동에서 패턴을 식별하려고한다는 것입니다. 그리고 단순한 랜덤 팩터를 사용하면 패턴이 없습니다. 그러나 그렇다고 플레이어가 어떤 패턴도 보지 못한다는 것을 의미하지는 않습니다. AI가 운이 좋으면 플레이어는 그 행동에 전략을 보게 될 것입니다. 이 기사에서 플레이어는 AI가 포지션 전략을 연주하는 것에 대해 불평합니다. 각도 정밀도에 임의의 요인이있는 경우 .
내 관점에서 볼 때,이 눈길을 끄는 기사를 읽은 후, 완전하지 않은 AI는 무작위 화를 단순화 요인으로 사용해서는 안됩니다. 그것은 정반대입니다. 더 쉬운 AI는 더 똑똑해야하지만 플레이어를 돕기 위해 노력하고 있습니다.
기사 풀 게임 예제에서, "쉬운 모드"AI를 구현하기위한 최상의 옵션은 실제로 모든 임의의 요소를 제거하고 포지셔닝 전략을 추가하는 것이 었습니다. AI는 플레이어를위한 쉽고 멋진 샷을 준비하기 위해 공을 치기 위해 노력할 것 입니다 .
이 방법은, 플레이어는 생각한다 그가 운이 있어요. 그리고 그것이 쉬운 게임을 할 때 기대하는 것입니다.
핵심 개념은 NPC에 "완벽한 지식"을주지 않는 것입니다.
나는 더 많은 예제가 주어질 것이라고 확신합니다. 아마도 게임에 대해 알려 주시면 더 구체적으로 알 수 있습니다 :-)
완벽한 AI 전투를 가능하게하는 빠른 방법 중 하나는 입력 또는 출력에 '노이즈'를 추가하여 불완전한 결정을 내리는 것입니다. 소음으로 나는 임의의 요인을 의미합니다.
다음은 출력에 대한 작은 예입니다.
입력에 대한 아이디어는 다음과 같습니다.
고려해야 할 한 가지 분명한 것은 AI의 속도입니다. 대부분의 게임에서 AI는 인간보다 (특히 전투에서) MUCH에 더 빠르게 반응 하고 명백한 멀티 태스킹 (RTS 게임에서 매우 눈에))을 수행 할 수 있습니다. 따라서 AI를 약간 느리게 유지하고 (적응 적으로 가능할 수 있음) 결정된 시간 프레임 내에서 수행 할 수있는 작업의 양을 제한하여 (즉, 0.5 초마다 한 번의 작업)이를 수행해야합니다.
이것이 도움이 되길 바랍니다. 행운을 빌어 요!
정확히 무엇을 하려는지 모른 채 직접적으로 유용한 대답을하기는 어렵습니다.
나는 당신을 도울 수있는 주제에 대해 말할 두 가지가 있습니다.
첫 번째는 (그리고 이것이 가장 중요한 것입니다) 적을 더 흥미롭고 인간적으로 만들려고한다면 전투 전술은 무의미합니다. 플레이어가 적을 "믿게"만드는 비결은 애니메이션, 사운드 및 작은 세부 사항을 사용하여 인간의 행동을 암시하는 것입니다. 완벽한 AI는 모퉁이를 돌아 다니며 플레이어를보고 촬영할 수 있습니다. 인간의 인공 지능은 모퉁이를 돌아 다니며, 선수를보고, 얼굴을보고 놀란 표정으로 소리를 지르고, 쏴 버릴 수 있습니다. 첫 번째는 로봇처럼 보입니다. 두 번째는 인간 인 것 같습니다. 둘 다 촬영 직전에 애니메이션을 삽입하는 것 외에 (또는 촬영 중에 전술 동작을 동일하게 유지하기 위해) 모든 방식으로 동일한 AI를 사용하고 있습니다 .
둘째, 무작위 화를 피하십시오. 디자이너들은 디자이너들이 생각하고 싶어하는만큼 감사하지 않습니다. 플레이어는 "컴퓨터가 100 개 중 1 개를 생성 한 다음 5, 3, 4를 표시하므로 마지막 4 번의 오류 요소는 1 %, 5 %, 3 % 및 4 %에 불과했습니다. 이번 라운드에서 0.5 초 만에 왜 죽었습니까? " 플레이어는 때때로 그리워하는 적을 보았고 다른 경우에는 명백한 이유없이 반복적으로 못 박는 경우가 있습니다. 좋은 게임 디자인은 인간 플레이어가 할 수있는 건물 패턴에 관한 것입니다.플레이어가 운이 좋았는지 여부를 판단하기보다는 자신의 판단과 기술과 직관을 바탕으로 플레이어의 성공을 관찰하고 배우고 이길 수 있습니다. 무작위 화 욕구는 탁상용 게임과 도박 게임에 대한 경험에서 비롯된 것입니다. 두 게임 모두 비디오 게임과는 매우 다른 매체입니다.
대학의 AI 과정에서 AI를 "인간"으로 만들고 덜 완벽하게 만드는 주제가 있다는 것을 기억합니다. 그것은 몇 년 전 이었으므로 나는 단지 내 마음의 꼭대기에서 몇 가지 글 머리 기호를 기억합니다.
물론 이것은 각 경우에 대해 연구하고 플레이 테스트해야 할 일반적인 조언 일 뿐이며 실제로 AI를 의도보다 인공적으로 보이게 만들 수 있습니다. 그러나 나는 그들이 좋은 출발점이라고 생각합니다.
방금이 팝업을보고 과거에 사용한 아이디어를 공유하고 싶었습니다.
캐릭터가 세 번의 움직임을 가지고 있고 각각이 득점을한다고하자. (다른 답변은이 점수를 만드는 데 소음을 추가하는 것에 대해 이야기합니다.)
총 포인트 합산 (100)
캐릭터의 지능 능력치를이 능력치의 최대 값에서 빼십시오 (100 명 중 60 명이라고합시다).
총점 (100)을 곱하여 0 (또는 다른 층)과 지능 비율 (0.6) 사이의 난수를 생성하십시오. 이 예에서는 결과가 45라고 가정하겠습니다.
이제 0에 도달 할 때까지이 값에서 잘못된 동작을 빼기 시작합니다. (순서 빼기)
먼저, 우리는 20 점을받은 Ice 주문을 고려합니다. 45-20 = 25. 이것은 0보다 높으므로 Ice 주문을 버립니다.
둘째, 30 포인트의 검으로 공격을보십시오. 25-30 = -5. 임계 값에 도달하면 검 동작으로 공격을 선택합니다.
이 시스템에서 지능이 낮은 캐릭터는 최고의 움직임을 선택하지 않습니다. 그리고 지능이 높은 캐릭터가 종종 최고의 움직임을 선택합니다. (이 예에서는 완벽한 지능을 가진 캐릭터가 시간의 50 %를 가장 잘 움직입니다.)
난수에 플로어 메커니즘을 추가하면 더 나은 움직임이 선택 될 가능성이 높아집니다.