Listen Server 실행 시 애니메이션 떨림 문제
안녕하세요, 교수님.
교수님 강의를 듣고 포트폴리오를 한번 만들어보려고 하고 있습니다.
구현 중 애니메이션 관련 문제에 도달했는데요,
Listen Server 실행 시, Server 측에서 'Client가 조종하는 Character의 애니메이션'을 관찰하면 해당 캐릭터 애니메이션이 미약한 떨림? 렉? 프레임저하? 가 발생하는 문제였습니다.
제 프로젝트의 문제인 줄 알았으나, 교수님의 part3 프로젝트에서도, Unreal 기본 템플릿(3인칭) 에서도 같은 문제가 발생하였고,
구글링을 해보았더니 엔진 상으로 알려진 문제인 것 같습니다.
https://forums.unrealengine.com/t/clients-jitter-on-listen-server/343826?page=2
https://forums.unrealengine.com/t/listen-server-clients-animations-are-jittery-laggy/689493/15
구글링을 하여 찾아본 해결 방법으로는 애니메이션이 2배로 빨라지는 문제가 새로 발생하는 등, 확실하고 깔끔한 해결 방법이 없는 것 같습니다.
직접 해결해보려 엔진 코드를 열어보고 있지만 역시 너무나 어렵습니다..
이런 경우에는 어떻게 해결해야 하나요 ... ?
답변 2
1
답변을 보니, 별도의 특별한 설정 없이도 네트웍에서 애니메이션 떨림이 일어나는거네요.
멀티플레이어 네트웍 게임의 경우 지금은 환경이 많이 개선되었지만, 어쩔 수 없는 서버와 클라이언트간의 시간 차가 존재합니다. 이 시간차를 극복하고 클라이언트와 서버가 같은 경험을 가지도록 만들어주는 것이 멀티플레이어 네트웍 게임의 핵심 가치라고 생각합니다.
이를 효과적으로 수행하는 방법은 게임 장르, 메카닉에 따라 모두 다를텐데요, 아무래도 한정된 네트웍 밴드위스에 모든 정보를 다 빠르게 배포할 순 없기 때문입니다. 사용자마다 처한 컴퓨터, 네트웍 환경이 모두 다를테니깐요.
이 중에서 게임이 추구해야 할 가장 핵심적인 가치를 꼽는다면 단연코 판정입니다. 판정이 정확하지 않다면 아무래도 사용자들이 실망하고 이탈할 가능성이 높을테니깐요.
하지만 클라이언트에서 서버를 거쳐 다시 클라이언트로 건너오는 시간동안 이 판정 경험을 서버와 클라이언트가 동일하게 유지하는 것은 쉬운 방법이 아닙니다. 수 많은 게임들이 각자의 방법론을 가지고 이걸 구현하고 있습니다.
언리얼 엔진도 나름의 방법으로 구현되어 있는데요, 제가 설명드린 것은 큰 구조와 흐름일 뿐 세부적인 내용은 결국 전문가의 영역이라고 볼 수 있습니다.
지금 확인하고자 하는 것은 서버와 클라간의 부드러운 애니메이션일 수 있지만, 멀티플레이어 네트웍 게임에서는 그게 중요하지 않을 수 있습니다. 정확한 판정을 위해 애니메이션이 깨질 수 있다는 점을 감안하셔야 합니다. 왜냐하면 애니메이션 포즈가 판정에 영향을 미칠 수 있기 때문이지요.
언리얼 엔진의 멀티플레이 네트웍 기능에 관련해서는, 이를 기반으로 서비스 중인 포트나이트 게임을 통해 한번 플레이하면서 참고해보시는 것도 좋을 것 같습니다.
0
감사합니다. 멀티플레이 프로그래밍 경험이 별로 없어 사소한 부분이지만 무조건 고쳐야만 하는 줄 알았습니다.
일단 보류 후 진행하고, 추후 신경이 쓰인다면 다시 고치는 것에 도전해보아야겠습니다.
감사합니다!
1
안녕하세요. 재현해보려면 어떻게 설정해야 이 문제가 발생할까요?
0
실행환경
CPU : Ryzen 5900x
GPU : RTX 3090ti
RAM : 32gb
OS : windows 11 edu
모니터 : 3440 x 1440, 165hz <- 165hz라 더 잘 보이는것 같기도 합니다.
1. UE 5.3.2 실행
2. 게임 -> 삼인칭 템플릿 생성
3. Play As Listen Server, 2인으로 실행
4.
Client를 조종하는 상태에서, Server 에서 관찰 시 Client에서 조종중인 캐릭터(local : Authority, Remote : Autonomous Proxy) 의 애니메이션의 약간의 프레임 저하 확인
(반대의 경우(Server에서 조종하는 상태에서, Client에서 관찰 시 Server에서 조종중인 캐릭터(Local : Simulated proxy))는 프레임 저하가 일어나지 않음)
Stat FPS 콘솔 커맨드를 통해 창 포커싱 때문에 일어나는 프레임 저하인지 확인해보았지만, 해당 부분은 문제가 없었습니다.
이게 관련있는 설정인지는 모르겠으나,
BP_ThirdPersonCharacter의 Movement Component에서 'Listen Server Network Simulated Smooth Location Time' 값을 0으로 설정 후 관찰하면 더 확연한 차이가 느껴집니다.
'제가 그냥 예민한건가?' 싶긴 한데 제가 보기엔 진짜 차이가 보여서 질문드립니다...
5.6버전 Networking Insights 실행안됨 문제에 관하여
0
21
1
8강 중간, 분수대의 SetOwner 에 대해 궁금합니다.
0
73
2
플레이어(Actor) 로 (리슨)서버에서 생성 되나요?
0
96
2
2강) HandleBeginPlay 의 역활이 궁금합니다.
-1
70
2
3강 중간, 모드 로그로 찍을 시 스탠드얼론이 안찍힙니다.
1
73
2
CompressedFlag 질문
0
55
2
10강까지 머리 위 체력바가 표시가 안됩니다.
0
105
3
10강까지 머리 위 체력바가 표시가 안됩니다.
0
93
2
16:44 부분에서 질문이 있습니다.
0
100
2
12:50 NetMulticast RPC 커넥션 관려하여 질문이 있습니다.
0
116
2
github 3-5 파트 프로젝트에서 컴파일 에러가 발생합니다.
0
112
3
언리얼 인사이트 5.6버전 networking insights 가 뜨지 않습니다.
0
162
3
Insight 사용이 안되어서 문의 드립니다!
0
125
2
하위 레벨...?? High Level 말씀하신거죠..??
0
143
1
CompressedFlags를 이용한 InputThrottle, InputSteering 전달 방법 질문
0
187
1
조건식 프로퍼티 리플리케이션 질문
0
141
2
ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.
0
158
2
7강에서 DORM_Initial 안됨
0
126
3
안녕하세요 강의 내용 정리에 관련해서 질문있어요
0
128
2
캐릭터 클래스의 mesh 관련
0
129
2
3파트 6강 분수대 로테이트에 문제가 생겼습니다.
0
127
3
클라이언트의 오너십 설정에 대해서 궁금합니다.
0
197
3
프로퍼티 리플리케이트 동기화 보장 개념.
0
220
2
결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?
0
86
2





