반응형

https://dev.epicgames.com/documentation/en-us/unreal-engine/multiplayer-programming-quick-start-for-unreal-engine#4creatingaprojectilewithreplication

 

 

1. 기본 Actor에 복제 추가

  • 복제(Replication) 설정: Actor의 bReplicates 속성을 true로 설정하여 네트워크에서 복제되도록 합니다.
  • 복제된 변수: DOREPLIFETIME 매크로를 사용하여 복제하고자 하는 변수를 정의합니다.

2. 네트워크 게임에서 이동 구성 요소 활용

  • 이동 구성 요소 설정: 캐릭터의 이동을 처리하는 CharacterMovementComponent를 설정합니다.
  • 서버와 클라이언트 동기화: 서버에서 이동 로직을 처리하고 클라이언트에 동기화합니다.

3. 변수에 복제 추가

  • 변수 정의: 복제할 변수를 선언합니다.
  • DOREPLIFETIME 사용: GetLifetimeReplicatedProps 함수 내에서 DOREPLIFETIME 매크로를 사용하여 변수를 복제합니다.

4. RepNotify 사용

  • RepNotify 변수 선언: ReplicatedUsing 키워드를 사용하여 변수를 선언하고, 해당 변수의 변경을 감지할 함수를 지정합니다.
  • 변경 함수 구현: 변수 변경 시 호출되는 함수를 구현합니다.

5. C++에서 원격 프로시저 호출(RPC) 사용

  • RPC 함수 선언: UFUNCTION 매크로를 사용하여 서버와 클라이언트 간의 호출을 처리할 함수를 선언합니다.
    • Server 함수: 서버에서 실행되는 함수 (Reliable, WithValidation 옵션 포함).
    • Client 함수: 클라이언트에서 실행되는 함수.
  • RPC 함수 구현: 선언한 RPC 함수를 구현합니다.

6. 네트워크 역할 확인

  • 역할 확인: HasAuthority, Role, RemoteRole 등을 사용하여 서버인지 클라이언트인지를 확인합니다.
  • 조건부 로직: 네트워크 역할에 따라 다른 로직을 수행합니다.

최종 결과: 투사체 발사 및 데미지 반응

  • 투사체 생성: 플레이어가 투사체를 발사할 수 있도록 투사체 Actor를 생성하고 복제합니다.
  • 데미지 처리: 투사체가 캐릭터에 맞았을 때 데미지를 처리하고 반응을 구현합니다.

소스는 언리얼 사이트에서 보고 블록 별로 정리하자면 

 

CurrentHealth 변수를 Replicate하고 변경되면 OnRep_CurrentHealth(); 호출

 

값 동기화 하세요

 

내장 함수 사용

 

 

이 아이 호출되면 TaskDamage가 호출 됨 

 

마우스 L 클릭 시 server rpc HandleFire(); 콜

 

 

총알 생성

 

생성된 총알은 날라 가다가 충돌하면 OnProjectileImpact 발생하고 이게 ApplyPointDamage 발생시키고 다시 TakeDamage를 호출하는 구조 

 

대충 이렇게 돌아감. 

'게임' 카테고리의 다른 글

인생 언리얼 5 프로젝트 교과서  (1) 2024.11.05
Call of the Wild: The Angler  (0) 2023.09.28

+ Recent posts