내일배움캠프 97일차 - 언리얼 C++ 멀티플레이 팀프로젝트: 미니게임파티 12~13일차

언리얼엔진5 C++ 기반 멀티플레이 게임 팀 프로젝트 제작

작업내용 요약

캐릭터 필수 애니메이션 제작 완료. 애니메이션 블루프린트에 기본적인 로코모션 연동 완료.

팀원들의 시스템 기획 고민 해결.


캐릭터 애니메이션 제작

주말동안 진행했던 캐릭터 애니메이션 작업기술적 어려움보다는 디자인적 고민의 연속이었다. 캐주얼을 표방하는 게임에서 폴가이즈 같은 우스꽝스러운 모션을 만들기 위해서는 관절을 어떻게 움직여야 하는가? 게임 내에서 폭탄, 깃발 같은 인터랙션 아이템을 픽업했을 때 기존 모션에 픽업모션을 합치기 위해 어떤 본을 기준으로 본 블렌딩을 거쳐야 할까? 캐릭터의 시선은 항상 정면을 향해야 하는가? 등의 사소한 고민부터 게임의 비쥬얼을 결정할지 모르는 고민까지 놓이는 경우가 잦았다.

이러한 내적갈등 중에서 기술적인 비중을 차지하는 고민 해결사례를 치자면 다음과 같다.

1) 캐릭터의 시선처리

이 에셋의 원본은 애당초 표정이 존재하지 않았다. 그렇기 때문에 캐릭터가 바라보는 정면을 표현하기 위해 추가적인 작업을 진행해야 했는데, 이 캐릭터 메시 위에 표정 텍스처를 얹는 것이었다.

이 에셋의 라이선스는 CC BY 4.0로, 저작권자 표시만 지킨다면 어느 정도의 에셋 변형은 문제없다.

캐릭터가 움직일 때는 몸은 이동 방향으로 향하되, 얼굴의 방향은 카메라 방향으로 향하게 할 예정이다. 얼굴을 돌릴 때에는 컨트롤 릭을 사용해 본을 움직이고, 얼굴 각도가 비정상적으로 변하지 않게 클램프 처리를 해야 할 것이다.

2) 상태 변화 시의 본 블렌딩

이전의 나는 과제를 진행하면서 이미 본 블렌딩을 다뤄본 바가 있었다. 비행기가 Z가속도에 따라 날개를 올렸다 내리고 싶을 때, Layered blend per bone 노드를 사용해 날개 bone 이후부터 날개 애니메이션의 영향0~1 사이로 받게 할 수 있었다.

위에 본 블렌딩과 관련된 고민은 픽업 아이템을 들어올렸을 때 이므로, 어깨 bone 이후부터 '아이템을 들어올리는 애니메이션'의 영향을 받게 하면 될 것이다.

이런 식으로 기초적인 고민부터 해결해서, 기본 로코모션 무브셋을 완성하고 '아이템을 들어올린 상태'에 따라 애니메이션을 다르게 적용할 수 있었다.


팀장으로서의 역할

팀장의 위치에서 팀프로젝트를 진행하는 동안 작업초기에는 규모가 아직 크지 않아서 정기적인 작업보고 외에는 별다른 의견교환이 없었는데 이후 내용에 살이 붙으면서 스크럼을 진행하다보니 자연스레 회의의 분위기를 주도하게 되고 팀장으로서 팀원이 겪고있는 기술적 어려움에 대한 조율점을 조언하게 된다.

오늘의 경우는, 한 팀원이 채팅창을 제작하고 있었는데 게임 플레이 중에 채팅창이 포커싱되기 위해 어떤 키를 할당해야 하는 지에 대한 고민을 하고 있었다. 기존 Enter키는 이미 채팅메세지 커밋에 할당되어있었기에 채팅창을 포커싱하는 것에는 Tab키를 할당할 예정이었다고 한다.

이에 나는 여타 온라인 게임들이 그러했듯이 Enter 한번으로 채팅창을 포커싱하고 그 상태에서 메세지를 입력 후 Enter키를 누르면 출력, 메세지가 비어있을때 Enter키를 누르면 포커싱을 해제하게 끔 하면 되지 않느냐고 조언하였고, 덧붙여 플레이 중 채팅창이 시각적으로 방해가 된다면 마지막으로 채팅이 출력된 시점으로부터 일정시간 경과 후 채팅창을 페이드아웃 하는 것을 제안했다. 이에 팀원이 수긍하며 채팅창 구현의 방향에 어느 정도 기틀이 잡힌 것으로 보였다.

그 외에도 비단 조언을 통한 해결안 제시 뿐만 아니라 의사결정에 갈림길이 생겨나면 팀원의 의견을 직접 들어보고 취합해 방향성을 결정하거나 의견이 좁혀지지 않을 때 팀장 재량으로 강하게 밀어붙여 낭비되는 시간을 줄이는 것이 팀장의 역할인 것으로 느껴진다.

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁