인프런 커뮤니티 질문&답변

카카누님의 프로필 이미지
카카누

작성한 질문수

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

9강 캐릭터 공격 구현

언리얼 엔진 5.4.3 Notify 두번 호출

작성

·

277

0

리슨 서버(호스트)의 액터가 공격하면 Notify는 정상적으로 한번 호출되는데

클라이언트의 액터가 공격요청을하면 서버에서 Notify로그가 두 번 호출됩니다. (두번 공격 되는 현상)

5.4.3에서만 일어나는 문제일까요? 프로젝트를 다운 받아서 버전이랑 헤더 수정만 하고 실행해도 똑같은 현상이 발생하네요.

 

리슨 서버 액터에서 공격시 출력 로그

리슨 서버 액터가 공격.PNG

클라에서 공격시 출력 로그

클라 액터가 공격.PNG

 

답변 4

1

저는 에디터 개인설정 -> 멀티플레이어 옵션 -> '단일 프로세스 하 실행' 체크 해제 상태에서 실행 시

해당 문제가 해결되었습니다.

실제 게임 패키징시 컴퓨터 1대 당 1개의 프로세스로 실행된다고 생각하면 괜찮지 않을까 싶기는 한데

클라이언트 상의 animation notify가 모종의 이유로 Server에서 무시되어서 해결 된 것처럼 보이는 것 일수도 있고, 찝찝하기는 하네요.

이득우님의 프로필 이미지
이득우
지식공유자

좋은 정보 감사합니다! 온라인 게임이라면 멀티 클라를 돌리는 분들도 꽤 될테니 정확한 해결책은 아니겠네요.

카카누님의 프로필 이미지
카카누
질문자

여러 방법으로 해결할 수 있는 신기한 버그네요....

강의때는 5.4로 하더라도 다른 작업시에는 버전을 바꿔서 해야할듯 쉽네요...

5.4버전이 mixamo 모델링이랑 자동으로 리타게팅이 되어서 좋았는데 한편으로 아쉽네요

1

이득우님의 프로필 이미지
이득우
지식공유자

안녕하세요. 우선 5.1에서는 해당 현상이 발생하지 않은 것을 확인했습니다.
서버와 클라에서 애님 노티파이가 한 번씩 호출되었지만 5.4의 경우 서버에서 애님 노티파이가 이후에 한 번 더 호출되는 것을 확인했습니다.
지금으로서는 확실하진 않지만, 버전 업 되면서 클라에서 자체적으로 서버에 동기화를 진행하는게 아닌가 생각되는데요, 이 부분은 조금 시간이 걸리겠지만 변경사항을 살펴보겠습니다.
다만 수업은 Multicast의 동작만 살펴보고, 이후에 사용을 권장하는 것은 아니다보니, 우선 학습을 진행하시는데 크게 지장은 없을 것으로 보여집니다.

카카누님의 프로필 이미지
카카누
질문자

처음엔 코드 실수인줄 알고있었는데

클라에서 자체적으로 동기화 해서 발생한 문제였군요 ㅠㅠ

저도 시간나면 코드 한번 살펴보겠습니다

알아봐주셔서 감사합니다 ㅎㅎ

0

카카누님의 프로필 이미지
카카누
질문자

애님 노티파이 이벤트.PNG

Notify 두 번 호출 되는 문제를 찾았습니다.

 

Montage Tick Type을 Queued를 Branching Point로 변경하니 문제가 해결되었습니다.

아님 MeshComponent의 Visibility Base Anim Tick Option을 Always Tick Pose에서 Always Tick Pose and Refresh Bone으로 해도 해결이 된다하네요.

 

아마 서버에서 호출되었는데 일종의 버그?로 호출되지 않아 다시 호출한거 같네요.

 

아래는 문제를 해결하는데 도움을 준 홈페이지 링크입니다.

https://velog.io/@jellypower/UE5-Server%EC%97%90%EC%84%9C-AnimNotify%EA%B0%80-%EC%A0%9C%EB%8C%80%EB%A1%9C-Trigger%EB%90%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0

 

이득우님의 프로필 이미지
이득우
지식공유자

좋은 정보 공유 감사합니다.
저도 이 문제를 찾아봤는데, 5.4 버전 신기능 버그로 보여집니다.
저의 경우 "멀티스레드 애니메이션 업데이트 사용" 옵션을 끔으로서 해결했는데, 정상적인 상황은 아니니 당분간은 패치될 때까지 좀 기다려야 할 것 같네요.

image.png


카카누님의 프로필 이미지
카카누
질문자

역시 버그였네요...

포폴 만들땐 다른 버전을 써야겠네요.

알려주셔서 감사합니다. ㅎㅎ

0

이득우님의 프로필 이미지
이득우
지식공유자

혹시 9강 내용일까요? 강의 차수와 시간 정보를 알려주시면 확인해보겠습니다.

카카누님의 프로필 이미지
카카누
질문자

네 9강 강의 이고, 강의 시간 26분 21초 에는 클라에서 공격 요청시 서버에서 요청을 받아 몽타주를 실행하고 애니메이션 Notify에서 ABCharacterPlayer클래스의 AttackHitCheck 함수를 호출하여 로그를 출력하는 부분입니다.

카카누님의 프로필 이미지
카카누

작성한 질문수

질문하기