UAIPerceptionComponent를 통해 환경에서 발생하는 다양한 감각(Stimulus)을 객체 지향적으로 처리함UAISenseConfig 클래스를 상속받아 설정UAIPerceptionComponent를 추가하여 감각을 수신함UAISense_Sight나 UAISense_Hearing 같은 센스 컴포넌트를 추가할 필요 없이, UAIPerceptionStimuliSourceComponent를 추가하여 자극의 출처를 선언함UAIPerceptionComponent:ReportEvent() 함수를 호출하여 시스템에 자극을 보고함UAIPerceptionSystem에 의해 관리되므로, 시스템 전체의 인식 상태를 쉽게 디버깅 가능UPawnSensingComponent를 추가함UPawnSensingComponent가 주변 액터를 검사하여 감지 여부를 판단함AActor::SetReplicates(true) or 블루프린트 설정)Replicated 키워드를 통해 변수를 복제함AActor::GetLifetimeReplicatedProps() 함수에서 DOREPLIFETIME 매크로를 사용하여 복제할 변수 등록이 필요함ReplicatedUsing 키워드를 통해 값이 변경되었을 때 클라이언트가 특정 동작을 수행하게 할 수도 있음Server, Client, NetMulticast 키워드를 통해 실행 위치를 지정함| 조건 | 설명 | 사용 목적 |
|---|---|---|
COND_None | 조건 없음(기본값). 변수가 변경될 때마다 항상 복제됨. | 모든 클라이언트가 항상 알아야 하는 핵심 변수 |
COND_InitialOnly | 최초 한 번만 복제됨. 이후에는 복제되지 않음. | 액터가 스폰될 때 한 번만 설정하면 되는 값 |
COND_OwnerOnly | 액터의 소유자인 클라이언트에게만 복제됨. | 소유자 플레이어만 알아야 하는 개인 정보 |
COND_SkipOwner | 액터의 소유자를 제외한 모든 클라이언트에게 복제됨. | 소유자 클라이언트가 이미 로컬에서 해당 변수를 알고 있어 불필요한 복제를 막을 때 |
COND_Custom | 개발자가 커스텀 로직을 통해 복제 여부를 결정함. | 복제 관련성이 복잡한 경우(예: 팀원에게만 복제) |