2016-10-14 3 views
2

저는 2D sidescroller 게임을하고 있습니다.libGDX : sidescroller에서 AI 구현

설명 :

임 libGDX과 AI 확장을 사용. 이 게임은 안드로이드에서 출시 될 예정입니다 (인공 지능은 무거운 힘으로 소모해서는 안됩니다). 내 지형은 그리드 기반이 아니며 절차에 따라 생성 된 다각형 높이지도 (동굴 없음)입니다.

적 (NPC) - 근거리, 원거리 - (총알) 및 복합 전투의 3 가지 유형이 있습니다.

엔티티에는 왼쪽, 오른쪽 및 점프로 이동하는 3 가지 방법이 있습니다. 또한 일부는 그림과 같이 땅 위로 떠있을 수 있습니다. 지형에서 y 오프셋을 가진 노드를 만들도록 강요하지만 플레이어가 점프하면 가까운 전투의 적이 경로를 가질 수 없습니다 (테스트하지는 않았지만 가정합니다).

그리드 기반 게임에서 많은 예제를 보았지만 내 시나리오에서는 그렇지 않습니다.

실례합니다. 저의 지식이 부족해서 며칠 전 인공 지능 저하에 불과했습니다.

질문 :

  • 는 (거의) 무한 세계와 호환 (libGDX에서) 인공 지능인가?

  • 노드를 어떻게 설정해야합니까?

  • AI를 사용하여 총알 방향을 계산하여 플레이어를 공격 할 수 있습니까?

답변

1

먼저 libGDX를 모르지만 무한한 세계를 원한다면 프로그래밍해야합니다. 즉, 지형을 무작위로 생성하고 더 이상 필요하지 않은 경우 메모리에서 지형을 파괴하는 것입니다. 무한히 왼쪽과 오른쪽으로 가고 싶다면 메모리가 가득 차면 하드 드라이브에 세상을 효율적으로 저장해야합니다. 다각형의 경우, 아바타로 돌아가고 싶다면 주변 요소에 대한 참조로 노드와 숫자를 저장하면됩니다.

둘째, 게임이 2 차원이기 때문에 가능한 경로는 간단하므로 경로 찾기 알고리즘이 필요하지 않습니다. 그래서 당신은 노드 나 그런 것들을 필요로하지 않습니다. 당신이 필요로하는 것은 히트 박스와 같은 것이므로 적들이 서로를 때릴 때 알 수 있습니다. AI는 아바타가 왼쪽이나 오른쪽인지, 직접 연결할 수 있는지 여부 만 알아야합니다. 그것은 단순한 기하학 계산입니다. 다른 적들을 뛰어 넘을 수 있다면 마치 길을 건너 갈 수있는 것처럼 보입니다.

마지막으로 총알 방향은 선형 대수학으로 간단히 계산되어 아바타에서 적에게 직선을 얻습니다. 자신의 아바타가 맞을 수 있는지를 알기 위해 다른 적 또는 지형과 교차하는지 계산해야합니다.

유일한 AI 측면은 적의 행동을 결정하는 것입니다. state machine으로 수행 할 수 있습니다. 여기에는 , waiting, following 또는 shooting과 같은 상태가 있습니다. 아바타가 얼마나 멀리 떨어져 있거나 도달 할 수 있는지에 따라 상태가 바뀝니다.