Pixonic 針對大螢幕進行最佳化調整後,在 ChromeOS 上的參與度提升了 25%

背景

Pixonic 是一座總部位於莫斯科的電玩遊戲開發商團隊,他們致力把握每次機會升級行動應用程式,並觸及更多玩家。該公司最知名的其中一項遊戲是 War Robots,這是一套 12 人的玩家與玩家 (PvP) 體驗,玩家會在即時戰場上操作和打造專業的機器人。

War Robots 於 2014 年推出,最初是為 Android 早期世代裝置而設計,支援觸控板移動,並且沒有滑鼠輸入。Pixonic 團隊本身是熱衷遊戲玩家,他們認為這款應用程式需要經過一些修改,才能在筆電和平板電腦等各種裝置上提供優質的使用者體驗。由於 Chromebook 在容器中執行完整版本的 Android 架構,因此 War Robots 原本可以在任何 Android 裝置上玩。藉由進一步調整程式碼,Pixonic 得以充分利用 ChromeOS 的完整功能。

以下說明 Pixonic 團隊如何最佳化 War Robot,以便在大螢幕裝置上提供最佳體驗。

具體措施

為了開始最佳化,Pixonic 會在 AndroidManifest.xml 中新增中繼資料標記,告知系統已準備好提供完整的 ChromeOS 支援,需要停用觸控模擬:

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

Pixonic 也會將應用程式的 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 機器人。

如果系統沒有偵測到鍵盤,左下角會顯示移動搖桿,鍵盤快速鍵則隱藏在右下方的選單按鈕上。

在平板電腦/行動裝置的遊戲模式下使用 War 機器人。

接著,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 也編寫了新程式碼,根據使用者目前的裝置模式顯示不同的遊戲過程教學課程。如果玩家在玩法時切換平板電腦和筆記型電腦,但尚未看過其他模式的教學課程,那麼系統會在遊戲繼續之前顯示教學課程。

支援鍵盤和滑鼠輸入的筆電模式遊戲過程教學課程。

設有觸控螢幕的平板電腦模式遊戲教學課程。

當玩家處於筆記型電腦模式時,Pixonic 也會停用觸控螢幕的相機控制項 (因為玩家會使用滑鼠控制攝影機),同時所有遊戲遊玩按鈕都會照常運作。為了區分觸控和滑鼠移動,團隊會使用 Input.touchCount 屬性 (在 Unity 指令碼中):

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

多視窗模式支援

在最後一個步驟中,Pixonic 希望確保遊戲啟動時,遊戲並未在全螢幕模式下鎖定。在 ChromeOS 中啟用視窗化遊戲機制後,使用者就能在遊戲過程中同時觀看喜愛的直播主、在遊戲網站上升級機器人及閱讀新能力,或是在觀看其他影片時享受被動模式的戰鬥。

為此,Pixonic 會將 UnityPlayerActivity 標示為可調整大小:

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

請注意,遊戲介面只能在特定維度範圍內播放,因此團隊設定了支援的視窗大小下限:

<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 可根據玩家展開及縮小遊戲視窗的時間,調整遊戲規模。

成果

有了豐富的線上資源程式庫,Pixonic 的五名成員開發團隊就完成了整個程序,整個過程只需兩週。

自 Pixonic 推出最新的最佳化功能以來,已經有超過 10 萬名玩家在 ChromeOS 玩 War Robots。由於遊戲過程現在可以利用大螢幕的額外空間,因此 War Robots 戰鬥也比以往更有沉浸感和互動性。事實上,相較於其他 Android 裝置,Chromebook 的使用者工作階段多了 25%。早期意見回饋都相當正面,而部分玩家也表示,Chromebook 最佳化遊戲的執行速度比 BlueStacks 模擬器更順暢。

根據成功經驗,Pixonic 的開發人員計劃更新所有 Android 裝置上的 War Robots 圖像,讓遊戲過程更貼近電腦品質。

請參閱針對 ChromeOS 進行應用程式最佳化的最佳做法。