회사 결과도 기다릴 겸.

그리고 그냥 코드 조금 만지는 건 충분히 했다고 생각해서 문서들과 질문들을 먼저 찾아보고 있습니다.

Network와 Replicate. 특히 Child Actor Component의 Replicate를 위주로 조금 긴 시간 문서를 볼 계획이고, 

오늘도 검색을 했습니다.

아직은 특별히 다른 것을 찾지 못했습니다.

다음에는 Child Actor Component의 Replicate를 중점적으로 살펴볼 계획입니다.

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

20.09.09 개발일지  (0) 2020.09.09
20.09.07 개발일지  (0) 2020.09.07
20.09.05 개발일지  (0) 2020.09.05
20.09.02 개발일지  (0) 2020.09.02
20.08.21 개발일지  (0) 2020.08.31

조급했던 개발을 기한 없이 개발 하자는 생각을 하니까 모든 것이 편해졌습니다.

일단은 SubObject의 Replicate를 보면서 조금씩 문서를 보고 Replicate를 다듬고 있습니다.

하지만 Component Replicate로 해결이 되지 않을까 하는 생각이 계속 멤돕니다.

Block Trap은 SubObject Replicate 없이 잘 동작 중입니다.

또한 새로운 방식으로는 Visibility만 잘 동작 안하고, Collision은 Character가 Host에서 동작하지 않습니다.

살펴보고 고려해야 할 부분은 많지만 어느정도 마음을 놓아놓고 면접 결과가 다 나올 때까지 편하게 개발하겠습니다.

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

20.09.14 개발일지  (0) 2020.09.14
20.09.07 개발일지  (0) 2020.09.07
20.09.05 개발일지  (0) 2020.09.05
20.09.02 개발일지  (0) 2020.09.02
20.08.21 개발일지  (0) 2020.08.31

오늘은 Character 코드를 열어서 Network, Visibility, Collision 관련 변수들을 모두 설정해보기도 했고, 

Activate 함수만 Replicate 했으나 해결하지 못했습니다.

역대 최장 이슈인것 같은데 면접이 남아 있어서 집중을 잘 못하고 있습니다.

 

오늘은 새로운 시도를 하고 있는데, Branch를 새로 파서 State 관리를 Trap에서 해볼 생각입니다.

이전까지는 Trap의 생성자에서 Child Actor들의 Initialize를 실행하고, Activate를 실행했습니다.

그럼 각 Object들의 Initialize, Activate에서 Visibility와 Collision을 조절하는데,

사실 이 방식이 Character에서만 잘 안되는 것이지 다른 곳에서는 잘만 됩니다.

 

하지만 이런 조정을 Object에서 이루어지도록 하니까 Character는 잘못 작동하는게 아닌가 싶기도 합니다.

그래서 Visibility는 ChildActor에다가, Collision은 내부 함수 호출을 통해 변경하려 합니다.

일단 다듬어지지 못한 부분이 조금 있는데 당분간은 이 방식으로 좀 고민 해보려 합니다.

 

뭔가 정신이 없어서 말이 이상하게 적히는 것 같은데 정리를 하면

1. 여태까지는 Actor가 스스로 State를 조절했다.

2. 이제는 Child Actor에 이를 지정한다.

이건 Child Actor의 Replicate와 비슷하게 보면 될 것 같습니다.

Replicate Actor에서 Child Component는 Replicated를 설정하지만,

그 안의 Actor는 이를 해제해야 부하가 덜 걸린다고 알고 있습니다.

이처럼 Collision과 Visibility도 Child Component 단위에서 이루어지도록 해보려 합니다.

 

금주 목, 금이 면접이고 빠르면 다음주에 결과가 나오는건데, 그 전에 이 이슈라도 해결했으면 좋겠습니다.

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

20.09.14 개발일지  (0) 2020.09.14
20.09.09 개발일지  (0) 2020.09.09
20.09.05 개발일지  (0) 2020.09.05
20.09.02 개발일지  (0) 2020.09.02
20.08.21 개발일지  (0) 2020.08.31

일단 Character에서 Update 함수를 Replicate 함수로 바꿨을 때에는 Client에서도 정상 작동을 하지 않았습니다.

그래서 질문을 올리기 위해 미리 글을 작성하는 도중, 한가지 놓친 부분이 떠올랐습니다.

Character의 상태 변화는 Update 함수이나, 이게 호출되는 것은 Activate때입니다.

그래서 반대로 Replicate 함수를 통해 Activate 때에만 Replicate 함수를 호출해보려 합니다.

이래도 안된다면 이제 정말로 질문글을 올려볼 생각입니다.

해결 방안도 묻고,

결국 dedicate server로 교체할 텐데 사실상 서버인 Host에서의 문제를 무시해도 되는지 물어볼 계획입니다.

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

20.09.09 개발일지  (0) 2020.09.09
20.09.07 개발일지  (0) 2020.09.07
20.09.02 개발일지  (0) 2020.09.02
20.08.21 개발일지  (0) 2020.08.31
20.08.27 개발일지  (0) 2020.08.27

다시 한번 Character의 생성자에서 UpdateCharacterState로 초기화를 해보았으나

정상적인 동작을 이끌어낼 수 없었습니다.

 

내일은 면접이라 특별히 무언가 할 수 없고,

다음에 시간이 된다면 이번에는 Character쪽에 Replicate 함수를 써볼까 합니다.

일반 Actor는 기본적인 Replicate 설정이 없지만, Character는 기본 설정이 되어 있지 않을까 의심이 되기 때문입니다.

 

이렇게 해서 문제가 풀리면 그대로 승천 할것만 같습니다.

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

20.09.07 개발일지  (0) 2020.09.07
20.09.05 개발일지  (0) 2020.09.05
20.08.21 개발일지  (0) 2020.08.31
20.08.27 개발일지  (0) 2020.08.27
20.08.24 개발일지  (0) 2020.08.24

확실히 면접을 보고 있으니까 진행이 더딘 것 같습니다.

마음도 흔들리고 면접 준비 때문에 시간 자체를 얼마 투자 못하는 것 같습니다.

주말에 Propegate to child 옵션이 있어 이를 이용해 보았으나 여전히 Host에서 Character가 정상적이지 못했습니다.

 

다음에는 다시한번 Character의 생성자에 Initialize를 해보고,

이를 Spawn한 뒤 처음부터 다 밀고 다시 Build를 해보려 합니다.

 

솔직히 이 문제를 더 건드리고 싶지 않습니다.

결국에는 Dedicated Server로 전환할건데 Host에서 문제가 발생하는게 대수인가 싶다가도, 

앞으로 Dedicated Server만 개발한다는 보장도 없고, 이슈나 문제는 다 잡고 경험을 하는 것이 좋기도 하며,

무엇보다 Puzzle로 가면 이 문제가 다시 Trap에게 고스란히 적용될것이기에 이악물고 다시 잡고 있습니다.

 

빨리 정리가 되었으면 좋겠습니다.

문제 원인이라 파악된 것들을 거의 다 처리해봤는데 여전히 해결이 안되니 그 어떤 때보다 더 막막합니다.

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

20.09.05 개발일지  (0) 2020.09.05
20.09.02 개발일지  (0) 2020.09.02
20.08.27 개발일지  (0) 2020.08.27
20.08.24 개발일지  (0) 2020.08.24
20.08.22 개발일지  (0) 2020.08.22

오늘은 우선 ISpawnable이란 Interface를 만들어 적용했습니다.

기존에는 IObjectActivity에 추가했는데 이렇게 되면 모든 Object나 Character들이

비슷한 기능과 이름의 함수와 공존하게 됩니다. 

그래서 새로운 Interface를 적용했습니다.

 

이를 통해 기능을 분리 했으나 여전히 Host에서 Character의 Visibility는 정상화 되지 않았습니다.

 

그 다음에는 Character의 하위 클래스를 두고, 이 하위 클래스의 생성자 내부에서 Visibility를 초기화 했습니다.

하지만 여전히 작동하지 않았습니다.

 

생각해둔 방법을 모두 사용해서 이 뒤로는 고민을 더 해야 할 것 같습니다.

일반 Object와 Character의 차이가 뭔지 좀 더 알아보려 합니다.

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

20.09.02 개발일지  (0) 2020.09.02
20.08.21 개발일지  (0) 2020.08.31
20.08.24 개발일지  (0) 2020.08.24
20.08.22 개발일지  (0) 2020.08.22
20.08.20 개발일지  (0) 2020.08.20

오늘은 간만에 좀 오래 개발한 것 같습니다.

아침에도 일찍 일어났고, 운동도 안하는 날이고.

물론 다음 달부터는 아침 저녁으로 운동하면 개발하는 시간을 8시간을 맞추기 힘들 수도 있겠죠.

그래도 오늘 제가 할 수 있는 시간의 대부분은 개발에 투자했습니다.

 

처음 시작 할 때는 Host에서 Spawned Character의 Collision과 Visibility가 정상적으로 작동하지 않았고,

Spawned Projectile Trap이 발동 할 때 Host가 마지막에 들어가면 제대로 Trap이 발동하지 않으며,

Client는 Projectile로부터 데미지를 2번 받았습니다.

 

여기서 저는 Visibility를 SetHideInGame 외에 Mesh나 Object마다 SetVisibility를 따로 처리해줬습니다.

그러자 모든 Spawned Object의 Visibility가 모든 Client에서 비정상적이었고,
Host에서는 Spawned Character와의 Collision이 여전히 비정상적이었습니다.

 

그 뒤에는 Trap BP에 부착된 InitializeSpawnedActor의 Spawned Object 활성화 RPC 함수를

Multicast에서 Server로 교체했습니다.

하지만 문제를 해결하지 못했습니다.

 

그 다음에는 ActivateTrap이 호출하는 RPC 함수를 Multicast로 교체해보았습니다.

여전히 문제를 해결하지 못했습니다.

 

그 뒤에 검색을 해본 결과 다음 답을 얻었습니다.

https://answers.unrealengine.com/questions/881032/child-actor-components-dont-spawn-on-clients.html

 

Child actor components don't spawn on clients - UE4 AnswerHub

Hi, In my project I did some mecanism like padlocks or keypad locks. I used an actor to represent a button and this buttons are child components in my locks BP. Everything is fine in the editor, I can push the buttons on every clients but when I launch in

answers.unrealengine.com

즉 Child Actor나 Component는 원본에 Replicate되고, 각각의 Component나 Actor가 Replicate 되도록 설정 하면

각각의 Script 내에서는 Replicate를 지정하면 안된다는 것입니다.

이에 대해 생각을 해보았는데 Parent Object가 Replicate 될 때 부속품들의 Replicate를 같이 처리하거나, 

이들은 Client가 따로 처리를 해야 한다고 생각됩니다.

 

그래서 IObjectActivity에서 ChildActor에서의 Initialize, Activate, InActivate, Reset 함수를 따로 생성했습니다.

그리고 Trap에서 Projectile과 Character의 ChildActor 함수들을 호출하고, 내부에서도 RPC 함수 호출을 하지 않았습니다.

그러자 Spawned Character의 Visibility와 Collision이 Host에서 비정상적인 것을 제외하고 모든 문제가 해결되었습니다.

 

아무래도 Character와 일반 Actor의 차이 때문에 발생한 문제 같습니다.

다음에는 이부분만 집중적으로 수정할 예정입니다.

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

20.08.21 개발일지  (0) 2020.08.31
20.08.27 개발일지  (0) 2020.08.27
20.08.22 개발일지  (0) 2020.08.22
20.08.20 개발일지  (0) 2020.08.20
20.08.19 개발일지  (0) 2020.08.19

아무래도 Spawn Trap 기능 구현이 꼬인 것 같습니다.

초기 문제는 Spawn Object 이후 bHidden이 제대로 처리가 되지 않았습니다.

그리고 멀쩡하다고 생각했던 Spawn Character에서는 Collision이 처리가 되지 않았습니다.

 

그래서 Object의 Collision을 SetCollisionEnable 함수로 변경을 하고,
SpawnedObject의 함수가 Server RPC 함수가 아닌 Multicast RPC 함수를 호출하도록 하였습니다.

그러자 위의 문제는 해결이 되었는데, 다른 문제가 발생하였습니다.

 

Projectile이 두 Client에서 눈에 보이기는 하나, Collision이 켜지지 않고, 여전히 발사되지 않습니다.

또한 Character는 Host에서는 가시화 되지 않습니다.

 

몇가지 예상되는 이유는 있는데 확실한지는 판단이 안섭니다.

child actor의 replicate를 좀 더 알아보고 움직여야 할 것 같습니다.

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

20.08.27 개발일지  (0) 2020.08.27
20.08.24 개발일지  (0) 2020.08.24
20.08.20 개발일지  (0) 2020.08.20
20.08.19 개발일지  (0) 2020.08.19
20.08.17 개발일지  (0) 2020.08.17

오늘 유의미한 개발을 한건지는 잘 모르겠습니다.

어제 확인을 했을 때는 Projectile이 정상적으로 작동하지 않아서 Trap 구현이 안된것이라 판단하고 넘겼기 때문입니다.

 

오늘 Trap 부분에서 RPC가 제대로 되는지 확인하다가 Spawn Character Trap과 비교하려고
Trap을 실행했더니 이건 또 정상 작동을 합디다.

 

결국 Spawn Character는 되고 Projectile은 안되는데 그 차이는 Fire 함수 호출이었습니다.

이쯤되면 Fire 함수에서 뭔가 문제가 있겠거니 하겠는데 물론 여기에 문제가 있지만,

다른 곳에서도 문제가 있었습니다.

 

Projectile들은 Compile 하기 전에 미리 Child Actor로 되어 있고, 조건을 만족하면 가시성, Collision을 활성화 합니다.

이 기능을 하나의 RPC 함수로 묶어서 호출하는데, 이 중 가시성 부분만 정상작동하지 않습니다.

Collision은 정상 작동합니다. 활성화 된 후 보이든 보이지 않든 데미지는 계산이 됩니다.

하지만 가시성만은 정상작동하지 않습니다.

 

정확히는 Server까지는 어떻게 되는데 Multicast가 Broadcast가 안되는 느낌입니다.

Host가 Trap을 발동시키면 모든 Client가 작동하지만, Client가 Trap을 발동시키면 Host에게만 보입니다.

그렇기에 우선은 이 문제를 해결해보려 합니다.

 

요즘 컴퓨터가 더 늙었는지 가끔 Host 움직임을 Client가 제대로 반영 못하고 렉먹은 것처럼 움직이는데

이 부분이 원인인지도 봐야 할 것 같습니다.

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

20.08.24 개발일지  (0) 2020.08.24
20.08.22 개발일지  (0) 2020.08.22
20.08.19 개발일지  (0) 2020.08.19
20.08.17 개발일지  (0) 2020.08.17
20.08.15 개발일지  (0) 2020.08.15

+ Recent posts