개발작업중 문제되는 상황 파악되어 샘플 프로젝트로 동일하게 세팅하여 공유드립니다.
BP_NPC1 은 AIController1을 사용중이고 해당 컨트롤러는 ST_Test1로 BrainComponent가 동작되게끔 설정되어 있습니다.
ST_Test1은 ST_Test2가 LinkedAsset으로 연결되어있고 ST_Test2는 ST_Test3에 연결되어 있습니다.
ST_Test1은 최초 1회 처리를 피하기위해 별도의 컨디션이 들어가있는 상태입니다.
<br/>
확인된 문제 상황은
- 3중이상 LinkedAsset으로 돌아갈 때 가장 Depth 가 깊은 StateTree에서 Task완료의 처리를 트리 성공 혹은 실패로 설정한 경우
- 다음 Transition될 State를 계산해 해당 State를 OnEnter 처리하는데 이 때 EStateTreeRunStatus::Succeeded 를 리턴하게 되면
- TriggerTransitionsFromFrameIndex 에 잔여 값이 남게되어
- 다음 TriggerTransitions중 const int32 EndFrameIndex = TriggerTransitionsFromFrameIndex.Get(Exec.ActiveFrames.Num() - 1); 로직에서 1값을 반환해 ActiveFrames에 현재 크기에 맞지않는 배열 접근이 발생합니다.
<br/>
그래서 임시적으로 트리 성공/실패를 빼거나 상위 Tree의 State에서 Transition을 걸어 TriggerTransitionsFromFrameIndex 이 재조정될 수 있게 하고 있습니다.
관련하여 Epic issue Ticker이나 EPS 관련 게시물이 확인되지않아 관련 내용 해결이 가능할지 검토 부탁드리겠습니다.
[Attachment Removed]