[취재] 라인게임즈 이도행·이진희, “유니티로도 프리미엄 3D 뱀서 충분히 만들 수 있다”

신승원 sw@gamedonga.co.kr

라인게임즈가 수백 마리의 적과 화려한 이펙트를 동시에 구현하면서도 안정적인 성능을 유지한 ‘엠버 앤 블레이드’의 최적화 사례를 공개했다.

라인게임즈 이도행 테크니컬 디렉터와 이진희 테크니컬 아티스트는 21일 서울 코엑스에서 열린 글로벌 개발자 컨퍼런스 ‘유나이트 서울 2026’에서 ‘수백 마리의 적, 가벼운 빌드: <엠버 앤 블레이드>로 만든 3D 뱀서의 비주얼과 최적화’를 주제로 발표를 진행했다.

‘엠버 앤 블레이드’는 라인게임즈 나인라이브즈 팀이 유니티 6.3 LTS를 기반으로 개발 중인 PC·콘솔용 AA급 로그라이트 3D 서바이벌라이크 액션 게임이다. 다수의 적을 한꺼번에 상대하는 전투와 덱 빌딩, 보스전, 내러티브를 결합한 작품으로, 개발진은 이를 ‘프리미엄 뱀서’라고 소개했다.

왼쪽부터 순서대로 이도행 TD / 이진희 TA
왼쪽부터 순서대로 이도행 TD / 이진희 TA

CPU가 처리하던 작업을 GPU로 이전하는 것이 핵심

개발진이 제시한 최적화의 핵심은 CPU가 처리하던 작업을 최대한 GPU로 보내는 것이었다. 몬스터 애니메이션에는 버텍스 애니메이션 텍스처(VAT)와 GPU 인스턴싱을 적용해 같은 메시와 머티리얼을 사용하는 적들을 한꺼번에 렌더링했다.

그 결과 스킨드 메시 렌더러만 사용했을 때보다 약 3배 높은 성능을 확보했다. 몬스터 500마리를 표현할 때 약 8천 회에 달했던 배치 호출도 68회 수준까지 줄였다.

이진희 테크니컬 아티스트는 “VAT를 적용하면 애니메이터 업데이트 과정이 사라져 처리 속도를 높일 수 있다”며 “여기에 GPU 인스턴싱까지 결합하면서 다수의 몬스터를 한 번에 그릴 수 있게 됐다”고 설명했다.

이진희 TA
이진희 TA

VFX 그래프로 수백 개의 투사체와 이펙트 처리

수많은 투사체와 전투 이펙트에는 VFX 그래프가 활용됐다. 기존처럼 투사체마다 별도의 그래프를 실행하는 대신 투사체의 위치와 방향, 생존 상태를 그래픽스 버퍼에 담고 하나의 VFX 그래프에서 샘플링하는 구조를 구축했다.

이를 통해 수백 개의 투사체와 피격 효과가 동시에 발생하는 상황에서도 배치 수와 렌더링 부담을 크게 낮출 수 있었다. 특히 카드 투사체와 궤적, 발사 효과, 소멸 효과 등을 하나의 그래프에서 처리해 반복적으로 VFX 오브젝트를 생성하는 부담을 줄였다.

개발진은 VFX 그래프를 도입하지 않았다면 현재 수준의 물량과 이펙트를 구현하기 어려웠을 것이라고 강조했다.

APV와 포워드 플러스로 비주얼 품질 유지

조명에는 유니티 6의 적응형 프로브 볼륨(Adaptive Probe Volumes, APV)을 적용했다. 기존 라이트맵 방식에서 요구되던 라이트맵 UV와 라이트 프로브의 수동 관리 부담을 줄이고, 동적 오브젝트에도 자연스러운 글로벌 일루미네이션을 적용하기 위해서다.

APV의 라이팅 시나리오와 실시간 블렌딩 기능을 활용해 낮에서 오후, 저녁으로 변화하는 환경도 구현했다. 다수의 실시간 라이트를 처리하기 위해 URP의 포워드 플러스도 적용했다.

환경 오브젝트 종류는 가능한 한 최소화하고, 잔디와 촛불 등 반복 배치되는 요소에는 GPU 인스턴싱을 활용했다. 유니티 터레인을 메시로 변환하고, 텍스처 채널 패킹과 셰이더 동적 분기를 적용해 렌더링 및 메모리 부담도 줄였다.

이진희 TA
이진희 TA

‘히칭’ 문제는 로딩 화면에서 해결

개발 과정에서 큰 문제로 떠오른 것은 VFX 그래프가 처음 실행될 때 발생하는 히칭이었다. 개발용 PC에는 이미 셰이더 캐시가 쌓여 있어 문제가 잘 드러나지 않았지만, 캐시가 없는 이용자의 첫 실행 환경에서는 새로운 이펙트와 몬스터가 등장할 때마다 화면이 끊겼다.

라인게임즈는 콜드 스타트 환경에서 반복적으로 테스트하고, 파이프라인 스테이트 오브젝트(PSO)와 VFX를 미리 실행하는 워밍업 시스템을 구축했다. 최초 로딩 화면 뒤에서 실제 이펙트와 라이팅 시나리오를 실행해 필요한 캐시를 사전에 생성하는 방식이다.

이를 통해 셰이더와 PSO 커버리지를 약 24%에서 98%까지 높였다. 이펙트 생성 시 10~14회 발생하던 GPU 프로그램 생성 호출도 0~2회 수준까지 줄였다. 개발진은 최초 로딩 시간이 다소 길어지는 것보다 게임 플레이 도중 화면이 끊기는 현상을 제거하는 것이 이용자 경험에 더 중요하다고 판단했다.

최적화 후 성과
최적화 후 성과

몬스터 공격부터 UI까지 모두 재활용하는 것이 프로그래머의 미덕

게임 로직에도 최적화가 적용됐다. 수백 마리의 적이 동시에 공격하면 게임성과 성능 모두 문제가 발생하는 만큼, 공격 권한을 순차적으로 배분하는 ‘티켓 시스템’을 도입했다. 일반 몬스터와 엘리트, 중간 보스, 보스가 서로 다른 티켓을 사용하도록 구성해 동시 공격 수를 제어했다.

런타임 메모리 할당을 줄이기 위해 논 얼록 물리 연산과 오브젝트 풀링도 적극적으로 사용했다. 몬스터와 투사체, 이펙트, UI, 데미지 표시 요소 등 가능한 대부분의 오브젝트를 새로 생성하지 않고 재사용하도록 설계했다.

어드레서블을 활용해 사용하지 않는 에셋을 주기적으로 해제했으며, 텍스처 크기도 일괄 축소하는 대신 모든 에셋을 직접 검수해 AA급 비주얼을 유지했다. 오디오는 길이에 따라 디컴프레스 온 로드, 컴프레스드 인 메모리, 스트리밍 방식을 구분해 히칭과 메모리 사용량을 관리했다.

그 결과 초기 약 14GB에 달했던 메모리 사용량을 3~5GB 수준까지 줄였다. 현재는 500마리 이상의 적을 화면에 구현하고 있으며, 내부에서는 1천 마리 구현을 목표로 추가 최적화를 진행하고 있다.

이도행 테크니컬 디렉터는 “AA급 게임 최적화의 핵심은 CPU가 해야 할 일을 줄이는 것”이라며 “VAT와 GPU 인스턴싱, VFX 그래프를 활용해 작업을 GPU로 보내고, 메모리를 미리 할당해 재사용한다면 유니티로도 프리미엄 3D 뱀서 게임을 충분히 만들 수 있다”고 말했다.

게임동아의 모든 콘텐츠(기사)는 Creative commons 저작자표시-비영리-변경금지 라이선스에 따라 이용할 수 있습니다.
의견은 IT동아(게임동아) 페이스북에서 덧글 또는 메신저로 남겨주세요.