인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

sunrise3225님의 프로필 이미지

작성한 질문수

절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스

BehaviorGraph - Random WayPoint, 병렬 처리

선생님 궁금한게 있는데요

작성

·

87

0

AI로직이 단순해서 비헤이비어 트리로 작성을 해서 적용을 했는데 만약에 몬스터의 수가 굉장히 많다고 하면 성능상에 문제가 없을까요? 그럴땐 코드로 처리를 하는게 좋을까요? 아니면 비헤이비어 트리에서 자체적으로 최적화를 해주나요?

답변 2

1

이재현님의 프로필 이미지
이재현
지식공유자

인프런 AI 인턴이 답변이 너무 빠르군요 ㅠㅠ

결론부터 말씀드리자면, BT에서 자체적으로 최적화 해주진 않습니다.

그리고 고민하시는 부분에 저도 충분히 공감합니다. BT의 경우 복잡한 NPC의 행동패턴을 도식화해 확장성을 염두한 기능입니다. 한번에 출현하는 NPC가 너무 많지 않고 적절한 규모일때 사용하시는 것이 가장 좋은 활용법이라고 생각합니다.

 

NPC가 굉장히 많다는 것은 뱀서류 게임 정도를 생각하신 것 같습니다. 당연히 성능상 이슈가 생길수 있습니다. NPC가 100~200씩 나온다면 기존 메카님으로 구현한다고 하더라도 최적화 이슈가 발생할겁니다.

 

케바케이지만 Animator 없이 코드에서 애니메이션을 연출하는 것이 가장 속도면에서는 유리합니다. 또한 더 많은 NPC가 등장한다면 DOTS 방식을 도입하는 것도 고려할 수 있습니다. 하지만 아직 DOTS에서는 애니메이션을 지원하지 않거나 제한적이라 완벽한 해결책이 될 수는 없습니다.

 

항상 프로파일러로 모니터링 하면서 최적화하는 방법외에는 딱히 정답을 찾을 수가 없습니다.

sunrise3225님의 프로필 이미지
sunrise3225
질문자

자세한 답변 너무 감사드려요.ㅠㅠ 혹시 뱀서류 게임에 적용해보면 어떨까 하고 생각하고 있었는데 해답을 주셔서 너무 감사합니다! 더욱 정진하겠습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. sunrise3225님.

AI 로직을 작성할 때 비헤이비어 트리를 사용하신다고 하셨네요. 비헤이비어 트리는 직관적이고 복잡한 AI 로직을 시각적으로 관리할 수 있는 큰 장점을 제공합니다. 그러나 몬스터의 수가 많아질 때 성능 문제가 발생할 수 있는 가능성에 대해서 말씀드리겠습니다.

1. 비헤이비어 트리의 성능:
비헤이비어 트리는 논리의 계층적 구성을 시각적으로 표현하기 때문에 개발의 편리성과 가독성을 제공하지만, 대규모 객체에 대한 처리 시 성능 부담이 있을 수 있습니다. 기본적으로 비헤이비어 트리 엔진은 스케줄링과 업데이트를 통해 최적화를 시도하지만 천 개 이상의 AI를 실시간으로 처리해야 할 경우 성능 저하를 경험할 수 있습니다.

2. 성능 개선 방법:
- 플로우 제어 최적화: 트리의 크기를 줄이고 마디의 개수를 최소화하세요.
- 업데이트 주기 제어: 각 비헤이비어 노드의 업데이트 주기를 다르게 하거나 필요할 때만 업데이트 실행해 부하를 줄일 수 있습니다.
- 병렬 처리: 가능하다면, AI 처리의 병렬화나 비동기 방식 처리도 고려해 볼 수 있습니다.

3. 코드로 대체 여부:
AI 로직을 코드로 직접 처리하는 것은 최적화의 가능성을 더 열어줄 수 있지만, 비헤이비어 트리만큼의 가독성과 유지보수의 편리함을 기대하기 어렵습니다. 그러므로 특정 로직을 코드로 최적화한 뒤 다시 트리에 통합하는 전략을 사용할 수 있습니다.

간단한 로직이나 개별 캐릭터의 행동을 비헤이비어 트리로 하되, 복잡한 처리나 빈번한 업데이트가 필요한 부분은 코드로 수행하는 하이브리드 방식을 추천드립니다.

관련 질문 및 답변:
유니티에서 비헤이비어 트리와 AI 성능 문제 해결에 대한 논의에서 AI 성능 관련 조언을 찾을 수 있습니다. 이 답변이 궁금증 해소에 도움이 되었으면 좋겠네요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.