대형 화면에 맞는 최적화를 통해 Chrome OS 참여도를 25% 높인 Pixonic

배경

모스크바에 본사를 두고 있으며 비디오 게임 개발자들로 구성된 팀인 Pixonic은 모바일 앱을 업그레이드하고 더 많은 게이머에게 다가가기 위해 최선을 다하고 있습니다. 이 회사에서 가장 유명한 앱 중 하나는 12명이 참여하는 PvP 게임인 War Robots로, 플레이어들이 실시간 전장에서 맞춤설정된 로봇을 조종하며 1:1로 결투를 벌이기도 합니다.

2014년 출시된 War Robots는 원래 Android의 초기 버전 기기를 대상으로 개발되었기 때문에 터치패드 기반의 움직임을 사용했고 마우스 입력이 없었습니다. 개발자이면서 동시에 게임을 사랑하는 게이머이기도 한 Pixonic팀은 노트북과 태블릿 등 폭넓은 기기에서 훌륭한 사용자 환경을 제공하려면 앱에 몇 가지 수정이 필요하다는 점을 깨달았습니다. War Robots는 당시 이미 모든 Android 기기에서 플레이할 수 있었습니다. Chromebook 컨테이너에서 Android 프레임워크의 전체 버전을 실행할 수 있기 때문입니다. 여기에 더해 몇 가지의 코딩 작업을 한 덕분에 Pixonic에서는 Chrome OS의 모든 장점을 활용할 수 있게 되었습니다.

Pixonic팀은 다음과 같은 방법으로 대형 화면에서 최적의 환경을 제공할 수 있도록 War Robots를 최적화했습니다.

진행한 작업

Pixonic에서는 최적화를 시작하면서 우선 AndroidManifest.xml에 메타데이터 태그를 추가했는데, 이 메타데이터 태그는 Chrome OS 전체 지원을 받을 되었으며 터치 에뮬레이션을 사용 중지해야 한다고 시스템에 알립니다.

<uses-feature android:name="android.hardware.type.pc" android:required="false" />

또한 Pixonic은 Unity 게이밍 엔진에서 마우스 클릭 및 터치패드 이벤트뿐 아니라 움직임과 관련된 모든 API 이벤트를 직접 수신하도록 앱의 minSdk를 24로 설정했습니다.

키보드 및 마우스 지원

War Robots와 같은 3인칭 PvP 게임의 경우 특히 화면이 큰 기기에서 키보드와 마우스를 사용하면 훨씬 쉽게 움직이고 조준할 수 있습니다. 따라서 Pixonic에서는 터치스크린 컨트롤을 유지하면서 게임의 전투 모드에 키보드 및 마우스 지원을 추가하도록 코드를 다시 작성했습니다.

Pixonic팀은 적절한 시점에 적절한 컨트롤을 제공하기 위하여 사용자의 현재 게임플레이 모드를 확인할 수 있는 새로운 코드를 작성했습니다.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    boolean hasQwertyKeyboard = newConfig.keyboard == Configuration.KEYBOARD_QWERTY && newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO;
    try {
        UnityPlayer.UnitySendMessage("Receiver", "ConfigChange", new JSONObject().put("keyboard", hasQwertyKeyboard).toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

QWERTY 키보드가 감지되면 게임이 데스크톱 모드에 맞게 조정됩니다. 즉, 왼쪽 하단에 있는 이동 조이스틱이 사라지고 무기/능력/메뉴별 정렬 등 사용 가능한 모든 작업에 단축키 라벨이 표시됩니다.

War Robots 노트북 모드

키보드가 감지되지 않으면 왼쪽 하단에 이동 조이스틱이 표시되며 오른쪽 하단 메뉴 버튼에서 단축키가 사라집니다.

War Robots 태블릿/모바일 게임플레이 모드

다음으로 Pixonic에서는 플레이어가 마우스를 사용해 카메라를 회전시킬 때 커서를 숨겨진 상태로 유지하고자 했습니다. 팀은 Android 7.0(API 수준 24) 이상을 타겟팅하여 모든 포인터 아이콘을 설정했으며 이때 팀은 게임플레이 도중 커서가 보이지 않도록 투명 비트맵을 사용했습니다.

public boolean setPointerVisibility(boolean visible) {
    View = activity.findViewById(android.R.id.content);
    view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}

이렇게 하면 다른 모든 창이 닫힌 상태로 전투가 진행되고 있을 때는 커서가 사용 중지되고 사라지지만 일시중지 메뉴와 같은 팝업 창이 표시되면 커서가 기본 아이콘으로 표시됩니다.

게임플레이 가이드 및 메커니즘 변경

Pixonic은 더 나은 사용자 환경을 제공하기 위해 사용자의 현재 기기 모드를 기반으로 다른 게임플레이 가이드를 표시하는 새로운 코드도 작성했습니다. 플레이어가 전투 중에 태블릿과 노트북 게임플레이를 전환했고, 다른 모드에 대한 가이드가 아직 표시되지 않았다면 게임플레이가 재개되기 전에 가이드가 표시됩니다.

키보드와 마우스 입력이 있는 노트북 모드의 게임 플레이 가이드

터치스크린 컨트롤이 있는 태블릿 모드의 게임 플레이 가이드

플레이어가 노트북 모드를 사용하고 있으면 모든 게임플레이 버튼은 평소와 같이 작동하지만 터치스크린 카메라 컨트롤(플레이어가 마우스로 카메라를 제어하고 있음)은 사용 중지됩니다. 마우스 움직임과 터치를 구별하기 위해 Pixonic팀은 Unity 스크립트의 Input.touchCount 속성을 사용합니다.

if(Input.touchCount > 0) {
    // this is screen touch event
} else {
    // this is mouse (touchpad) event
}

멀티 윈도우 지원

마지막 단계로 Pixonic에서는 게임이 출시될 때 게임이 전체 화면 모드에서 저절로 고정되지 않도록 하게 하고 싶었습니다. Chrome OS에서 창 모드 게임플레이를 사용 설정하면 사용자가 게임을 플레이하면서 좋아하는 스트리머의 동영상을 시청하거나, 게임 웹사이트에서 새로운 기능을 읽으며 로봇을 업그레이드하거나, 별도의 동영상을 시청하는 동시에 수동 모드에서 전투를 관전할 수 있습니다.

이를 위해 Pixonic에서는 UnityPlayerActivity를 크기 조절 가능으로 표시했습니다.

<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
    android:resizeableActivity="true">

Pixonic팀은 게임 인터페이스가 특정 크기 범위에서만 플레이 가능한 것으로 보인다는 사실을 염두에 두고 지원되는 최소 창 크기를 설정했습니다.

<activity … >
    <layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>

가장 몰입도 높은 게임플레이를 위해 Pixonic은 메타 태그를 사용하여 전체 화면 모드를 기본값으로, 가로 모드를 권장 모드로 설정했습니다.

<application>
    <meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
    <meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
    ….
</application>

창 모드에서 실행된 War Robots

이러한 최적화 결과 게임이 일시중지되는 현상이 발생하지 않게 되었으며, 플레이어가 게임플레이 창을 펼치고 접을 때마다 전투 HUD의 크기도 함께 조정됩니다.

결과

온라인 리소스의 광범위한 라이브러리 덕분에 5명으로 구성된 Pixonic 개발팀은 겨우 2주 만에 전체 과정을 완료할 수 있었습니다.

Pixonic에서 최신 최적화 버전을 출시한 후 벌써 10만여 명의 플레이어가 Chrome OS에서 War Robots를 플레이했습니다. 이제 더 큰 화면에서 널찍하게 게임플레이를 즐길 수 있게 된 War Robots는 훨씬 더 몰입도가 높고 재미있는 게임이 되었습니다. 실제로 Chromebook의 사용자 세션은 다른 Android 기기에 비해 25% 더 깁니다. 초기 피드백은 상당히 긍정적이었으며, Chromebook에 최적화된 게임이 BlueStack의 에뮬레이터보다 부드럽게 실행된다고 말하는 플레이어도 있었습니다.

Pixonic의 개발자들은 이러한 성공을 발판으로 PC에 가까운 게임플레이를 구현하기 위하여 모든 Android 기기에서 War Robots의 그래픽을 업데이트할 계획을 갖고 있습니다.

Chrome OS에 맞게 앱을 최적화하기 위한 권장사항을 확인해 보세요.