Thông tin khái quát
Pixonic, một nhóm nhà phát triển trò chơi điện tử có trụ sở tại Moscow, tự hào về việc tận dụng mọi cơ hội để nâng cấp ứng dụng di động và tiếp cận nhiều đối tượng người chơi hơn nữa. Một trong những trò chơi nổi tiếng nhất của công ty là Rô-bốt chiến tranh, trải nghiệm Người chơi đấu với Người chơi (PvP) 12 người, trong đó người chơi hoạt động và đấu tay đôi những người máy được tuỳ chỉnh trên chiến trường.
Ra mắt vào năm 2014, War Robot ban đầu được thiết kế cho Android các thiết bị thế hệ đầu tiên hỗ trợ chuyển động dựa trên bàn di chuột và không có thao tác đầu vào bằng chuột. Là những người chơi cuồng nhiệt, đội ngũ Pixonic nhận thấy ứng dụng cần một số sửa đổi để mang lại trải nghiệm tuyệt vời cho người dùng trên nhiều thiết bị hơn, chẳng hạn như máy tính xách tay và máy tính bảng. Robot chiến tranh đã chơi được trên mọi thiết bị Android vì Chromebook chạy phiên bản khung Android đầy đủ bên trong một vùng chứa. Bằng việc chỉnh sửa thêm về lập trình, Pixonic đã có thể thực hiện tận dụng ChromeOS đầy đủ tính năng.
Sau đây là cách nhóm Pixonic tối ưu hoá War robots để có được trải nghiệm tối ưu trên màn hình lớn hơn.
Những việc họ đã làm
Để bắt đầu các biện pháp tối ưu hoá, Pixonic đã thêm một thẻ siêu dữ liệu vào AndroidManifest.xml cho hệ thống biết đã sẵn sàng để hỗ trợ ChromeOS đầy đủ và cần tắt chế độ mô phỏng thao tác chạm:
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
Pixonic cũng đặt minSdk của ứng dụng thành 24 để công cụ phát triển trò chơi Unity có thể trực tiếp nhận được các lượt nhấp chuột và tất cả sự kiện API liên quan đến chuyển động (không chỉ sự kiện bàn di chuột).
Hỗ trợ bàn phím và chuột
Trong các trò chơi PvP góc nhìn thứ ba như Rô-bốt chiến tranh, việc di chuyển và ngắm bắn dễ dàng hơn rất nhiều bằng bàn phím và chuột, đặc biệt là trên các thiết bị có màn hình lớn hơn. Vì vậy, tiếp theo là viết lại mã để hỗ trợ bàn phím và chuột cho trò chơi chế độ chiến đấu trong khi vẫn giữ lại các nút điều khiển trên màn hình cảm ứng.
Để cung cấp các chế độ kiểm soát phù hợp vào đúng thời điểm, nhóm của Pixonic đã viết một đoạn mã mới để kiểm tra chế độ chơi hiện tại của người dùng:
@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();
}
}
Nếu phát hiện thấy bàn phím QWERTY, trò chơi sẽ thích ứng với chế độ máy tính. Chiến lược phát hành đĩa đơn cần điều khiển chuyển động ở góc dưới cùng bên trái biến mất và tất cả đều có sẵn các hành động (chẳng hạn như sắp xếp vũ khí, kỹ năng và trình đơn) sẽ được gắn nhãn bằng phím tắt.
Nếu không phát hiện thấy bàn phím, cần điều khiển di chuyển sẽ xuất hiện ở góc dưới cùng bên trái và các phím tắt sẽ bị ẩn trên các nút trình đơn ở dưới cùng bên phải.
Tiếp theo, Pixonic muốn đảm bảo con trỏ luôn ẩn khi người chơi sử dụng chuột để xoay camera. Bằng cách nhắm đến Android 7.0 (API cấp 24) hoặc cao hơn, nhóm có thể đặt bất kỳ biểu tượng con trỏ nào. Trong trường hợp này, nhóm đã sử dụng một bitmap trong suốt để ẩn con trỏ trong khi chơi:
public boolean setPointerVisibility(boolean visible) {
View = activity.findViewById(android.R.id.content);
view.setPointerIcon(PointerIcon.getSystemIcon(activity, visible ? PointerIcon.TYPE_DEFAULT : PointerIcon.TYPE_NULL));
}
Điều này đảm bảo con trỏ sẽ bị tắt và không hiển thị khi tất cả các cửa sổ khác đều đã đóng và một trận chiến đang diễn ra. Nếu có cửa sổ bật lên xuất hiện, chẳng hạn như trình đơn tạm dừng, Pixonic đã làm cho con trỏ ở chế độ hiển thị, hiển thị biểu tượng mặc định của trình đơn.
Điều chỉnh hướng dẫn và cơ chế chơi trò chơi
Để có trải nghiệm người dùng tốt hơn, Pixonic cũng đã viết mã mới để hiển thị các video hướng dẫn chơi trò chơi dựa trên chế độ thiết bị hiện tại của người dùng. Nếu người chơi chuyển giữa cách chơi trên máy tính bảng và máy tính xách tay trong khi chiến đấu và họ chưa nhìn thấy hướng dẫn cho chế độ khác nhau, hướng dẫn sẽ được hiển thị trước khi tiếp tục chơi trò chơi.
Khi người chơi ở chế độ máy tính xách tay, Pixonic cũng tắt máy ảnh trên màn hình cảm ứng
điều khiển (vì người chơi sẽ điều khiển camera bằng chuột) trong khi tất cả
nút chơi trò chơi hoạt động như bình thường. Để phân biệt thao tác nhấn với chuyển động của chuột:
nhóm sẽ sử dụng thuộc tính Input.touchCount
(trong tập lệnh Unity):
if(Input.touchCount > 0) {
// this is screen touch event
} else {
// this is mouse (touchpad) event
}
Hỗ trợ nhiều cửa sổ
Đối với bước cuối cùng, Pixonic muốn đảm bảo trò chơi không bị tự buộc chế độ toàn màn hình khi khởi chạy. Việc bật chế độ chơi bằng cửa sổ trong ChromeOS cho phép người dùng có thể xem đồng thời người phát trực tiếp mình yêu thích trong khi chơi, hãy nâng cấp rô-bốt trong khi đọc về những khả năng mới trên trang web của trò chơi hoặc dự đoán trận chiến trong bị động trong khi xem video riêng.
Để thực hiện việc này, Pixonic đã đánh dấu UnityPlayerActivity
là có thể đổi kích thước:
<activity android:name="com.unity3d.player.UnityPlayerActivity" ....
android:resizeableActivity="true">
Hãy lưu ý rằng giao diện trò chơi chỉ có thể chơi được trong phạm vi kích thước, nhóm đã đặt kích thước cửa sổ tối thiểu được hỗ trợ:
<activity … >
<layout android:gravity="center" android:minHeight="800dp" android:minWidth="1200dp" />
</activity>
Để mang đến trải nghiệm chơi sống động nhất, Pixonic đã sử dụng thẻ meta để đặt chế độ toàn màn hình làm chế độ mặc định và hướng ngang nếu muốn.
<application>
<meta-data android:name="WindowManagerPreference:FreeformWindowSize" android:value="maximize" />
<meta-data android:name="WindowManagerPreference:FreeformWindowOrientation" android:value="landscape" />
….
</application>
Những hoạt động tối ưu hoá này cũng đảm bảo trò chơi không tạm dừng và trận chiến HUD sẽ điều chỉnh theo tỷ lệ khi người chơi mở rộng và thu nhỏ cửa sổ trò chơi.
Kết quả
Nhờ có thư viện tài nguyên trực tuyến phong phú, toàn bộ quy trình phát triển gồm 5 thành viên của Pixonic chỉ mất 2 tuần.
Hơn 100.000 người chơi đã chơi trò Rô-bốt chiến tranh trên ChromeOS kể từ đó Pixonic đã triển khai các tính năng tối ưu hoá mới nhất. Vì giờ đây trò chơi có thể tận dụng không gian bổ sung trên màn hình lớn, các trận chiến của Robot chiến tranh sống động và hấp dẫn hơn trước đây. Trên thực tế, phiên của người dùng lâu hơn 25% trên Chromebook so với các thiết bị Android khác. Ý kiến phản hồi ban đầu cực kỳ tích cực và một số người chơi thậm chí còn nhận thấy rằng Trò chơi được tối ưu hoá cho Chromebook chạy mượt mà hơn BlueStacks trình mô phỏng.
Dựa trên thành công này, các nhà phát triển của Pixonic dự định cập nhật War Robot đồ hoạ trên tất cả các thiết bị Android để giúp lối chơi thậm chí còn gần hơn với chất lượng máy tính của bạn.
Xem một số phương pháp hay nhất để tối ưu hoá ứng dụng của bạn cho ChromeOS.