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 |