Pixonic: 大画面向けの最適化により、Chrome OS でユーザーのプレイ時間が 25% 増加

Stay organized with collections Save and categorize content based on your preferences.

背景

モスクワを拠点とするゲーム開発会社の Pixonic は、モバイルアプリをアップグレードしてさらに多くのゲーマーにリーチできるよう日々努めています。同社の最も有名なタイトルのひとつである War Robots は、12 人のプレーヤー対プレーヤー(PvP)で、カスタマイズしたロボットを操作して戦闘を行えるゲームです。

2014 年のリリース当初、War Robots は初期の Android デバイス向けに設計され、タッチパッドによる操作は可能でしたが、マウス入力には対応していませんでした。自らも熱心なゲーマーである同社の開発チームは、ノートパソコンやタブレットなど、さまざまなデバイスで快適にプレイできるようにするには、いくつか改善を加える必要があると考えていました。Chromebook はコンテナ内で完全版の Android フレームワークを実行するので、War Robots はすでにすべての Android デバイスでプレイできるようになっていました。そのため、コードを少し調整するだけで、Chrome OS の機能をフルに活かすことができました。

Pixonic チームが War Robots を大画面向けに最適化した方法を以下に紹介します。

Pixonic の取り組み

Pixonic は最適化を開始するにあたって、Chrome OS を完全にサポートすることと、タッチ エミュレーションを無効にする必要があることをシステムに知らせるメタデータタグを AndroidManifest.xml に追加しました。

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

また、アプリの minSdk を 24 に設定して、Unity ゲームエンジンがマウスクリックとすべての動作に関連する API イベント(タッチパッド イベント以外も含む)を直接受信できるようにしました。

キーボードとマウスのサポート

War Robots のようなサードパーソン PvP ゲームでは、特に大画面のデバイスの場合、キーボードとマウスを使用することで、動いたり照準を合わせたりしやすくなります。このため次の作業として、ゲームの戦闘モードで、タッチスクリーン操作に加えてキーボードとマウスでも操作できるようにコードを書き直すことにしました。

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。

次に、プレーヤーがマウスを使ってカメラを回転させているときは、カーソルを表示しないようにしました。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 はユーザー エクスペリエンスを高めるため、ユーザーの現在のデバイスモードに応じたゲームプレイ チュートリアルを表示する新しいコードを記述しました。プレーヤーが戦闘中にタブレット モードとノートパソコン モードを切り替え、新しいモードでこれまでにチュートリアルが表示されたことがない場合は、ゲームプレイを再開する前にチュートリアルが表示されます。

キーボードとマウスを使用するノートパソコン モードのゲームプレイ チュートリアル。

タッチスクリーン操作を使用するタブレット モードのゲームプレイ チュートリアル。

ノートパソコン モードでは、プレーヤーはマウスでカメラを操作するため、タッチスクリーンによるカメラ操作を無効にしましたが、ゲームプレイのボタンはすべて他と同じように動作します。タッチとマウス操作を区別するために、次のように Input.touchCount プロパティを使用しています(Unity スクリプトの場合)。

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

マルチウィンドウのサポート

Pixonic は最後の作業として、ゲームの起動時に全画面モードでロックされないようにする必要がありました。Chrome OS でウィンドウ モードのゲームプレイを有効にすると、ユーザーはプレイ中にお気に入りのライブ配信を同時に再生したり、ゲームのウェブサイトで新機能を確認しながらロボットをアップグレードしたり、別の動画を再生しながらパッシブモードで観戦したりできます。

これに対応するために、UnityPlayerActivity をサイズ変更可能としてマークしました。

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

ゲーム インターフェースは特定のサイズ範囲でのみプレイ可能であるため、サポートされる最小ウィンドウ サイズを設定しました。

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

最も臨場感あふれるゲームプレイにはメタタグを使用して、全画面モードをデフォルトに設定し、必要に応じて画面を横向きに設定しました。

<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 が最新の最適化版をリリースしてから、Chrome OS で War Robots をプレイしたユーザーの数はすでに 100,000 人を超えました。画面が大きくなり、使えるスペースが増えたことで、War Robots ではより臨場感のある戦闘が可能になりました。実際に、Chromebook でのユーザーのプレイ時間は他の Android デバイスと比べて 25% 長くなっています。これまでの評判はとても高く、Chromebook 向けに最適化されたゲームは、BlueStacks のエミュレータよりスムーズに動作するという意見もありました。

この成功を基に、Pixonic では、すべての Android デバイスで War Robots のグラフィックを改良して、パソコン版のクオリティに近づける予定です。

Chrome OS 向けにアプリを最適化するためのベスト プラクティスをご確認ください。