일단 상태머신의 공격 상태에 유닛 평가 함수 넣고
상태 머신의 다음 상태 평가하는 부분을 약간 조정해줌.
공격 가능 행동력보다 현재 행동력이 높으면 약간의 이동 경향성을 부여하고,
같을 경우에는 상황 봐서 경계하거나 공격하는 식으로 조정
이 코드들 외에도 게임이 루즈해질 수 있음을 고려하여 몇 가지 요소를 추가함
<이동>
모든 적 유닛은 플레이어의 위치를 항상 정확히 알고 있음. 다만, 이걸 활용하는 방식을 굉장히 제한적으로 둠.
▶ 플레이어의 거리 > 자신의 이동 속도(행동력 1로 이동 가능한 거리) * 3이라면, 해당 플레이어를 무시. 아무런 행동을 하지 않을 수는 없으니, 깨어있다면 이동 가능 거리의 랜덤 타일로 이동 함. 일종의 순찰 느낌?
▶ 위 조건 보다 가까워지면 추적 상태 진입. 추적 상태 진입 시 가장 가까운 플레이어 유닛을 타겟으로 지정하여 이동함.
- 추적 상태는 공격 가능 거리 내에 플레이어가 존재할 때 까지 지속.
- 사거리 이내에 플레이어가 들어오면, 그냥 이동을 즉시 종료함.
- 3턴 연속으로 자신과 플레이어 간의 거리가 이전 보다 멀어질 경우, 추적을 포기함. 추적을 포기한 유닛은 기억하며, 다른 유닛의 추적을 시작할 경우, 기억을 리셋
▶ 공격 가능 거리에 플레이어가 존재하여, 추적 상태가 종료 될 경우, 자신의 시야 타일을 기반으로 정밀한 타일 평가를 진행.
<공격>
공격은 다른 것보다, 탱커만 죽어라 쳐서, 탱커를 앞세우고 원거리 유닛으로 몰이 사냥하는 걸 견제하려는 목적이 있음.
▶모든 유닛은, 동일한 타겟을 연속하여 5번 공격 하면, 해당 유닛을 공격타겟에서 제외 하며, 추적 대상으로도 삼지 않음.
아마, 5번도 좀 넉넉하게 잡은 거라 더 줄일 수도..?
뭐 암튼... 수치 조정은 더 해야겠지만 굴려보니까 가끔 이상한 짓 하지만, 나름대로 납득 가는 AI가 완성 된거 같음. 아래는 짧은 예시 영상
유닛을 일단 근접유닛으로 만들어 놔서, 반드시 공격 이전에 이동하여 인접한 타일에서만 공격함 ㅋㅋ
스프라이트는 임시용으로 만들어 둔거라 뒷모습도 없음 ㅋㅋㅋㅋ
1번째 유닛은 별거 없음 ㅋㅋ 그냥 이동속도 길게 잡아놨더니, 맵 절반을 가로질러서 친히 유닛을 조지러 온거
2번째 유닛이 좀 맘에 드는데, 우선 첫 번째 => 이동에서 엄폐물에 한 번 붙고, 두 번째 => 공격에서 인접한 타일에 와서 공격함.
이제 진짜 수치 조정 뿐이야...!
댓글 6