Make Unreal REAL.
article thumbnail
Unreal Engine 5 C++ Multiplayer Shooter

 

Simulated Proxy(다른 컴퓨터에 있는 내 캐릭터)에서는 마우스를 빠르게 조정할 경우, 애니메이션이 조금씩 덜덜 떨리는 것을 볼 수 있다.

  • 원격에서는 일정한 Net Update 주기마다 애니메이션을 동기화하기 때문이다.

 

 

애님 그래프의 Rotate Root Bone, FABRIK, Two Bone IK 등의 노드에는 Interp Result라는 옵션이 존재한다.

  • 최종 Rotation까지 값을 보간하여 부드럽게 보이게 한다.
  • 네트워크를 통해 회전이 띄엄띄엄 전달될 때 유용하다.

 

 

보간을 사용하기 때문에 마우스를 빠르게 돌릴 경우, 실제보다 더 멀리 가는 경우가 있지만 부드럽게 처리된다.

 

 

Actor 클래스에는 리플리케이션 시 네트워크 갱신 주기와 관련된 옵션들이 있다.

  • Net Update Frequency
    초당 갱신할 횟수
    NetUpdateTime을 결정하는 데 사용된다.
  • Min Net Update Frequency
    복제된 변수의 값이 자주 변하지 않을 때, 최적화를 위해 갱신 횟수를 최소화할 임계점
  • Net Priority
    액터들 간의 우선순위이며, 값이 높을수록 열악한 환경에서도 우선적으로 리플리케이션 된다.
    UI의 Z-Order와 비슷하다고 생각하면 된다.

 

FPS 게임에서는 (66, 33)의 값을 많이 쓴다.

 

 

Net Update Frequency를 초당 4회 정도의 극단적인 값으로 낮추면, 열악한 네트워크 환경을 가정한 상황에서 테스트해볼 수 있다.

 

 

리플리케이션은 서버 -> 클라이언트로만 발생하므로 조종 중인 클라이언트와 서버에서는 잘 동기화되지만, 다른 클라이언트에서는 심한 렉이 발생한다.

 

 

DefaultEngine.ini 설정 파일에서는 멀티 플레이어 게임에서, 서버의 Tick 주기를 설정할 수 있다.

  • 선호하는 값일 뿐, 서버의 성능과 네트워크 상황에 따라 줄어들 수 있다.

 

# 기본값은 30이다.
[/Script/OnlineSubsystemSteam.IpNetDriver]
NetServerMaxTickRate=60

 

이 값이 높을 수록, 매우 빠르게 발사되는 연발 소총 등의 타격 판정에 유리하다.

 

 

ini 파일을 수정한 후에는 에디터를 닫고 Binaries 폴더를 삭제한 후, 모듈을 재생성해주는 것이 좋다.

 

'Unreal Engine > UE5 C++ Multiplayer Shooter' 카테고리의 다른 글

부자연스러운 대각선 걷기 애니메이션 수정  (0) 2023.04.20
움직임 개선  (0) 2023.04.19
Rotate Root Bone  (0) 2023.04.17
옆으로 도는 애니메이션 적용  (0) 2023.04.16
FABRIK  (0) 2023.04.15
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그