Game AI 39

퍼지 상태 머신 (Fuzzy State Machine)

개요 퍼지 상태 머신의 종류는 여러 가지가 있을 수 있다. 전통적인 상태 머신에 퍼지 요소를 조금 섞으면 퍼지 상태 머신이라고 부르기도 한다. 상태끼리의 Transition이 퍼지 로직을 사용할 수도 있고, 아니면 상태 자체가 퍼지 상태일 수 있으며 둘 다일 수도 있다. 알고리즘 퍼지 상태에 전통적인 전이(Transition)를 사용하는 퍼지 상태 머신을 구현한다고 하자. 전통적인 상태 머신에서는 현재 상태만을 저장하는 것과 달리 모든 상태의 소속도를 저장한다. 어떤 상태가 활성화 됐는지 알아보려면 그냥 모든 상태의 소속도를 보면 된다. 그러나 실사용에서는 몇몇의 상태만이 한 번에 활성화 되어 있는 경우가 많으므로 활성화된 상태를 저장하는 리스트를 따로 마련하는 것이 좋다. 아무튼 이렇게 활성화된 상태들..

Game AI 2022.11.02

퍼지 로직 의사 결정(Decision making)

2022.10.03 - [Game AI] - 퍼지 로직(Fuzzy Logic) -2 개요 퍼지 로직은 and, or, not을 사용하는 의사결정 시스템이라면 모두 적용이 가능하다. 의사 결정을 내릴 때는 항상 0혹은 1로만 표현할 수 있는게 아니다. 예를 들어 자동차의 가속이나 브래이크 패달은 0.5만큼 누를 수도 있어야 한다. 이런 경우에 전통적인 로직으로는 표현의 한계가 있다. 여기에 퍼지 로직을 접목시키면 이와 같은 grey area (0과1사이의 값)를 표현하는데 도움이 된다. 알고리즘 인풋은 실수, 열거형, boolean 등이 될 수 있다. 각각의 인풋은 퍼지 상태(fuzzy state)와 매칭되고 이런 매칭은 소속 함수를 통해 이뤄진다. 하나의 인풋이 여러 개의 퍼지 상태로 분리될 수 있다. ..

Game AI 2022.10.23

퍼지 로직(Fuzzy Logic) -2

역 퍼지화 (Defuzzification) 어떤 로직을 통해 퍼지 집합들의 소속도를 구했다고 가정하자. 소속도 그 자체는 사용하기 힘든 데이터이기 때문에 이걸 다시 쓸만한 데이터로 바꾸는 과정이 필요하다. 이 과정을 역 퍼지화(Defuzzification)라고 한다. 위와 같은 소속함수가 있다고 하자. 그리고 어떤 로직을 통해 퍼지 집합 {"기어가기", "걷기", "달리기"}에 대해 각각 0.2, 0.7, 0.5의 소속도를 얻어 냈다고 하자. 이걸 다시 '이동 속도'로 변환할 수 있을까? 적어도 위 소속함수 그래프에서 소속도를 다시 이동속도로 변환하기는 어려울 것 같다. 따라서 역퍼지화에는 이를 위한 여러가지 기법이 있으며 퍼지화와 달리 '이게 정답이다'하는 방법이 존재하지도 않는다. 다음은 역퍼지화 기..

Game AI 2022.10.03

퍼지 로직(Fuzzy Logic) - 1

개요 만약 어떤 캐릭터가 '건강함'과 '아픔' 상태를 가질 수 있다고 하자. 기존의 로직에서는 캐릭터는 건강하거나 아프거나 둘 중 하나만 표현할 수 있지만 그 사이를 표현할 수는 없다. 퍼지 로직(Fuzzy Logic)은 이러한 '점진적 상태'를 표현하기 위해 사용할 수 있다. 다만 대부분의 경우에서 퍼지 로직보다 확률 기반의 로직을 사용하는 것이 더 낫다. 왜냐면 퍼지 로직을 기반으로한 AI는 결국 상대방에게 다 털릴 수 있기 때문이다. (행동이 결정적이기 때문에 패턴이 파훼될 수 있다) 그럼에도 퍼지 로직은 "경계 상태일 때는 천천히 걸어라"같은 간단한 동작을 구현하기 쉽기 때문에 이러한 부분에서는 대중적이다. 퍼지 집합(Fuzzy Sets) 전통적인 로직에서는 "Predicate"(술어, 참/거짓을..

Game AI 2022.10.02

Behavior Tree(5) - 트리 생성, 한계

이전 글 : 2022.09.05 - [Game AI] - Behavior Tree (4) - 데이터 전달하기(Blackboard) 트리 생성(Instantiating) OOP에서는 클래스와 객체를 나눈다. 클래스는 추상적인 컨셉이고 인스턴스는 실제 존재하는 것으로 구분한다. 이런 구분은 웬만한 경우에 괜찮지만 아닌 경우도 있다. 특히 게임 개발에서는 클래스와 인스턴스 두 개의 layer가 아니라 세 개의 layer가 필요한 경우가 있다. Layer1 이건 그냥 우리가 아는 클래스의 개념이다. 실제하지 않는 추상적인 개념. Layer2 이건 우리가 아는 인스턴스의 개념이다. 위 Behavior Tree에는 두 개의 [공격] Task 인스턴스가 있다고 볼 수 있다. Layer3 하나의 Behavior Tre..

Game AI 2022.09.05

Behavior Tree (4) - 데이터 전달하기(Blackboard)

이전 글: 2022.08.30 - [Game AI] - Behavior Tree (3) - Parallel Behavior Tree (3) - Parallel 이전 글 : 2022.08.27 - [Game AI] - Behavior Tree (2) - 확률, Decorator, 리소스 보호 Behavior Tree (2) - 확률, Decorator, 리소스 보호 이전 글 : 2022.08.21 - [Game AI] - Behavior Tree (1) - 기초 Behav.. tsyang.tistory.com 데이터 전달은 어떻게? 캐릭터가 여러 명의 적들을 발견한다. 캐릭터는 그 중 한 명의 타겟을 선택해서 공격한다. 그렇다면 이 캐릭터의 Behavior Tree에서 [타겟을 선택]하는 Task가 어떻게..

Game AI 2022.09.05

Behavior Tree (3) - Parallel

이전 글 : 2022.08.27 - [Game AI] - Behavior Tree (2) - 확률, Decorator, 리소스 보호 Behavior Tree (2) - 확률, Decorator, 리소스 보호 이전 글 : 2022.08.21 - [Game AI] - Behavior Tree (1) - 기초 Behavior Tree (1) - 기초 2021.12.27 - [Game AI] - 의사 결정 - State machines 의사 결정 - State machines 2021.10.21 - [Game AI] - 의사 결정.. tsyang.tistory.com Parallel Task Parallel Task는 Composite Task의 한 종류이다. Parallel은 Sequence와 유사하다. Ch..

Game AI 2022.08.30

Behavior Tree (2) - 확률, Decorator, 리소스 보호

이전 글 : 2022.08.21 - [Game AI] - Behavior Tree (1) - 기초 Behavior Tree (1) - 기초 2021.12.27 - [Game AI] - 의사 결정 - State machines 의사 결정 - State machines 2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Mak.. tsyang.tistory.com 확률적으로 하위 Task 수행 당연하게도, Selector나 Sequence에서는 Child Task를 랜덤한 순서로 실행시킬 필요가 있다. 이런 경우 Selector나 Sequecne가 수행되기 전에 자식 T..

Game AI 2022.08.27

Behavior Tree (1) - 기초

2021.12.27 - [Game AI] - 의사 결정 - State machines 의사 결정 - State machines 2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 구현 가능하고 이해하기 쉽다는 장점을 가지.. tsyang.tistory.com 개요 Behavior Tree는 AI 캐릭터를 만들 때 가장 많이 사용되는 방식 중 하나이다. Hierarchical State Machine과 유사한 점이 많은데, Behavior Tree에서는 State 대신 Task라는 개념을 쓴다. Task는 sub-tree..

Game AI 2022.08.21

의사 결정 - State machines

2021.10.21 - [Game AI] - 의사 결정 - Decision Tree 의사 결정 - Decision Tree Decision Tree Decision Tree는 Decision Making 구현법 중 하나이다. 빠르고, 쉽게 구현 가능하고 이해하기 쉽다는 장점을 가지고 있다. 위 트리에서 Leaf 노드는 실행할 액션(output)이 된다. input이 어떻게.. tsyang.tistory.com State Machine 개요 State Machine은 캐릭터가 정해진 행동들 중 하나를 골라 행동할 때 쓰기 좋다. (예를 들면, 정찰, 공격, 대기 중 하나를 선택해서 행동하는 경비원 AI) GoF의 상태패턴을 사용한다고 보면 된다. State Machine은 Script와 함께 쓰이는일이 많..

Game AI 2021.12.27