오늘은 ClimbTrigger에 이벤트를 적용하다가 하루가 다 지나갔습니다.

 

결론부터 말하자면, 뭐가 문제인지 모르겠습니다.

 

BP_THCharacter의 View

이것이 제가 지금 쓰는 예시 Character입니다.

THCharacterBase라는 C++ class를 생성하고, BP로 구현한 것으로, Overlap Event는 C++ 상으로 구현되어 있습니다.

3개가 나란히 배치되어 있는 것이 ClimbTrigger들이고, 이들과 겹쳐있는 세로로 긴 것이 InteractionTrigger입니다.

 

InteractionTrigger를 초기화 하는 함수

이 함수는 InteractionTrigger를 초기화 하는 함수로, 생성자에서 호출이 됩니다.

내부에는 사이즈, 기준 component, Collision 등이 설정됩니다.

 

ClimbTrigger를 초기화 하는 함수

이 함수는 ClimbTrigger를 초기화 하는 함수로, 역시 생성자 안에서 호출이 됩니다.

이 함수에는 OnComponentBegin/EndOverlap 이벤트에 함수가 할당되지 않는데,

ClimbTrigger별로 다르게 기능이 작동해야 해서 이 함수 호출 후 생성자 내에서 따로 할당하고 있습니다.

 

보시는 것과 같이 두 함수의 기능적인 큰 차이는 없습니다.

하지만 Interaction은 잘 작동하는 반면, Climb은 작동하지 않습니다.

 

이 문제를 해결하기 위해 다음과 같은 방법을 구현해 보았습니다.

1. BP에서 직접 함수를 할당한다. -> 정상적으로 함수가 실행 됨.

2. BP에서 직접 CPP상에서 할당했던 함수를 재할당한다. -> 재할당된 함수는 작동하지 않음.

3. ClimbTrigger와 InteractionTrigger가 서로 닿지 않도록 위치를 조절 -> 여전히 작동 안함

4. 초기화 함수 내부에서 Event에 함수를 할당함 -> 여전히 작동 안함.

 

처음에는 BP에서 하나하나 선언해줄까 했지만, 구현하는 기능이 특정 Character만 해당되는 것이 아니라
모든 Character들에게 공통적으로 구현되어야 하기에 CPP에서 구현되어야 할 것 같습니다.

 

BP에서 직접 할당하면 작동하는 것으로 보아 Trigger 선언에는 문제가 없는 것 같습니다.

 

내일은 할당을 BeginPlay나 PostInitialize에서 해보거나,
함수들의 이름을 더 짧게 줄여볼 생각입니다.

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

20.05.09 개발일지  (0) 2020.05.09
20.05.07 개발일지  (0) 2020.05.07
20.50.04 개발일지  (0) 2020.05.04
20.04.30 개발일지  (0) 2020.04.30
20.04.29 개발일지  (0) 2020.04.29

링크 : acmicpc.net/contest/view/116

 

2015 ACM-ICPC 연습

 

www.acmicpc.net

1. 첼시를 도와줘!(해결)

그룹 내 선수 가격과 이름들을 입력받고 가장 가격이 높은 선수 이름을 출력하는 문제.

입력 받으면서 이전 입력된 선수 가격보다 비쌀 경우 저장. 아닐 경우 제거.

최종적으로 저장된 선수 이름 출력.

 

2. Forgger(미해결)

다른 개구리를 밟고 넘어서야 이동 가능한 개구리가 있다.

발판이 된 개구리는 사라진다.

(X, 0)에 있는 파리를 잡아 먹기 위해 {(x, y) | x <= 0, y는 정수}에 배치되어야 하는 개구리의 수를 구하는 문제.

 

처음에는 지수함수 형태로 증가하는 줄 알았으나, 오류가 나서 X = 4일 때를 한번 구해보았습니다.

상당히 복잡했으나 그 결과 값을 구했고, 이는 복잡한 계차함수를 나타내고 있었습니다.

식은 대략 diff[index] = Sum[i = 1 to index](diff[index - i] * i)이며

주어진 예시가 0<=X<=31인데 X가 31이면 long long 범위를 넘어서버립니다.

 

현재 이 마지막 X = 31인 케이스 처리를 앞두고 구현을 멈췄습니다.

 

3. 꿍의 여자친구(미해결)

상대 여성의 이상형 매력 포인트의 조합으로 받고,

각 매력에 대한 코스트를 계산하여 이상형에 가까워지는데 필요한 최소한의 코스트를 계산하는 문제.

 

입력받는 데이터를 split으로 분리해야 하는데 이 과정에서 문제가 발생함.

 

하루에 시간을 정해놓고 문제를 푼 뒤 못 푼 문제는 넘어가는 것보다,
테스트를 하나 정해서 안에 있는 문제를 다 풀고 넘어가려 합니다.

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

20.06.02 2015 ACM-ICPC 연습  (0) 2020.06.02
20.05.26 - 2015 ACM-ICPC 연습  (0) 2020.05.26
20.05.19 - 2015 ACM-ICPC 연습  (0) 2020.05.19
20.05.12 - 2015 ACM-ICPC 연습  (0) 2020.05.12
알고리즘 일지입니다.  (0) 2020.05.01

오늘은 우선 저번에 하다 만 Header 정리와 Debug에 필요한 Macro를 형성하려 했습니다.

 

하지만 이 둘을 하나씩 하면서 도저히 원인을 파악 할 수 없는 문제가 계속 발생했습니다.

 

그래서 우선은 다른 작업들을 우선적으로 끝내고, 시간이 남는다면 Milestone 기간 내에.

 

아니면 그 이후에 개선하기로 하고 보류하였습니다.

 

그 다음에는 안 쓰는 코드들을 정리하였습니다.

 

Animation에서 사용하지 않는 변수나, 예시로 구현한 몇몇 의미 없는 Object들을 삭제했습니다.

 

그리고 Climb/Ledge 작업에 필요한 Event와 Parameter를 선언하였습니다.

 

다음 개발 때에는 우선 선언한 Parameter들을 AnimInstance와 연결하는 작업을 우선 해야합니다.

 

그 이후에는 Event 안에서 Parameter 값이 변경되는 조건을 정립하고,
이에 따른 Climb 상태를 조절해줘야 합니다.

 

이 작업이 끝나면 Ledge와 Climb은 자연스럽게 구현이 될 것입니다.

 

이 작업 이후에는 THClimb를 비롯해 Ladder, Rope, Wall을 구현하고 기능 확인을 하려 합니다.

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

20.05.07 개발일지  (0) 2020.05.07
20.05.06 개발일지  (0) 2020.05.06
20.04.30 개발일지  (0) 2020.04.30
20.04.29 개발일지  (0) 2020.04.29
20.04.27 개발일지  (0) 2020.04.27

친구들과 약속이 있어 개발을 하지 못하였습니다.

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

20.06.23 비개발일지  (0) 2020.06.23
20.06.13 비개발일지  (0) 2020.06.13
20.04.25 비개발일지  (0) 2020.04.25
0701 리슨서버 골자 구축  (0) 2019.07.01
게임 제작 근황  (0) 2019.06.17

원래는 DirectX를 공부할까 네트워크 공부를 할까 고민을 하였습니다.

 

그러다 책장을 봤는데 사놓고 아직 못 본 책, 봤는데 내용이 기억 안나는 책이 눈에 들어왔습니다.

 

그래서 금요일은 하루종일 이 책들 중 한 권을 읽고, 내용을 정리하려 합니다.

 

우선은 DirectX12, Game Engine Architecture, More Effective C++을 위주로 읽을 계획입니다.

따로 만든 이유는 일지를 쓰는 것이 그날 활동을 빼먹지 않고 계획을 지키는데 큰 도움이 되어서 따로 신설했습니다.

 

앞으로 매주 수요일에 Online Test 1번, Online Judgement 2~3회 정도 진행을 하려 합니다.

 

그리고 그날 풀었던 문제 링크와 결과, 대략적인 풀이 방법 등 복기를 이 일지에 적겠습니다.

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

20.06.02 2015 ACM-ICPC 연습  (0) 2020.06.02
20.05.26 - 2015 ACM-ICPC 연습  (0) 2020.05.26
20.05.19 - 2015 ACM-ICPC 연습  (0) 2020.05.19
20.05.12 - 2015 ACM-ICPC 연습  (0) 2020.05.12
20.05.05 - 2015 ACM-ICPC 연습  (0) 2020.05.05

오늘은 구현되어 있지 않던 접속 시 Player들의 정보를 UI에 적용하는 기능을 구현하였습니다.

 

아직 완벽히 기능이 연결된 것은 아니나, 하나하나 기능별 구현은 완료 된 상태입니다.

 

남은 것은 멀티플레이 환경에서 접속 시 정보 동기화 및 UI 적용 뿐입니다.

 

 

하지만 이와 동시에 애석하게도 본 프로젝트를 중단하려 합니다.

 

여러 이유가 있는데 첫번째로, 시간을 낭비한다는 느낌을 크게 받았습니다.

자주 쓰는 것은 아니라고 하지만, 전혀 익숙해지지 않아 의욕이 서질 않았습니다.

그래서 일주일에 두번 있는 개발 날마다 딴짓을 하면서 시간을 축이는 일이 많아졌습니다.

또한 유니티 자체를 이해하고 사용하는데 시간이 너무 많이 요구되어 개발이 더뎌지기도 했습니다.

 

두번째로, 주변에서 다들 유니티 개발보다 다른 공부를 추천하였습니다.

입사 지원서를 작성할 때, 제가 지키던 기준들이 있습니다.

1. 3D 게임을 개발하는 업무.

2. C++을 사용(자체 엔진 개발)하거나, Unreal을 사용하는 프로젝트.

3. PC Online, Package, Console 게임 개발을 하는 프로젝트.

 

하지만 시간이 지날수록 취업을 하지 못하고 점점 더 초조해지면서 이러한 기준들을 지워나가면서 지원을 하다가 

최근 4개월? 동안 Unity를 쓰는 회사에 면접을 보고 떨어지면서 Unity 실력을 더 올리는게 다양한 회사에 지원하기

좋겠다는 생각에 Unity 개발을 시작했습니다.

시작 하면서도 많은 걱정이 있었고, 최근까지도 걱정을 하였습니다.

알고리즘이나 통신과 같은 좀 더 기초적인 부분을 갈고 닦는 것이 더 좋지 않을까? 라는 생각을 멈출 수 없었습니다.

 

그러다 비교적 최근, 다른 개발자 분들에게 상황을 설명하는 기회를 갖게 되었습니다.

다들 하나같이 "Unity는 개발 환경이 좋다. 굳이 지금처럼 안해도 회사 가서 배우면서 일하는게 가능하다." 라던가, "Unreal을 쓰는 회사들이 비교적 더 규모가 있고 대우가 좋다. Unreal을 쓰는 회사를 목표로 하라" 라던가,
"Unity 할 시간에 차라리 알고리즘을 공부해서 기초를 닦아라" 라는 말들을 들었습니다.

 

이를 듣고 Unity 개발을 정지하게로 마음먹었습니다. 

비록 지금 당장은 손을 떼지만, 언젠가 기회가 되면 다시 이 일지에 글을 적으면서 개발을 해보겠습니다.

기존에 Unity를 개발하던 화요일, 금요일에는 대략 3가지를 나눠서 해볼까 싶습니다.

 

하나는 기존에 개발하던 Unreal 개발.

다른 하나는 CodeForce와 같은 사이트에서의 Algorithm 문제 풀이.

이는 시간을 정해놓고 푸는 Online Test와

시간 제한 없이 문제 해결을 통해 개발 방법을 익히는 Online Judge를 병행 할 생각입니다.

나머지 하나는 생각중입니다.

원래는 DirectX12를 익혀볼까 생각 했는데 서버 프로그래밍을 할까 잠깐 고민되기도 하여 확정짓지 못했습니다.

 

아마 화요일 낮에 아직 미정인 작업을 하고 일찍 마무리가 되면 오후에 Unreal 개발을 진행할 것 같습니다.

토요일는 Online Test 1번과 Online Judge 한 두번을 진행하고 남은 시간에 Unreal 개발을 할 것 같습니다.

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

20.04.28 개발일지 2  (0) 2020.04.28
20.04.28 개발일지  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

4월 마지막 개발일지입니다.

 

오늘은 Code 개선 작업을 하였습니다.

 

변수명 변경, 구조 개선 등 다양한 것이 있지만,
여기서 말한 Code 개선은 헤더 정리, 로그 매크로 제공, 오철자 수정입니다.

 

사실 이 작업은 매우 쉽게 끝날 것이라 예상 했습니다. 

 

하지만 매우 어렵고, 꼬여버려서 오늘 다 해결하지 못했습니다.

 

첫번째로 오철자 수정입니다.

Class를 다시 만들어야 되는줄 알았는데,
선언된 부분과 파일명을 수정한 뒤 regenerate project를 하는 것으로 쉽게 마무리 되었습니다.

 

두번째로 로그 매크로 제공입니다.

여기에는 두가지 작업이 포함되어 있었습니다.

하나는 로그 카테고리 정리.
다른 하나는 로그를 찍을 시 클래스 명, 함수 명, 로그가 찍힌 코드 줄 정보가 자동으로 포함되는 것입니다.

로그 카테고리 정리는 선언했던 것을 rename으로 수정해보았으나, 제대로 해결 되지 못하고 에러를 발생했습니다.

로그 찍을 시 자동으로 정보를 포함하게 하는 것도 기존 매크로를 매크로나 함수로 wrapping 해야 하는데,
갯수가 정해져 있지 않는 argument들을 받아 처리하는 작업 부분이 기존 C++과 조금 다른 것 같아
함부로 손을 대지 못했습니다.

 

세번째는 헤더 정리입니다.

이 역시 TreasureHunter라는 헤더에 몇가지 공통적으로 선언된 헤더를 선언 해보았으나, 
에러가 발생하여 원상복구 해놓은 상태입니다.

 

안타깝게도 토요일에는 약속이 있어 다음 개발은 월요일이 될 것 같습니다.

월요일에는 이 두가지 중 헤더 정리를 우선적으로 처리하고자 합니다.

우선 에러가 터졌던 Controller, Widget, GameMode 등의 코드들에서 .h에 헤더 선언이 되어 있는지 확인하고,
이를 .cpp로 옮긴 뒤 오류가 없을 경우 헤더 통합을 해보려 합니다.

 

로그 매크로는 조금 더 이것저것 알아봐야 해결이 될것으로 예상합니다.

Wrapping할 함수/매크로가 받을 것은 printf와 유사한 형태의 포맷입니다.

출력할 텍스트와 파라미터를 받으면 그 앞에 클래스(혹은 파일), 함수 이름과 출력된 줄 번호를 출력하는 텍스트.

그리고 기존 파라미터 앞에 해당 파라미터들을 넣어주면 됩니다.

이 부분을 조사하고, 가능하면 해결해보려 합니다.

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

20.05.06 개발일지  (0) 2020.05.06
20.50.04 개발일지  (0) 2020.05.04
20.04.29 개발일지  (0) 2020.04.29
20.04.27 개발일지  (0) 2020.04.27
20.04.23 개발일지  (0) 2020.04.23

오늘은 AttachPuzzle에서 비정상적으로 작동하는 TwoBlockTrap 문제를 해결하고,
Trap에서 아직 구현하지 않았던 기능들을 구현 한 뒤, 코드를 정리하였습니다.

 

우습게도, AttachPuzzle이 비정상적으로 작동하는 이유는
생성자 노드에서 노드 연결이 중간에 끊겨 있었기 때문이었습니다.

이를 연결하자 거짓말처럼 정상 작동하였습니다.

 

이를 해결하고 Push한 뒤, Trap의 Wall들을 다시 내리는 기능을 THWallBase에 맞게 구현하였습니다.

비록 아직 동작을 확인하지는 못했으나, Trap을 개선하면서 동시에 테스트를 해볼 수 있기에 일단 마무리 했습니다.

 

구현 방법은 게임 시작 시 Wall의 World Location을 저장하고,
벽이 멈출 때마다 이 World Location과 거리가 일정 이상 멀어지면
Control Point를 음수로 reverse 하여 원래 거쳐왔던 경로를 되돌아가도록 하였습니다.

 

마지막으로 안쓰는 코드를 지우고, 최종적으로 Push를 함으로서
MovementComponent 적용 부분을 최종적으로 마무리하였습니다.

 

당장 내일부터 다시 개발을 시작하는데, 우선 Code Arrange부터 하려 합니다.

이후 Ledge부터 시작하여 Climb 기능을 구현해나갈 계획입니다.

 

이 부분이 마무리가 되면 구현 방식을 수정하거나 새로 구현해야 하는 Trap들을 구현하고,
Trap의 동작을 Multiplay에 맞게 변경 할 계획입니다.

 

뒤이어 Character의 피격 애니매이션 적용이나 얼굴 부분 회전 등의 기능을 구현 할 예정입니다.

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

20.50.04 개발일지  (0) 2020.05.04
20.04.30 개발일지  (0) 2020.04.30
20.04.27 개발일지  (0) 2020.04.27
20.04.23 개발일지  (0) 2020.04.23
20.04.22 개발일지  (0) 2020.04.22

개발일지를 하나 적고 코드를 다시 보다가 간과한 사실이 하나 있습니다.

 

read 할 때는 중간에 다른 변수를 거쳐 가도 된다는 점입니다. 

 

그냥 모든 Host와 Client가 Write는 자유롭게 하되,
Read에서 한번 걸러주면 될 것 같습니다.

 

예를 들어 {bool, List<PlayerInfo>} 구조체를 만들어서
true면 Player 추가로 기존의 PlayerInfoList보다 새로 받아온 PlayerInfoList의 길이가 더 길 경우에만 read를,
fasle면 Player가 제거로 기존의 PlayerInfoList보다 새로 받아온 PlayerInfoList의 길이가 더 짧을 경우에만 read를.

 

아니면 이 둘을 별도의 변수로 두어도 될 것 같습니다.

 

계획을 바꿔, 금요일에는 이 방식을 구현해보고자 합니다.

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

20.05.01 개발일지 - 일시정지  (0) 2020.05.01
20.04.28 개발일지  (0) 2020.04.28
20.04.24 개발일지  (0) 2020.04.24
20.04.21 개발일지  (0) 2020.04.21
20.04.17 개발일지  (0) 2020.04.17

+ Recent posts