본문 바로가기
움직임 리플리케이션 플로우 & Simulated Proxy 리플리케이션 - Unreal Network MultiPlayer Framework Simulated Proxy & 움직임 리플리케이션을 사용하기 위해선Actor의 움직임 리플리케이션 옵션을 활성화해야 올바르게 동작한다.Actor 움직임 리플리케이션 플로우서버에서 움직임 리플리케이션 옵션을 활성화매 Tick마다 현재 Actor의 움직이나 물리 상태를 ReplicatedMovement라는 멤버 변수에 저장ReplicatedMovement라는 멤버 변수를 클라이언트의 SimulatedProxy에 전송OnRep_ReplicatedMovement함수 호출클라이언트의 움직임이나 물리상태를 기록한다.클라이언트는 Tick마다 물리 & 움직임 처리를 진행한다.물리가 활성화되어있다면 물리 리플리케이션 Tick에서 클라이언트와 서버에 물리상태를 동기화캐릭터는 CharacterMovement의 매 Tick.. 2025. 3. 11.
움직임 리플리케이션 & 디버깅- Unreal Network MultiPlayer Framework 더보기https://dev.epicgames.com/documentation/ko-kr/unreal-engine/understanding-networked-movement-in-the-character-movement-component-for-unreal-engine오늘 글과 관련된 Unreal 공식 문서이다.캐릭터 움직임 리플리케이션 플로우(Chracter Movement Component에 구현되어 있음)클라이언트에서 움직임 입력 명령현재 Tick에서 입력 가속(입력을 가속도로 변환)과 움직이기 전의 캐릭터를 클래스에 기록한다.입력 가속은 이동 모드와 입력 변수를 기반으로 계산된다.Character Movement의 함수인 PerformMovement 실행Chracter Movement에 설정한 속성.. 2025. 3. 11.
네트워크 공격 기능 개선 & 최적화 - Unreal Network MultiPlayer Framework 이전 글 처럼 공격 로직을 만들면 별 문제가 없어 보이고 에디터에서 정상적으로 동작했다.하지만 통신 부하가 발생하는 경우에는 문제가 발생할 수 있다. 통신 렉이 심한 경우 공격 모션이 늦게 재생되거나 시각적인 타이밍과 클라이언트와 서버가 일치하지 않을 수 있다.이를 확인하기 위해 DefaultEngine.ini에 다음과 같이 추가해준다.이렇게 작성하면 500ms. 즉, 0.5초 딜레이를 가지고 패킷을 전송한다.이동만 해도 다음처럼 이동에 사용되는 패킷이 유효하지 않다는 경고 로그를 찍고 한박자 느리게 움직인다.Attack을 해봐도 서버보다 클라이언에서 한박자 느리게 움직인다.이렇게 타이밍이 맞지 않으면 플레이 경험적으로 좋지 않다. 이러한 현상이 발생하는 원인의 순서는 다음과 같다.클라이언트에서 Atta.. 2025. 3. 11.
공격 기능 & Damage예제 / 액터 컴포넌트 리플리케이션- Unreal Network MultiPlayer Framework Attack 기능은 기본적으로 제작되었다는 가정 하에 Network 흐름을 연습하기 위한 예제이다.h 파일에 Lifetime을 위한 GetLifetimeReplicatedProps와 Server, MulticastRPC를 만들어준다.그리고 bCanAttack을 콜백함수로 구현하기 위해 ReplicatedUsing을 사용하고 OnRep_CanAttack()함수를 만들어준다.Attack은 Attack을 수행하는 함수이고 AttackHitCheck는 Attack시 다른 캐릭터가 맞았는지 체크하는 함수이다.GetLifetimeReplicatedProps에 bCanAttack 네트워크를 통해 통신하기 위해서 DOREPLIFETIME 매크로를 통해 등록해준다.bCanAttack이 true라면 클라이언트에서 Serv.. 2025. 3. 10.