애니메이션 작업을 하기 앞서 한가지 고민이 있었습니다.

캐릭터가 정상적으로 움직이게 하는 것을 먼저 할 것인가?

아니면 애니메이션을 먼저 만들것인가 입니다.

 

캐릭터를 움직이게 만드는 것은 코드를 다 까먹어서 하기 힘들지만 해놓으면 테스트가 용이했습니다.

반대로 애니메이션을 만드는 것은 땅 짚고 헤엄치는 식으로 가능하지만 마지막에 테스트를 위해 해야 하는 코드 과정이 더 길고 복잡합니다.

 

하지만 결국 후자를 선택했습니다.

그 이유는 2가지입니다.

첫번째로, 기본 모션을 만들고 작업해도 결국 추가 작업이 필요할 것 같다는 점.

두번째로, 제가 생각보다 의지가 약해 어려운 작업을 먼저 하다보면 안하게 된다는 것입니다.

 

그래서 오늘은 Animation Sequence를 Montage로 엮어보았습니다.

작업을 전부 완료한 것은 아니고, 간단한 것들부터 진행해 보았는데 생각보다 까다로웠습니다.

 

일단 제 기억상 몽타주를 여러개 쓰고 이걸 스위치로 가르는 것보다 Montage 하나를 공유하는 것이 더 낫다고 기억합니다.

그런데 동일한 카테고리의 Animation을 하나의 Montage로 엮다 보니 Section도 맞지 않고, 끝나는 시간도 맞지가 않았습니다.

 

현재는 이전에 작성한 글을 통해 몽타주를 상속 처리해서 좀 쪼개는 방법을 구상하고 있습니다.

https://redchiken.tistory.com/276

 

UE4 Montage와 Animation의 차이

Animation은 오직 하나의 애니메이션만 담을 수 있다면, Montage는 여러 Animation을 하나의 애셋으로 합칠 수도 있고, Montage 앞에 선행 Animation을 붙일 수 있다. 또한 그 안에서 Notify를 이용해 사운드, 파

redchiken.tistory.com

예를 들어, 걷는 Montage가 있다면 그 구조는 동일하더라도 세부적인 부분에서 실제 애니메이션이 갈라져서 다른 Child Montage를 호출할 수 있도록 하는 것입니다.

 

솔직히 이게 좋은 방안인지 잘 모르겠습니다.

아직 몽타주만 작업하는 단계이기도 하니까요.

그래도 지금 작성하면서 생각해보니 이 악물고 몽타주 줄이는 것보다 구조를 개선해서 다른 사람들이 알아보기 쉽게 명확히 하는 것이 미래의 나와의 협업 측면에서 더 나은 방안일 것 같습니다.

 

이제 이렇게 되면 남은 궁금증은 하나입니다.

Section을 쓰지 않는 동일한 카테고리의 단일 애니메이션을 어떻게 구현하느냐 입니다.

예전의 저 같으면 FSM에서 Switch로 다 때려박았을 겁니다.

하지만 몽타주에서 같은 카테고리를 공유한다고 하니 하나의 몽타주에 Slot을 나눠서 넣어서 구현하는 것이 떠오릅니다.

근데 사망 애니메이션 길이기 다르다 보니 이게 실제로 어떻게 처리될지 감이 안잡히더라구요.

 

일단 Unreal Forum에 질문글을 올려두긴 했습니다.

https://forums.unrealengine.com/t/questions-about-performance-of-montage/499673

 

Questions about Performance of Montage

I have some Question about Animation and Montage In below tutorial, Montage can contain Animations of Different mode. Editing an Animation Montage | Unreal Engine Documentation For Example, One Montage can contain walk slot and crouch walk slot. And I make

forums.unrealengine.com

미리 답을 알면 좋겠지만 그렇지 않는다면 코드 작업을 하면서 다시 한번 대격변이 일어나겠죠.

 

입사 전 실력으로도 좀 빠듯한 작업인데 이 파트는 그때보다 실력이 떨어져서 여러모로 힘에 부칩니다.

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

22년 07월 16일 개발일지  (0) 2022.07.16
22년 07월 15일 개발일지  (0) 2022.07.15
22년 07월 10일 개발일지  (0) 2022.07.10
22년 02월 19일 개발일지  (0) 2022.02.19
공부 다시 시작  (0) 2022.02.19

계기는 별거 없습니다.

제가 하고 싶은 일은 게임 컨텐츠 개발인데 현재는 코어 컨텐츠와는 조금 거리가 있는 작업을 하고 있기 때문입니다.

지금 하는 일이 불만족스럽거나 배움이 없는 것은 아닙니다.

하지만 하고 싶은 일을 하려면 경력에 걸맞는 실력을 갖추어야 하는데, 일 하면서 배우기는 힘드니 따로 하고자 합니다.

 

1차 목표는 Animation입니다.

현재 무료로 제공된 애니메이션들을 캐릭터가 모두 자연스럽게 표현 가능하도록 작업을 할 예정입니다.

이 과정에서 IK(Inverse Kinematic)나 Root Motion 등의 고급 기법(비교적)을 최대한 공부해서 적용을 하고자 합니다.

 

2차 목표는 상호작용입니다.

사다리 타기, 기어 가기, 기어 오르기 등 특정 오브젝트가 있어야 가능한 모션.

혹은 스펠, 공격 등의 행위들을 자연스럽게 구현하고자 합니다.

 

3차 목표는 기믹입니다.

제가 목표로 하는 게임 중에 데이터를 통해 하나의 오브젝트 군이 다양한 동작을 하도록 하는 것이 있습니다.

예를 들어, 오브젝트 A, B, C, D가 레벨에 있다고 가정을 합니다.

이 때 어떤 상황에서는 A, B, C가 하나의 기믹으로, 어느 경우에는 C, D, B가 하나의 기믹으로 동작하도록 하고 싶습니다.

이 기능의 궁극적인 목표는 최소한의 리소스로 최대한의 컨텐츠를 데이터테이블 수정을 통해 제공하는 것.

그리고 이런 맵 상의 기믹을 데이터테이블로 모듈화 하는 것입니다.

 

4차 목표는 AI입니다.

간단한 몬스터를 만들고 AI를 부여하여 소규모 전투를 구연하고자 합니다.

사실상 4차까지 오면 수 년은 걸릴텐데, 실력이 된다면 조금 복잡한 몬스터 AI를 보여하고 싶습니다.

 

5차 목표는 레벨 생성입니다.

매우 큰 레벨을 생성하고, 그 안에 랜덤 오브젝트 배치를 하면서 성능을 뽑아내고 싶습니다.

 

마지막 6차 목표는 데디케이트서버 입니다.

실제 AWS에서 세션을 올려 데디케이트 서버에 멀티플레이를 간략하게 제공하는 것.

그리고 서버에는 로그 파일이 남도록 하는 것이 목표입니다.

 

본 게시판에는 위 목표를 이루면서 발생하는 개발일지를 작성해볼 생각입니다.

예전과 달리 직장에 다니고 있어 자주 못할 수 있고, 중간에 엎어지기도 쉽습니다.

하지만 목표를 명확히 해서 어떻게든 실력을 향상시키고자 합니다.

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

22년 07월 16일 개발일지  (0) 2022.07.16
22년 07월 15일 개발일지  (0) 2022.07.15
22년 07월 10일 개발일지  (0) 2022.07.10
22년 02월 19일 개발일지  (0) 2022.02.19
22년 02월 19일 개발일지  (0) 2022.02.19

2년차에 들어서면서 경력에 비해 조금 더 다양한 경험을 할 기회를 가졌고 이를 기반으로 학생 때 놓쳤던 부분을 서술해봅니다.

 

1) 게임 개발은 플레이 개발만 있는 것이 아닙니다.

게임 개발에 입문 하는 사람들은 대부분 게임 플레이 하던 것을 만들고 싶어 입문을 합니다.

그리고 실제로 플레이 관련된 부분의 경험을 쌓아올립니다.

하지만 실제로 입사를 하게 되면 그런 개발을 바로 하게 되기란 쉽지가 않습니다.

게다가 게임에서 실제 플레이 못지 않게 중요한 부분이 게임 외 컨텐츠(랭킹, 결제 등)들이고,

이런 부분의 경험은 평소에 해오던 게임 개발보다는 Mobile/Web Application에 더 가깝습니다.

그리고 이런 게임 외 컨텐츠는 데디케이트서버와의 통신이 아닌 별도의 서버와 HTTP로 통신을 하는 추세입니다.

즉, 게임 개발이라고 보통 알고 있는 부분은 전체 개발 분야의 한가지이고,

전체적인 부분에서는 다른 소프트웨어 개발과 크게 다를 바가 없다는 것입니다.

 

2) 성능 최적화가 습관화 되어 있으면 좋습니다.

클린 코드, 알고리즘, 자료구조.

학생 때 공부를 좀 하다 보면 한번씩 접한 거고 한번 씩 빠져볼법한 주제입니다.

하지만 구조적인 부분을 고민하다가 놓치는 부분이 있습니다.

언어나 엔진의 구조에서 발생하는 성능 차이. 혹은 네트워크 환경 상 발생하는 문제입니다.

사실 경험상 후자가 전자보다 더 뼈아프게 다가옵니다.

전자는 여러 프로젝트에서 경험을 했지만, 후자는 학교에서 신경쓰면서 개발하기가 쉽지가 않거든요.

그럼에도 이런 부분에 숙련이 된다면 좀 더 나은 평가를 받고, 개발의 질이 한 단계 상승한다고 생각합니다.

최종적으로, 언어 자체의 깊은 이해도와 함께 프로파일링 경험을 가지시는 것을 추천드리는 바 입니다.

 

3) 네트워크와 DB를 무시하지 마세요.

게임 개발, 특히 게임 플레이 개발을 하는 사람들은 보통 엔진 경험 다음으로 그래픽스로 빠지는 경향이 있습니다.

물론 그래픽스도 중요합니다. 하지만 현실적으로 그래픽스 지식보다 당장 직면하게 되는 것은 네트워크와 DB입니다.

여기서는 설명이 필요하겠는데요.

웹 프로그래밍이나 앱 프로그래밍은 보통 DB와 앱이 직접 통신을 합니다.

그래서 별도의 DB라는 개념이 거의 없습니다.

하지만 게임 개발은 바이너리 파일로 DB처럼 쓰이는 테이블들이 꽤 있습니다.

심지어 개발자가 직접 개발을 하지 않고 테이블만 갱신을 하면 패치 없이 컨텐츠가 바뀌기 때문에 권장되죠.

그렇기에 클라이언트 개발을 하면서 항상 DB에서 고민하던 사항들을 같이 고민을 해야 합니다.

네트워크도 마찬가지입니다.

데디케이트 서버의 코드는 일반 게임 코드와 분리가 되어 있지 않습니다.

함수 단위에서 RPC를 구분지어서 작성을 하면 각각의 클라이언트에서 서버와 RPC 통신을 하는 것입니다.

때문에 네트워크 지식이 필히 요구됩니다.

 

적고 보니 당연한 얘기들만 있네요.

하지만 전 놓쳤던 부분들이었습니다.

지금 따라 가려고 하고 있고, 늘 그렇듯 하려고 하면 할 수 있게 되는 부분입니다.

그래도 미리 해놓는다면 더 높은 위치에서 시작할 수 있지 않을까 하여 공유드립니다.

'일기장' 카테고리의 다른 글

2021년 목표  (0) 2021.01.01
입사 후 근황 및 계획  (0) 2020.10.06
미끌  (0) 2020.08.14
분야 별로 요구하는 포트폴리오 포맷이 다른가봅니다.  (0) 2020.08.11
갑자기 면접 제의가 쏟아지네요  (0) 2020.08.06

+ Recent posts