Sik.limited Logo

Astra와 Blender로 3D게임 만들기(feat. Godot 게임엔진) - 2

무리깅 오리를 Rigify로 리깅하고 9종 애니메이션과 타일별 먼지를 붙인 뒤, Godot 게임의 로직과 UI/UX를 마감한 기록입니다.

Sik ·

1편에서 오리가 살 게임 세계와 개체 로직의 뼈대를 만들었다면, 2편은 그 오리를 진짜 오리처럼 보이게 만드는 일이었습니다.

처음에는 리깅 없는 모델을 그대로 넣었습니다. 기능 검증에는 그걸로 충분했지만, 오리가 움직이기 시작하면 게임의 인상이 완전히 달라질 것 같았어요. 그래서 Astra에게 Blender를 맡기고, Rigify로 새 캐릭터 리깅을 구성해달라고 요청했습니다.

예쁜 포즈보다 움직임의 이유를 먼저 잡기

리깅을 요청할 때 기준은 단순했습니다. 새가 어떤 포즈를 취하는지가 아니라, 움직일 때 무게가 어디로 쏠리는지를 보여달라는 것이었어요.

디즈니 애니메이션의 기본 원리를 참고해, 멈춰 있을 때와 뛰기 직전, 물에 들어갈 때의 대비가 보이도록 리깅과 모션의 방향을 잡았습니다. 모델의 형태를 그대로 복제하는 게 아니라, 오리라는 캐릭터가 읽히는 타이밍과 실루엣을 우선한 방식입니다.

헤엄치는 포즈로 확인한 리깅과 실루엣
헤엄치는 포즈로 확인한 리깅과 실루엣

결과적으로 9가지 리깅 애니메이션을 만들었습니다. 가만히 서 있는 동작도, 이동 동작도 게임 안에서는 같은 비중을 갖습니다. 수백 마리의 오리가 있는 화면에서는 한 마리의 화려한 동작보다, 여러 마리가 동시에 움직일 때 전체가 살아 보이는지가 더 중요했어요.

달릴 때는 바닥도 반응하게 만들었다

심심해서 달리는 오리의 발밑에 파티클도 붙였습니다. 중요한 건 파티클 자체보다, 오리가 어떤 타일을 밟는지에 따라 반응이 달라지는 점이었어요.

흙길에서는 가벼운 먼지가 일고, 다른 표면에서는 그에 맞는 반응이 나옵니다. 작은 차이지만, 오리가 단순히 좌표를 이동하는 오브젝트가 아니라 바닥 위를 달리는 생명처럼 보이게 합니다.

타일을 밟을 때 먼지가 함께 반응하는 달리기 모션
타일을 밟을 때 먼지가 함께 반응하는 달리기 모션

이런 효과는 무작정 많이 넣으면 성능을 먼저 잡아먹습니다. 그래서 오리가 많은 상황에서도 눈에 필요한 만큼만 보이도록 관리했습니다. 게임의 목적은 기술 데모가 아니라, 부담 없이 켜두고 오리를 보는 경험이니까요.

로직과 UI/UX는 마지막에 더 오래 본다

모션이 들어가자 게임은 훨씬 그럴듯해졌습니다. 그렇다고 끝은 아니었습니다. 오리들의 상태가 바뀌는 타이밍, 플레이어가 지금 무엇을 할 수 있는지 알려주는 UI, 화면을 덜 복잡하게 만드는 UX를 다시 다듬었습니다.

이 단계에서 알게 된 건, MVP가 빨리 나오는 것과 게임이 편하게 읽히는 것은 다른 문제라는 점입니다. 첫 버전은 한 시간도 안 돼 움직였지만, 그 뒤 사흘 동안은 작은 어색함을 찾고 고치는 데 썼어요. 에이전트가 구현을 빠르게 해도, “이 정도면 계속 보고 싶다”는 감각은 화면을 직접 보면서만 결정할 수 있었습니다.

4일 뒤에 남은 것

친구의 모델 하나에서 시작한 오리농장 복각은, Godot 위에서 돌아가는 3D 키우기 게임의 형태를 갖췄습니다. 3D 모델링을 제외한 자산과 구현의 많은 부분은 생성형 도구와 Astra, Terra 에이전트 군단의 도움으로 만들었습니다.

이번 작업은 AI가 게임을 혼자 만들어줬다는 얘기라기보다, 게임을 만드는 사람의 반복 속도를 어디까지 밀어줄 수 있는지 본 실험에 가까웠습니다. 월드를 만들고, 큐브로 먼저 움직여보고, 오리에게 뼈를 넣고, 먼지를 붙이고, 마지막으로 화면을 정리하는 과정. 각각은 익숙한 작업이지만 연결되는 속도가 달랐어요.

이제 남은 건 발매와 그 뒤의 관찰입니다. 실제로 플레이하는 사람에게 이 게임이 얼마나 멍때리고 보기 좋은 경험으로 남는지, 발매 후기는 다음 글에서 이어서 써보겠습니다.


이어서 읽기

Astra와 Blender로 3D게임 만들기(feat. Godot 게임엔진) - 1: 게임 세계와 MVP를 만든 날

최신 글