/* 얕은 지식에서 질문을 통해 배움을 얻고자 합니다. */
/* 2류의 공부방법이지만 현재로선 최선이기에 이렇게 글 적어봅니다. */


MMORPG의  몬스터의 전투 A.I의 경우,

보통 대기상태, 전투상태, 사망상태, 결과상태 정도의 FSM으로 구성되고
세부적으로 대기 상태에서는 적의 발견정도를 처리,
전투 상태에서는 전투 시작후 종결 직전까지의 상태
사망 상태는 사망처리, 결과는 아이템등 기타 처리로 둔다고 생각합니다.

이런 경우 보통 전투 AI를 보면 if , else if 의 도배로 단순 코드 나열 괴물덩어리 되기 일쑤입니다.
결국 하나의 Loop는 거대해지고 많은 몹이 몰리면 쉽게 렉이 발생합니다.

결국 저의 짧은 소견으로는 하나의 몬스터를 실행하는 Ai를 통합적으로 돌리는 것이 아니라
애초에 코드안에서 설정된 값을 읽어들여 배분하는 것이 더 좋지 않을 까 싶습니다.

function Attack1
{
            공격한다.
            10번 공격하면 return
}

function  Attack2
{
           공격한다.
           5번 공격하면 return
}
function Runaway
{
           if 적과의 거리 1000이상이면 return
                      if 나의 피 100이상이면 return
                      else if 도망간다.return
}
function Heal
{
             자신의 피가 200이상이면 return
             else if 힐한다. return
}

Monster {    ......... AItype1 = "Attack1", AItype2 = "Runaway", AItype3 = "Heal", AItype4 = "Attack2"

프로그램은 Aitype을 사망 FSM 조건되기 전까지 계속 순차적으로 순환시킨다고 합시다.

이런 몬스터의 A.I 설정 구축은 기획자는 편하게 함수만들고 적용시킬 수 있지 않을 까 싶습니다.

결국 하나의 몹이 수십개의 조건문을 거치지 않고 자신에게 최적화된 AI만을 실행시키는 것이
어렵나요? 아님 별 차이가 없나요? 제가 궁금한겁니다.

하나의 행동을 토큰화시켜 조합하는 방식과
하나의 AI안에서 수십개의 조건문으로 처리하는 것

차이가 무엇이고 현실이 어떠한지 알고 싶습니다.

- 이제 막 기획시작하려고 하는 사람 -