Make Unreal REAL.
article thumbnail
RPC (Remote Procedure Call)

Unreal Engine 5 C++ Multiplayer Shooter RPC (원격 프로시저 호출, Remote Procedure Call) 로컬에서 호출하지만, 다른 원격 컴퓨터에서 실행되는 함수 인자를 전달할 수 있다. Actor에서 호출되어야 한다. (Actor Component에서도 호출할 수 있다.) Actor는 Replicated 상태여야 한다. RPC 함수 선언 의미 UFUNCTION(Server) void ServerRPCFunction(); 클라이언트가 서버에 RPC를 요청 UFUNCTION(Client) void ClientRPCFunction(); 서버가 클라이언트에 RPC를 요청 UFUNCTION(NetMulticast) void MulticastRPCFunction(); 서버가 ..

article thumbnail
무기 장착

Unreal Engine 5 C++ Multiplayer Shooter 캐릭터에서 전투 관련 기능을 관리하기 위해 새로운 액터 컴포넌트를 생성한다. 당장은 Tick 기능을 사용하지 않을 것이므로 꺼준다. 캐릭터에 액터 컴포넌트를 추가한다. 액터 컴포넌트의 리플리케이션은 변수와는 다른 방식으로 지정한다. 컴포넌트를 소유한 Actor는 복제된 상태여야 한다. UActorComponent::SetIsReplicated() 함수에 true를 전달한다. 액터의 생성자에서 호출하면 그 액터에서만 복제하겠다는 뜻이고, 컴포넌트 자체의 생성자에서 호출하면 항상 복제된 컴포넌트로 사용하겠다는 뜻이다. UPROPERTY(Replicated) 매크로, GetLifetimeReplicatedProps() 함수에 등록 등은 하..

article thumbnail
RepNotify

Unreal Engine 5 C++ Multiplayer Shooter 서버에서 조종 중인 캐릭터가 무기와 겹치지 않는 이상, 서버에서도 다른 캐릭터로 인해 획득 위젯을 띄울 필요는 없다. 따라서, Tick() 함수에서 위젯을 띄우던 부분은 제거한다. RepNotify 함수는 복제된 변수의 업데이트를 수신할 때마다 호출되는 콜백 함수다. UFUNCTION() 매크로를 지정해야 한다. "OnRep_변수명" 명명 규칙을 사용한다. 복제된 변수에는 UPROPERTY(ReplicatedUsing = RepNotify 함수) 매크로를 지정해준다. OverlappingWeapon의 값이 NULL로 변경된 것이 아니라면 획득 위젯을 띄우도록 한다. 서버에서 캐릭터 2가 무기와 겹치면서 OverlappingWeapon..

article thumbnail
변수 리플리케이션

Unreal Engine 5 C++ Multiplayer Shooter 프로퍼티 리플리케이션 액터 프로퍼티 리플리케이션 방법에 대한 상세 정보입니다. docs.unrealengine.com 플레이어 캐릭터에서 현재 겹치고 있는 무기를 저장하도록 한다. UPROPERTY(Replicated) 매크로를 지정하면 서버에서 값이 변경될 때, 다른 클라이언트에 값이 복제(동기화)된다. 리플리케이션은 항상 서버 -> 클라이언트 단방향으로만 진행된다. 클라이언트에서 복제된 변수의 값을 바꾸는 것은 권장하지 않는다. 다음 번 서버가 변화를 감지하고 업데이트를 전송할 때까지 서버의 값과 달라지게 된다. 서버의 변수 값이 자주 변경되지 않는다면, 클라이언트가 보정을 받을 때까지 오랜 시간이 걸릴 수 있다. Replicat..

article thumbnail
무기 획득 위젯 띄우기

Unreal Engine 5 C++ Multiplayer Shooter 무기 위에 획득 위젯을 띄우기 위해 위젯 블루프린트를 생성한다. 무기 액터에 위젯 컴포넌트를 추가한다. 위젯 클래스를 지정하고 Screen 공간에 띄우며 Draw at Desired Size에 체크한다. 위젯 컴포넌트의 위치를 무기 위로 조정해준다. 무기 위에 획득 위젯이 잘 보인다. 플레이어 폰과 겹쳤을 때 획득 위젯을 띄우기 위해 OnComponentEndOverlap 델리게이트에 등록할 함수를 선언한다. 헤더를 추가한다. 겹침 확인 등의 중요한 처리를 서버에서만 하는 것이 좋기 때문에, HasAuthority()가 true인 경우에만 델리게이트에 함수를 등록한다. 처음에는 획득 위젯을 보이지 않도록 한다. 플레이어 액터와 겹쳤을..

article thumbnail
Weapon 클래스 생성

Unreal Engine 5 C++ Multiplayer Shooter 무기로 쓸 Weapon 액터를 생성한다. 무기의 상태를 나타내는 EweaponState 열거형을 정의한다. Base type을 uint8로 지정하고 마지막에 MAX를 정의해주면, MAX를 통해 열거형의 개수를 알 수 있다. UMETA(DisplayName = "Name") 매크로를 지정해주면, BP에서 해당 이름으로 열거형이 표시된다. 무기 메쉬를 보여주기 위한 Skeletal Mesh 컴포넌트와 겹침을 판별할 Sphere 컴포넌트를 선언한다. Tick 기능은 사용하지 않을 것이므로 꺼준다. 생성자에서 컴포넌트를 생성하고 충돌을 설정한다. 무기 메쉬는 폰은 무시하고 다른 것들과는 Block하도록 설정한다. Sphere는 기본적으로 모..

검색 태그