Unreal Engine 멀티플레이LESSON 07
Authority, Role, 로컬 플레이어 판별하기
난이도입문 → 초급
예상 시간65분
선수지식6강의 NetMode 로그
7강. Authority, Role, 로컬 플레이어 판별하기
1. 이번 강의에서 해결할 문제
리슨 호스트 Character는 Authority이면서 Locally Controlled입니다. 원격 클라이언트의 자기 Character는 Authority가 아니지만 Autonomous Proxy이고 Locally Controlled입니다. HasAuthority()를 로컬 플레이어 판별처럼 사용하면 원격 클라이언트 입력과 UI가 동작하지 않습니다.
2. 학습 목표
3. 핵심 개념
| 질문 | API | 대표 사용 |
|---|---|---|
| 이 Actor 복사본이 권위 있는 서버 원본인가 | HasAuthority() | 데미지·Spawn·점수 변경 |
| 이 복사본의 로컬 네트워크 역할은 무엇인가 | GetLocalRole() | 진단, Autonomous/Simulated 분기 |
| 이 Pawn을 이 머신의 로컬 플레이어가 제어하는가 | IsLocallyControlled() | 입력, 카메라, 로컬 HUD |
| 이 Controller가 로컬 Controller인가 | IsLocalController() | UI 생성과 입력 매핑 |
Authority는 “내가 이 Actor의 정답을 결정하는가”이고 Ownership은 “어느 연결과 연결돼 RPC 대상이 되는가”입니다. 서버가 모든 Actor에 Authority를 가져도 각 Actor를 특정 클라이언트가 소유하는 것은 아닙니다.
4. 단계별 실습
CaptureArenaCharacter.cpp
void ACaptureArenaCharacter::BeginPlay()
{
Super::BeginPlay();
if (HasAuthority())
{
InitializeAuthoritativeCombatState();
}
if (IsLocallyControlled())
{
InitializeLocalInputAndCamera();
}
if (GetLocalRole() == ROLE_SimulatedProxy)
{
InitializeRemotePresentation();
}
UE_LOG(LogTemp, Display,
TEXT("Character=%s Authority=%d Local=%d LocalRole=%s RemoteRole=%s"),
*GetName(), HasAuthority(), IsLocallyControlled(),
*UEnum::GetValueAsString(GetLocalRole()),
*UEnum::GetValueAsString(GetRemoteRole()));
}
| 관찰 위치 | 자기 Character | 상대 Character |
|---|---|---|
| 리슨 호스트 | Authority + Local | Authority, 보통 Local 아님 |
| 원격 클라이언트 | Autonomous Proxy + Local | Simulated Proxy |
| 데디케이티드 서버 | Authority, Local 아님 | Authority, Local 아님 |
PIE에서 세 위치의 로그를 실제 표와 대조합니다. Actor 종류와 Possess 시점에 따라 초기 프레임 결과가 달라질 수 있으므로 PossessedBy, OnRep_Controller와 BeginPlay 로그도 비교합니다.
5. 코드가 동작하는 이유
규칙 초기화는 서버 원본에서만 실행되어 중복 상태를 막습니다. 입력과 카메라는 로컬로 제어되는 Pawn에서 실행되어 리슨 호스트와 원격 클라이언트 모두 지원합니다. Simulated Proxy는 입력을 만들지 않고 서버 이동 결과를 표현합니다. 한 Actor에서 조건들이 상호 배타적이라고 가정하지 않는 것이 중요합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2Authority, Role, 로컬 플레이어 판별하기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
7강. Authority, Role, 로컬 플레이어 판별하기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.