아바타 순차 생성
18개+ 부위 조합 아바타의 생성을 비동기화해, 10인 이상 그룹 콘텐츠에서도 평균 30fps+ 유지
Moii · 2022 ~ 2025
Summary요약
문제
아바타가 최소 18가지 개별 부위를 조합해 생성되는 구조라, 일반 fbx+아이템 방식 대비 리소스 로딩·정점 연산 비용이 급증해 화면 렌더링이 멈추는 현상이 발생했습니다.
역할
기존 동기 생성 과정을 비동기 방식으로 재설계하고, 앱 렌더링 성능을 보장하는 최적화를 주도했습니다.
성과
앱 상황에 맞춰 생성 방식을 선택할 수 있게 되었고, 10인 이상 그룹 대화 콘텐츠에서 유저가 실시간 참여해도 렌더링 성능 저하 없이 서비스를 제공했습니다.
Key Numbers
Technical Deep Dive
업무 동기
Moii 프로젝트의 아바타는 최소 18가지의 개별 부위를 조합하여 생성되는 구조입니다. 이로 인해 일반적으로 사용하는 fbx 모델과 아이템을 조합하는 방식에 비해 리소스 로딩과 정점 연산 비용이 크게 증가하여 화면 렌더링이 멈추는 현상이 발생했습니다.
아바타의 다양한 조합이 가능하다는 장점이 있지만, 사업성의 핵심인 다양한 유저와의 만남을 구현하는 데 이 비용이 가장 큰 장애물로 작용했습니다.
이 문제를 해결하기 위해 기존 아바타 생성 과정을 비동기 방식으로 변경하고, 앱의 렌더링 성능을 최대한 보장할 수 있도록 최적화를 진행했습니다.
접근 방식
- 동기 생성 파이프라인을 단계별로 분해하고, 프레임 예산을 넘는 구간을 식별
- AssetBundle 다운로드 기반의 생성 코드를 별도 모듈로 분리해 유지보수성 확보
- Async/Await 없이도 동작하는 AssetBundle 로딩 경로와 WorkerThread 기반 Json 테이블 로딩·예외 처리 적용
- 생성 방식을 앱 상황(단독 화면 vs 다중 참여 콘텐츠)에 따라 선택할 수 있도록 설계
전체 흐름은 워크 다이어그램 (Figma)에서 확인할 수 있습니다.
시연 영상
업무 성과
아바타의 생성 방식을 앱의 상황에 맞춰 선택할 수 있게 되었습니다. 그룹 대화같이 10인 이상의 참여자가 필요한 콘텐츠에서 유저들이 실시간으로 참여해도 앱 렌더링 퍼포먼스가 크게 영향받지 않는 상태로 서비스를 제공할 수 있었고, 평균 30fps 이상을 유지했습니다.