Pixonic הגדילה את המעורבות ב-25% ב-ChromeOS על ידי אופטימיזציה למסכים גדולים

רקע

Pixonic, צוות של מפתחי משחקי וידאו שהמשרדים הראשיים שלו נמצאים במוסקבה, מתגאה לנצל כל הזדמנות לשדרג את האפליקציות לנייד ולהגיע ליותר לקוחות קהל של גיימרים. אחד השמות הידועים ביותר של החברה הוא War Robots, חוויית שחקן/שחקן (PvP) ל-12 אנשים שבה השחקנים פועלים ומשתתפים ודו-קרבים רובוטים מותאמים אישית בשדה קרב בשידור חי.

War Robots, שהושק ב-2014, תוכנן במקור עבור מכשירים מדור קודם עם תנועה מבוססת לוח מגע וללא קלט עכבר. חברי צוות Pixonic, שהם גיימרים נלהבים בעצמם וזיהו שהאפליקציה זקוקה לכמה שיותר כדי לספק חוויית משתמש מעולה במגוון רחב יותר של מכשירים, כמו מחשבים ניידים וטאבלטים. כבר אפשר לשחק ב-War Robots בכל מכשיר Android כי במכשירי Chromebook פועלת גרסה מלאה של מסגרת Android בתוך קונטיינר. לאחר שערכו עוד כמה שינויים בקוד, Pixonic הצליחה היתרון של ChromeOS בכל היכולות שלו.

כך צוות Pixonic ביצע אופטימיזציה של War Robots כדי לספק חוויות אופטימליות במסכים גדולים יותר.

מה הם עשו

כדי להתחיל את האופטימיזציה, Pixonic הוסיף תג מטא-נתונים AndroidManifest.xml מציין שהמערכת מוכנה לתמיכה מלאה ב-ChromeOS וצריך להשבית את אמולציית המגע:

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

Pixonic גם הגדיר את minSdk של האפליקציה ל-24, כך שמנוע המשחקים Unity לקבל באופן ישיר קליקים על העכבר ואת כל אירועי ה-API שקשורים לתנועה (לא רק אירועים בלוח מגע).

תמיכה במקלדת ועכבר

במשחקי PvP בגוף שלישי כמו War Robots, קל יותר לזוז ולכוון באמצעות מקלדת ועכבר, במיוחד במכשירים עם מסך גדול יותר. בשלב הבא, היה שכתוב הקוד לתמיכה במקלדת ועכבר במצב קרב תוך שמירה על פקדי מסך המגע.

כדי לספק את הפקדים הנכונים בזמן הנכון, הצוות של 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, המשחק יתאים את עצמו למצב מחשב שולחני. ג'ויסטיק התנועה בפינה הימנית התחתונה נעלם, וכל הפריטים זמינים פעולות (כמו מיון בכלי נשק, יכולות ותפריטים) מסומנות בתווית באמצעות מקשי הקיצור.

רובוטי מלחמה במצב מחשב נייד.

אם לא מזוהה מקלדת, ג'ויסטיק התנועה יופיע בפינה הימנית התחתונה ומקשי הקיצור מוסתרים מלחצני התפריט בפינה השמאלית התחתונה.

רובוטי מלחמה במצב משחק בטאבלט או בנייד.

בשלב הבא, ב-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>

רובוטי מלחמה הושקו במצב חלון.

האופטימיזציות האלה גם הבטיחו שהמשחק לא יושהה ושהקרב מדד HUD מותאם בהתאם כשהשחקנים מרחיבים ומכווצים את חלונות הגיימפליי שלהם.

תוצאות

הודות לספרייה הנרחבת של מקורות מידע באינטרנט, כל צוות הפיתוח של Pixonic, בן חמישה חברים, נמשך שבועיים בלבד.

יותר מ-100,000 שחקנים כבר שיחקו ב-War Robots ב-ChromeOS מאז Pixonic השיקה את אפשרויות האופטימיזציה האחרונות. כי הגיימפליי יכול עכשיו מנצלים את השטח הנוסף על מסכים גדולים יותר, הקרבות של רובוטי המלחמה סוחפים ומעניינים יותר מבעבר. למעשה, סשנים של משתמשים ארוכים יותר ב-25% במכשירי Chromebook בהשוואה למכשירי Android אחרים. המשוב המוקדם היא חיובית מאוד, וחלק מהשחקנים אפילו ציינו משחק מותאם ל-Chromebook פועל בצורה חלקה יותר מ-BlueStacks אמולטור.

בעקבות הצלחת המשחק, המפתחים של Pixonic מתכננים לעדכן את War Robots גרפיקה בכל מכשירי Android כדי שהגיימפליי יהיה קרוב עוד יותר לאיכות של מחשב חוויה אישית.

כדאי לעיין בשיטות מומלצות לאופטימיזציה של האפליקציות ל-ChromeOS.