ฉากหลัง
Pixonic ทีมนักพัฒนาวิดีโอเกมที่มีสำนักงานใหญ่ในมอสโกภาคภูมิใจกับ คว้าทุกโอกาสในการอัปเกรดแอปบนอุปกรณ์เคลื่อนที่ และเข้าถึงช่องทางต่างๆ ให้กว้างขึ้น เกมเมอร์ที่หลากหลาย หนึ่งในภาพยนตร์ที่เป็นที่รู้จักมากที่สุดของบริษัทคือ หุ่นยนต์สงคราม ประสบการณ์แบบผู้เล่นปะทะผู้เล่น (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 เกมจะปรับตัวเป็นโหมดเดสก์ท็อป จอยสติ๊กการเคลื่อนไหวที่มุมซ้ายล่างจะหายไป และทั้งหมดจะพร้อมใช้งาน การดำเนิ��การต่างๆ (เช่น การจัดเรียงอาวุธ ความสามารถ และเมนู) จะมีป้ายกำกับไว้ ด้วยแป้นพิมพ์ลัด

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 ยังเขียนโค้ดใหม่เพื่อแสดง บทแนะนำการเล่นเกมตามโหมดอุปกรณ์ปัจจุบันของผู้ใช้ หากเปลี่ยนโปรแกรมเล่น ระหว่างเกมเพลย์บนแท็บเล็ตและแล็ปท็อประหว่างการต่อสู้ และพวกเขายังไม่เคยเห็น บทแนะนำสำหรับโหมดต่างๆ บทแนะนำจะแสดงก่อนที่เกมเพลย์จะกลับมาทำงานอีกครั้ง

บทแนะนำการเล่นเกมในโหมดแล็ปท็อปพร้อมการป้อนข้อมูลด้วยเมาส์และแป้นพิมพ์

บทแนะนำการเล่นเกมในโหมดแท็บเล็ตพร้อมการควบคุมด้วยหน้าจอสัมผัส
เมื่อผู้เล่นอยู่ในโหมดแล็ปท็อป 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 ปรับขนาดให้สอดคล้องกันเมื่อผู้เล่นขยายและย่อหน้าต่างเกมเพลย์
ผลลัพธ์
ด้วยคลังแหล่งข้อมูลออนไลน์ที่ครอบคลุม ทำให้ทีมพัฒนาที่มีสมาชิก 5 คนของ Pixonic ใช้เวลาแค่ 2 สัปดาห์
ผู้เล่นมากกว่า 100,000 คนเคยเล่น War Robots บน ChromeOS แล้วตั้งแต่นั้นเป็นต้นมา Pixonic ได้เปิดตัวการเพิ่มประสิทธิภาพล่าสุด เพรา��ตอนนี้เกมเพลย์ ใช้ประโยชน์จากพื้นที่ที่เพิ่มขึ้นบนหน้าจอขนาดใหญ่ขึ้น การต่อสู้ของ War Robots จึงมี สมจริงและน่าสนใจกว่าเดิม ในความเป็นจริง เซสชันผู้ใช้ยาวขึ้น 25% บน Chromebook เทียบกับอุปกรณ์ Android อื่นๆ ความคิดเห็นเบื้องต้นได้รับการ ยอดเยี่ยมอย่างไม่น่าเชื่อ และผู้เล่นบางคนก็ถึงกับระบุว่า เกมที่เพิ่มประสิทธิภาพด้วย Chromebook ทำงานได้ลื่นไหลกว่า BlueStacks โปรแกรมจำลอง
จากความสำเร็จของพวกเขา นักพัฒนาซอฟต์แวร์ของ Pixonic วางแผนที่จะอัปเดต War Robots กราฟิก บนอุปกรณ์ Android ทุกเครื่องเพื่อทำให้เกมเพลย์ใกล้ชิดกับระดับ PC มากขึ้น ประสบการณ์การใช้งาน
ดูแนวทางปฏิบัติแนะนำในการเพิ่มประสิทธิภาพแอปสำหรับ ChromeOS