목록언리얼 엔진/AI (4)
게임 개발 메모장
Service는 연결된 Composite이 활성화 되어 있다면 계속해서 구동 된다. 해당 Service의 DetailPanel에서 설정한 간격과 랜덤 편차에 따라 Tick이 일어난다. (디테일 패널의 서비스 항목) Service는 항상 호출되기에 AI 상태를 변경하는데에 주로 사용되는데, 주로 서비스에서는 특정 이벤트를 실행시켜 주기적으로 블랙보드 변수를 업데이트 한다. 이후에 하위 노드들에 그 변수에 따라 다양한 액션으로 실행 시킨다. * 공격 자체를 할지 말지 결정해주는 블랙보드 데코레이터 달아주기 플레이어 액터키가 설정되어 있으면 그때 실행해라! * 실행될때 마다 난수를 생성하는 서비스를 만들고 만약에 해당 Key값이 0이되면 Task3을 실행하는 로직
데코레이터는 객체 지향 설계에서 자주 언급되는 디자인 패턴중 하나인 Decorator Design Pattern과 같은 의미의 단어 이다. 즉, 기존에 존재하는 Class를 수정하지 않고 기능을 변경하기 위해 기존 Class를 감싸서 (Wrap을 한다고 함) 이 목적을 달성하는 패턴이다. 사용자는 기존 Class의 변경없이 부가적인 기능을 덧붙일 수 있는 장점을 지닌다. (이때 인터페이스는 동일해야 한다.) BT에서 데코레이터가 하는 역할도 똑같다. 데코레이터는 오직 하나의 자식 노드(즉, Task)를 가지는데 (즉, 바로 아래의 자식 노드를 감싸는 역할을 한다는 의미) 이 노드의 행위에 데코레이터가 영향을 준다. 가장 단순하게 자주 사용되는 것은 소위 Filter(필터) 라고 불리는 것으로 자식이 수행..
컴포짓은 상태들의 시작점이다. 상태가 복귀와 실행 플로우에서 어떻게 행동해야 하는지 정의한다. BT의 메인 요소는 'Task'이다. Task는 보다 복잡한 액션을 표현하는 서브 트리로 구성이 된다. 모든 Task들은 공통의 인터페이스를 가지고 있고, 그 자체가 독립적으로 모듈화되어 있어 계층적 구조를 쉽게 구성할 수 있다. Composite Composite 에는 크게 Selector와 Sequence 두 종류가 있다(사실 세 종류이다. Parallel Task). 이 둘 모두 그들의 자식 노드를 순차적으로 방문한다. 하나의 자식 노드가 수행을 완료하면 그 결과값(True or False)을 반환하는데 Composite는 그 결과값을 보고, 진행을 계속할지 멈출지를 결정한다. * Selector Sele..
사용자 혹은 AI(인공 지능)으로 제어 할 수 있는 Object AI Controller 에 기획 의도에 맞게 동작할 수 있게 작성한 BehaviorTree를 RunBehaviorTree를 활용해서 실행시킨다. Blackboard 1) Blackboard는 AI Bot이 의사결정을 하기 위해 필요한 정보를 저장하는 저장소이다. 2) 이 정보는 현재 AI Bot이 처한 여러 상황을 표현하게 되는데 하나의 AI Bot이 아닌 다수의 AI Bot이 협력과 의사결정을 위해 공유하는 공유 메모리로서의 역할 또한 할 수 있다. 왜 Blackboard를 사용할까? 1 효과적인 이벤트 주도형의 행동을 만들기 위해 (To Make Efficient Event-Driven Behaviors) 일반적으로 게임에서 인공 지능..