14일에 발견했던 Multiplay 상에서의 Climb 기능 문제를 오늘에서야 해결했습니다.

 

그것도 너무나도 당연한 것을 확인하지 않고 말입니다.

 

문제 현상은 Climb 시 Client의 Character는 움직이지 않는 것이었습니다.

 

확인한 원인은 Character에 Attach 되어있는 MovementComponent가 가진 변수 MovementMode가 Interaction 시 값이 변했다가 몇 tick만에 원상복귀 되기 때문입니다.

 

처음에는 구현 방식을 살펴보고, 그 다음에는 통신 문제. 마지막으로 내부 구현상의 문제로 예상하고 살펴보았으나 별 다른 효과를 얻지 못했습니다.

 

그러던 중, 23일에 RPC 함수로 한번 묶어볼까 싶은 아이디어를 떠올렸습니다.

 

그리고 오늘, 구현 결과 기능이 작동하였습니다.

 

생각해보면 너무나도 당연한 것이었습니다.

 

Multiplay 상에서 Character가 움직이는 방식은 현재 두가지입니다.

 

하나는 유저가 조작 권한을 가지고 있는 Controller가 Character에 Possess 하여 직접 움직이는 것.

 

다른 하나는 다른 Client가 조작하는 Character의 트리거가 RPC를 통해 Replicated 되어 그 유저의 조작에 따라 동일하게 움직이는 것.

 

즉, Character는 각 Client에게 별도로 선언이 되어 있다는 것입니다.

 

이는 MovementComponent 또한 Client별로 하나씩 따로 존재한다는 것을 의미합니다.

 

때문에 정상적으로 움직이려면 모든 Client에서 동일한 Character의 움직임이 공유되어야 하고, 이는 RPC를 이용해야 한다는 것을 의미합니다.

 

MovementComponent라는 낯선 Component의 사용. 그리고 RPC 구조와 목적의 망각이 2주 가까운 시간의 낭비를 야기했습니다.

 

그리고 기능은 작동하지만, 완벽한 것은 아닙니다.

 

Client에서 Climb 할 때, Trigger 조작이 처음 1회 때 씹힙니다.

 

무슨 말인가 하면, Trigger 값이 처음 1회 때에는 변하지 않고, 그 뒤로는 정상적으로 들어갑니다.

 

결과적으로 기능이 동작은 하지만, Trigger를 로그로 찍어보면 값이 반대로 움직이고 있다는 것입니다.

 

오랫동안 고민한 문제가 어이 없게 풀리면서 긴장도 풀리고, 컨디션도 급격히 안좋아졌습니다.

 

이것 저것 시도를 해보았으나 유의미한 결과를 얻지 못하였고, 이 문제 해결은 수요일로 보류하겠습니다.

 

이전 3일 정도 적었던 이슈들은 평소에 이슈를 관리하던 GitKraken Board롤 옮겼습니다.

'개발일지 > Treasure Hunter' 카테고리의 다른 글

20.05.28 개발일지  (0) 2020.05.28
20.05.27 개발일지  (0) 2020.05.27
20.05.23 개발일지  (2) 2020.05.23
20.05.21 개발일지  (0) 2020.05.21
20.05.20 개발일지  (0) 2020.05.20

+ Recent posts