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