Search Unity

디바이스 시뮬레이터 – 더욱 개선된 모바일 콘텐츠 제작 환경

, 9월 27, 2019

모바일 기기용 프로젝트를 제작할 때에는 서로 다른 특성과 사양을 지닌 다양한 기기에서 콘텐츠가 제대로 실행되는지 테스트하고 조정해야 합니다. 지원 대상 하드웨어를 모두 확보하여 테스트할 수 있다고 해도, 콘텐츠가 기기마다 어떻게 표시되는지 확인하려면 상당한 시간이 소요됩니다.

그래서 유니티는 다양한 기기의 물리적인 특징과 동작을 미리 볼 수 있는 디바이스 시뮬레이터(Device Simulator)를 개발했습니다. 디바이스 시뮬레이터를 통해 Unity 에디터에서 게임 코드를 실행시켜 실제 기기에서는 어떻게 실행되는지 훨씬 자세하게 살펴볼 수 있습니다. 게임 뷰에서 특정한 해상도와 노치, 컷아웃 등의 레이아웃을 미리 확인할 수 있으며, RAM, 칩셋 등 기기 정보를 기반으로 설정된 품질 설정 등 기기별로 사용자 지정 환경도 미리 볼 수 있습니다.

디바이스 시뮬레이터 개요

디바이스 시뮬레이터는 다음과 같은 기능을 지원합니다.

  • 시뮬레이션 모드를 켜고 끄거나 다른 기기를 선택할 수 있는 확장된 게임 뷰
  • API shim의 반환값을 출력하는 기기와 휴대폰 구성 및 특징을 저장할 수 있는 확장형 기기 데이터베이스
  • 해상도, 기기 모델, 디스플레이 방향 등 기기별로 API 결과를 반환하는 API shim(Unity 에디터 플레이 모드에서 사용)

 

디바이스 시뮬레이터 시연 영상을 확인해 보세요.

시뮬레이션 기기 목록

디바이스 시뮬레이터 패키지에는 사전 정의된 휴대폰 목록이 기본으로 포함되어 있습니다(com.unity.device-simulator/com.unity.device-simulator 폴더). 기기 정의는 JSON 파일로 저장되며, 패키지 업데이트를 통해 이 목록을 꾸준하게 늘려 나갈 예정입니다. 커스터마이즈한 기기 정의를 프로젝트에 추가해 간편하게 공유하고 소스 컨트롤에서 확인할 수 있는 기능도 제공할 계획입니다.

시뮬레이션 시나리오

디바이스 시뮬레이터에서 관리하는 두 가지 주요 클래스는 UnityEngine.Screen과 UnityEngine.SystemInfo이며, 반환된 값은 기기를 정의하는 JSON 파일로 피드됩니다.

이 기능으로 기기마다 특정한 동작을 Unity 에디터에서 테스트할 수 있습니다. 예를 들면 휴대폰별로 다양한 노치 위치에 따라 캔버스 크기를 계산하여 UI를 조정할 수 있습니다.

디바이스 시뮬레이터에 표시되는 SafeArea 위치와 캔버스 위치를 조정하는 동작

디바이스 시뮬레이터를 확장하여 시뮬레이션 시나리오를 직접 제작할 수도 있습니다. 또한 확장을 통해 시뮬레이터에 어댑티브 퍼포먼스를 적용할 수 있습니다. 이 기능은 스로틀링 이벤트를 발생시켜(시뮬레이션하여) 코드를 검토하고 필요할 때마다 성능을 조정해 의도한 대로 동작하게 합니다. 이 내용은 조만간 다른 블로그에서 자세히 소개하겠습니다.

어댑티브 퍼포먼스 스로틀링 이벤트를 시뮬레이션해 성능 조정 로직을 테스트하는 모습(생성되는 오브젝트 감소)

Unity 2019.3 버전에서 패키지 관리자를 통해 디바이스 시뮬레이터의 프리뷰 버전을 사용하실 수 있습니다. 포럼에 참여하여 질문이나 피드백을 남겨주세요. 여러분의 의견이 큰 도움이 됩니다.

30 replies on “디바이스 시뮬레이터 – 더욱 개선된 모바일 콘텐츠 제작 환경”

The author has written an excellent article. You made your point and not much to discuss. It’s like this universal truth that you can not argue with the truth is not universal, everything has its exception. Thanks for this information. tree care

This is great! thanks. Tried it out, but possibly found a bug, Screen.width and Screen.height report the simulated editor canvas size, instead of the device’s resolution. Normally those values are the actual device resolution.

Tried scaling view up to 100% to get around this, but the side bars don;t allow you to scroll to see the whole screen. can’t get camera view higher than about half way up the screen.
Looking forward to finished version… with will be a great help when finished.

I made a similar asset for previewing phones and tablets, that works for all Unity version from 5.0 to 2019.2.

It is called “Multi Device Preview & Gallery”.

You can preview more than 200 device presets and more than 50 full phone and tablet preview, including phones with notches. It also include popularity presets to target the popular phones of your target platforms. You can preview multiple devices at once in the gallery.

You can find the list of more 200 phone and tablet presets in the asset store page: https://assetstore.unity.com/packages/tools/utilities/multi-device-preview-gallery-82015

Currently we have shipped with two different Ipad Pro’s loaded but we will be adding more over the coming weeks to build a more rounded database.

Brilliant! It is not possible to have all the available devices, but this means we can get away with fewer than before. I still think the biggest, smallest, and least performant are needed. But at least we don’t need every aspect ratio and notch type now, which is getting to be a problem with the variety available.

Love this!
Seems to be API & CPU focused though… does this or will this address differences in graphics hardware, shader compatibility etc as well?

Great question. Currently we are only simulating SystemInfo and Screen, however we are investigating expanding this to also be able to override Graphics Capabilities & Shader keywords which would go another step to more closely replicate the visuals presented on a specific mobile device (TBD at this time). It’s important to note this wouldn’t be a full emulator nor are we able to emulate device specific performance.

Great news!

I was wondering will this system also simulate device performance ?
For example I found out that a 2d test scene was rendering at 60fps on Samsung S6 but only 7 to 9 fps on a Samsung J5.
Will this simulation be able to emulate this in a way that it would be possible to fine tune a scene for a given device taking into account a device hardware limitations ?

Unfortunately estimating performance on specific devices is not feasible. However this should certainly help you test different ‘quality tier’s’ that you can define and toggle to at runtime based on device models or chipsets.

Comments are closed.