연말에 갑자기 일이 생겨서 생각보다 자유롭게 개발을 못했습니다.

 

오늘은 InputActionComponent의 Type을 변수로 받아서 실시간으로 Component를 코드 상으로 생성하고, 에디터에서도 표시가 되는 방법을 찾아보았습니다.

결과적으로 생성되는 것까지는 했으나, 에디터에서 표시가 되지 않아 뭔가 사용하기 좀 더 어려워진 느낌이었습니다.

그래서 Component는 수동으로 입력해주는 이전 방식으로 복구해놓고, 컴포넌트 부분은 따로 처리해보기로 했습니다.

 

두번째로 애셋들이 경로 정리 하면서 깨져서 다시 Migration해주었습니다.

이 과정에서 Migration 전용 프로젝트에서 경로가 꼬인 것들을 정리하고, 신규로 경로 정리를 했습니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 12월 12일 개발일지  (0) 2022.12.12
22년 12월 07일 개발일지  (0) 2022.12.07
22년 11월 26일 개발일지  (0) 2022.11.26
22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 16일 개발일지  (0) 2022.11.16

작업은 10일부터 했는데 미완인 상태에서 계속 개선하고 건드려 보다가 오늘 완성이 되어서 일지를 적어봅니다.

Enhanced Input Component를 이용해 입력을 받도록 하되, 이왕 입력이 간단하게 정리가 되는 김에 좀 더 모듈화를 하고 싶었습니다.

그럴려면 가장 큰 문제는 입력 반응에 호출될 함수들이 Character 내부에 있는게 아니라 별도의 Object에 있고, Character에서 그걸 가져다가 쓸 수 있었어야 했습니다.

금요일에 Character 내부에서 입력 작업을 마무리 하고, UObject에다가 함수를 분리한 뒤 시도를 해보았는데 빌드 오류를 잡지 못해서 revert를 했습니다.

 

그리고 오늘 졸린데 자기 직전 니케 재화 빼기 위해 뭘 할까 하다가 다시 잡았는데, 코드를 좀 더 찾아보니 Bind Function을 Object와 FunctionName 두가지로 검색하는 것을 발견했습니다.

그래서 "혹시 항상 this를 넣어 주었던 Object 부분에 UObject를 넣어주면 되는거 아닐까?" 해서 시도를 해보았고, 이것이 들어맞게 되었습니다.

이 과정에서 몇 차례 크러시가 났었는데, 처음에는 Interface로 함수들을 선언해주고 이걸 UObject가 상속을 받게 했습니다.

하지만 Interface에서 파생된 함수는 Bind가 동작하면서 Object가 안전하지 못한 것인지 받아들이지 못했고, 그래서 Interface를 폐기하고 Object로 통일했습니다.

 

이 부분이 해결되니 그 이후는 비교적 간편했습니다.

Character 내부의 동작 함수를 각각의 Object에 이식을 하고, 이를 Bind 함수 내부에서 일괄적으로 Bind를 해주었습니다.

 

이후 작업은 Animation이 될 예정입니다.

기본 서있기나 이동 기능은 기본이고, 몇가지 사항은 애니메이션 제공 상황을 봐서 추가 적용할 생각입니다.

첫번째는 제자리에서 화면을 좌우로 전환 시 고개가 따라 움직이는 기능.

두번째는 고개가 일정 이상 회전 시 그 방향으로 몸이 완전히 돌아가는 기능.

세번째로 걷다가 방향을 전환할 시 회전 애니메이션을 넣는 기능.

이렇게 애니메이션을 우선 적용할 예정입니다.

여기까지가 연말에서 구정 전까지 작업 할 사항입니다.

 

위 작업이 마무리가 되면 뛰기, 점프, 앉기 등 혼자서 할 수 있는 기능들을 구현할 생각입니다.

그 다음에는 공격, 상호작용 등을 작업하여 솔로 플레이에서 퀄리티 있는 로코모션 기능을 구현하고, 간단한 오픈월드를 만들어서 IK를 적용할 생각입니다.

여기까지가 내년 3월 중으로 마무리 할 예정인 부분입니다.

 

이 다음은 Dedicate Server를 생성해서 멀티플레이에서 기능 테스트를 할 예정이고, 이 작업에서는 예전에 NDC에서 보았던 "서버와 클라이언트에서의 컴포넌트 부착을 조작하여 최적화"하는 것을 고려할 예정입니다.

예를 들어 Animation에 필요한 상세한 정보나 이벤트 호출 부분을 서버에서는 동작하지 않고, 결과만 받아서 쏴주는 등의 방식을 이용해볼까 합니다.

여기까지가 내년 상반기까지의 목표입니다.

 

이 부분까지 된다면 AWS에 서버를 올리고, 본격적인 기획사항을 구현해갈 예정입니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 12월 18일 개발일지  (0) 2022.12.18
22년 12월 07일 개발일지  (0) 2022.12.07
22년 11월 26일 개발일지  (0) 2022.11.26
22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 16일 개발일지  (0) 2022.11.16

오늘은 아래 영상을 참고하여 Enhanced Input Mapping을 이용해 기본적인 기능(이동/마우스 커서 회전)을 구현해봤습니다.

https://www.youtube.com/watch?v=XSz5l5Rfxbw 

작업했을 때 매우 간단하기는 했으나 이동 부분에 버그가 있어서 이 부분을 추가로 수정해줘야 할 것 같습니다.

 

그리고 영상의 방식을 따라 한다면 애니메이션의 배치 등을 모두 BP로 해야 하는데 이 방식이 효율적인지 고민입니다.

기능이 몇 없다면 문제가 없겠지만 스킬들을 넣는 등 여러 가지를 배치 한다면 어느정도 자동화를 하는게 좋겠는데,
이벤트 발생하는 시기를 특정지을 수 없어서 형태를 고민 중에 있습니다.

 

지금 드는 생각은 대략 이런 방식입니다.

1) 모션 발생 시 실행 될 함수를 인터페이스로 제공한다

2) 프로젝트에서 사용하는 공용 InputAction을 만들고 이 InputAction이 1)의 인터페이스 타입을 들고 있는다

3) Character 내부에서 2)의 InputAction에서 1)의 인터페이스 타입을 받아와 Character를 Cast 해서 Valid 한 경우에 이벤트를 Bind

 

개인적으로 아쉬운건 3)의 부분을 Template로 처리할 수 없어서 수동으로 작업해줘야 한다는 점입니다.

하지만 이를 완전히 자동화 해서 BP에서 숨김처리하는 것보다 기계적인 반복 처리가 필요하더라도 노출하는게 향후 신규 작업 추가 시에 더 좋지 않을까 하는 생각도 들어서 이 방법을 좀 더 탐구해보고 발전해볼 생각입니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 12월 18일 개발일지  (0) 2022.12.18
22년 12월 12일 개발일지  (0) 2022.12.12
22년 11월 26일 개발일지  (0) 2022.11.26
22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 16일 개발일지  (0) 2022.11.16

금요일에 Unreal Dev Community에서 Programming, Animation 관련 항목들을 읽고 개인적으로 필요하다 싶은 튜토리얼들을 정리해보았습니다.

 

https://docs.google.com/document/d/1DPCe4WUm4l5Sm4o00t2Kf14m-KGCB1Bg8JXcFKw699U/edit?usp=sharing 

 

언리얼 참고 튜토리얼

Common Tutorial https://www.youtube.com/playlist?list=PLiSlOaRBfgkftItFUtepyEfYc6VWC_Ym3 How to use Custom Struct as TMap Key https://dev.epicgames.com/community/learning/tutorials/GxZ9/using-custom-c-structs-as-tmap-keys-in-unreal-engine Locomotion Enhanc

docs.google.com

 

이를 기반으로 Locomotion 개발은 Enhanced Input으로 진행하기로 하였습니다.

다만 오늘은 이 부분을 제대로 손보지는 못했고, Mode나 Character 등 기본 Class와 BP들을 선언하고 연결하였습니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 12월 12일 개발일지  (0) 2022.12.12
22년 12월 07일 개발일지  (0) 2022.12.07
22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 16일 개발일지  (0) 2022.11.16
22년 11월 12일 개발일지  (2) 2022.11.12

일주일동안 GamePlay Ability System(이하 GAS)과 애니메이션 사용에 대해 공부를 했습니다.

결국 GAS는 게임 내에서 float 등으로 표시되는 스탯들을 관리하는 시스템이었습니다.

예를 들어 달리기를 한다면 모션 자체는 예전의 Animation과 구현이 동일하지만, 달리기 속도 등 외부 요인으로 변경될 수 있는 스탯들은 GAS로 관리를 해주는게 좋을 것 같습니다.

 

결국 GAS 자체는 기본 Locomotion이 구현되고 나면 그 뒤에 덧붙이는 편이 좋을 것 같습니다.

더불어 Sub Animation Graph 등 여러가지 기법들을 확인해서 이를 이용해 연말까지 Locomotion 구현을 진행해보고자 합니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 12월 07일 개발일지  (0) 2022.12.07
22년 11월 26일 개발일지  (0) 2022.11.26
22년 11월 16일 개발일지  (0) 2022.11.16
22년 11월 12일 개발일지  (2) 2022.11.12
22년 11월 03일 개발일지  (0) 2022.11.03

오늘은 프로젝트 세팅을 마무리하고 첫 작업을 해보았습니다.

GamePlay Abilities를 사용해보았는데, 튜토리얼을 따라해도 문제가 많아서 우선 모두 revert를 하였습니다.

다음에는 이 기능이 정확히 어떻게 동작하고, 어떤 경우에 쓰면 좋은지 파악해서 필요 기능 별로 구현 방식을 대략적으로 정리하고자 합니다.

이후 모두 GAS로 처리가 되면 GAS 개발을, 아니라면 GAS가 아닌 기능들을 우선 개발하고자 합니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 11월 26일 개발일지  (0) 2022.11.26
22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 12일 개발일지  (2) 2022.11.12
22년 11월 03일 개발일지  (0) 2022.11.03
22년 10월 29일 비개발일지  (0) 2022.10.30

일주일 넘게 걸렸습니다.

대략 열흘동안 주중에는 이슈가 좀 많아서 손을 못대고, 주말에는 프로젝트 세팅 하다가 오늘 어떻게 마무리가 되었습니다.

 

목표는 Unreal Project를 Content 폴더와 그 외의 것으로 분리해서 따로 VCS를 돌리는 것이었습니다.

처음에는 Content 폴더는 바이너리 파일들만 있기 때문에 Perforce로, 전체 프로젝트는 코드와 설정들이 주류라 Git으로 하고자 했습니다.

다만, 이 둘을 모두 EC2에 올려서 서버 구축 방법을 알아보고자 했습니다.

 

그런데 다른건 몰라도 EC2 접속 오류가 곧 죽어도 안 잡히더라구요.

그래서 타협을 해서 Git 대신 CodeCommit에 전체 프로젝트를 올려두고, Content만 따로 추가로 잡아보았습니다.

그게 거진 화요일? 수요일이었습니다.

 

그리고 오늘까지 작업한 결과 결국 답이 없더라구요.

EC2 접속 잡는건 여전히 잘 안되어서 결국 Perforce와 EC2를 포기하고 CodeCommit을 하나 더 만들어서 Content를 올려두었습니다.

 

썩 좋은 방법은 아닌 것 같은데 더 잡으면 더 쳐질 것만 같더라구요.

이 외에 업무시간 외에 휴식시간이나 대기시간에 짬짬히 GAS(Game Ability System)을 공부했습니다.

뭔가 감이 잡힐듯 안잡힐듯 한데 우선은 당장 애니메이션과 모션 쪽에서 어느정도 사용은 가능할 것 같아서 우선도를 높게 잡고 찾아보고자 합니다.

 

최우선은 컨트롤 방식을 좀 정해놓고, 정리한 뒤 이를 구현하는 것입니다.

상하좌우, 화면 돌리기를 먼저 잡고 그 사이에 GAS를 살펴본 뒤, 점프나 공격 등을 GAS를 사용하면서 해볼 생각입니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 11월 24일 개발일지  (0) 2022.11.24
22년 11월 16일 개발일지  (0) 2022.11.16
22년 11월 03일 개발일지  (0) 2022.11.03
22년 10월 29일 비개발일지  (0) 2022.10.30
22년 10월 02일 (비)개발일지  (0) 2022.10.02

근래 오버워치리그를 해서 그걸 보느라 컨디션 난조여서 자주 개발을 못했습니다.

개발환경 설정을 위해 요즘 AWS의 EC2를 만져보고 있습니다.

 

근데 이쪽은 해보는데도 잘 모르겠네요.

뭔가 하나씩 놓치는 것 같은데 메뉴나 기능이 워낙 많아서 어디서 복구하거나 다시 설정 가능한지 파악이 안됩니다.

일단 기존에 돌리던 인스턴스도 없고 하니 기존에 있는 잡다한 설정을 모두 지우고, 다시 설정을 하면서 세팅하고자 합니다.

 

목표는 EC2에 Perforce 서버를 올리는 것입니다.

자세히 설명하자면 전체 프로젝트를 AWS CodeCommit에 레포지토리를 올려두고, Contents 폴더만 따로 Perforce로 관리하고자 합니다.

 

작업 과정을 가능하면 정리를 좀 해놓고, 나중에 다른 곳에서도 사용 할 수 있다면 같이 사용하고자 합니다.

원래 처음 목표는 Push를 하면 확장자에 따라 Git과 Perforce 사용이 서버에서 따로 체크 되도록 하고 싶었는데 이건 커맨드도 수정하고 해야 할 것이 많은 것 같아서 포기했습니다.

거진 한달만에 작성하게 되었습니다.

사실 14일인가에 작업 하고 15일에 작업일지 올리려고 했으나 그 날 카카오 서버 터져서 못 적고, 그 다음주에도 잠깐 작업 했는데 피곤해서 그냥 자버리고 이래저래 시간이 길게 지났습니다.

작업 자체는 왼쪽 발, 오른쪽 발 내민 상태의 애니메이션을 형성하고 이동에 따른 몽타주 연결만 하면 되었습니다만.

결과적으로 얘기하면 다시 만들고자 합니다.

 

다른건 아니고 최근에 회사에서 다른 팀 시니어 개발자 분을 만날 기회가 있었습니다.

개발 관련해서 이것저것 여쭈어보았고, 개인 프로젝트 쪽에 관심을 가져주셔서 관련해서 답답하거나 아리까리한 부분을 싹 다 여쭤보게 되었는데요.

그 중에 "UE5가 최신 엔진 버전인데 근 3년 안에 한국 개발사가 이걸로 게임 만들거나, 내가 그 팀에 갈 것 같지가 않아서 UE4로 개발했다. UE5로 하는게 맞는가?"라고 물어봤을 때 "당연히 UE5로 해야 한다."라고 답을 들었습니다.

이유는 최신 기술이기도 하고, 더 좋은 기능이 제가 개발하는 것보다 더 좋은 퀄리티로 구현되어 있어서 그것을 보고 공부하는 것이 더 미래지향적이기도 하고, 익숙함 때문에 UE4로 개발하는 거라면 업무와 공부를 분리해서 모르는 것을 찾아 가는 것이 도움이 된다는 것이 이유였습니다.

 

그래서 그날 귀가하고 고민을 하다가 UE5로 다시 개발하기로 마음먹었습니다.

이전에 개발한걸로 봤을 때 Pose를 기반으로 한 AimOffset과 이를 통한 디테일한 애니메이션 구현은 좀 힘들 것 같습니다.

하지만 막상 예시 프로젝트를 보고도 그걸 그대로 만든 것도 아니라서 더 좋을지 아닐지 모르겠네요.

 

일단 몇가지 추가 목표를 잡았습니다.

1. 3월까지 기본적인 코어 모션들을 개발하는 것이 목표입니다.

여기서 코어 모션은 이동, 회전, 점프, 앉기, 상호작용, 감정표현 등입니다.

 

2. AWS에서 제대로 된 프로젝트 구조를 형성하고자 합니다.

AWS에서 CodeCommit이란 것도 지원을 하긴 하는데 이걸 사용 할지 말지는 나중에 결정하고,

우선 SVN을 EC2에 올려서 애셋과 코드를 따로 관리하는 것을 목표로 하고자 합니다.

그리고 UE5 엔진 코드도 따로 레포지토리로 관리하고자 합니다.

 

현재 프로젝트를 만들고, 애니메이션 애셋을 정리해서 생성한 프로젝트로 마이그레이션까지 해놓은 상태입니다.

예전에는 이 기능을 잘 몰라서 Ctrl C+V를 사용하면서 고역이었는데 관련해서도 여쭈어보니 "샘플 프로젝트에서 정리한 뒤 마이그레이션 해야 한다." 말고는 답이 없더라구요.

IKRig를 하나하나 파주는게 고역이었지만 하루 정도 투자해서 문제 없이 Animation이 재생되는 것을 확인했습니다.

작업 중 Material Function이 비정상동작 하긴 했는데 이건 샘플 프로젝트에서의 설정 문제인 것 같아서 별도로 따로 만져줬습니다.

 

개인적으로 작업 하면서 이걸 다시 할까? 혹은 엎을까? 라는 생각이 많이 들었습니다.

그럼에도 꾸역꾸역 2주에 한번씩이라도 했던 것은 끝을 본 적이 없어서였는데 어느 이유에서든 다시 하게 되었고,

지금도 자신에게 한심함을 느끼고 있습니다.

 

하지만 어느정도 조언을 구한 후에 진행하는 것이라 결과를 내고 그걸 위안으로 삼아보고자 합니다.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 11월 12일 개발일지  (2) 2022.11.12
22년 11월 03일 개발일지  (0) 2022.11.03
22년 10월 02일 (비)개발일지  (0) 2022.10.02
22년 09월 27일 개발일지 2  (0) 2022.09.27
22년 09월 27일 개발일지  (0) 2022.09.27

개발 관련해서 작업 확인을 했는데 실제 작업은 없었으니 (비)개발일지

AdvancedLocomotionSystemV 프로젝트에서 Move Animation 동작 방식을 확인해보았습니다.

애니메이션은 방향에 맞춰서 AimOffset으로 재생을 하는데, 문제는 이게 경우에 따라 매우 많더군요.

왼발이 앞으로 갈 때. 오른발이 앞으로 갈 때에 대한 애니메이션이 다 다른데,

이걸 구현하려 하면 제자리 회전도 어느정도 구현을 해야 할 것 같습니다.

 

그래서 왼발 오른발에 맞춰서 AimOffset과 같이 개발을 하고, 이후 발에 따른 제자리 회전 보강 작업을 병행하고자 합니다.

근래 일도 많고 개인적으로 안 좋은 일이 있어서 작업을 잘 안하게 되는 것 같습니다.

그래도 이동 기능까지는 연말까지 개발을 하였으면 하네요.

'개발일지 > 코어 플레이 개발' 카테고리의 다른 글

22년 11월 03일 개발일지  (0) 2022.11.03
22년 10월 29일 비개발일지  (0) 2022.10.30
22년 09월 27일 개발일지 2  (0) 2022.09.27
22년 09월 27일 개발일지  (0) 2022.09.27
22년 9월 26일 개발일지  (0) 2022.09.26

+ Recent posts