ReLayer Floating UI 스트레스 테스트: 바쁜 전투 화면에서 확인한 성능
개발 중인 ReLayer Floating UI를 소개하고 Android 에뮬레이터의 스트레스 테스트에서 배운 점을 나눕니다.
화면이 바빠져도 Floating UI는 전투를 잘 따라갈 수 있을까요? ReLayer 샘플에서 카메라와 캐릭터를 빠르게 움직이고, 테마를 바꾸며, 많은 숫자를 표시해 보았습니다. Android 에뮬레이터에서 30초 동안 진행한 테스트 결과를 소개합니다.

화면이 바빠지면 어떻게 될까요?
개발 중인 샘플에서 30초 동안 테마를 빠르게 바꾸고, 카메라와 캐릭터를 움직이고, 숫자를 쏟아낸 뒤 이 상황을 한꺼번에 겹쳐 보았습니다. 숫자가 많은 두 구간은 초당 1,000개의 표시 이벤트를 목표로 했습니다. 실제 게임 피해가 아닌 화면 표시용 테스트 값입니다.
숫자는 동시에 128개까지 표시하는 풀을 공유합니다. 풀이 차면 새 이벤트가 기존 숫자를 대체하므로 초당 1,000개 이벤트가 곧 1,000개 동시 표시를 뜻하지는 않습니다. 측정 전에는 테마 캐시를 준비했습니다.
결과와 함께 살펴볼 조건
1080p Android 에뮬레이터에서 Unity 2022.3과 네이티브 x86_64로 실행한 30초 동안 Unity 카메라는 평균 66.85 FPS, WebView 애니메이션 콜백은 평균 초당 88.37회였습니다. 표시 이벤트 12,012개를 전달했고 생성 작업을 건너뛴 횟수는 0회였습니다. 두 평균은 60을 넘었지만 개별 측정 구간에서는 그 아래로 떨어진 순간도 있었습니다.
별도의 Unity 6 ARM64 에뮬레이터 실행에서는 Unity 평균 52.80 FPS와 WebView 평균 87.92 FPS를 기록했습니다. 엔진 버전과 실행 아키텍처가 모두 달라 하나의 원인만 비교한 결과는 아닙니다. 두 결과는 녹화 부담이 포함된 에뮬레이터 측정이며 실기기 성능이나 프레임 속도를 보장하지 않습니다.
게임 세계에 어울리는 인터페이스
샘플에는 이름과 체력바, 피해와 회복 숫자, 버프와 콤보가 등장합니다. 판타지부터 선명한 전술 화면까지 여덟 가지 스타일을 출발점으로 삼을 수 있고, React 소스를 게임의 분위기에 맞게 수정할 수 있습니다.
Unity는 카메라와 캐릭터의 움직임에 맞춰 UI의 위치를 추적합니다. React로 만든 내용은 이미지로 캡처되며, 내용이 바뀌면 비동기로 갱신됩니다. 위치 추적과 내용 갱신은 별개이므로 새로운 체력 수치가 움직임보다 늦게 도착할 수 있습니다.

다음 타격을 위한 여유
이번 테스트를 통해 준비된 화면을 재사용하고 반복 작업을 줄일 부분을 찾았습니다. 같은 부하를 유지하며 평균 너머도 살펴보았습니다. 전투를 따라가는 플레이어에게는 잠깐의 멈춤도 중요하기 때문입니다.
이 글에서 소개한 확장 Floating UI와 스트레스 테스트 개선은 아직 개발 중이며 스토어 패키지로 출시되지 않았습니다. 출시를 준비하면서 다양한 환경에서 계속 확인하겠습니다.
