본문으로 건너뛰기
Unreal Engine 멀티플레이LESSON 22

입력, 카메라, UI는 어디서 처리할까

난이도입문 → 초급
예상 시간75분
선수지식21강의 소유 Character 이동

22강. 입력, 카메라, UI는 어디서 처리할까

1. 이번 강의에서 해결할 문제​

서버가 모든 플레이어 Widget을 만들거나 Simulated Proxy가 카메라를 활성화해 화면이 전환됩니다. UI 버튼이 GameMode 함수를 직접 호출하면 원격 클라이언트에서는 null입니다. 입력과 표현은 로컬, 결과 판정은 서버, 표시 데이터는 복제 상태라는 경계를 구현해야 합니다.

2. 학습 목표​

3. 핵심 개념​

입력 장치, 화면과 Widget은 각 클라이언트의 로컬 자원입니다. 서버에는 데디케이티드 환경에서 화면이 없으며 다른 클라이언트의 Widget을 조작할 수 없습니다. 로컬 UI는 복제 상태를 구독하고 버튼 입력은 PlayerController/Pawn의 Server RPC를 호출합니다.

기능실행 위치데이터 원본
이동·발사 입력 읽기소유 클라이언트로컬 장치
카메라 회전·화면 흔들림소유 클라이언트로컬 표현
팀 점수 HUD각 클라이언트GameState 복제 값
자기 체력 HUD소유 클라이언트Pawn Health RepNotify
준비 버튼 판정서버PlayerController RPC → PlayerState

4. 단계별 실습​

CaptureArenaPlayerController.cpp
void ACaptureArenaPlayerController::BeginPlay()
{
Super::BeginPlay();
if (!IsLocalController()) return;

ULocalPlayer* LocalPlayer = GetLocalPlayer();
UEnhancedInputLocalPlayerSubsystem* InputSubsystem =
LocalPlayer
? LocalPlayer->GetSubsystem<UEnhancedInputLocalPlayerSubsystem>()
: nullptr;

if (InputSubsystem && DefaultMappingContext)
{
InputSubsystem->AddMappingContext(DefaultMappingContext, 0);
}

EnsureHudCreated();
BindReplicatedViewModels();
}

void ACaptureArenaPlayerController::SetReadyFromUi(bool bReady)
{
if (!IsLocalController()) return;
Server_SetReady(bReady, ++LocalReadyRequestId);
}
CaptureArenaCharacter.cpp
void ACaptureArenaCharacter::OnRep_PlayerState()
{
Super::OnRep_PlayerState();

if (IsLocallyControlled())
{
NotifyLocalControllerPlayerStateReady();
}
}

HUD는 Tick마다 GameState를 Polling하지 않고 RepNotify/Delegate에서 ViewModel 값을 갱신합니다. 초기 바인딩 시 현재 값을 한 번 읽어 이벤트 구독 전 복제된 상태도 표시합니다. Unbind 없이 Pawn을 교체하지 않습니다.

5. 코드가 동작하는 이유​

Local Player Subsystem은 클라이언트의 실제 입력 장치와 연결되므로 로컬 Controller에서만 접근합니다. 서버가 확정한 상태는 GameState·PlayerState·Pawn RepNotify로 도착하고 UI는 그 결과를 표현합니다. UI가 직접 점수를 쓰지 않아 화면 코드가 권한 경계를 넘지 않습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

입력, 카메라, UI는 어디서 처리할까 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“입력, 카메라, UI는 어디서 처리할까”의 역할과 의존성을 판단하는 올바른 기준은 무엇인가요?
  2. 문제 2“입력, 카메라, UI는 어디서 처리할까”에서 ‘UI가 GameMode Cast’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

22강. 입력, 카메라, UI는 어디서 처리할까 미완료 상태