Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

UnrealEngineer

[ UnrealEngine5 ] 액터의 네트워크 역할 본문

언리얼엔진5

[ UnrealEngine5 ] 액터의 네트워크 역할

UnrealEngineer 2024. 8. 12. 10:39

- 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 ] : 서버에 있지 않는 경우 서버의 역할을 나타낸다.