겜조뉴스

copyright 2009(c) GAMECHOSUN

게임조선 네트워크

주요 서비스 메뉴 펼치기

커뮤니티 펼치기

게임조선

[NDC 25] 퍼스트 디센던트의 사실적 물리 표현은 어떻게 완성됐나? AinmPhys 개발 일지

작성일 : 2025.06.26

 

 
 
넥슨이 주최하는 국내 최대 규모의 게임 개발자 콘퍼런스, '넥슨 개발자 콘퍼런스(이하 NDC)'가 6월 24일부터 26일까지 사흘간 판교 넥슨 사옥과 경기창조경제혁신센터에서 진행된다. IP 확장과 기획·개발 노하우, 생성형 AI와 데이터 분석 등 게임 산업의 최신 트렌드를 화두로, 총 10개 분야, 49개 세션이 준비됐다.
 
퍼스트 디센던트는 아름다운 캐릭터 디자인과 이를 완벽히 구현해낸 캐릭터 애니메이션으로 주목을 받았다. 뛰어난 상상력에 의해 만들어진 다양한 캐릭터와 다양한 코스튬의 구현은 퍼스트 디센던트의 빼놓을 수 없는 장점인 것. 그 기저에는 자연스럽게 흔들리는 물리 표현을 만들기 위한 노력이 있었다.
 
넥슨게임즈 MAG스튜디오 클라이언트 팀 박솔이 프로그래머가 언리얼 엔진을 활용해 퍼스트 디센던트를 개발하며 발생한 문제와 이를 해결한 원인에 집중한 사례를 소개했다. 그는 엔씨소프트 리니지와 블레이드앤소울 클라이언트 개발에 참여했으며, 퍼스트 디센던트 클라이언트 개발에 참여한 전문가다. 주로 최적화, 애니메이션 및 시네마틱 기능 개발을 하며, 소셜모션 콘텐츠를 담당하고 있다.
 
 
그는 먼저 언리얼 엔진 플러그인 KawaiiPhysics를 기반으로 퍼스트 디센던트를 위해 새로이 개선해 개발한 애니메이션 플러그인 AnimPhys에 대해 소개했다. KawaiiPhysics는 물리 시뮬레이션을 흉내내어 본의 흔들림을 표현해는 애니메이션 기능이다. 퍼스트 디센던트 또한 KawaiiPhysics로 개발을 시작했다고.
  
애니메이션에서 흔들리는 물리 표현이란 디즈니 12가지 애니메이션 법칙 중 Follow through and overlappng action을 의미한다. Follow through는 윗 체인이 움직였을 때 아랫 체인이 따라 움직이는 것을, overlappng action은 윗 체인이 멈췄을 때 그 반작용으로 아랫 체인이 앞으로 조금 가다가 뒤로 움직여 겹쳐지게 되는 동작을 말한다. 즉, 바디가 움직였을 때 연결된 부분이 자연스럽게 흔들리는 동작을 가지게 된다. 캐릭터의 애니메이션을 풍부하게 해주는 것이다.
 
 
그는 AnimPhys의 주요 기능으로 애니메이션 포즈에 따라 자연스럽게 본의 흔들림을 적용할 수 있고, 바닥/메시와의 충돌 처리, 바람/중력의 부드러운 표현, 캐릭터의 이동에 따라 본의 흔들림이 적용된다는 점을 들었다. 특히, 캐릭터의 이동이 빠르거나 느려질 때 본의 흔들림에 영향을 주게 된다고. 
 
실제 퍼스트 디센던트는 초기 KawaiiPhysics로 Mass Production을 진행해 퍼스트 디센던트의 흔들리는 물리 표현을 구현하고자 했다. 하지만 크로스플레이 베타 준비 중에 일부 구형 플랫폼에서 연산 문제로 느리다는 이슈가 제보됐고, 이를 해결하기 위해 본의 흔들림은 동일하지만 본의 흔들림을 개선한 AnimPhys를 구현, 이를 적용해 각각의 문제를 해결하게 됐다. 당연히 실제 퍼포먼스도 큰 폭으로 개선됐다.
 
 
이 밖에도 본 트리가 깊어져 너무 느려지는 현상, 중력/바람 영향으로 덜덜 떨리며 튀는 현상, 캐릭터 이동 시 한 방향으로 늘어지는 현상 등 물리 표현에 어색함을 줬던 문제들을 해결했다.
 
AnimPhys는 KawaiiPhysics의 성능과 Damping 반응을 개선한 AnimNode다. ComponentPose가 아닌 LocalPose를 이용한 계산 방식으로 성능을 향상시켰고, 중력이나 캐릭터 이동 값에 대한 계산 처리를 개선해 Damping 반응도 개선했다.
 
 
퍼스트 디센던트에 구현된 다양한 움직임은 AnimPhys의 추가 기능에서 발현됐다. 그는 이어서 AnimPhys의 몇 가지 기능과 실 적용 사례를 소개했다.
 
LimitAngleXYZ 기능은 본 이동 시 축 기준 회전 각을 지정할 수 있게 해준다. 최소, 최대를 지정할 수 있으며 0에 가까울 수록 이동이 작고 움직이는 반경을 제어할 수 있다.
 
ScaleDamping 기능은 본의 속도를 캐릭터 이동 속도에 비례하여 곱해준다. 캐릭터가 빠르게 움직이면 본의 움직임도 커지며, 특정 축으로 강조가 가능하다.
 
CollidedWithFloor 기능은 움직이는 캐릭터일 경우 Movement 컴포넌트의 바닥을 충돌체로 지정한다. 바닥의 기울기에 따라 충돌 반응을 다르게 설정할 수 있다.
 
CollidedWithAttachedMesh 기능은 여러 스켈레탈 메시 컴포넌트가 결합한 모듈형 캐릭터를 위한 기능이다. 어태치된 메시일 경우 입력된 어셋 사용자 데이터 AinmPhysCollisionData를 충돌체로 지정한다. 메시별로 구체 캡슐 형태의 충돌체를 지정할 수 있다.
 
본 강연에서 소개한 AinmPhys 소스코드는 넥슨게임즈 매그넘 스튜디오 깃허브에 공개되어 있다.
 
 
[김규리 기자 gamemkt@chosun.com] [gamechosun.co.kr]

ⓒ기사의 저작권은 게임조선에 있습니다. 허락없이 무단으로 기사 내용 전제 및 다운로드 링크배포를 금지합니다.

김규리 기자의

SNS
공유

댓글 0