아무래도 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

드디어 아기다리고 어기다리던 Box 예제를 제대로 출력을 했습니다.

ExcuteCommandList에서 문제가 있어 이를 호출하는 Draw쪽 함수만 계속 보고 있었는데,
우연히 이 링크에서 해답을 찾을 수 있었습니다.

 

https://stackoverflow.com/questions/38888268/updating-a-vertex-buffer-causes-a-debug-layer-error

 

Updating a vertex buffer causes a debug layer error

I updated my Windows 10 to version 1607 which includes additional D3D debug layer checking. My vertex buffer updating code worked without warnings/errors before the update, but now I'm getting an e...

stackoverflow.com

저와 동일한 문제는 아니나,

해답 부분을 읽다가 d3dUtill 예제 코드로의 링크를 타고 들어가 봤더니 CreateDefaultBuffer 부분이 나왔습니다.

이 부분을 찾아보니 구현이 덜되어 있었습니다.

누락된 부분도 있고, 안 된 부분도 있었던 것입니다.

이 부분을 채우자 정상 작동을 하게 되었습니다.

 

이제 남은건 화면 출력을 예제 프로젝트의 프레임에 나오도록 하고, 버튼 클릭으로 변경 할 수 있게 하는 것입니다.

그리고 코드 리뷰를 진행 하면 됩니다.

원래 계획대로라면 말이죠.

 

하지만 개발을 하면서 느낀 점이 있는데, 순정 개발을 해야 하는가? 입니다.

좀 더 적어보자면 예시 코드들은 MS에서 제공하는 DirectX의 기능들을 확장한 확장 라이브러리들을 사용합니다.

물론 이것들이 어떠한 오버헤드를 야기하는 것은 아니고,
이론적으로 요구되지만 기능이 따로 구현되지 않는 것들을 제공합니다. 

즉, 사용성이 매우 올라간다는 것이죠.

 

처음의 저는 그래도 공부하는 것이기에 구조나 흐름 파악이 가능하도록 이러한 것들을 배제하고 개발 했으나,

실제 개발해보니 사용을 권장해야 할 정도로 너무 불편했습니다.

그래서 프레임을 옮겨놓고 나면 d3dUtill이나 d3dx12 같은 확장 코드를 적용하고자 합니다.

물론 이렇게 된다면 책에 있는 코드를 그대로 타이핑 하는것과 큰 차이가 없을 것입니다.

하지만 그렇기에 비교해서 공부하기에는 더 좋다고 생각합니다.

'내용정리 > DirectX12' 카테고리의 다른 글

10. Box Example 1  (0) 2020.09.04
20.08.25 개발일지  (0) 2020.08.25
20.08.18 개발일지  (0) 2020.08.18
20.08.14 일지  (0) 2020.08.14
20.08.07 개발일지  (0) 2020.08.07

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

어제 확인을 했을 때는 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