오늘은 여러가지 방식으로 Character의 Melee Attack의 판정을 구현해보았습니다.

 

하지만 마땅히 잘 작동하거나, 마음에 드는 방식을 찾을 수 없었습니다.

 

그래서 우선 이전에 작성한 관련 코드들을 삭제하고 다시 고민중에 있습니다.

 

다행히 commit이 남아 있어 복구하는 것이 매우 쉽기에 할 수 있었습니다.

 

몇번 더 해보고 안된다면 결국 예전처럼 Hitbox DamageBox의 Overlap을 이용해야 할 것 같습니다.

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

20.04.11 개발일지  (0) 2020.04.11
20.04.09 개발일지  (0) 2020.04.09
20.04.06 개발일지  (0) 2020.04.06
20.04.04 개발일지  (0) 2020.04.04
20.04.02 개발일지  (0) 2020.04.02

어째서인지 Unity를 하는 날에는 왜이리 몸이 무겁고 졸린지 모르겠습니다.

 

오늘은 PUN2 예시 코드를 보고 대략적인 계획을 세웠습니다.

 

제가 개발하는 게임은 lobby 개념이 따로 없이 room에 직접 연결을 합니다.

 

그렇기에 이벤트에 따라 JoinRoom, CreateRoom, ExitRoom 함수를 생성하고, 각 함수가 필요로 하는 call-back 함수를 선언해주면 될 것 같습니다.

 

다만 아직 각 함수가 선언되었을 때 Room 정보를 공유하는 방법을 찾지는 못하였습니다.

 

다음에는 이 부분을 중점적으로 연구할 것 같습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.14 개발일지  (0) 2020.04.14
20.04.10 개발일지  (0) 2020.04.10
20.04.03 개발일지  (0) 2020.04.03
20.03.31 개발일지  (0) 2020.03.31
20.03.27 개발일지  (0) 2020.03.27

오늘은 Character의 Hit 이벤트를 Mesh에 직접 적용하는 작업을 하였습니다.

 

매우 간단한 작업일 줄 알았는데 예상치 못한 문제에 막혀 마무리하지 못했습니다.

 

공격 기능을 작동하려 할 때 트리거가 제대로 작동하지 않은 것입니다.

 

공격 기능은 다음 트리거들이 만족해야 합니다.

 

1. 상대 Character가 존재하는가?

2. 공격한 주체가 공격을 입력했는가?

 

이 중, 2번 트리거가 버튼 입력에 bind 된 함수에서는 값이 변한 것이 확인되었는데,

트리거 직전에는 값이 작동되지 않은 걸로 확인되었습니다.

 

여러 함수들에 로그를 찍어보면서 한참을 들여다 보다가, 잠깐 공격자가 아닌 피격자의 것을 넣어봤더니 정상적으로 바뀌는 것을 확인하였습니다.

 

이 때문에 크게 혼란이 와서 마무리 하였습니다.

 

다음에는 좀 더 상황을 정확히 파악하고 이를 수정한 뒤, 안쓰는 함수들을 제거하고자 합니다.

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

20.04.09 개발일지  (0) 2020.04.09
20.04.08 개발일지  (0) 2020.04.08
20.04.04 개발일지  (0) 2020.04.04
20.04.02 개발일지  (0) 2020.04.02
20.04.01 개발일지  (0) 2020.04.01

오늘은 개발을 하지는 않았습니다.

 

대신에 월요일부터 시작할 Refactoring Milestone에서 적용 할 Issue들을 정리하였습니다.

 

오늘 개발일지는 이들을 작성한느 것으로 마무리하겠습니다.

 

1. Code arrange

코드 단위에서 정리해야 하는 내용들

 - Class명 중 잘못 적힌 것을 수정

 - Debug에 필요한 매크로 정리

 - TreasureHunter.h에 자주 사용되는 header들 선언

 

2. Fill out blank animation

적절한 모션이 없어 적용되지 않고 있는 기능들

 - Crouch walk with 8 destination

 - Wall - Bottom exit or enter

 - Slide

 

3. Check Interaction Object Enhance

현재는 3개의 Trigger 하나의 OverlappedObject 값을 공유한다.

이 경우, 화면을 위아래로 흔들 때 알맞게 OverlappedObject가 탐색되지 않을 수 있다.

이를 해결하기 위해 아래 방법을 제시한다.

 - 각각의 Trigger에 대응하는 OverlappedObject를 둔다.

 - Interaction시 위 OverlappedObjects들이 담긴 TArray의 index를 따라 탐색하여 접근한다.

 

4. Change Hitbox

현재 Character의 Hit Event는 별도의 CapsuleComponent가 담당한다.

이를 Mesh에 직접 적용이 가능한지 확인하고, 가능하면 Mesh의 Socket에 따라 차등 적용을 하고자 한다.

 

5. bLayeredMotion reversed

bLayeredMotion이 예상한 값과 반대로 움직여야 정상 작동하는 중이다.

 

6. Dash Jump Bug

달리면서 점프를 하면 이동속도가 현저히 떨어지는 버그가 있다.

 

7. Use MovementComponent to Move Wall

현재 BlockTrap의 벽은 Tick에서 움직임을 구성하고 있다.

이는 현저한 성능 하락을 야기할 수 있어, 각 벽마다 MovementComponent를 두어 기능을 개선하고자 한다.

 

8. Use CharacterMovementComponent

Character에 너무 많이 구현된 함수들을 분리하고

저번에 구현 실패한 Climb 기능 구현을 위해 CharacterMovementComponent를 사용.

기능들을 최대한 해당 Component로 옮기고, 가능하면 Character Movement와 관련된 함수들과 변수들도 옮기고자 한다.

 

9. Damaged Animation

피격 시 Animation을 재생하도록 적용

 

10. Detailed component when character move

Character가 이동 시 조정되어야 하는 세부사항들

 - Jump, Crouch, Slide, Climb 시 Camera가 Z값에 따라 움직일 것

 - Slide 시 달리기 초기 속도에서 감속운동을 하면서 정지하도록 적용

 - 화면을 돌리면 그에 따라 얼굴 부분이 회전하도록 적용.

 - 화면을 돌리는 각도를 제한.

 - 제한된 각도 이상 회전하면 몸도 따라 옴직이도록 할 것.

 

11. Trap Activate in Multiplay

Trap이 현재는 매우 간단하게 발동되도록 하고 있다.

또한 한번 해제 후 다시 Overlap 하여도 중복 발동도 가능하다.

이를 더 그럴듯하게 적용하기 위해 다음 방법을 제시한다.

 - Trap 내부에 다음 항목들을 추가

   * Overlap된 Character들을 저장하는 TArray - [A]

   * Overlap중인 Character들을 저장하는 TArray - [B]

   * 발동 최소 인원 수 - [C]

 - Character가 Overlap 할 때마다 B에 Character를 추가

 - B의 길이가 C보다 작을 경우, Character가 Trap 밖으로 나가면 B에서 Character 제거

 - B의 길이가 C랑 같아지면 함정 활성화, B 안의 값들을 A에 추가

 

12. Vanish Trap

바닥이 꺼지는 함정을 Geometry Brush로 구현을 시도했다가 실패했다.

이에 대해 더 알아보고, 불가능할 시 다른 방법을 탐구

 

13. Teleport Trap

Teleport Trap은 다른 Trap들과 다르게 Wrapping Object를 따로 두고 있다.

이러한 Wrapping Object 없이 Trap들간 이동을 할 수 있게하는 방법을 탐구

 

14. Climbing

Climbing 기능 구현에 대한 정리.

정면에 있는 3개의 Trigger들의 Collision 상태에 따라 트리거가 다르게 적용된다.

 

15. Ledge

Climbing의 구현 방식 변화로 인해 Ledge 기능 구현이 불가피하다.

때문에 Ledge 기능을 추가하고자 한다.

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

20.04.08 개발일지  (0) 2020.04.08
20.04.06 개발일지  (0) 2020.04.06
20.04.02 개발일지  (0) 2020.04.02
20.04.01 개발일지  (0) 2020.04.01
20.03.30 개발일지  (0) 2020.03.30

오늘은 게임 시작 시 TextList에서 저장된 Profile 정보를 지정하는 기능을 구현하였습니다.

 

이는 예상대로 coroutine을 이용해서 쉽게 적용할 수 있었습니다.

 

개발 과정에서 abstract function을 선언하면서 TextListController가 abstract class가 되었습니다.

 

또한 최종 검수 과정에서 GameInfo가 제대로 호출되지 않는 문제를 발견하였습니다.

 

확인 결과 GameInfo와 ProfileInfo가 서로 반대로 저장 되어 있었습니다.

 

이를 바꿔주자, 문제없이 잘 작동하였습니다.

 

 

근 2주동안의 리팩토링 끝에, 겨우 원래 자리로 되돌아왔습니다.

 

milestone 상으로는 2주. 4번의 개발이 남았는데, 주말에도 짬짬히 시간을 투자하여 PUN2를 이용한 Multiplay 기능을 구현해보겠습니다.

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.10 개발일지  (0) 2020.04.10
20.04.07 개발일지  (0) 2020.04.07
20.03.31 개발일지  (0) 2020.03.31
20.03.27 개발일지  (0) 2020.03.27
20.03.24 개발일지  (0) 2020.03.24

오늘은 Attach Puzzle의 남은 기능을 개발하고, Master에 Merge하였습니다.

 

첫번째로, Attach시 Index 로그를 찍어 Piece Exchange가 되는지 확인하였습니다.

 

확인 결과 정상적으로 Exchange가 되는 것을 확인하였습니다.

 

두번째로, Latch에 Piece가 Submit 될 때 정답 여부를 체크하는 기능을 적용하였습니다.

 

이는 간단한 함수를 통해 확인 할 수 있었습니다.

 

세번째로, Latch에 정답 Piece가 모두 적용이 되면 벽이 내려가는 기능을 적용하였습니다.

 

이는 이번의 Destroy Puzzle과 구현이 조금 달랐습니다.

 

Destroy Puzzle은 Event 주체가 Piece라서 관련 Event Dispatch를 Puzzle에서 적용할 수 있었습니다.

 

하지만 Attach Puzzle은 Event 주체가 Character라서 이 작업이 Character에서 이루어졌어야 했습니다.

 

그래서 C++ 코드상에서 Attach Puzzle Base에 Event를 선언하고, BP에서 Dispatch를 하였습니다.

 

그리고 Character에서 Piece를 Submit 한 직후, 정답 여부를 확인합니다.

 

만약 해당 Submit이 올바르면, 모든 Latch의 정답을 확인합니다.

 

이 때 모든 값이 정답이면, Dispatch 된 함수가 선언 되면서 벽이 올라오게 됩니다.

 

코드상 구현은 이것이 전부였습니다.

 

하지만 가장 큰 문제가 있었습니다.

 

PR 과정에서 conflict가 발생한 것이었습니다.

 

이를 수정하기 위해 1시간 가량 시도하였지만, 점점 더 꼬이는 것을 느꼈습니다.

 

그래서 Reset-hard를 통해 문제를 해결하였습니다.

 

이로서 한달 넘게 진행되던 Trap/Puzzle 마일스톤이 종료되었습니다.

 

정확히는 일주일이 넘은 기한이었는데, 그 연장된 기한 중 하루가 남았습니다.

 

이 하루동안 이슈를 정리할 예정입니다.

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

20.04.06 개발일지  (0) 2020.04.06
20.04.04 개발일지  (0) 2020.04.04
20.04.01 개발일지  (0) 2020.04.01
20.03.30 개발일지  (0) 2020.03.30
20.03.28 개발일지  (0) 2020.03.28

오늘은 Piece와 Latch들간의 Interaction 부분의 문제를 수정하였습니다.

 

처음 한 2시간은 디버그를 돌려보면서 트리거가 문제가 생기는 부분을 체크해보았습니다.

 

그런데 버그 여부를 떠나서 정확히 어느 상황에서 버그가 나는지를 인지할 수 없었습니다.

 

그래서 다시 종이와 펜을 들고 순서도를 다시 그리기 시작했습니다.

 

주요 골자는 다음 두가지입니다.

 

1. Front Trigger와 Overlap을 통해 저장되는 Piece를 OverlappedPiece와 AttachedPiece로 분리

2. AttachPiece와 Latch의 Area에 OverlapEvent를 제거

 

1번은 Front Trigger가 여러개였기에 특히 의도치 않은 Trigger 값의 변화를 야기했습니다.

 

이를 캐릭터가 소지중인 Piece와 앞에 놓여진 Piece로 분류를 하였습니다.

 

이와 동시에 조건을 조금 더 세세하게 나누어 오류가 발생하는 것을 줄였습니다.

 

2번은 개발 하는 도중에 깨달은 점이었습니다.

 

어차피 상호작용이 일어나기 전에는 Piece나 Latch의 범위 안에 들어오든 말든 아무 의미가 없었습니다.

 

그리고 Front Trigger가 존재함으로서 필요한 Trigger 값의 변화는 오히려 이 쪽에서 발생하는 것이 자연스러웠습니다.

 

그래서 Piece, Latch에서 발생하는 모든 Trigger 변화와 overlap event를 제거하였습니다.

 

대신 OnInteractionPressed와 OnInteractionReleased 함수에서 기존의 InteractionType 변화를 넣어주었습니다.

 

이로써 Character의 Interaction에 필요한 정보는 Front Trigger의 overlap 이벤트에서, 

 

Interaction의 구분과 그에 대한 동작은 OnInteractionPressed/Released 함수에서 담당합니다.

 

그럼에도 아직 한가지 오류가 있습니다.

 

Latch에 Attached 되어 있던 Piece를 Detach 하고 있으면 Character가 이상한 곳으로 튀어버립니다.

 

내일은 이 오류를 중점적으로 수정하고, Piece Switch 기능을 검수할 예정입니다.

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

20.04.04 개발일지  (0) 2020.04.04
20.04.02 개발일지  (0) 2020.04.02
20.03.30 개발일지  (0) 2020.03.30
20.03.28 개발일지  (0) 2020.03.28
20.03.26 개발일지  (0) 2020.03.26

오늘은 Refactoring 과정에서 작동하지 않았던 Component 값 읽어오는 기능을 적용하였습니다.

 

Json에 저장되어 있던 Data들을 읽어서 UI에 적용하는 기능입니다.

 

이전 개발 때 예상 했던 것과 마찬가지로, File을 읽어오는 기능보다 읽어온 Data를 가져오는 기능이 먼저 호출되어서 nullreference가 발생하였습니다.

 

우선은 호출 때마다 새로 읽어오는 방향으로 구현을 해놓고 차안을 나중에 적용할 생각이었습니다.

 

하지만 그 시기가 지금 당장으로 당겨졌습니다.

 

게임을 실행 시 Component 정보를 초기화 하는 기능은 위 방법으로 구현이 불가능하기 때문입니다.

 

이를 해결하는 방법으로 다음을 생각하고 있습니다.

 

1. 특정 함수가 완전히 작동될 때까지 다른 함수를 정지시킨다.

 

2. 특정 함수가 작업을 마무리하면 정지된 함수들을 작동시킨다.

 

고려해야 할 점은 이 과정에 Start 함수가 엮여 있다는 점입니다.

 

금요일에는 coroutine을 살펴보고, 이를 적용해볼 생각입니다.

 

 

'폐기된 게시판 > MBGC' 카테고리의 다른 글

20.04.07 개발일지  (0) 2020.04.07
20.04.03 개발일지  (0) 2020.04.03
20.03.27 개발일지  (0) 2020.03.27
20.03.24 개발일지  (0) 2020.03.24
20.03.20 개발일지  (0) 2020.03.20

오늘 안에 마무리가 될까 싶었는데 그러지 않았습니다.

 

개발을 시작하면서 가장 먼저 살펴본 것은 Character가 Latch에 부딛치지 않고 뚫고 들어가는 문제였습니다.

 

처음에는 Collision 설정을 계속 만져보다가, Activate 함수에서 이를 잠깐 건드리기 때문에 그 부분을 수정해보기도 했습니다.

 

하지만 문제는 전혀 해결되지 않았습니다.

 

한참을 Collision만 건드려보다가, 비슷하게 구현된 다른 Object의 Collision을 log로 확인해보았습니다.

 

놀랍게도, 동일하게 Collision이 변경되었습니다.

 

Collision이 문제가 아님을 깨닫고 고민을 하다, 혹시나 하는 마음에 Latch의 Static Mesh를 수정하였습니다.

 

그러자 Character가 Latch와 부딛치기 시작했습니다.

 

기존의 Static Mesh는 Geometry Brush로 만든 것이었는데, 그 과정에서 무언가 잘못된 것 같습니다.

 

Latch가 상호작용을 정상적으로 하게 된 뒤 Interaction Event를 건드려보았습니다.

 

지금까지 해온 결과, 2가지 문제점이 확인되었습니다.

 

1. Latch에 Actor를 Attach한 뒤, 곧바로 Detach를 하면 게임이 터집니다.

 

아무래도 트리거 문제이거나, Latch의 Detach 함수 구현 문제로 생각됩니다.

 

2. Latch에 Actor를 Attach한 뒤, Latch의 범위 밖으로 나섰다가 다시 들어가서 Detach를 하면 Piece는 Detach 되나, 가만히 있어도 캐릭터가 날라다니는 버그가 있습니다.

 

이는 솔직히 원인이 예상되지 않습니다.

 

처음에는 30일까지 개발을 넣었다가, 기간이 안될 것 같아 일주일 연장 하였는데 솔직히 남은 일주일 안에 다 구현 될지 모르겠습니다.

 

위 과정이 일찍 끝난다면, Check Answer 기능을 추가하겠습니다.

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

20.04.02 개발일지  (0) 2020.04.02
20.04.01 개발일지  (0) 2020.04.01
20.03.28 개발일지  (0) 2020.03.28
20.03.26 개발일지  (0) 2020.03.26
20.03.25 개발일지  (0) 2020.03.25

오늘은 기존에 구현된 AttachPiece와 관련된 기능뿐만 아니라 이를 반납하는 Latch와 관련된 Interaction에 대한 Reaction을 채워넣었습니다.

 

간단하게 몇개만 하면 될 줄 알았는데 경우의 수가 생각하는 것보다 많아 예상치보다 두배는 적용한 것 같습니다.

 

그리고 이전에 만들어 놓았던 함수들을 까먹고 새 함수를 만들었다가 이를 다시 지우고 원래 만들어 놓은 것으로 적용하느라 시간이 조금 걸렸습니다.

 

그리고 이 개발일지를 일찍 적는 이유.

 

날이 좋아서 일찍 마무리 했습니다.

 

현재 발생하는 문제는 

 

1. Attach가 되지 않고 있다. 혹은 Attach가 되고 있는데 Location이 제대로 적용되지 않고 있다.

 

2. Latch와 Character가 서로 통과되고 있다. BlockAll인데?

 

이정도입니다.

 

Issue로 적기도 애매한데 안 적어 놓으면 또 까먹어서 개발일지에 적는게 습관이 되어버렸습니다.

 

이렇다 저렇다 해도 3월 내에는 최대한 마무리 되는 쪽으로 노력하겠습니다.

 

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

20.04.01 개발일지  (0) 2020.04.01
20.03.30 개발일지  (0) 2020.03.30
20.03.26 개발일지  (0) 2020.03.26
20.03.25 개발일지  (0) 2020.03.25
20.03.23 개발일지  (0) 2020.03.23

+ Recent posts