매스 회피 개요

언리얼 엔진 5의 매스 회피 시스템에 대한 개요입니다.

Choose your operating system:

Windows

macOS

Linux

개요

매스 회피(Mass Avoidance)MassEntity와 통합된 포스 기반 회피 시스템입니다. 이 시스템은 매스 엔티티 시스템을 사용하는 모든 엔티티에 대해 높은 퍼포먼스의 회피를 제공합니다.

시스템은 UMassMovingAvoidanceProcessor 를 사용하여 다양한 입력을 처리하고 FMassForceFragment 에 스티어링 포스를 출력합니다. 이 출력 포스는 엔티티가 환경 내 다른 엔티티로부터 멀어지도록 하는 데 사용됩니다.

시스템 입력

입력

설명

FMassForceFragment

엔티티에 적용되어 다른 엔티티에서 멀어지도록 스티어링하는 포스를 나타냅니다.

FMassNavigationEdgesFragment

엔티티의 회피에 사용되는 에지(벽) 목록을 제공합니다.

FMassMoveTargetFragment

엔티티의 타깃 대상을 나타냅니다. 또한 전진 방향, 현재 상태(가만히 서 있기, 이동하기 등)와 같은 부가 정보도 포함되어 있습니다.

FDataFragment_Transform

엔티티의 트랜스폼을 나타냅니다.

FMassVelocityFragment

엔티티의 속도를 나타냅니다.

FDataFragment_AgentRadius

엔티티의 반경을 나타냅니다.

시스템 출력

출력

설명

FMassForceFragment

엔티티에 적용되는 최종 스티어링 포스입니다.

시스템 실행

UMassMovingAvoidanceProcessor

UMassMovingAvoidanceProcessor 는 각 엔티티에 대한 분리 포스와 회피 포스의 합을 계산합니다. 이 포스는 가까운 엔티티와 장애물에서 발생합니다.

다른 엔티티는 콜라이더(FMassAvoidanceColliderFragment 참조)로 표시되며, 캡슐이나 알약 모양을 띱니다. 각각 사람과 탈것에 사용됩니다. 몇 가지 세팅을 조정하여 이 포스 이펙트의 균형을 맞출 수 있습니다.

근처의 엔티티는 FNavigationObstacleHashGrid2D (UMassNavigationSubsystem 소유)를 사용하여 모이며, 가장 가까운 엔티티들만 고려됩니다. 장애물은 에지로 표시되며, FMassNavigationEdgesFragment 에서 발생합니다. 회피 포스는 예측적입니다. 회피 포스의 방향이 미래의 임팩트 위치로부터 계산된다는 뜻입니다. 분리 포스는 환경으로부터 느슨한 거리를 유지하고자 하는 직각 포스입니다.

UMassStandingAvoidanceProcessor

UMassStandingAvoidanceProcessor 는 장소에 엔티티가 서 있을 경우 사용되는 프로세서의 유사한 버전입니다.

UMassNavigationObstacleGridProcessor

UMassNavigationObstacleGridProcessor 는 장애물의 그리드 위치를 FNavigationObstacleHashGrid2D 에 업데이트하는 데 사용됩니다.

UMassZoneGraphLaneCacheBoundaryProcessor

UMassZoneGraphLaneCacheBoundaryProcessor 는 ZoneGraph와 함께 사용되며, 현재 캐시된 후속 레인 세그먼트에서부터 에지를 빌드합니다(FMassZoneGraphCachedLaneFragment 및 FMassZoneGraphPathFollowTask 참조).

이 에지는 FMassNavigationEdgesFragment 에 추가됩니다.

시스템 세팅

매스 회피 세팅은 FMassMovingAvoidanceParametersFMassStandingAvoidanceParameters 에 저장됩니다. 모든 사용 가능 세팅에 대한 자세한 설명은 프로젝트 파일의 MassAvoidanceFragments.h 를 참조하세요.

매스 회피 디버깅

비주얼 로거(Visual Logger)게임플레이 디버거(Gameplay Debugger) 를 사용하여 매스 회피 시스템을 디버깅할 수 있습니다.

비주얼 로거

비주얼 로거 를 사용하여 에디터에서 다음과 같은 카테고리를 표시할 수 있습니다.

카테고리

설명

LogAvoidance

초기 및 최종 스티어링 포스, 현재 엔티티와 같은 기본 정보를 표시합니다.

LogAvoidanceVelocity

현재 속도 및 엔티티의 원하는 속도를 표시합니다.

LogAvoidanceAgents

장애물 에지, 예측된 콜리전, 엔티티와 연관된 포스를 표시합니다.

비주얼 로거 활성화하기

  1. 툴(Tools) > 디버그(Debug) > 비주얼 로거(Visual Logger) 를 클릭하여 비주얼 로거 창을 엽니다.

    툴 - 디버그 -비주얼 로거를 클릭하여 비주얼 로거 창 열기

  2. 목록에서 MassSimulationSubsystem 트랙을 선택합니다.

  3. 편집(Edit) > 에디터 개인설정(Editor Preferences) 으로 이동하여 에디터 개인설정 창을 엽니다. 비주얼 로거(Visual Logger) 카테고리를 클릭하고 최근 데이터로 계속하기(Stick to Recent Data) 체크 박스를 활성화하여 실시간 데이터를 표시합니다.

  4. ~ 키를 눌러 명령줄 을 열고 ai.debug.mass.DebugEntity 또는 ai.debug.mass.SetDebugEntityRange 를 입력하여 디버깅 동안 표시될 엔티티를 설정합니다.

  5. 플레이 세팅 메뉴 버튼을 누르고 시뮬레이트(Simulate) 를 클릭하여 에디터에서 디버그 시각화를 확인합니다.

    시뮬레이트 누르기

    시뮬레이트를 눌러 에디터에서 디버그 시각화 확인하기

비주얼 로거 사용에 대한 자세한 내용은 비주얼 로거 문서를 참조하세요.

게임플레이 디버거

게임플레이 디버거 를 사용하여 에디터에서 엔티티에 대한 타깃 이동, 스티어링, 콜라이더 등의 정보를 표시할 수 있습니다.

게임플레이 디버거 활성화하기

게임플레이 동안 ` 키를 눌러 게임플레이 디버거를 활성화합니다. 그런 다음 Shift + O 를 눌러 엔티티 개요(Entity Overview) 를 확인하거나 Shift + V 를 눌러 회피 를 표시합니다.

게임플레이 동안 ` 키를 눌러 게임플레이 디버거 활성화

매스 회피에 게임플레이 디버거를 사용하는 방법에 대한 자세한 내용은 GameplayDebuggerCategory_Mass.cpp 소스 파일을 참조하세요.