우리 모두가 아는 매우 간단한 총격전을 상상해보십시오.
당신은 플레이어입니다 (녹색). 움직임이 X
축으로 제한됩니다 . 우리의 적 (또는 적)은 화면 상단에 있으며 그의 움직임도 X
축으로 제한됩니다 . 플레이어는 적에게 총알 (노란색)을 발사합니다.
플레이어의 총알을 피하는 데 정말 좋은 적을 위해 AI를 구현하고 싶습니다. 첫 번째 아이디어는 화면을 개별 섹션으로 나누고 가중치를 할당하는 것이 었습니다.
두 가지 가중치가 있습니다. "총알 무게"(회색)는 총알이 부과하는 위험입니다. 총알이 적에게 가까울수록 "총알 중량"이 높아집니다 ( 0..1
1이 가장 위험합니다). 총알이없는 차선의 가중치는 0입니다. 두 번째 가중치는 "거리 가중치"(연두색)입니다. 모든 차선에 대해 0.2
이동 비용을 추가합니다 (이 값은 이제 임의적이며 조정할 수 있습니다).
그런 다음 간단히 가중치를 추가하고 (흰색) 가장 낮은 가중치를 가진 차선으로 이동합니다 (빨간색). 그러나이 접근 방식은 최적의 장소가 단순히 두 개의 들어오는 총알 사이에 있기 때문에 (흰색 화살표로 표시됨) 로컬 최소값을 쉽게 놓칠 수 있기 때문에 명백한 결함이 있습니다 .
그래서 여기 내가 찾고있는 것이 있습니다 :
- 총알의 위협을 가하지 않는 장소가없는 경우에도 총알을 뚫을 수있는 방법을 찾아야합니다.
- 적은 최적 (또는 거의 최적) 솔루션을 선택하여 총알을 안정적으로 피할 수 있습니다.
- 알고리즘은 다른 속도로 움직일 수 있으므로 총알 이동 속도를 고려할 수 있어야합니다.
- 다른 수준의 난이도를 적용 할 수 있도록 알고리즘을 조정하는 방법 (지능형 적에게는 벙어리).
- 적은 총알을 피하고 싶지 않을뿐 아니라 플레이어를 쏠 수도 있기 때문에 알고리즘은 다른 목표를 허용해야합니다. 즉, 총알을 피할 때 적이 플레이어에게 발사 할 수있는 위치를 선호해야합니다.
어떻게이 문제를 해결하겠습니까? 이 장르의 다른 게임 들과는 달리, 나는 멍청한 적들의 질량 대신에 단지 몇 가지지 만 매우 "숙련 된"적들을 갖고 싶습니다.