답변:
AI를 처음 개발하는 경우, 상태 패턴, 행동 수학과 같은 것에 대해 걱정하거나 주제에 관한 책을 얻을 필요가 없습니다.
말 그대로 다음과 같은 것을 피할 수 있습니다.
if( targetInRange == true )
{
FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
MoveAwayFromBullet();
}
else
{
WanderAroundAimlessly();
}
인공 지능을 올바르게 만드는 주요 측면은 캐릭터가 원하는 행동과 현실적으로 달성 할 수있는 방법을 생각하는 것입니다. 기본 우주선의 적에게 가능한 행동은 다음과 같습니다.
이러한 행동은 언제 일어날 수 있습니까?
캐릭터가 가질 수있는 "상태"수가 적기 때문에이 작업을 수행 한 후 위와 같은 간단한 if 문을 사용할 수 있습니다. 그런 다음 Steering Behaviors를 살펴 보는 것이 좋습니다. 이는 구현하기위한 매우 간단한 동작이며 실제로보기 좋은 움직임을 가져올 수 있습니다.
더 많은 것을 여기에서 찾을 수 있습니다 : http://www.red3d.com/cwr/steer/
그리고 나는 특히 당신이 시작할 때 Mat Buckland의 책 Programming Game AI By Example을 추천 합니다.
당신이 이것에 정말로 익숙 할 때, 나는 국가와 전략 패턴을 살펴볼 것을 제안합니다.
요점은 작고 간단하게 시작하는 것입니다. 모든 사람들이 FSM과 디자인 패턴 및 그 밖의 것들에 대해 계속 뛰고 있다는 이러한 모든 용어에 대해 걱정하지 마십시오. 우선 설계 및 구축 한 다음 기존 방법 또는 표준을 사용하여 개선 할 수있는 방법에 대해 걱정하십시오.
희망이 도움이됩니다!
전략 디자인 패턴 을보고 싶을 수도 있습니다 . 본질적으로 선박의 행동 방식에 대한 동일한 기본 전략을 작성하십시오.
그런 다음 논리 (상태 머신)를 사용하여 이러한 전략 중에서 선택합니다. 예를 들어, 선박 보호막이 50 % 아래로 떨어 졌다면 목표물에서 도망쳐 파워 업 / 힐링 아이템 등으로 이동하십시오.
Ian Millington의 인공 지능 게임 책을 구입하는 것이 좋습니다. 훌륭합니다! :) http://www.ai4g.com/
소스 코드는 Github-MIT 라이센스에 있습니다.
물론 C / C ++를 사용하지 않는다면 관련성이 떨어질 수 있습니다.
그러나 실제로 인공 어리 석음 / 지능의 세계에 대한 멋진 소개.
여기에서 필요한 것은 스티어링 및 스테이트 머신입니다. 우선.
상태 머신을 사용하는 경우 몇 가지 실용적인 조언 : megastate를주의하십시오.
도망 할 위치 설정, 높은 목표 속도 설정, 모든 대상 지우기 등을 처리하는 "탈주"상태를 원합니다. 대신 하나 또는 몇 개의 선박 제어를 처리하는 많은 상태 머신을 사용하는 것이 좋습니다. 대상 위치 선택을 처리하는 주 기계, 총을 처리하는 주 기계 등
각 개별 시스템에 도망 상태를 추가해야하므로 이는 어리석은 것처럼 보일 수 있지만 하나 또는 두 개의 출력으로 제한되므로 상태가 매우 작아서 문제가되지 않습니다.
또한 각 컨트롤은 이제 개별 컨트롤하에 있기 때문에 공격 상태에서 총을 제어하면서 도망 목표 위치를 선택할 수 있습니다. 냉각수 누출로 인해 엔진 출력을 유지하면서 적을 물리 칠 수 있습니다. 대응책을 덤프하는 동안 충돌을 피하도록 조종 할 수 있습니다. 이 모든 것이 하나의 포괄적 인 상태 머신에서는 불가능합니다.
AI 프로그래밍 학습을위한 시작점 목록에이 책 추가 제한된 응용 프로그램의 알고리즘이 아닌 관찰 및 행동 구현에 중점을 두어 작업에 적합하다고 생각합니다.
AI를 만드는 방법은 많은 부분으로 구성되어 있기 때문에 까다로운 질문입니다.
다른 포스터는 훌륭한 책을 제안했고 나는 jacmoe가 제안한 AI4Games를 좋아합니다. 많은 부분에서 일반적이지만 (물론 이해할 수있는 많은 책처럼).
물론 각 유형의 게임에는 특정 요구 사항이 있으며 아케이드 / 슈터 게임에는 흥미로운 게임 플레이를 지원하기 위해 복잡한 아키텍처가 필요하지 않습니다. 간단한 스티어링 라이브러리는 그 행동의 기초로 작업을 수행 한 다음 다양한 유형의 적에 대한 세부 정보를 추가합니다 (일부, 주기적으로 촬영, 플레이어의 움직임을 예측하여 촬영, 일부는 적을 향하기 위해 회전, 다른 사람은 조정할 수 있음) 그들의 공격 등).
게임을 할 때 무엇을하는지 생각해보십시오. 몇 가지 질문을하십시오.
그런 다음 AI가 플레이 필드를보고 AI가 이러한 질문에 따라 수행 할 수있는 동작 또는 동작 목록을 작성하도록합니다. 나는 이러한 움직임을 "스마트 니스 팩터 (smartness factor)"로 순위를 매기고 정렬한다. 그런 다음 임의의 조합과 게임 시작시 플레이어가 선택한 난이도에 따라 이동 / 동작을 선택하고 실행하는 것만 큼 간단합니다.
그런 다음 500 밀리 초 후에 다시 수행합니다.
학습 능력이나 아무것도 없지만 충분히 조정하면 꽤 설득력이 생길 수 있습니다.