UnrealEngineer
[ UnrealEngine5 ] 액터의 네트워크 역할 본문
- Local Role / Remote Role
◆ 액터 단위로 액터를 '신뢰' 할 수 있는지를 파악해야하는데 이를 위해 필요한 것이 '역할'이다.
클라이언트 - 서버 모델에서 서버에 존재하는 액터만이 신뢰되며 이를 Authority를 가진다고 표현함.
게임플레이에 영향을 미치는 '게임로직'은 서버인지를 파악해서 서버에서만 동작하도록 설정해야한다.
Local Role : 현재 동작하는 어플리케이션을 중심으로 해당 어플리케이션의 역할을 로컬역할
Remote Role : 로컬역할과 커넥션으로 맺어진 원격 어플리케이션의 역할이 Remote Role이다.
(자신의 로컬역할이 상대방의 리모트역할이 된다.)
Authority : 신뢰할 수 있는 역할 < 게임 로직을 수행 >
AutonomousProxy : Authority를 가진 오브젝트의 복제품 < 일부 게임 로직을 수행함 >
클라이언트 입력 정보를 서버 전송 ( ex. PlayerController, Pawn)
SimulatedProxy : Authority를 가진 오브젝트의 복제품 < 게임 로직을 수행하지 않음 > = 허상 액터
▣ 게임모드는 서버에만 존재하기 때문에 HasAuthority()를 호출할 필요가 없다.
▣ 폰은 Autonomous와 Simulated가 혼재되어 있기 때문에 API를 사용해서 로직을 구분해야한다.
▣ 애니메이션 재생이나 UI 관련 로직은 클라이언트에만 사용한다.
(서버는 변경된 속성을 전달하고, 변경된 속성에 따라 애니메이션과 UI를 바꾸도록 설계한다.)
[ Local Role ]
언리얼엔진 네트워크 역할
ENetRole::ROLE_Authority : 서버
ENetRole::ROLE_AutonomousProxy : 사용자의 입력값을 전달하는 폰 (내가 컨트롤하는 폰)
ENetRole::ROLE_SimulatedProxy : 서버에서 복제되어 출력되는 폰 (다른 유저의 폰)
서버에서는 모든 폰의 ENetRole::ROLE_Authority이다.
클라이언트에서 내가 조종하는 폰은 ROLE_AutonomousProxy이고
나머지 폰은 ENetRole::ROLE_SimulatedProxy이다.
[ Remote Role ] : 서버에 있지 않는 경우 서버의 역할을 나타낸다.
'언리얼엔진5' 카테고리의 다른 글
[ UnrealEngine5 ] 액터의 리플리케이션 (0) | 2024.08.23 |
---|---|
[ UnrealEngine5 ] 연결과 오너 (0) | 2024.08.21 |
[ UnrealEngine5 ] 게임모드와 로그인 (0) | 2024.08.19 |
[ UnrealEngine5 ] 캐릭터 애니메이션 (0) | 2024.08.19 |
[ UnrealEngine5 ] 입력 시스템 설정(Inhanced Input) (0) | 2024.08.14 |