언리얼엔진5 공부

2025년 12월 31일 TIL

Client Side 2025. 12. 31. 23:45

1. [Unreal Engine] Multiplayer Replication & Actor Lifecycle

핵심 요약: 멀티플레이어 환경에서 액터의 생성 및 동기화 메커니즘 이해.

  • Network Role 이해:
    • Role == ROLE_Authority (서버)와 Role == ROLE_SimulatedProxy (클라이언트)의 차이를 명확히 하고, 중요한 로직(데미지 판정, 아이템 획득)은 반드시 서버에서 처리해야 함을 복습.
  • Property Replication:
    • UPROPERTY(Replicated)와 GetLifetimeReplicatedProps를 사용하여 변수 값을 동기화할 때, 네트워크 대역폭 최적화를 위해 꼭 필요한 데이터만 복제하는 습관을 기르는 중.
  • Validation & Safety:
    • 언리얼 코딩 표준에 따라 if(IsValid(Ptr))와 Cast<T> 사용 시 방어적 코딩을 적용. 특히 멀티플레이어에서는 포인터가 유효하지 않은 시점이 존재할 수 있으므로 check()보다는 ensure()나 if문을 활용한 예외 처리가 중요함을 학습.

2. [C++] 언리얼 스타일 코딩 표준 (Naming Convention)

핵심 요약: 넷마블 등 대형 개발사가 요구하는 유지보수 가능한 코드 작성법 숙달.

  • Prefix 규칙 준수:
    • A (Actor), U (Object), F (Struct), E (Enum), b (Boolean) 접두사 사용 생활화.
    • PascalCase를 사용한 멤버 변수 선언으로 코드 가독성 확보.
  • Performance Optimization:
    • Tick() 함수 대신 GetWorldTimerManager().SetTimer()를 사용하여 불필요한 연산 낭비 줄이기.
    • TArray와 std::vector의 차이점을 이해하고, 언리얼의 가비지 컬렉션(GC) 시스템과 호환되는 TArray를 우선적으로 사용.
  •  

💡 오늘의 인사이트

"멀티플레이어 게임(Cop and Robber) 개발에서 가장 중요한 것은 **'서버는 절대 클라이언트를 믿지 않는다'**는 원칙이다. 모든 클라이언트 요청은 서버에서 검증되어야 하며, 이를 위해 UFUNCTION(Server, Reliable, WithValidation)의 활용법을 더 깊게 파고들 필요가 있다."