FSM 을 이용하여 애니메이션 패턴을 적용 하려고 합니다

게임의 인공지능에 관한 포럼입니다.

Moderator: 류광

Locked
woona7035
Posts: 15
Joined: 2008-02-29 10:02

FSM 을 이용하여 애니메이션 패턴을 적용 하려고 합니다

Post by woona7035 »

글중에 저와 비슷한 질문을 한 분이 계시던데..

그분글에 달린 답글에 보면

각 State 를 합성해서 사용 하라고 하시던데...
좀... 막연한 감이 있어서요...

예를들면 Run 에도 Low, Normal. High 가 있고..
브레이크 종류도 3가지...


거기에 스킬 까지 있다면.....
어떻게 적용해야 하나요...?

enum StateLevel
{
SL_1 1 << 20,
SL_2 1 << 21,
SL_3 1 << 22,
}


enum StateList
{
SL_RUN 1 << 10,
SL_JUMP 1 << 11,
SL_BRAKE 1 << 12
}

.....................

요런식으로 해서


m_pMyFSM->SetState(SL_RUN | SL_1);

뭐 이렇게 해서

switch(m_pMyFSM->GetState())
{
case (SL_1 | SL_RUN):
..........
break;
}


뭐 이런식으로 하면 된다는 말씀이신지......
아니면 다른 방법이 있는지...... -_-;;;

위처럼 해도 스테이트에 따른 애니메이션 변환 종류에는 가지수가 변화 되는게 없는거 같은데...
후움..... 고수님들.. 적절한 답변좀.. ㅠ _ㅠ
게임은 내가 살아 가는 목적이며
내가 살아 있는 이유다...

고로 난 게임을 개발 하고 있다
ymkim50
Posts: 7
Joined: 2005-01-22 14:28
Contact:

정확한 답변은 아니지만 참고할 만할 듯 합니다.

Post by ymkim50 »

Unreal Tournament 3나 Gears Of war의 에디터에서 AnimTree 부분을 보시면 도움이 될 듯 싶습니다.
이 에디터들은 상용이 아니고 게임을 구입하면 같이 포함되는 것이니 참고자료로서 괜찮은 것 같은데요,
이 AnimTree들을 보면 각 상태에 대응하는 처리 노드를 구성하여 트리 형식으로 조합할 수 있도록 되어있습니다.


정확한 답변은 아니지만 좋은 참고 자료가 될 듯 하여 답변 남겨 봅니다.^^
비회원

애니메이션 패턴을 fsm 으로요?

Post by 비회원 »

fsm ..

애니메이션 패턴을 fsm으로라..
상태와 조건 상태전이.. 가 애니메이션 패턴에 어떻게 적용한다는거죠?
이걸 fsm으로 해서 얻어지는 이익은 뭘까요?

생각해보니..
다계층 fsm 을 만들어 윗분과 마찬가지로 tree구조로 구성해서

ㅇ 상태구성..

걷기 - 일반 걷기
- 전투 걷기
- 전투 부상 걷기

서기 - 일반 서기
- 전투 서기
- 전투 부상 서기


ㅇ 조건구성..
hp, 모드

등으로 구성해서 걷기 를 액티브 하면 자동으로 hp, 모드에 따라 상태가 변경되도록 하는정도의
처리가 가능 하겠네요?

이런걸 말씀하시는건가요?
비회원

Post by 비회원 »

최고의 전문가들에게 배우는 온라인 게임 개발 테크닉중

[2.7 그럴듯한 캐릭터를 위한 수평적 상태 기계] 를 참고하시면 될듯합니다.
쌀밥
Posts: 1058
Joined: 2003-02-02 20:23
Location: THQ Inc.
Contact:

Re: FSM 을 이용하여 애니메이션 패턴을 적용 하려고 합니다

Post by 쌀밥 »

아래부분이 이해가 안되네요.
woona7035 wrote:위처럼 해도 스테이트에 따른 애니메이션 변환 종류에는 가지수가 변화 되는게 없는거 같은데...
FSM 으로 기대하는게 무엇인지 의아합니다. FSM 을 사용하면 애니메이션 변환 종류의 가지수가 줄어드는 건가요???

저는 FSM 으로 에니메이션 간의 연결 관계를 설정하는 시도가 상당히 적절하다고 생각합니다.
하지만 "합성" 하는 말을 OR 연산을 해서 더하라는 의미로 이해하시면 곤란한것 같습니다.

FSM 으로 "걷기" 가 있으면 걷기에서 "달리기"로 연결될수 있고, 달리는 중에는 "앉기"로 될수 없고 등의 연결 관계를 표현하는 것이니까 이 경우에 "동작 FSM" 을 갖을수 있겠고

이것과는 별게의 "위치 FSM" 같은걸을 갖어서 "높이", "중간", "낮음" 정도의 병렬적인 상태를 갖으면 되겠습니다. 요점은 이 두개의 FSM 이 별개로 분리되어야 한다는 것입니다. (다른말로 하면 "합성"이 되겠습니다만...)

UML 로 상태도(State chart)를 먼저 그린 다음에 코딩을 해보시길 권합니다.
I want to live in korea, making programs, but...
http://wrice.egloos.com
비회원

참고해보세요~

Post by 비회원 »

www.naturalmotion.com에서 morpheme 이라는 제품이 있습니다.~
지금 사용하고 있는데 상당히 맘에 드네요~
회사 다니시면 한국의 리셀러와 컨택해서 평가판을 사용할 수 있고 평가판 라이센스를 받으시면 코어부분 소스도 제공됩니다~
Locked