분류 전체보기
-
[UE5] GAS를 활용한 캐릭터의 입력 처리UE5 2025. 1. 2. 12:30
플레이어 캐릭터의 ASC 설정분수대 액터와 같이 플레이어 캐릭터에 설정하는 것이 가능하지만 네트워크 멀티플레이를 감안했을 때, 서버에서 클라이언트로 배포되는 액터가 보다 적합이 때 많이 사용하는 액터가 주기적으로 플레이어 정보를 배포하는 PlayerState 액터따라서 Owner를 PlayerState로 설정하고, Avatar를 Character로 설정하는 것이 일반적인 방법// ABGASCharacterPlayer.cppAABGASPlayerState* GASPS = GetPlayerState();ASC = GASPS->GetAbilitySystemComponent();// Owner는 PlayerState, Avatar는 Character(this)ASC->InitAbilityActorInfo(GAS..
-
[UE5] GAS(GamePlay Ability System)의 시작UE5 2024. 12. 30. 14:40
게임플레이 어빌리티 시스템(GAS) 프레임 워크액터가 소유하고 발동할 수 있는 어빌리티 및 액터 간의 인터랙션 기능을 제공하는 프레임워크RPG, 액션 어드벤처, MOBA 장르의 제작을 쉽게하기 위한 도구. 대부분의 게임 제작에 활용 가능GAS 프레임워크의 장점유연성과 확장성 : 다양하고 복잡한 게임 제작에 대응할 수 있도록 범용적으로 설계모듈러 시스템 : 각 기능에 대한 의존성이 최소화되도록 설계네트워크 지원 : 네트워크 멀티플레이어 게임에서도 활용 가능하도록 설계데이터 기반 설계 : 데이터를 기반으로 동작하도록 설계완성도 : 포트나이트 게임 서비스를 통해 실효성 검증GAS 프레임워크의 단점배우는 학습 비용 : 구성 요소가 많아서 학습하는 비용이 꽤 큼오버헤드 : 작은 규모의 프로젝트에는 복잡한 구조가 ..
-
[UE5] 네트워크 멀티플레이어 최적화UE5 2024. 12. 26. 17:36
네트워크 멀티플레이어를 위해 고려할 최적화 요소 [일반적으로 최적화시 고려할 사항]불필요한 액터의 리플리케이션 옵션을 끄기액터에 맞는 최적의 업데이트 빈도(Frequency)와 우선권(Priority) 설정연관성(Relevancy)을 위한 최적의 조건 설정프로퍼티 리플리케이션의 조건 설정필요시 휴먼(Dormancy) 상태의 설정데이터 크기의 양자화 (FVector_NetQuantize)[기타 심화 주제]구조체 데이터 전송의 최적화 설계 (NetSerialize)프로퍼티 리플리케이션의 푸시 모델 설정필요시 빠른 배열 자료구조를 사용한 데이터 전달 (FFastArraySerializer)빠른 리플리케이션 엔진의 교체 (ReplicationGraph, Iris) [NetSerialize 데이터 설계]네크워크로..
-
[UE5] 움직임 리플리케이션UE5 2024. 12. 20. 08:15
다음은 언리얼 공식 문서 Networked Movement in the Character Movement Component의 일부를 번역한 것이다. Autonomous Proxy (자율 프록시)캐릭터는 소유 클라이언트의 기기에서 실행되며, 플레이어가 로컬에서 직접 제어합니다. Authority (권한)캐릭터는 게임을 호스팅하는 서버에 존재합니다. Simulated Proxy (시뮬레이티드 프록시)캐릭터는 다른 클라이언트에 존재하며, 원격으로 제어되는 캐릭터를 볼 수 있습니다.이 캐릭터는 서버에서 AI에 의해 제어되거나, 다른 클라이언트의 Autonomous Proxy에 의해 제어될 수 있습니다. 복제(Replication) 프로세스는 TickComponent 함수 내에서 반복적으로 수행되며, 매 틱마..
-
[UE5] 전역 네임스페이스와 ::의 활용UE5 2024. 12. 19. 06:10
전역 네임스페이스(Global Namespace)란? C++에서 **전역 네임스페이스(Global Namespace)**는 특정 네임스페이스에 속하지 않은 함수, 변수, 클래스, 열거형 등이 기본적으로 포함되는 가장 바깥쪽의 범위를 뜻한다. 전역 네임스페이스는 모든 파일에서 접근할 수 있는 기본 범위이다.전역 네임스페이스는 이름이 없는 네임스페이스로 간주되며, 이를 명시적으로 참조하려면 범위 지정 연산자(::)를 사용한다. 전역 네임스페이스의 특징 모든 코드에서 접근 가능:전역 네임스페이스에 있는 요소는 기본적으로 모든 소스 파일에서 접근 가능기본 범위:함수, 변수, 클래스 등을 아무 네임스페이스에도 포함하지 않고 선언하면 자동으로 전역 네임스페이스에 포함범위 지정 연산자(::):전역 네임스페이스를 ..
-
[UE5] RPC 사용시 주의할 점UE5 2024. 12. 17. 07:21
각 RPC 종류마다 올바르게 사용할 것Client, NetMulticast는 서버에서만 호출Server는 클라이언트에서 호출하지만, 플레이어로 참여하는 리슨서버의 경우 호출 가능Client, Server는 오너십을 가지고 있는 액터에서 호출컨트롤러 : isLocalController 함수폰 : isLocallyControlled 함수Tick 및 빈번하게 호출되는 함수에 Reliable RPC를 사용하지 말 것NetMulticast RPC의 잦은 사용은 네트워크 부하를 가중시키니 신중을 기할 것게임 플레이 및 액터 상태에 영향을 미치는 경우 RPC보다 프로퍼티 리플리케이션을 사용할 것
-
[UE5] RPC(Remote Procedure Call)UE5 2024. 12. 17. 05:45
RPC(Remote Procedure Call)이란?원격 프로시저(함수) 호출의 약자원격 컴퓨터에 있는 함수를 호출할 수 있도록 만든 통신 프로토콜네트워크 멀리플레이에서 서버와 클라이언트간에 빠르게 행동을 명령하고 정보를 주고받는데 사용언리얼 엔진에서 클라이언트에서 서버로 통신하는 유일한 수단 제공속성형 장식이나 휘발성인 비신뢰성 게임플레이를 위한 것(사운드 재생, 파티클 스폰 등) 액터의 핵심적인 기능과는 무관한 일시적 효과와 같은 작업을 하는 이벤트를 처리 Client RPC서버에서 클라이언트로 호출하는 RPC이를 활용해 특정 클라이언트에게만 명령을 보낼 수 있음서버에서 명령을 보낼 클라이언트의 커넥션을 소유한 액터를 사용해야 함(AActor::GetNetConnection)대부분의 경우 서버, 클라..
-
[UE5] 액터 리플리케이션UE5 2024. 12. 17. 04:20
액터 리플리케이션이란?특정 플레이어에 속한 액터의 정보를 네트워크 내 다른 플레이어에게 복제하는 작업클라이언트-서버 모델에서는 대부분 서버에서 클라이언트로 전달크게 프로퍼티 리플리케이션과 RPC(Remote Procedure Call)로 나뉨기본 액터의 로딩클라이언트가 초기화 될 때 모든 액터 정보를 서버로부터 받는 것은 비효율적기본 배경에 관련된 액터는 맵을 통해 스스로 로딩하도록 설계고정액터(배경 액터 등)에 대해 NetLoadOnClient 속성을 체크(기본값)클라이언트가 초기화될 때 서버와 통신 없이 자체적으로 로딩 프로퍼티 리플리케이션네트워크 데이터를 최소화하기 위해 모든 변경 사항을 보내는 대신, 변경을 유발한 속성 값만을 전달액터의 리플리케이션 속성을 참으로 지정bReplicates 속성을 ..